8085程式用於減去兩個BCD數
這裡我們將看到如何使用8085進行BCD減法。
問題陳述
編寫8085組合語言程式,執行儲存在8001和8002位置的兩個數的BCD減法。結果將儲存在8050和8051。
討論
要減去兩個BCD數,我們將使用十的補碼方法。將第一個數儲存到B中,將99載入到A中,然後減去該數以獲得9的補碼。之後,加上1得到10的補碼。我們不能使用INR指令增加。這不會影響CY標誌。所以我們必須使用ADI 01。然後將使用DAA指令調整十進位制。然後,如果結果為負數,我們將FF儲存為高位位元組,否則將00儲存為高位位元組。
輸入
| 地址 | 資料 |
|---|---|
| . . . | . . . |
| 8000 | 01 |
| 8001 | 97 |
| 8002 | 88 |
| . . . | . . . |
流程圖

程式
| 地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
|---|---|---|---|---|
| F000 | 21, 01, 80 | | LXI H,8001H | 指向獲取選擇的地址 |
| F003 | 46 | | MOV B,M | 將運算元載入到B |
| F004 | 3E, 99 | | MVI A,99H | 將99H載入到A |
| F006 | 23 | | INX H | 指向下一個運算元 |
| F007 | 96 | | SUB M | 從A中減去M |
| F008 | C6, 01 | | ADI 01H | 加上01H以獲得10的補碼 |
| F00A | 80 | | ADD B | 將B與A相加 |
| F00B | 27 | | DAA | 調整十進位制 |
| F00C | 6F | | MOV L,A | 將A儲存到L |
| F00D | DA, 3A, F0 | | JC SKP2 | 如果CY = 1,跳轉到SKP2 |
| F010 | 26, FF | | MVI H,FFH | 將FFH載入到H |
| F012 | C3, 62, F0 | | JMP STORE | 儲存結果 |
| F015 | 26, 00 | SKP2 | MVI H,00H | 清除HL |
| F017 | 22, 50, 80 | STORE | SHLD 8050H | 從HL儲存結果 |
| F01A | 76 | | HLT | 終止程式 |
輸出
| 地址 | 資料 |
|---|---|
| . . . | . . . |
| 8050 | 09 |
| 8051 | 00 |
| . . . | . . . |
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP