⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bcdb.asm

📁 这是我最近写的一些单片机的简单的模块
💻 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 + -