8085 微處理器將 16 位二進位制數轉換為 BCD 的程式
在這裡,我們將看到一個 8085 微處理器程式。此程式將用於將 16 位二進位制資料轉換為 BCD 資料。
問題陳述 -
編寫一個 8085 組合語言程式,將 16 位二進位制資料轉換為 BCD 資料。二進位制資料儲存在 8000H 和 8001H 位置。
討論 -
這個問題透過實現 16 位計數器來解決。我們首先儲存 16 位數,然後逐個減少數字,並透過調整十進位制值來增加十進位制值。要增加值,我們可以使用 INR 指令,但 INR 指令不會影響進位標誌。因此,這裡我們使用 ADI 01H 將其增加 1。
二進位制數取自 8000H 和 8001H 位置,最終結果儲存在 8050H 到 8052H 位置。
輸入
| 地址 | 資料 |
|---|---|
| … | … |
| 8000 | FF |
| 8001 | FF |
| … | … |
流程圖

程式
| 地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
|---|---|---|---|---|
| F000 | 2A, 00, 80 | LHLD 8000H | 用 16 位資料初始化 HL | |
| F003 | 11, 00, 00 | LXI D,0000H | 清除 DE 暫存器 | |
| F006 | AF | XRA A | 清除 A 暫存器 | |
| F007 | C6, 01 | LOOP | ADI 01H | 將 01 加到 A 中 |
| F009 | 21 | DAA | 調整十進位制 | |
| F00A | 47 | MOV B,A | 將 A 儲存到 B | |
| F00B | D2, 1B, F0 | JNC SKIP | 如果 CY = 0,則轉到 skip | |
| F00E | 7B | MOV A,E | 將 E 載入到 A | |
| F00F | C6, 01 | ADI 01H | 將 01H 加到 A 中 | |
| F011 | 27 | DAA | 十進位制調整 | |
| F012 | 5F | MOV E,A | 從 A 獲取 E | |
| F013 | D2, 1B,F0 | JNC SKIP | 如果 CY = 0,則轉到 skip | |
| F016 | 7A | MOV A,D | 將 D 取到 A | |
| F017 | C6, 01 | ADI 01H | 將 01H 加到 A 中 | |
| F019 | 27 | DAA | 調整十進位制 | |
| F01A | 57 | MOV D,A | 將 A 載入到 D | |
| F01B | 2B | SKIP | DCX H | 減少 DE |
| F01C | 7C | MOV A,H | 將 H 載入到 A | |
| F01D | 85 | ORA L | A 和 L 進行或運算 | |
| F01E | 78 | MOV A,B | 將 B 載入到 A | |
| F01F | C2, 07, F0 | JNZ LOOP | 跳轉到 Loop | |
| F022 | EB | XCHG | 交換 DE 和 HL | |
| F023 | 22, 51, 80 | SHLD 8051H | 將 HL 內容儲存到記憶體中 | |
| F026 | 32, 50, 80 | STA 8050H | 將 A 儲存到記憶體中 | |
| F029 | 76 | HLT | 終止程式 |
輸出
| 地址 | 資料 |
|---|---|
| … | … |
| 8050 | 35 |
| 8051 | 55 |
| 8052 | 06 |
| … | … |
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP