算术运算指令 5、十进制调整指令 DA A ;将A中二进制相加和调整成BCD码 说明: 计算机进行二进制加法,其和也为二进制。如果是十进制相加(即BCD码相加),想得到十进制结果,就必须进行十进制调整(即BCD码调整) DA A指令将A中二进制相加和调整成BCD码 DA A指令只能跟在 ADD 或 ADDC 之后,和的低4位大于9或有半进位,则低4位加6;如果和的高4位大于9或有进位,则高4位加6 DA A指令只对一个字节和进行调整,如为多字节相加,必须进行多次调整 此指令不能对减法结果进行调整 算术运算指令 5、十进制调整指令 BCD码是指“用二进制表达的十进制数”。 例如:十进制数20 可以用 二进制表示; 也可以用 十六进制数14H表示; 还可以用 BCD 4个二进制位就可以表示一位BCD码: 0000~1001 可表示十进制数(BCD数) 0~9; 8个二进制位就可以表示两位压缩的BCD码: 10011001 表示 00~99。 指令 “DA A” 完成的操作: 例:编写完成78+93的BCD加法的程序,并对调整过程进行分析 二进制加法和十进制调整过程为: 78 (A) +) 93 data 171 1 +) 0110B 低4位9,加06H调整 +) Cy=1,加60H调整 1 相应BCD加法程序为: ORG 3000H MOV A,#78H ADD A,#93H DA A SJMP $ END 算术运算指令 6、乘法指令 MUL AB ;A×B→BA 说明: 该指令实现8位无符号数乘法,A、B中各放置一个8位乘数,指令执行后,16位积的高8位在B中,低8位在A中 进位标志位Cy总是清“0”。 P标志仍为A累加器的奇偶校验位 当积大于255(B中的内容不为0)时,OV=1,否则OV=0 算术运算指令 7、除法指令 DIV AB ;A÷B→商在A中,余数在B中 说明: 该指令实现两个8位无符号数除法,A中放置被除数,B中放置除数。指令执行后,商在A中,余数在B中。 对Cy和P标志的影响与乘法时相同。 当除数为0时,OV=1,否则OV=0 逻辑运算指令 逻辑运算类指令包括“与”、“或”、“异或”、清除、求反和左右移位等逻辑操作,这类指令除以累加器A为目的寄存器的指令外,均不影响PSW中的标志位 1、逻辑“与”、“或”、“异或”指令 ANL(ORL、XRL) A,Rn ANL(ORL、XRL) A,@Ri ANL(ORL、XRL) A,dir ANL(ORL、XRL) A,#DATA ANL(ORL、XRL) dir,A ANL(ORL、XRL) dir,#data 影响P标志 2、累加器清零/取反操作 CLR,CPL (2条) CLR A ;对累加器清零 1Byte1个Tm CPL A ;对累加器按位取非 1Byte1个Tm 逻辑运算指令 例:若A=5CH,执行CPL A 结果:A=A3H 2、累加器移位操作:RL,RLC,RR,RRC (4条) RLC A 带进位位左环移 RR A 右环移 RL A 左环移 累加器 A 累加器 A Cy 累加器 A Cy 累加器 A RRC A 带进位位右环移 逻辑运算指令 循环移位指令通常用于位测试、位统计、乘2、除2等操作 对RLC、RRC指令,在Cy=0时 RLC相当于乘以2 RRC相当于除以2 后两条指令,影响P标志和Cy。 例:将21H单元的低三位和20H单元的低五位合并为一个字,并送至30H单元,要求(21H)的低三位放在高位上. MOV 30H, 20H ;(30H)=(20H) ANL 30H, #1FH ;保留低五位 MOV A , 21H ;A=(21H) SWAP A ;高、低四位交换 RL A
原创力文档

文档评论(0)