2字节BCD码减法 汇编程序

2字节BCD码减法 汇编程序,第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

对于86而言,有直接的16位减法指令,所以这个题目的CPU应该是8位单片机,以51单片机为例,先将借位清零,低八位相减法,再高八位带借位减,类似于列式减法运算一样。程序如下:

(R3R4-R6R7)=(R3R4)

入口: R3,R4,R6,R7

出口: R3,R4

NSUB :

MOV A,R4

CLR C借位清零

SUBB A,R7;低八位相减

MOV R4,A保存低八位结果

MOV A,R3

SUBB A,R6高八位带借位减

MOV R3,A保存高八位结果

RET

不是,是用被减数加上减数的补码

步骤(不是计算机计算的步骤,我想的步骤):

56H求补

01010110B各位取反+1

10101001B+1=10101010B

被减数+减数补码

10010000B+10101010B=[1]00111010B=3AH(最高位舍去)

都是再字节层次上做的运算,所以结果的最高位舍去了


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7773713.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存