8085 微處理器中將 BCD 轉換為 HEX 的程式
在這裡,我們將看到一個 8085 程式,該程式將把 BCD 數轉換為等效的 HEX 數。
問題陳述−
一個 BCD 數儲存在地址 802BH 中。將其轉換為二進位制等效值並將其儲存到記憶體地址 802CH 中。
討論−
在這個問題中,我們從記憶體中獲取一個 BCD 數並將其轉換為其二進位制等效值。首先,我們將輸入的每個 nibble 切割。因此,如果輸入是 52(0101 0010),那麼我們可以透過將數字與 0FH 和 F0H 進行掩碼來簡單地將其切割。當高位 nibble 被切割時,將其向左旋轉四次以將其傳輸到低位 nibble。
現在,只需使用十進位制調整方法將數字相乘即可獲得最終的十進位制結果。
輸入
| 地址 | 資料 |
|---|---|
| … | … |
| 802B | 52 |
| … | … |
流程圖

程式
| 地址 | HEX 程式碼 | 標籤 | 助記符 | 註釋 |
|---|---|---|---|---|
| 8000 | 31, FF, 80 | LXI SP,80FFH | 初始化堆疊指標 | |
| 8003 | 21, 2B, 80 | LXI H, 802BH | 指向輸入緩衝區的指標 | |
| 8006 | 01, 2C, 80 | LXI B, 802CH | 指向輸出緩衝區的指標 | |
| 8009 | 7E | MOV A, M | 將 802BH 的內容移動到 A | |
| 800A | CD, 0F, 80 | CALL BCDBIN | 將 BCD 數轉換為 HEX 的子程式 | |
| 800D | 02 | STAX B | 將累加器儲存到 BC 指向的記憶體位置 | |
| 800E | 76 | HLT | 終止程式 | |
| 800F | C5 | BCDBIN | PUSH B | 儲存 B |
| 8010 | 47 | MOV B, A | 將 A 複製到 B | |
| 8011 | E6, 0F | ANI 0FH | 最高四位掩碼 | |
| 8013 | 4F | MOV C, A | 將 A 複製到 C | |
| 8014 | 78 | MOV A, B | 將 B 複製到 A | |
| 8015 | E6, F0 | ANI F0H | 最低四位掩碼 | |
| 8017 | 0F | RRC | 累加器右移 4 次 | |
| 8018 | 0F | RRC | ||
| 8019 | 0F | RRC | ||
| 801A | 0F | RRC | ||
| 801B | 57 | MOV D, A | 將計數值載入到暫存器 D 中 | |
| 801C | AF | XRA A | 清除累加器的內容 | |
| 801D | 1E, 0A | MVI E, 0AH | 用 0AH 初始化暫存器 E | |
| 801F | 83 | SUM | ADD E | 將暫存器 E 的內容加到 A 中 |
| 8020 | 15 | DCR D | 遞減計數器,直到達到 0 | |
| 8021 | C2, 1F, 80 | JNZ SUM | ||
| 8024 | 81 | ADD C | 將暫存器 C 的內容加到 A 中 | |
| 8025 | C1 | POP B | 恢復 B | |
| 8026 | C9 | RET | 將控制權返回給呼叫程式 |
輸出
| 地址 | 資料 |
|---|---|
| … | … |
| 802C | 34 |
| … | … |
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP