第三章1 单片机-汇编语言程序设计.ppt
文本预览下载声明
MCS-51 单片机应用技术教程 3.3.5 堆栈操作指令 堆栈操作指令只有2条,即:压入(PUSH)和弹出(POP)。 压入指令:PUSH direct ;SP←SP+1,((SP))←(direct) 弹出指令:POP direct ;((SP))←(direct),SP←SP-1 3.3 数据传送类指令 例1 PUSH ACC ;保护A中数据 PUSH PSW ;保护标志寄存器中数据 … ;执行服务程序 POP PSW ;恢复标志寄存器中数据 POP ACC ;恢复A中数据 例2 PUSH ACC PUSH PSW … POP ACC POP PSW 例3 PUSH DPH PUSH DPL … POP DPL POP DPH 3.3 数据传送类指令 3.4.1 加减运算指令 1. 加法指令 这类指令所完成的操作是把源操作数(立即数、直接地址单元内容、间接地址单元内容、工作寄存器内容)与累加器A的内容相加,将结果保存在累加器A中。 3.4 算术运算类指令 指令助记符与功能说明如下: 寄存器寻址 ;(A)←(A)+(Rn) Rn A, ADD 寄存器间接寻址 ;(A)←(A)+((Ri)) @Ri A, ADD 直接寻址 ;(A)←(A)+(direct) direct A, ADD 立即寻址 ;(A)←(A)+data #data A, ADD 源操作数寻址方式 功能说明 源操作数 目的操作数 例1 执行指令: MOV A, #0A9H ADD A, #0B8H 对程序状态寄存器的影响如图3.6所示。 运算结果:(A)=61H,CY=1,AC=1,OV=1,P=1,(PSW)=0C5H 3.4 算术运算类指令 例2 8位数加法程序片断1: MOV A, #23H ADD A, #5AH … 运算结果:(A)=7DH,CY=0,OV=0,AC=0,P=0,(PSW)=00H。 3.4 算术运算类指令 例3 8位数加法程序片断2: MOV A, #0ABH ADD A, #9AH … 运算结果:(A)=45H,CY=1,OV=1,AC=1,P=1,(PSW)=0C5H。 3.4 算术运算类指令 带进位加法指令与前述加法指令的区别仅为考虑进位位,其他与加法指令相同。 2. 带进位加法指令 指令助记符与功能说明如下: 寄存器寻址 ;(A)←(A)+(Rn)+(C) Rn A, ADDC 寄存器间接寻址 ;(A)←(A)+((Ri))+(C) @Ri A, ADDC 直接寻址 ;(A)←(A)+(direct)+(C) direct A, ADDC 立即寻址 ;(A)←(A)+data+(C) #data A, ADDC 源操作数寻址方式 功能说明 源操作数 目的操作数 3.4 算术运算类指令 例3 利用ADDC指令可以进行多字节的加法运算。 设有两个16位数相加,被加数的高8位放在41H,低8位放在40H,加数的高8位放在43H,低8位放在42H,和的低8位存放在50H,高8位存放在51H,进位位存放在52H。可编程序如下: 例1 设(A)=0AAH,(R0)=55H,C=1,则执行指令: ADDC A, R0 运算结果:(A),AC=1,CY=1,OV=1。 例2 设(A)=35H,(40H)=21H,C=0,则执行指令: ADDC A, 40H 运算结果:(A)=56H,AC=0,CY=0,OV=0。 这与执行指令“ADD A, 40H”的结果是一样的。 3.4 算术运算类指令 SHJ: MOV A, 40H ;(A)←被加数低8位 ADD A, 42H ;与加数低8位相加 MOV 50H, A ;和的低8位存入50H MOV A, 41H ;(A)←被加数高8位 ADDC A, 43H ;被加数高8位与加数高8位以及低位来的进位相加 MOV 51H, A ;和的高8位存入51H单元 MOV A, #00H ;(A)←00H ADDC A, #00H ;(A)←(A) +00H+高8位来的进位 MOV
显示全部