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 |
. . . |
广告