8085程式將8位BCD數轉換為ASCII碼


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

問題陳述

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

討論

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

這裡我們將輸入26H,程式將返回32和36。它們分別是2和6的ASCII值。

注意:此程式也可以將8位二進位制數轉換為ASCII值。

輸入

地址
資料
.
.
.
.
.
.
8050
26
.
.
.
.
.
.

流程圖

程式

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

LXI SP, 8100
初始化SP
8003
21, 50, 80
START
LXI H, 8050H
用IN-BUFFER的第一個位置初始化指標
8006
11, 60, 80

LXI D, 8060H
用OUT-BUFFER的第一個位置初始化指標
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
32
8061
36
.
.
.
.
.
.

更新於: 2019-07-30

2K+ 瀏覽量

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.