Ⅰ mcs 51单片机 二进制减法 微机原理
51单片机里,8位二进制数的减法如下:
MOV A, #被减数
CLR C
SUBB A, #减数 ;转换成加法的过程,由CPU自行完成
…… ;到这里就减完了,C=1时,即有借位
Ⅱ 关于单片机带借位减法指令
51单片机中带借位减法指令为:SUBB,使用该指令时一定要首先处理借位Cy,不然容易出错,得出与理想不一样的结果。比如:
MOV A,R2
SUBB A,R3
以上指令运行后,将的出不确定的结果,正确的处理方法为:
CLR C
MOV A,R2
SUBB A,R3
Ⅲ 单片机的带借位减法
单片机中用到带借位的减法是为了进行多字节的减法运算,在进行高位字节运算时,要同时减去低位字节的借位,以得到正确的结果。
如果cy=1,SUBB
#09H,#05H
结果是03H
不是很正确噢
首先你的指令是非法指令,计算机、单片机中的立即数是不能做目的操作数的,目的操作数是要保存结果的,而立即数是不能保存结果的。
要想完成你的运算想法,应该写成如下形式:
MOV
A,#9
SETB
C
SUBB
A,#5
即执行后:
(A)-5-cy=9-5-1=3
结果为03H是正确的。
在进行最低字节的减法运算时,即刚开始做减法,还没有产生借位,应在运算前使cy=0
即
CLR
C
MOV
A,#DATA1
SUBB
A,#DATA2
执行时,
(A)-DATA2-cy=DATA1-DATA2-0
呵呵
满意
就选满意回答
Ⅳ 单片机实现十进制数减1的编程
51单片机的运算都是十六进制的,唯一的十进制调整指令DA
A,也只能用在ADD/ADDC指令之后,所以要做十进制的减法运算,也必须转换为加法运算,然后再做十进制调整。十进制减1运算程序CLR
CMOV
A,#50H
ADD
A,#99H
;A=E9HDA
A
;A=49H
Ⅳ 单片机msc-51中编程实现两个一字节压缩型BCD码的减法
编程实现两个一字节压缩型BCD码的减法,
设被减数地址在R0中,减数地址在R1中,差仍存于被减数地址单元中。
注意是单片机中啊。
------------------
一字节压缩的 BCD 码相减。
如:22-55 =-33。
注意:-33 的 BCD 补码是 67H。
MCS-51 汇编语言程序如下:
MOVR2,#22H;被减数
MOVR3,#55H;减数
CLRC
MOVA,R2
SUBB A,R3;先减一次团并明,取得正负号
MOVF0,C;暂时保存
;---------下面正式相减
MOVA,#9AH
SUBB A,R3;求减数的 BCD 补码=45H
ADDA,R2;加上被减数 22H,得 67H
DA A ;十进塌告制调整,还是 67H
MOVR4,A;保存差
MOVC,F0;用 Cy 当做“蔽搜符号标志位”
--------------
如果运算数据,是:55-22 = 33,
执行本程序,将有:C = 0,R4 = 33。