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