📄 bcdb.asm
字号:
org 0000h
jmp 40h
org 40h
start:
mov r7,#2 ;具体实现调用子程序之前,必须为r7、r0、r1赋值
mov r0,#40h
mov r1,#42h
acall BCDB
jmp $
;***************************************************************
;子程序名:BCDB
;功能:实现多字节BCD减法
;入口条件:r0存放被减数低字节地址,r1存放减数低字节地址,字节数
; 存放于r7中
;出口信息:差在[r0]中,差的字节数保存在r2,最高借位在CY中
;说明:高位字节减数变补与被减数相加有进位,实际上表示两者相减无借位
; 为正确反映借位情况,对标志位求反使做减法运算时C=1,表示有
; 借位,C=0,表示无进位
; 在数据存储器的那些单元中已存放各个BCD码,如某数为51D,写入
; 其中的值为51h执行时仍按照十六进制运算,但经DA调整后才形成
; 正确的BCD码
;***************************************************************
BCDB:
mov r2,#00h ;差的字节数初始时置为0
clr c ;借位位清0
BCDB1:mov A,#9ah ;减数对10求补码,因为没有减法十进制调整指令
subb a,@r1 ;得到减数相应字节的相反数的补码
addc a,@r0 ;加法运算,即补码相加
da a ;十进制加调整
mov @r0,a ;存和结果的相应字节
inc r0 ;修改被减数指针
inc r1 ;修改减数指针
inc r2 ;差的字节数增1
cpl c ;进位求反,以形成正确的进位
djnz r7,BCDB1 ;未减完继续执行BCDA1
ret
;****************************************************************
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -