8085程式:將8位二進位制數轉換為BCD碼
在這個程式中,我們將學習如何將二進位制數轉換為其BCD等效值。
問題陳述
一個二進位制數儲存在800H地址。將其轉換為BCD等效值並將其儲存到8050H記憶體地址。
討論
在這裡,我們從記憶體中讀取一個數,並將其初始化為計數器。現在,在這個計數器的每一步中,我們將數字加1,並調整十進位制值。透過此過程,我們找到二進位制數或十六進位制數的BCD值。
我們可以使用INR指令來遞增計數器,但是此指令不會影響進位標誌,因此我們使用了ADI 10H。
輸入
| 地址 | 資料 |
|---|---|
| . . . | . . . |
| 8000 | 34 |
| . . . | . . . |
流程圖

程式
| 地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
|---|---|---|---|---|
| F000 | 21, 00, 80 | LXI H,8000H | 初始化記憶體指標 | |
| F003 | 16, 00 | MVI D,00H | 清零D暫存器(用於最高有效位元組) | |
| F005 | AF | XRA A | 清零累加器 | |
| F006 | 4E | MOV C, M | 獲取十六進位制資料 | |
| F007 | C6, 01 | LOOP: | ADI 01H | 逐個計數 |
| F009 | 27 | DAA | 調整BCD計數 | |
| F00A | D2, 0E, F0 | JNC SKIP | 跳轉到SKIP | |
| F00D | 14 | INR D | 遞增D | |
| F00E | 0D | SKIP: | DCR C | 遞減C暫存器 |
| F00F | C2, 07, F0 | JNZ LOOP | 跳轉到LOOP | |
| F012 | 6F | MOV L, A | 載入最低有效位元組 | |
| F013 | 62 | MOV H, D | 載入最高有效位元組 | |
| F014 | 22, 50, 80 | SHLD 8050H | 儲存BCD碼 | |
| F017 | 76 | HLT | 終止程式 |
輸出
| 地址 | 資料 |
|---|---|
| . . . | . . . |
| 8050 | 52 |
| . . . | . . . |
廣告
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP