8085微處理器多位元組BCD數減法程式
現在讓我們來看一個Intel 8085微處理器的程式。在這個程式中,我們將學習如何減去多位元組BCD數。
問題陳述
編寫8085組合語言程式以減去兩個多位元組BCD數。
討論
數字儲存在記憶體中,並存儲一個附加資訊。它將顯示多位元組BCD數的位元組數。這裡我們選擇3位元組BCD數。它們儲存在8001H到8003H位置,另一個數儲存在8004H到8006H位置。8000H位置儲存位元組計數。在這種情況下,位元組計數為03H。
對於減法,我們使用十的補碼方法進行減法。
在這種情況下,數字為:672173 – 275188 = 376985
輸入 −
地址 | 資料 |
---|---|
. . . | . . . |
8000 | 03 |
8001 | 73 |
8002 | 21 |
8003 | 67 |
8004 | 88 |
8005 | 51 |
8006 | 27 |
. . . | . . . |
流程圖 −
程式 −
地址 | 十六進位制程式碼 | 標籤 | 指令助記符 | 註釋 |
---|---|---|---|---|
F000 | 21, 00, 80 | LXI H,8000H | 指向獲取計數的位置 | |
F003 | 4E | MOV C,M | 將計數獲取到C暫存器 | |
F004 | 11, 01, 80 | LXI D,8001H | 指向第一個數 | |
F007 | 21, 04, 80 | LXI H,8004H | 指向第二個數 | |
F00A | 37 | STC | 設定進位標誌 | |
F00B | 3E, 99 | LOOP: | MVI A,99H | 將99H載入到A暫存器 |
F00D | CE,00 | ACI 00H | 將00H和進位與A暫存器相加 | |
F00F | 96 | SUB M | 從A暫存器減去M | |
F010 | EB | XCHG | 交換DE和HL暫存器 | |
F011 | 86 | ADD M | 將M與A暫存器相加 | |
F012 | 27 | DAA | 十進位制調整 | |
F013 | 77 | MOV M,A | 將A暫存器儲存到記憶體 | |
F014 | EB | XCHG | 交換DE和HL暫存器 | |
F015 | 23 | INX H | HL暫存器指向下一個位置 | |
F016 | 13 | INX D | DE暫存器指向下一個位置 | |
F017 | 0D | DCR C | C暫存器減1 | |
F018 | C2, 0B, F0 | JNZ LOOP | 如果Z=0則跳轉到LOOP | |
F01B | 76 | HLT | 程式結束 |
輸出 −
地址 | 資料 |
---|---|
. . . | . . . |
8001 | 85 |
8002 | 69 |
8003 | 37 |
. . . | . . . |
廣告