2字节BCD码减法 汇编程序

两个2字节BCD码数值相减,如#55H 减 #22H 结果为 #33H。对于被减数小于减数的问题处理应能有符号位表示,如至CY为1。

BCD码相减等于加上减数的补数。如55-22 就是55+(100-22)=133,丢掉进位之后,就能得到正确的结果。由于影响进位,因此CY会变为1的。
具体程序如下:
CLR C
MOV A, #9AH ;做100-22的减法
SUBB A, #22H
ADD A, #55H
DA A
温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-02-26

BCD 码相减,如:22-55 =-33。

注意:-33 的 BCD 码补码是 67H。

MCS-51 汇编语言程序如下:

MOV R2,#22H  ;被减数

MOV R3,#55H  ;减数

CLR C

MOV A,R2

SUBB A,R3   ;先减一次,判断正负

MOV F0,C   ;保存正负号

;---------下面正式相减

MOV A,#9AH

SUBB A,R3   ;求减数的 BCD 码补码=45H

ADD A,R2   ;加上 22H,得 67H

DA A      ;十进制调整,还是 67H

MOV R4,A   ;保存

MOV C,F0   ;你所需要的“负数标志位”

--------------

如果原数据,是:55-22,

执行本程序,将有:C = 0,R4 = 33。

相似回答