编辑: hgtbkwd 2016-06-11

(四)堆栈操作指令 入栈指令:PUSH n ;

SP?SP+1,(SP)?(n) 出栈指令:POP n ;

(n)?(SP),SP?SP-1 例:设A=02,B=56H,执行下列指令后,SP=A=B= ? , 30H 02H 56H SBR: MOV SP,#30H ;

设栈底 PUSH A PUSH B MOV A,#0 MOV B, #01 … POP B POP A 02H 56H *

(五) 交换指令 实现片内RAM区的数据双向传送. 1. 字节交换指令 XCH A,Rn ;

A ? Rn XCH A,@Ri;

A ?(Ri) XCH A,direct ;

A ?(direct) 例:设A= 29H,执行指令 XCH A,2AH后,A= ?(2AH)= ? 38H 29H * 2. 半字节交换指令 XCHD A,@Ri ;

A0~3 ?((Ri))0~3 SWAP A ;

A4~7 ? A0~3 例:将片内RAM 2AH和2BH单元中的BCD码转换成压缩式BCD码存入20H单元. MOV A,#0 MOV R0,#2AH MOV R1,#2BHXCHD A,@R0SWAP AXCHD A,@R1XCH A,20H * 与数据传送指令不同,多数算术运算指令会影响标志位的状态,即CPU执行算术运算指令后,根据数据操作情况自动设置标志位的状态.MCS-51 的程序状态字寄存器 PSW 为标志寄存器.其格式如下: 3.5算术运算指令 Cy AC F0 RS1 RS0 OV ― P D7 D6 D5 D4 D3 D2 D1 D0 * 标志位(自动设置状态)1)Cy:进位标志位保存运算后最高位的进位/借位状态,当有进位/借位,Cy=1,否则Cy=0.2)AC:辅助进位标志位保存低半字节的进位/借位状态,当D3产生进位/借位, AC=1,否则AC=0.用于十进制调整.3)OV:溢出标志位 OV=Cy7?Cy6,补码运算产生溢出OV=1,否则OV=0.4)P:奇偶标志位反映累加器A中数据的奇偶性.当1的个数为奇数,P=1,否则P=0. * 用户选择位(编程设置状态) 1)F0:用户自定义标志位.2)RS

1、RS0: 工作寄存器区选择位.复位时,PSW=00H 例:复位后,设置使用工作寄存器3区,其余标志位不变. RS1 RS0 工作寄存区

0 0 0区011区

1 0 2区113区 Cy AC F0 RS1 RS0 OV ― P * 3.5.1 加减指令 完成片内 RAM 和A中数据的加减乘除运算. 1.加法指令 1)不带进位加法:ADD A,源操作数 ADD A,Rn ADD A,direct ADD A,@Ri ADD A,#data 影响Cy、OV、AC、P * 例:A=3BH,PSW=0,执行指令 ADD A,#3BH求:A=76H ,Cy=

0 ,OV=

0 ,AC=

1 ,P=

1 PSW= 01000001= 41H

0011 1011 +

0011 1011

0111 0110 Cy AC F0 RS1 RS0 OV ― P * 2)带进位加法: ADDC A,源操作数 ADDC A,Rn ADDC A,direct ADDC A,@Ri ADDC A,#data 影响Cy、OV、AC、P 例:A= 9AH,R2= E3H,PSW= 0,执行指令ADDC A,R2 后求:A= 7DH ,Cy=

1 ,OV= 1,AC= 0,P= 0, PSW=

10000100 = 84H

1001 1010

1110 0011

0 1

0111 1101 Cy AC F0 RS1 RS0 OV ― P * ADDS:CLR C MOV A,40HADD A,42HMOV 44H,AMOV A,41HADDC A,43HMOV 45H,AMOV A,#0ADDC A,#0MOV 46H,ARET ;

取被加数低字节;

加上加数低字节;

保存和的低字节;

取被加数高字节;

加上加数高字节;

保存和的高字节;

求高字节进位;

;

保存和的进位;

子程序结束 带进位加法指令ADDC用于多字节运算例:设双字节数 X 存在片内RAM 41H、40H单元,Y存在42H、43H单元,编程求 Z=X+Y,并存入片内RAM单元44H、45H、46H. * 3) BCD调整指令: DAA;

对A中加法结果进行调整 在加法过程中低4位向高4位有进位或累加器A中低4位大于9,则累加器A作加6调整;

若在加法过程中最高位有进位或累加器A中高4位大于9,则累加器A作加60H调整 (即高4位作加6调整)十进制加法指令:ADD A,源操作数DA A 带进位十进制加法指令:ADDC A,源操作数DA A * 例:编制85+59的BCD加法程序,并对其工作过程进行分析. 解:相应BCD加法程序为:MOV A,#85H;

A←85 ADD A,#59H;

A←85+59= 0DEH DA A ;

A←44,Cy=1 * 二进制加法和进制调整过程为:

85 1000

0101 (A) +)

59 0101

1001 data

144 (0)

1101 1110 110;

低4位>

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题