XCHD A@Ri 半字节交换指令,将累加器A的低4位内容和(Ri)所指出的内部RAM单 元的低4位内容相互交换。 (3)A的半字节交换指令 SWAP A 半字节交换指令,将累加器A的高4位与低4位之间进行交换 15min 8.堆栈操作指令 (1) PUSH direct;压入栈 操作过程:1)SP+1→SP 2)( direct)→(SP) (2) POP direct;弹出栈 操作过程:1)(SP)→( direct) 2)SP-1→SP 在MCS-51单片机的内部RAM中,可以设定一个先进后出的区域,称其为堆 栈。在特殊功能寄存器中有一个堆栈指针SP,它指出栈顶的位置。进栈指令的功 能是:首先将堆栈指针SP的内容加1,然后将直接地址所指出的内容送入SP指出 的内部RAM单元;出栈指令的功能是:将SP所指出的内部RAM单元的内容送入 由直接地址所指出的字节单元,接着将堆栈指针SP的内容减1 例如:进入中断服务子程序时,把程序状态寄存器PSW、累加器A、数据指 针DPTR进栈保护。设当前SP为60H。则程序段 PUSH PSW PUSH ACC PUSH DPI PUSH DPH 执行后,SP内容修改为64H,而61H、62H、63H、64H单元中依次栈入PSW、A DPL、DPH的内容。当中断服务程序结束之前,如下程序段(SP保持64H不变) POP DPH POP DPL POP ACC POP PSW 执行之后,SP内容修改为60H而64H、63H、62H、61H单元中的内容依次 弹出到DPH、DPL、A、PSW中 MCS-51提供一个向上升的堆栈,因此SP设置初值时要充分考虑堆栈的深度 要留出适当的单元空间,满足堆栈的使用。 例:A的内容为BCD数(高4位为全0),试用查表法来求得相应的ASCⅡ码。 方法(1) BCD ASC: INC A MOVC A, @A TAB DB30H,3lH,32H,33H,34H,35H, 36H,37H,38H,39 方法(2) BCD ASO: MOV DPTR,#TAB
XCHD A,@Ri 半字节交换指令,将累加器 A 的低 4 位内容和(Ri)所指出的内部 RAM 单 元的低 4 位内容相互交换。 (3)A 的半字节交换指令 SWAP A 半字节交换指令,将累加器 A 的高 4 位与低 4 位之间进行交换 8. 堆栈操作指令 (1)PUSH direct;压入栈 操作过程:1)SP+1→ SP; 2)(direct)→(SP) (2)POP direct ; 弹出栈 操作过程:1)(SP)→(direct); 2)SP-1→ SP 在 MCS-51 单片机的内部 RAM 中, 可以设定一个先进后出的区域, 称其为堆 栈。在特殊功能寄存器中有一个堆栈指针 SP, 它指出栈顶的位置。 进栈指令的功 能是: 首先将堆栈指针 SP 的内容加 1, 然后将直接地址所指出的内容送入 SP 指出 的内部 RAM 单元; 出栈指令的功能是: 将SP 所指出的内部 RAM 单元的内容送入 由直接地址所指出的字节单元, 接着将堆栈指针 SP 的内容减 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 不变) POP DPH POP DPL POP ACC POP PSW 执行之后, SP 内容修改为 60H, 而 64H、 63H、 62H、 61H 单元中的内容依次 弹出到 DPH、DPL、A、PSW 中。 MCS -51 提供一个向上升的堆栈, 因此 SP 设置初值时要充分考虑堆栈的深度, 要留出适当的单元空间, 满足堆栈的使用。 例:A 的内容为 BCD 数(高 4 位为全 0),试用查表法来求得相应的 ASCII 码。 方法(1) BCD_ASC:INC A MOVC A , @A+PC RET TAB : DB 30H,31H,32H,33H,34H,35H, 36H,37H,38H,39H 方法(2) BCD_ASC:MOV DPTR , #TAB 15min
MOV AQA+DPTR RET DB30H,3lH,32H,33H,34H,35H, 36H,37H,38H,39H 9.十六位数据传送指令 4min MOV DPTR data16 这条指令的功能是将data6(通常是地址常数)送入目的操作数DPIR中,源 操作数的寻址方式为立即寻址,本指令是三字节的 例如: MOV DPTR,#1234H 执行后,(DPH)=12H,(DPL)=34H 课堂小结 min 1、A、 direct、Rn、@Ri、#data等之间的数据传送指 2、程序及外部数据存储器的访问指令 3、数据交换指令 4、堆栈指令 诈业 思考题T6、7 课后分析
MOV A , @A+DPTR RET TAB: DB 30H,31H, 32H,33H,34H,35H, 36H,37H,38H ,39H 9. 十六位数据传送指令 MOV DPTR, #data16 这条指令的功能是将 data16(通常是地址常数)送入目的操作数 DPTR 中,源 操作数的寻址方式为立即寻址,本指令是三字节的。 例如:MOV DPTR,#1234H 执行后,(DPH)=12H,(DPL)=34H 4min 课堂小结 1、A、direct、Rn、@Ri、#data 等之间的数据传送指 令; 2、程序及外部数据存储器的访问指令 3、数据交换指令 4、堆栈指令 作 业 思考题 T6、7 5min 课后分析