8085程式:將兩位十六進位制數轉換為兩個ASCII值


現在讓我們來看一個Intel 8085微處理器的程式。這個程式將把8位數轉換為兩位ASCII值。

問題陳述

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

討論

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

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

輸入

地址
資料
.
.
.
.
.
.
8050
3A
.
.
.
.
.
.


流程圖

程式

地址
十六進位制程式碼
標籤
助記符
註釋
8000
31, 00, 81

LXI SP, 8100
初始化堆疊指標
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年7月30日

251 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.