8085程式用於加兩個16位數
在本程式中,我們將瞭解如何新增兩個16位數。
問題陳述
編寫8085組合語言程式,以新增儲存在記憶體位置8000H – 8001H和8002H – 8003H中的兩個16位數。
討論
在本程式中,我們使用HL和DE暫存器對指向運算元地址。然後使用ADD運算子新增LSBytes,然後使用ADC運算子新增MSBytes以考慮進位標誌結果。16位結果將儲存在BC暫存器中,並且透過檢查加法後的進位位,我們可以簡單地將1放入記憶體中。
我們取兩個數字BCAD + FE2D = 1BADA
輸入
地址 | 資料 |
---|---|
... | ... |
8000 | AD |
8001 | BC |
8002 | 2D |
8003 | FE |
... | ... |
流程圖
程式
地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
---|---|---|---|---|
F000 | 21, 00, 80 | LXI H,8000H | 指向第一個運算元的LSB | |
F003 | 11, 02, 80 | LXI D,8002H | 指向第二個地址的LSB | |
F006 | 1A | LDAX D | 將Acc載入到DE指向的內容 | |
F007 | 86 | ADD M | 將HL指向的記憶體元素與Acc相加 | |
F008 | 4F | MOV C, A | 將LSB結果儲存在C中 | |
F009 | 23 | INX H | 指向第一個運算元的下一個位元組 | |
F00A | 13 | INX D | 指向第二個運算元的下一個位元組 | |
F00B | 1A | LDAX D | 將Acc載入到DE指向的內容 | |
F00C | 8E | ADC M | 將HL指向的記憶體元素與Acc + Carry相加 | |
F00D | 47 | MOV B,A | 將MSB儲存在B中 | |
F00E | 60 | MOV H,B | 將B移動到H | |
F00F | 69 | MOV L,C | 將C移動到L | |
F010 | 22, 50, 80 | SHLD 8050H | 將結果儲存在8050H和8051H中 | |
F013 | D2, 1B, F0 | JNC DONE | 跳到結束 | |
F016 | 3E, 01 | MVI A, 01H | 將1載入到Acc | |
F018 | 32, 52, 80 | STA 8052H | 將Acc內容儲存到8052H | |
F01B | 76 | DONE | HLT | 終止程式 |
輸出
地址 | 資料 |
---|---|
... | ... |
8050 | DA |
8051 | BA |
8052 | 01 |
... | ... |
廣告