程序在8051微处理器中减去两个8位数字
现在,在本节中,我们将看到如何使用8051微控制器减去两个8位数字。寄存器A(累加器)在操作中用作一个操作数。在不同的寄存器组中有七个寄存器R0 – R7。我们可以将它们中的任何一个用作第二操作数。
我们在位置20H和21H取两个数字73H和BDH,相减后的结果将存储在位置30H和31H。
地址 | 值 |
---|---|
| … |
20小时 | 73小时 |
21小时 | BDH |
| … |
30小时 | 00小时 |
31小时 | 00小时 |
| … |
程序
MOV R0, #20H ; set source address 20H to R0MOV R1, #30H ; set destination address 30H to R1
MOV A, @R0 ; take the value from source to register A
MOV R5, A ; Move the value from A to R5
MOV R4, #00H ; Clear register R4 to store borrow
INC R0 ; Point to the next location
MOV A, @R0 ; take the value from source to register A
MOV R3, A ; store second byte
MOV A, R5 ;get back the first operand
SUBB A, R3 ; Subtract R3 from A
JNC SAVE
INC R4 ; Increment R4 to get borrow
MOV B, R4 ; Get borrow to register B
MOV @R1, B ; Store the borrow first
INC R1 ; 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。
输出结果
地址 | 值 |
---|---|
… | |
20小时 | 73小时 |
21小时 | BDH |
… | |
30小时 | 01小时 |
31小时 | B6H |
… |
以上是 程序在8051微处理器中减去两个8位数字 的全部内容, 来源链接: utcz.com/z/331500.html