单片机msc-51中编程实现两个一字节压缩型BCD码的减法
编程实现两个一字节压缩型BCD码的减法,设被减数地址在R0中,减数地址在R1中,差仍存于被减数地址单元中。注意是单片机中啊。...
编程实现两个一字节压缩型BCD码的减法,设被减数地址在R0中,减数地址在R1中,差仍存于被减数地址单元中。注意是单片机中啊。
展开
2个回答
展开全部
编程实现两个一字节压缩型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。
展开全部
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
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
追问
谢谢你,想请问你一下你是从哪里学习到这些知识的?
追答
单片机原理这本书上有的...
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询