① 单片机的带借位减法
单片机中用到带借位的减法是为了进行多字节的减法运算,在进行高位字节运算时,要同时减去低位字节的借位,以得到正确的结果。x0dx0a如果cy=1,SUBB #09H,#05H 结果是03H 不是很正确噢x0dx0a首先你的指令是非法指令,计算机、单片机中的立即数是不能做目的操作数的,目的操作数是要保存结果的,而立即数是不能保存结果的。x0dx0a x0dx0a要想完成你的运算想法,应该写成如下形式:x0dx0a MOV A,#9x0dx0a SETB Cx0dx0a SUBB A,#5x0dx0a 即执行后: (A)-5-cy=9-5-1=3x0dx0a结果为03H是正确的。x0dx0a x0dx0a在进行最低字节的减法运算时,即刚开始做减法,还没有产生借位,应在运算前使cy=0x0dx0a即 CLR Cx0dx0a MOV A,#DATA1x0dx0a SUBB A,#DATA2x0dx0a 执行时, (A)-DATA2-cy=DATA1-DATA2-0x0dx0a x0dx0a 呵呵 满意 就选满意回答
② 求51单片机十进制多字节有符号减法!好心人帮我写出乘法和除法吧。写详细点,谢谢!
加法,多字节
LINE0:PUSH ACC
PUSH R0
PUSH R1
PUSH R7
PUSH DPTR
MOV R0,#被减数首地址(所有地址假设低位在低地址)
MOV R1,#减数首地址
MOV DPTR.#差的首地址
CLR C
MOV R7,#多字节加法字节数
LOOP:MOV A,@R0
SUBB A,@R1
MOVX @DPTR,A
INC R0
INC R1
INC DPTR
DJNZ R7,LOOP
MOV A,#00H
SUBB A,#00H
MOVX @DPTR,A
POP DPTR
POP R7
POP R1
POP R0
POP ACC
RET
以子程序形式给出子程序入口地址为:line0
乘法除法先在高字节运算,算法同理,如果对减法算法认可,可为你继续写乘法除法子程序。
③ 51单片机汇编中SUBB带借位指令的意思
51单片机汇编中SUBB带借位指令的格式是:SUBB A, R(操作数),意思是累加器中的数减去源操作数所指出的数和进位位CY,其差值存放在累加器A中。运算结果影响PSW(程序状态标志寄存器)。
在多字节减法运算中,低字节被减数有时会向高位产生借位,此时CY(进位标志)置一,所以在此必须使用带借位减法指令。需要注意的是,进行单字节减法或多字节低8位减法运算时,应先把进位位清零。在80C51指令系统中没有不带借位的减法指令。
例如: SUBB 49H,58H;49H-58H,在这里是49H是被减数,带借位。
实际上减法运算在计算机中是补码相加。
(3)多字节减法单片机扩展阅读
汇编语言指令系统执行计算和控制过程:
单片机的几个主要组成部分,构成了单片机的硬件。所谓硬件(Hardware),就是看得到,摸得到的实体。但是,光有这样的硬件,还只是有了实现计算和控制功能的可能性。
单片机要真正地能进行计算和控制,还必须有软件(Software)的配合。软件主要指的是各种程序。只有将各种正确的程序“灌入”(存入)单片机,它才能有效地工作。
单片机所以能自动地进行运算和控制,正是由于人把实现计算和控制的步骤一步步地用命令的形式,即一条条指令(Instruction)预先存入到存贮器中,单片机在CPU的控制下,将指令一条条地取出来,并加以翻译和执行。就以两个数相加这一简单的运算来说,当需要运算的数已存入存贮器后,还需要进行以下几步:
第一步:把第一个数从它的存贮单元(Location)中取出来,送至运算器。
第二步:把第二个数从它所在的存贮单元中取出来,送至运算器;
第三步:相加;
第四步:把相加完的结果,送至存贮器中指定的单元。
④ 单片机的带借位减法
单片机中用到带借位的减法是为了进行多字节的减法运算,在进行高位字节运算时,要同时减去低位字节的借位,以得到正确的结果。
如果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
呵呵
满意
就选满意回答
⑤ 单片机SUBB指令有什么用,减去CY有什么意义
SUBB指令是减法指令。
在进行多字节相减的时候,前一字节相减出现的借位,要减到后一字节里面, Cy就是上次相减时的借位。
带CY位减法指令,ov位是在两个符号数相加、减时产生:
正数+正数=负数;
正数-负数=负数;
负数-正数=正数;
负数+负数=正数;
这几种情况会导致ov位置1。
(5)多字节减法单片机扩展阅读:
如果是小数减大数,进位C会被置1 ,使用JC rel 转到处理程序去就可以了。
Cy --进位标记。
当最后一回数学操作产生进位(加法)或者借位(减法)时,该位置1。其他数学操作将其清0。AC --匡助进位标记。
当最后一回数学操作向高半字节有进位(加法)或者借位(减法)时,该位置1。其他数学操作将其清0。
这是标志寄存器PSW里的。
⑥ 51单片机汇编bcd减法实验
你这个程序没问题的话,直接加点程序就OK了。修改如下:
BCDSUBB:
MOV R2,#4
MOV R0,#38H
MOV R1,#30H
CLR C
SUBBCD1:
MOV A,#9AH
SUBB A,@R0
ADD A,@R1
DA A
MOV @R0,A
CPL C
INC R0
INC R1
DJNZ R2,SUBBCD1
MOV R1,#40H
MOV R0,#30H
MOV R2,#4
SUBBCD2:
MOV A,@R0
MOV @R1,A
DJNZ R2,SUBBCD2
RET