8051 微處理器中兩個 8 位數的減法程式
現在,在本節中,我們將瞭解如何使用 8051 微控制器減去兩個 8 位數。暫存器 A(累加器)用作運算中的一個運算元。在不同的暫存器組中,有七個暫存器 R0 – R7。我們可以使用其中任何一個作為第二個運算元。
我們將兩個數字 73H 和 BDH 分別放在 20H 和 21H 位置,減法運算結果將儲存在 30H 和 31H 位置。
地址 | 值 |
---|---|
| … |
20H | 73H |
21H | BDH |
| … |
30H | 00H |
31H | 00H |
| … |
程式
MOV R0, #20H ; set source address 20H to R0 MOV 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。
輸出
地址 | 值 |
---|---|
… | |
20H | 73H |
21H | BDH |
… | |
30H | 01H |
31H | B6H |
… |
廣告