8085程式:將ASCII轉換為二進位制


現在讓我們來看一個Intel 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的範圍內。

這裡的邏輯很簡單。我們檢查ASCII值是否小於58H(9的ASCII碼+1)。當數字小於58時,它是數字值。所以我們簡單地從ASCII值中減去30H,當它大於58H時,它是字母值。所以我們減去37H。

輸入

第一個輸入

地址
資料
.
.
.
.
.
.
8000
41
.
.
.
.
.
.

第二個輸入

地址
資料
.
.
.
.
.
.
8000
35
.
.
.
.
.
.

第三個輸入

地址
資料
.
.
.
.
.
.
8000
46
.
.
.
.
.
.

流程圖

程式

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

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

MOV A, M
將ASCII資料從記憶體載入到累加器
F004
FE, 58

CPI 58H
與ASCII(9)+1比較
F006
D2, 0E, F0

JNC NUM
輸入為數字
F009
D6, 37

SUI 37H
減去偏移量以獲取字母字元
F00B
C3, 10, F0

JMP STORE
儲存結果
F00E
D6, 30
NUM
SUI 30H
減去30以獲取數值
F010
23
STORE
INX H
指向下一個位置
F011
77

MOV M,A
將累加器內容儲存到記憶體
F012
76

HLT
終止程式


輸出

第一個輸出

地址
資料
.
.
.
.
.
.
8001
0A
.
.
.
.
.
.

第二個輸出

地址
資料
.
.
.
.
.
.
8001
05
.
.
.
.
.
.

第三個輸出

地址
資料
.
.
.
.
.
.
8001
0F
.
.
.
.
.
.

更新於: 2019年7月30日

4K+ 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

立即開始
廣告