8085程式:灰度碼轉換為二進位制碼


現在讓我們來看一個Intel 8085微處理器的程式。這個程式將把格雷碼轉換為二進位制碼。

問題陳述

編寫一個8085組合語言程式,將格雷碼轉換為二進位制碼。資料儲存在地址8200H,結果儲存在記憶體位置8201H。

討論

在這裡,我們從記憶體中載入數字,並在每一步執行右移操作,並將中間結果與前一個結果進行異或運算。這樣我們就得到了結果。在下面的演示中,您可以瞭解邏輯。

C       1110 1011    (A) (EBH)
07H     0111 0101    (RAR)
XOR     1110 1011    (D)
        1001 1110    (A = A XOR D) (9EH)
06H     0100 1111    (RAR)
XOR     1110 1011    (D)
        1010 0100    (A = A XOR D) (A4H)
05H     0101 0010    (RAR)
XOR     1110 1011    (D)
        1011 1001    (A = A XOR D) (B9H)
04H     0101 1100    (RAR)

XOR     1110 1011   (D)

        1011 0111    (A = A XOR D) (B7H) 03H     0101 1011    (RAR) XOR     1110 1011    (D)         1011 0000    (A = A XOR D) (B0H) 02H     0101 1000    (RAR) XOR     1110 1011    (D)         1011 0011    (A = A XOR D) (B3H) 01H     0101 1001    (RAR) XOR     1110 1011    (D)         1011 0010    (A = A XOR D) (B2H) 

輸入

地址資料
.
.
.
.
.
.
8200EB
.
.
.
.
.
.


流程圖

程式

地址十六進位制程式碼標籤指令助記符註釋
80003A, 00, 82START:LDA 8200 HA = (8200 H); 載入格雷碼
800357
MOV D, AD = A
80040E, 07
MVI C, 07 HC = 07 H
800637UP:STCCy = 1
80073F
CMCCy = 0; 清除Cy
80081F
RAR帶進位的右移旋轉
8009AA
XRA DA = A XOR D
800A0D
DCR CC = C – 1
800BC2, 06, 80
JNZ UPC是否為0?如果不是,則跳轉到UP
800E32, 01, 82
STA 8201 H(8201 H) = A; 儲存數字
801176
HLT停止


輸出

地址資料
.
.
.
.
.
.
8201B2
.
.
.
.
.
.

更新於:2019年7月30日

1K+ 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告