8085 微處理器將兩位十六進位制轉換為兩個ASCII值的程式


在這裡,我們將看到一個 Intel 8085 微處理器的程式。使用此程式,我們可以將 8 位數字轉換為兩位 ASCII 值。

問題陳述

 編寫一個 8085 組合語言程式,將 8 位二進位制轉換為 2 個字元的 ASCII 值。8 位二進位制數儲存在記憶體位置 8050H 中。將每個四位數分離並將其轉換為相應的 ASCII 程式碼,並將其儲存到記憶體位置 8060H 和 8061H 中。

討論

在這個問題中,我們使用一個子程式將一個十六進位制數字(四位數)轉換為其等效的 ASCII 值。由於 8 位數字包含兩個四位數,因此我們可以執行此子程式來查詢它們的 ASCII 值。我們可以很容易地透過遮蔽高四位數來獲得低四位數,對於高四位數,我們必須首先遮蔽低四位數,然後將暫存器內容向右旋轉四次,現在我們可以將其更改為 ASCII 值。

在這裡,我們將輸入 3AH,程式將返回 33 和 41。這些分別是 3 和 A 的 ASCII 值。

輸入

地址
資料


8050
3A


 

流程圖

程式

地址
十六進位制程式碼
標籤
助記符
註釋
8000
31, 00, 81
 
LXI SP, 8100
初始化 SP
8003
21, 50, 80
START
LXI H, 8050H
使用輸入緩衝區的第一個位置初始化指標
8006
11, 60, 80
 
LXI D, 8060H
使用輸出緩衝區的第一個位置初始化指標
8009
7E
 
MOV A, M
將 8050H 的內容移至 A
800A 
47
 
MOV B, A
將 A 複製到 B
800B 
0F
 
RRC
將累加器向右旋轉 4 次
800C 
0F
 
RRC
 
800D 
0F
 
RRC
 
800E 
0F
 
RRC
 
800F 
CD, 1A, 80
 
CALL ASCII
此子程式將二進位制數轉換為 ASCII
8012
12
 
STAX D
儲存由 DE 暫存器對指定的累加器內容
8013
13
 
INX D
轉到下一個位置
8014
78
 
MOV A, B
將 B 複製到 A
8015
CD, 1A, 80
 
CALL ASCII
此子程式將二進位制數轉換為 ASCII
8018
12
 
STAX D
儲存由 DE 暫存器對指定的累加器內容
8019
76
 
HLT
終止程式
801A 
E6, 0F
ASCII
ANI 0FH
將 BCD 數字轉換為其對應的
ASCII 值
+ 48
0 到 9 -----------------à 48 到 57
+ 55
A 到 F -----------------à 65 到 70
+ 48 + 7
所以 +48 是通用的,但如果十六進位制數字是
在 A 到 F 之間,則額外增加 +7。
801C 
FE, 0A
 
CPI 0AH
 
801E 
DA, 23, 80
 
JC CODE
 
8021
C6, 07
 
ADI 07H
 
8023
C6, 30
CODE
ADI 30H
 
8025
C9
 
RET
將控制權返回給呼叫程式

 

輸出

地址
資料


8060
33
8061
41


更新於: 2019 年 10 月 5 日

481 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告