8085程式用於除兩個16位數
在這裡,我們將瞭解如何使用 8085 除兩個 16 位數。
問題陳述
編寫 8085 組合語言程式來除兩個 16 位數。
討論
8085 沒有除法運算。要執行除法,我們必須使用重複減法。要執行 16 位除法,我們必須對暫存器對執行相同的操作。因為暫存器對用於儲存 16 位資料。
除數儲存在 FC00 和 FC01 位置,被除數儲存在 FC02 和 FC03。除法後,商將儲存在 FC04 和 FC05,餘數將儲存在 FC06 和 FC07。
輸入
地址 | 資料 |
---|---|
FC00 | 8A |
FC01 | 5C |
FC02 | 5A |
FC03 | 1D |
流程圖
程式
地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
---|---|---|---|---|
F000 | 01, 00, 00 | | LXI B,0000H | 清除 BC 暫存器對 |
F003 | 2A, 02, FC | | LHLD FC02H | 首先將除數放入 HL |
F006 | EB | | XCHG | 交換 DE 和 HL |
F007 | 2A, 00, FC | | LHLD FC00H | 獲取被除數 |
F00A | 7D | LOOP | MOV A,L | 將 L 載入到 A |
F00B | 93 | | SUB E | 從 A 中減去 E |
F00C | 6F | | MOV L,A | 將 A 儲存到 L |
F00D | 7C | | MOV A,H | 將 H 載入到 A |
F00E | 9A | | SBB D | 從 A 中減去 B 並帶借位 |
F00F | 67 | | MOV H,A | 再次將 A 儲存到 H |
F010 | DA, 17, F0 | | JC SKIP | 如果 CY 為 1,則跳過 |
F013 | 03 | | INX B | 將 B 增加 1 |
F014 | C3, 0A, F0 | | JMP LOOP | 跳轉到迴圈 |
F017 | 19 | SKIP | DAD D | 將 HL 和 DE 相加 |
F018 | 22, 06, F0 | | SHLD FC06H | 將餘數儲存到 FC06 和 FC07 |
F01B | 69 | | MOV L,C | 將 C 載入到 L |
F01C | 60 | | MOV H,B | 將 B 載入到 H |
F01D | 22, 04, FC | | SHLD FC04H | 將商儲存到 FC04 和 FC05 |
F020 | 76 | | HLT | 終止程式 |
輸出
地址 | 資料 |
---|---|
FC04 | 03 |
FC05 | 00 |
FC06 | 7C |
FC07 | 04 |
廣告