8085程式:將兩位BCD碼轉換為二進位制


在本程式中,我們將瞭解如何將BCD數轉換為等效的二進位制數。

問題陳述

一個BCD數儲存在地址802BH中。將其轉換為等效的二進位制數,並將其儲存到記憶體地址802CH中。

討論

在這個問題中,我們從記憶體中獲取一個BCD數並將其轉換為等效的二進位制數。首先,我們擷取輸入的每個半位元組。所以如果輸入是52(0101 0010),那麼我們可以透過將數字與0FH和F0H進行掩碼來簡單地擷取它。當擷取高位半位元組後,將其向左旋轉四次以將其傳輸到低位半位元組。

現在,只需使用十進位制調整方法乘以數字即可獲得最終的十進位制結果。

輸入

地址資料
.
.
.
.
.
.
802B52
.
.
.
.
.
.

流程圖

程式

地址十六進位制程式碼標籤助記符註釋
800031, FF, 80
LXI SP,80FFH初始化堆疊指標
800321, 2B, 80
LXI H, 802BH 指向輸入緩衝區的指標
800601, 2C, 80
LXI B, 802CH 指向輸出緩衝區的指標
80097E 
MOV A, M 將802BH的內容移動到A
800A CD, 0F, 80
CALL BCDBIN將BCD數轉換為十六進位制的子程式
800D 02
STAX B 將累加器儲存到BC指向的記憶體位置
800E76
HLT 終止程式
800F C5 BCDBINPUSH B 儲存B
801047
MOV B, A 將A複製到B
8011E6, 0F
ANI 0FH 最高四位掩碼
80134F 
MOV C, A 將A複製到C
801478
MOV A, B 將B複製到A
8015E6, F0
ANI F0H 最低四位掩碼
80170F 
RRC 累加器右移4次
80180F
RRC 
80190F
RRC 
801A 0F
RRC 
801B 57
MOV D, A 將計數值載入到暫存器D中
801C AF 
XRA A 清除累加器的內容
801D 1E, 0A
MVI E, 0AH 用0AH初始化暫存器E
801F 83SUMADD E 將暫存器E的內容加到A中
802015
DCR D 將計數減1,直到達到0
8021C2, 1F, 80
JNZ SUM 
802481
ADD C 將暫存器C的內容加到A中
8025C1 
POP B 恢復B
8026C9 
RET 將控制權返回給呼叫程式


輸出

地址資料
.
.
.
.
.
.
802C34
.
.
.
.
.
.

更新於: 2019年7月30日

4K+ 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告