资源预览内容
第1页 / 共46页
第2页 / 共46页
第3页 / 共46页
第4页 / 共46页
第5页 / 共46页
第6页 / 共46页
第7页 / 共46页
第8页 / 共46页
第9页 / 共46页
第10页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案教案名称:单片机原理及应用授课章节:期末复习(上) 指令系统授课时间:第十周 星期三 3、 4节授课日期:2007、11、07授课班级:05机电与数控技术 班广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 1. 数据传送到累加器数据传送到累加器A的指令的指令 MOV A, R0 MOV A, direct MOV A, Ri MOV A, data 这组指令的功能是:把源操作数的内容送入累加器A。例如: MOV A, 10H, 该指令执行时将立即数 10H送入累加器A中。 期末复习期末复习 指令系统指令系统广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 2. 数据传送到工作寄存器数据传送到工作寄存器Rn的指令的指令 MOV Rn, A MOV Rn, direct MOV Rn, data 这组指令的功能是: 把源操作数的内容送入当前工作寄存器区的R0R7中的某一个寄存器。指令中Rn在内部数据存储器中的地址由当前的工作寄存器区选择位RS1、RS0 确定, 可以是 00H07H、08H0FH、10H17H、18H1FH。 例如: MOV R0, A, 若当前RS1、RS0 设置为 00 (即工作寄存器 0 区), 执行该指令时,将累加器A中的数据传送至工作寄存器R0(内部RAM 00H)单元中。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案3. 数据传送到内部数据传送到内部RAM单元或特殊功能寄存器单元或特殊功能寄存器SFR的指令的指令 MOV direct, A MOV direct, Rn MOV direct, direct MOV direct, Ri MOV direct, data MOV Ri, A MOV Ri, direct MOV Ri, data MOV DPTR, data16 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 这组指令的功能是:把源操作数的内容送入内部RAM单元或特殊功能寄存器。其中第三条指令和最后一条指令都是三字节指令。第三条指令的功能很强, 能实现内部RAM之间、特殊功能寄存器之间或特殊功能寄存器与内部RAM之间的直接数据传送。最后一条指令是将16位的立即数送入数据指针寄存器DPTR。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 4. 累加器累加器A与外部数据存储器之间的传送指令与外部数据存储器之间的传送指令 MOVX A, DPTR MOVX A, Ri MOVX DPTR, A MOVX Ri, A 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 这组指令是:在累加器A与外部数据存储器RAM单元或I/O口之间进行数据传送, 前两条指令执行时, P3.7 引脚上输出RD有效信号, 用作外部数据存储器的读选通信号; 后两条指令执行时, P3.6 引脚上输出WR有效信号, 用作外部数据存储器的写选通信号。DPTR所包含的 16 位地址信息由 P0 (低 8 位)和P2(高 8 位)输出, 而数据信息由P0 口传送, P0 口作分时复用的总线。由Ri作为间接寻址寄存器时, P0 口上分时输出Ri指定的 8 位地址信息及传输 8 位数据。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 5. 堆栈操作指令堆栈操作指令 PUSH direct POP direct 在MCS -51 单片机的内部RAM中, 可以设定一个先进后出的区域, 称其为堆栈。在特殊功能寄存器中有一个堆栈指针SP, 它指出栈顶的位置。 进栈指令的功能是: 首先将堆栈指针SP的内容加1, 然后将直接地址所指出的内容送入SP指出的内部RAM单元; 出栈指令的功能是: 将SP所指出的内部RAM单元的内容送入由直接地址所指出的字节单元, 接着将堆栈指针SP的内容减 1。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 例如: 进入中断服务子程序时, 把程序状态寄存器PSW、 累加器A、 数据指针DPTR进栈保护。设当前SP为 60H。则程序段 PUSH PSW PUSH ACC PUSH DPL PUSH DPH执行后, SP内容修改为 64H, 而61H、62H、63H、64H单元中依次栈入PSW、A、DPL、DPH的内容。当中断服务程序结束之前, 如下程序段(SP保持 64H不变) 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 POP DPH POP DPL POP ACC POP PSW执行之后, SP内容修改为 60H, 而64H、 63H、 62H、 61H单元中的内容依次弹出到DPH、DPL、A、PSW中。 MCS -51 提供一个向上升的堆栈, 因此SP设置初值时要充分考虑堆栈的深度, 要留出适当的单元空间, 满足堆栈的使用。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 6.程序存储器内容送累加器程序存储器内容送累加器 MOVC A, A+PC MOVC A, A+DPTR 这是两条很有用的查表指令, 可用来查找存放在外部程序存储器中的常数表格。第一条指令是以PC作为基址寄存器, A的内容作为无符号数和 PC的内容 ( 下一条指令的起始地址)相加后得到一个 16 位的地址, 并将该地址指出的程序存储器单元的内容送到累加器A。 这条指令的优点是不改变特殊功能寄存器和PC的状态, 只要根据A的内容就可以取出表格中的常数。缺点是表格只能放在该条查表指令后面的 256 个单元之中, 表格的大小受到限制, 而且表格只能被一段程序所利用。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 第二条指令是以DPTR作为基址寄存器, 累加器A的内容作为无符号数与DPTR内容相加, 得到一个 16 位的地址, 并把该地址指出的程序存储器单元的内容送到累加器A。这条指令的执行结果只与指针DPTR及累加器A的内容有关, 与该指令存放的地址无关, 因此, 表格的大小和位置可以在 64 KB程序存储器中任意安排, 并且一个表格可以为各个程序块所共用。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 7. 字节交换指令字节交换指令 XCH A, Rn XCH A, Ri XCH A, direct XCHD A, Ri SWAP A 前三条指令是将累加器A的内容和源操作数内容相互交换; 后两条指令是半字节交换指令, 最后一条指令是将累加器A的高 4 位与低 4 位之间进行交换, 而另外一条指令是将累加器 A 的低 4 位内容和(Ri)所指出的内部RAM单元的低 4 位内容相互交换。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案(一)、(一)、 加法指令加法指令 1. 普通加法指令普通加法指令 ADD A, Rn ADD A, direct ADD A, Ri ADD A, data 二、二、 算术运算类指令算术运算类指令 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案例如: 120 和 100 之和为 220, 显然大于 127, 相加时 0 1 1 1 1 0 0 0 1200 1 1 0 0 1 0 0 1001 1 0 1 1 1 0 0 220+符号位(最高位)由 0 变 1, 两个正数相加结果变负, 实际上它是和数的最高位, 符号位移入了进位标志, 此时位 6 有进位而位 7 无进位, 置位溢出标志OV, 结果溢出。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 同样, 120和100 相加, 结果应为220, 显然小于128, 相加时 1 0 0 0 1 0 0 0 -1201 0 0 1 1 1 0 0 -100+1 0 0 1 0 0 1 0 0 -220 符号位由1变为0, 两个负数相加结果变为正数, 这是因为符号位移入进位标志, 位 6 无进位而位 7 有进位, 置位溢出标志OV, 由此可判断结果溢出。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 2. 带进位加法指令带进位加法指令 ADDC A, Rn ADDC A, direct ADDC A, Ri ADDC A, data 这组指令的功能与普通加法指令类似, 唯一的不同之处是, 在执行加法时, 还要将上一次进位标志Cy的内容也一起加进去, 对于标志位的影响也与普通加法指令相同。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 3. 增量指令增量指令 INC A INC Rn INC direct INC Ri INC DPTR 这组指令的功能是:将指令中所指出操作数的内容加1。 若原来的内容为 0FFH, 则加 1 后将产生溢出, 使操作数的内容变成 00H, 但不影响任何标志。最后一条指令是对16 位的数据指针寄存器DPTR执行加 1 操作, 指令执行时, 先对低 8 位指针 DPL的内容加 1, 当产生溢出时就对高 8 位指针DPH加 1, 但不影响任何标志。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 4. 十进制调整指令十进制调整指令 DA A 这条指令对累加器A参与的BCD码加法运算所获得的 8 位结果进行十进制调整, 使累加器A中的内容调整为二位压缩型 BCD码的数。使用时必须注意, 它只能跟在加法指令之后, 不能对减法指令的结果进行调整, 且其结果不影响溢出标志位。 执行该指令时, 判断 A中的低 4 位是否大于 9 和辅助进位标志 AC是否为“1”, 若两者有一个条件满足, 则低 4 位加 6 操作; 同样, A中的高 4 位大于 9 或进位标志 Cy为“1”两者有一个条件满足时, 高 4 位加 6 操作。例如: 有两个 BCD数 36 与 45 相加, 结果应为 BCD码 81, 程序如下: 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案MOV A, 36HADD A, 45HDA A 这段程序中, 第一条指令将立即数36H(BCD码36)送入累加器A; 第二条指令进行如下加法: 0 0 1 1 0 1 1 0 360 1 0 0 0 1 0 1 450 1 1 1 1 0 1 1 7B0 0 0 0 0 1 1 0 06+1 0 0 0 0 0 0 1 81得结果 7BH; 第三条指令对累加器 A进行十进制调整, 低 4 位(为 0BH)大于 9, 因此要加 6, 得调整的 BCD码 81。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 (二)、(二)、 减法指令减法指令 1. 带进位减法指令带进位减法指令 SUBB A, Rn SUBB A, direct SUBB A, Ri SUBB A, data这组指令的功能是: 将累加器A的内容与第二操作数及进位标志相减, 结果送回到累加器A中。在执行减法过程中,如果位7(D7)有借位, 则进位标志Cy置“1”, 否则清“0”; 如果位 3(D3)有借位, 则辅助进位标志AC置“1”, 否则清“0”; 如位 6 有借位而位 7 没有借位, 或位 7 有借位而位 6 没有借位, 则溢出标志OV置“1”, 否则清“0”。 若要进行不带借位的减法操作, 则必须先将Cy清“0”。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 2. 减减1指令指令 DEC A DEC Rn DEC direct DEC Ri 这组指令的功能是: 将指出的操作数内容减 1。 如果原来的操作数为 00H, 则减 1 后将产生下溢出, 使操作数变成 0FFH, 但不影响任何标志。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 (三)、(三)、 乘法指令乘法指令 乘法指令完成单字节的乘法, 只有一条指令: MUL AB 这条指令的功能是: 将累加器A的内容与寄存器B的内容相乘, 乘积的低 8 位存放在累加器A中, 高 8 位存放于寄存器B中。如果乘积超过0FFH, 则溢出标志OV置“1”, 否则清“0”。 进位标志Cy总是被清“0”。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 (四)、四)、 除法指令除法指令 除法指令完成单字节的除法, 只有一条指令: DIV AB 这条指令的功能是: 将累加器 A中的内容除以寄存器 B中的8位无符号整数, 所得商的整数部分存放在累加器A中, 余数部分存放在寄存器 B中, 清“0”进位标志Cy和溢出标志OV。 若原来 B中的内容为 0, 则执行该指令后 A与 B中的内容不定, 并将溢出标志OV置“1”, 在任何情况下, 进位标志Cy总是被清“0”。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 (一)、一)、 简单逻辑操作指令简单逻辑操作指令 CLR A ; 对累加器A清“0” CPL A; 对累加器A按位取反 RL A; 累加器A的内容向左环移 1 位 RLC A; 累加器A的内容带进位标志位向左环移 1 位 RR A; 累加器A的内容向右环移 1 位 RRC A; 累加器A的内容带进位标志位向右环移 1 位这组指令的功能是: 对累加器A的内容进行简单的逻辑操作。除了带进位标志位的移位指令外,其它都不影响Cy, AC, OV等标志。 三、三、 逻辑运算类指令逻辑运算类指令广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 (二)、(二)、 逻辑与指令逻辑与指令 ANL A, Rn ANL A, direct ANL A, Ri ANL A, data ANL direct, A ANL direct, data 这组指令的功能是: 将两个操作数的内容按位进行逻辑与操作, 并将结果送回目的操作数的单元中。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 (三)、(三)、 逻辑或指令逻辑或指令ORL A, RnORL A, directORL A, RiORL A, dataORL direct, AORL direct, data 这组指令的功能是: 将两个操作数的内容按位进行逻辑或操作, 并将结果送回目的操作数的单元中。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 (四)、(四)、 逻辑异或指令逻辑异或指令 XRL A, Rn XRL A, direct XRL A, Ri XRL A, data XRL direct, A XRL direct, data 这组指令的功能是: 将两个操作数的内容按位进行逻辑异或操作, 并将结果送回到目的操作数的单元中。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 四、控制转移指令四、控制转移指令 控制转移指令共有 17 条, 不包括按布尔变量控制程序转移指令(见表 3.5)。其中有 64 KB范围内的长调用、 长转移指令; 有 2 KB范围内的绝对调用和绝对转移指令; 有全空间的长相对转移及一页范围内的短相对转移指令; 还有多种条件转移指令。由于MCS -51 提供了较丰富的控制转移指令, 因此在编程上相当灵活方便。这类指令用到的助记符共有 10 种: AJMP、LJMP、SJMP、JMP、ACALL、LCALL、JZ、JNZ、CJNE、DJNZ。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案(一)、(一)、 无条件转移指令无条件转移指令 1. 短跳转指令短跳转指令 AJMP addr11 这是2KB范围内的无条件跳转指令, 执行该指令时, 先将PC+2, 然后将addr11送入PC10PC0, 而PC15PC11保持不变。 这样得到跳转的目的地址。需要注意的是, 目标地址与AJMP后面一条指令的第一个字节必须在同一个 2 KB区域的存储器区内。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 2. 相对转移指令相对转移指令 SJMP rel 执行该指令时, 先将 PC+2, 再把指令中带符号的偏移量加到PC上, 得到跳转的目标地址送入PC。 3. 长跳转指令长跳转指令 LJMP addr16 执行该指令时, 将 16 位目标地址addr16 装入PC, 程序无条件转向指定的目标地址。转移的目标地址可以在 64 KB程序存储器地址空间的任何地方, 不影响任何标志。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 4. 散转指令散转指令 JMP A+DPTR 执行该指令时, 把累加器 A中的 8 位无符号数与数据指针中的 16 位数相加, 结果作为下条指令的地址送入PC, 不改变累加器 A和数据指针DPTR的内容, 也不影响标志。 利用这条指令能实现程序的散转。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 (二)、(二)、 条件转移指令条件转移指令 JZ rel; (A)= 0 转移 JNZ rel; (A)0 转移 这类指令是依据累加器A的内容是否为 0 的条件转移指令。条件满足时转移(相当于一条相对转移指令), 条件不满足时则顺序执行下面一条指令。转移的目标地址在以下一条指令的起始地址为中心的 256 个字节范围之内(128 +127)。当条件满足时, PC(PC)+N+rel, 其中(PC)为该条件转移指令的第一个字节的地址, N为该转移指令的字节数(长度), 本转移指令N=2。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 (三)、(三)、 比较转移指令比较转移指令 在MCS - 51 中没有专门的比较指令, 但提供了下面 4 条比较不相等转移指令: CJNE A, direct, relCJNE A, data, relCJNE Rn, data, relCJNE Ri, data, rel 这组指令的功能是: 比较前面两个操作数的大小, 如果它们的值不相等则转移。转移地址的计算方法与上述两条指令相同。如果第一个操作数(无符号整数)小于第二个操作数, 则进位标志Cy置“1”, 否则清“0”, 但不影响任何操作数的内容。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 (四)、(四)、 减减 1不为不为 0转移指令转移指令DJNZ Rn, relDJNZ direct, rel 这两条指令把源操作数减 1, 结果回送到源操作数中去, 如果结果不为 0 则转移(转移地址的计算方法同前)。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 (五)、(五)、 调用及返回指令调用及返回指令 在程序设计中, 通常把具有一定功能的公用程序段编制成子程序, 当主程序需要使用子程序时用调用指令, 而在子程序的最后安排一条子程序返回指令,以便执行完子程序后能返回主程序继续执行。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 1. 绝对调用指令绝对调用指令 ACALL addr11 这是一条 2 KB范围内的子程序调用指令。执行该指令时,先将 PC+2 以获得下一条指令的地址, 然后将 16 位地址压入堆栈(PCL内容先进栈, PCH内容后进栈), SP内容加 2, 最后把 PC的高 5 位PC15PC11与指令中提供的 11 位地址addr11相连接(PC15PC11, 100), 形成子程序的入口地址送入PC, 使程序转向子程序执行。所用的子程序的入口地址必须与 ACALL下面一条指令的第一个字节在同一个 2 KB区域的存储器区内。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 2. 长调用指令长调用指令 LCALL addr16 这条指令无条件调用位于 16 位地址addr16的子程序。执行该指令时,先将PC+3以获得下一条指令的首地址, 并把它压入堆栈(先低字节后高字节), SP内容加 2, 然后将 16 位地址放入 PC中, 转去执行以该地址为入口的程序。 LCALL指令可以调用 64 KB范围内任何地方的子程序。指令执行后不影响任何标志。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 3. 子程序返回指令子程序返回指令 RET 这条指令的功能是: 恢复断点, 将调用子程序时压入堆栈的下一条指令的首地址取出送入PC, 使程序返回主程序继续执行。 4. 中断返回指令中断返回指令 RETI 这条指令的功能与RET指令相似, 不同的是它还要清除MCS -51 单片机内部的中断状态标志。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 指令中位地址的表达形式有以下几种: (1) 直接地址方式: 如 0A8H; (2) 点操作符方式: 如IE.0; (3) 位名称方式: 如 EX0; (4) 用户定义名方式: 如用伪指令 BIT定义: WBZD0 BIT EX0经定义后, 允许指令中使用WBZD0 代替EX0。 五、五、 位操作类指令位操作类指令 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 1. 位数据传送指令位数据传送指令 MOV C, bit MOV bit, C 这组指令的功能是: 把源操作数指出的布尔变量送到目的操作数指定的位地址单元中。其中一个操作数必须为进位标志 Cy, 另一个操作数可以是任何可直接寻址位。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 2. 位变量修改指令位变量修改指令 CLR C CLR bit CPL C CPL bit SETB C SETB bit 这组指令对操作数所指出的位进行清“0”#, 取反#, 置“1”的操作, 不影响其它标志。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 3. 位变量逻辑与指令位变量逻辑与指令 ANL C, bit ANL C, /bit 这组指令的功能是: 如果源位的布尔值是逻辑 0, 则将进位标志清“0”; 否则, 进位标志保持不变, 不影响其它标志。bit前的斜杠表示对(bit)取反, 直接寻址位取反后用作源操作数, 但不改变直接寻址位原来的值。例如指令: ANL C, /ACC.0 执行前ACC.0 为 0, C为 1, 则指令执行后 C为 1, 而 ACC.0仍为 0。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 4. 位变量逻辑或指令位变量逻辑或指令 ORL C, bit ORL C, /bit 这组指令的功能是: 如果源位的布尔值是逻辑 1, 则将进位标志置“1”; 否则, 进位标志保持不变, 不影响其它标志。 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案 5. 位变量条件转移指令位变量条件转移指令 JC rel; 若(Cy)=1, 则转移 PC(PC)+2+rel JNC rel; 若(Cy)=0, 则转移PC(PC)+2+rel JB bit, rel; 若(bit)=1, 则转移PC(PC)+3+rel JNB bit, rel; 若(bit)=0, 则转移PC(PC)+3+rel JBC bit, rel; 若(bit)=1, 则转移PC(PC)+3+rel, 并 bit 0 广州市冶金技师学院 机电工程系 伍尚勤 2007、09、0220072008 第1学期教案作作 业:业:自由复习,准备考试
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号