8051 程序用于减去两个 8 位数字


在这里,我们将看到如何使用这个微控制器来减去两个 8 位数字。寄存器 A(累加器)用作操作数中的一个操作数。在不同的寄存器组中有七个寄存器 R0 – R7。我们可以使用其中的任何一个作为第二个操作数。

我们采用两个数字 73H 和 BDH,分别位于位置地址 20H 和 21H,减去之后,结果将存储在位置地址 30H 和 31H。 

地址



.
.
.
20H
73H
21H
BDH


.
.
.
30H
00H
31H
00H


.
.
.


程序

MOVR0,#20H;set source address 20H to R0
MOVR1,#30H;set destination address 30H to R1

MOVA,@R0;take the value from source to register A
MOVR5,A; Move the value from A to R5
MOVR4,#00H; Clear register R4 to store borrow

INCR0; Point to the next location
MOVA,@R0; take the value from source to register A
MOVR3,A; store second byte
MOVA,R5;get back the first operand
SUBBA,R3; Subtract R3 from A
       JNCSAVE
       INCR4; Increment R4 to get borrow
       MOVB,R4;Get borrow to register B
       MOV@R1,B; Store the borrow first
       INCR1; Increase R1 to point to the next address

SAVE:  MOV@R1,A; Store the result
HALT:  SJMP HALT ;Stop the program

因此,通过减去 73H –BDH,结果将是 B6H。在位置地址 30H,我们将会获得 01H。这表示结果为负数。要从结果 B6H 中获得实际值,我们必须执行 2 的补码运算。执行 2 的补码运算后,结果将是 -4AH。

输出

地址



.
.
.
20H
73H
21H
BDH


.
.
.
30H
01H
31H
B6H


.
.
.

更新时间: 27-Jun-2020

11K+ 浏览量

开启你的事业

完成课程并获得认证

开始
广告