8085程式:兩個多位元組數的減法
現在讓我們來看一個Intel 8085微處理器的程式。這個程式主要用於減去多位元組數。
問題陳述:
編寫8085組合語言程式,以新增兩個多位元組數。
討論:
我們使用3位元組數。這些數字儲存在記憶體位置8001H和8004H中。8000H位置儲存了另一個資訊。在這裡,我們儲存位元組計數。結果儲存在位置8050H中。
我們將第一個運算元塊地址放入DE暫存器對中,並將第二個運算元塊地址放入HL暫存器對中。BC暫存器對儲存結果的目標地址。首先,我們清除進位標誌。在8085中,沒有指令可以將CY標誌設定為0,因此我們需要兩個連續的指令。STC和CMC,第一個是將CY設定為1,然後對其取反使其為0。我們從記憶體中獲取數字,並執行帶借位的減法指令SBB以獲得結果。因此,生成整個結果。
輸入:
地址 | 資料 |
---|---|
. . . | . . . |
8000 | 03 |
8001 | 73 |
8002 | 21 |
8003 | 65 |
8004 | 88 |
8005 | 51 |
8006 | 27 |
. . . | . . . |
流程圖:
程式:
地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
---|---|---|---|---|
F000 | 11, 01, 80 | LXI D,8001H | 指向第一個運算元 | |
F003 | 21, 04, 80 | LXI H,8004H | 指向第二個運算元 | |
F006 | 01, 50, 80 | LXI B,8050H | 指向目標地址 | |
F009 | 37 | STC | 設定進位 | |
F00A | 3F | CMC | 取反進位 | |
F00B | 1A | LOOP | LDAX D | 從DE指向的記憶體載入A |
F00C | 9E | SBB M | 減去記憶體元素和借位 | |
F00D | 02 | STAX B | 將結果儲存到BC指向的記憶體中 | |
F00E | 23 | INX H | 增加HL暫存器對 | |
F00F | 13 | INX D | 增加DE暫存器對 | |
F010 | 03 | INX B | 增加BC暫存器對 | |
F011 | 3A, 00, 80 | LDA 8000H | 將大小載入到A中 | |
F014 | 3D | DCR A | 將A減1 | |
F015 | 32, 00, 80 | STA 8000H | 將更新的大小儲存到記憶體中 | |
F018 | C2, 0B, F0 | JNZ LOOP | 如果Z=0,則跳轉到LOOP | |
F01B | 76 | HLT | 終止程式 |
輸出:
地址 | 資料 |
---|---|
. . . | . . . |
8050 | EB |
8051 | CF |
8052 | 3D |
. . . | . . . |
廣告