单片机msc-51中编程实现两个一字节压缩型BCD码的减法

编程实现两个一字节压缩型BCD码的减法,设被减数地址在R0中,减数地址在R1中,差仍存于被减数地址单元中。注意是单片机中啊。

编程实现两个一字节压缩型BCD码的减法,

设被减数地址在R0中,减数地址在R1中,差仍存于被减数地址单元中。

注意是单片机中啊。

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

一字节压缩的 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   ;用 Cy 当做“符号标志位”

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

如果运算数据,是:55-22 = 33,

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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-08
ORG 8000H
DSUB:MOV R0,#SS ;置被减数指针
MOV R1,#SD ;置减数指针
MOV R7,#N ;置循环次数
CLR C ;置进位标志CY=1
CLR A ;累加器清0
NEXT: ADDC A,#9AH ; 99十1=100(9A)
SUBB A,@R1 ;100一减数,得减数补
ADD A,@R0 ;被减数加减数补
DA A ;十进制调整
MOV @R0,A ;存结果
INC R0 ;修改指针
INC R1
DJNZ R7,NEXT ;未完,继续
SS: DB 75H,38H,06H······
SD: DB 41H,24H,17H······
N: EQU SD一SS
END追问

谢谢你,想请问你一下你是从哪里学习到这些知识的?

追答

单片机原理这本书上有的...

本回答被提问者采纳