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


這裡我們將看到一個8085微處理器的程式。該程式將十六進位制轉換為ASCII值。

問題陳述

編寫一個8085組合語言程式,將十六進位制字元轉換為ASCII值。

討論

我們知道數字00H的ASCII碼是30H(48D),09H的ASCII碼是39H(57D)。所以所有其他數字都在30H到39H的範圍內。0AH的ASCII值是41H(65D),0FH的ASCII值是46H(70D),所以所有其他字母(B、C、D、E、F)都在41H到46H的範圍內。

這裡我們在記憶體位置8000H提供十六進位制數字,ASCII等效值儲存在位置8001H。

十六進位制到ASCII轉換背後的邏輯非常簡單。我們只是檢查數字是否在0-9範圍內。當數字在這個範圍內時,十六進位制數字是數字,我們只需簡單地加上30H即可得到ASCII值。當數字不在0-9範圍內時,數字在A-F範圍內,在這種情況下,我們將數字轉換為41H及以後。

在程式中,我們首先清除進位標誌。然後從給定數字中減去0AH。如果該值是數字,則減法後的結果將為負數,因此進位標誌將被設定。現在透過檢查進位狀態,我們可以簡單地將30H與該值相加以獲得ASCII值。

另一方面,當減法的結果為正數或0時,我們將41H與減法的結果相加。

輸入

第一個輸入

地址
資料


8000
0A


第二個輸入

地址
資料


8000
05


第三個輸入

地址
資料


8000
0F


 

流程圖

程式

地址
十六進位制程式碼
標籤
助記符
註釋
F000
21, 00, 80


LXI H, 8000H
載入數字的地址
F003
7E


MOV A,M
將記憶體中的資料載入到累加器A
F004
47


MOV B,A
將數字複製到B
F005
37


STC
設定進位標誌
F006
3F


CMC
反轉進位標誌
F007
D6, 0A


SUI 0AH
從A中減去0AH
F009
DA, 11, F0


JC NUM
當存在進位時,A為數字
F00C
C6, 41


ADI 41H
為字母新增41H
F00E
C3, 14, F0


JMP STORE
跳轉到儲存值
F011
78
NUM
MOV A, B
將B取回A
F012
C6


ADI 30H
將30H與A相加以獲得ASCII
F014
23
STORE
INX H
指向下一個儲存地址的位置
F015
77


MOV M,A
將A儲存到HL對指向的記憶體位置
F016
76


HLT
終止程式


輸出

第一個輸出

地址
資料


8001
41


第二個輸出

地址
資料


8001
35


第三個輸出

地址
資料


8001
46


更新於:2019年10月9日

736 次瀏覽

啟動您的職業生涯

完成課程獲得認證

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