8085程式檢查迴文


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

問題陳述

編寫8085組合語言程式來檢查位模式是否為迴文。

討論

在這個程式中,我們從8000H位置獲取數字。如果數字不是迴文,程式將返回00H;否則,將返回FFH。

例如,輸入是18H,則二進位制值為(0001 1000),這是一個迴文。數字52H(0101 0010)不是迴文。

在這個問題中,我們將第一個數字放入累加器,然後將其左移。左移時,MSB將被放置在LSB,也放在進位標誌中。透過右移,將此進位標誌插入D暫存器。因此,位模式將被反轉,現在透過檢查實際數字和反轉數字的值,我們可以確定它是否為迴文。

輸入

第一個輸入

地址資料
.
.
.
.
.
.
8000BD
.
.
.
.
.
.

第二個輸入

地址資料
.
.
.
.
.
.
800052
.
.
.
.
.
.

第三個輸入

地址資料
.
.
.
.
.
.
800018
.
.
.
.
.
.

流程圖

程式

地址十六進位制程式碼標籤助記符註釋
F0003A, 00, 80
LDA 8000H將數字載入到A暫存器
F00367
MOV H, A將A暫存器的內容移到H暫存器
F0040E, 08
MVI C,08H初始化計數器
F0067CLOOP:MOV A, H將H暫存器的內容載入到A暫存器
F00707
RLC左移旋轉
F00867
MOV H, A將A暫存器的內容送回H暫存器
F0097A
MOV A, D將D暫存器的內容載入到A暫存器
F00A1F
RAR帶進位的右移旋轉
F00B57
MOV D, A將A暫存器的內容送回D暫存器
F00C0D
DCR CC暫存器減1
F00DC2, 06, F0
JNZ LOOP如果零標誌為0,則跳轉到LOOP
F0107C
MOV A, H將H暫存器的資料載入到A暫存器
F011BA
CMP D將D暫存器與A暫存器比較
F012CA, 1A, F0
JZ TRUE如果兩者相同,則為迴文
F0153E, 00
MVI A, 00H將00H載入到A暫存器
F017C3, 1C, F0
JMP EXIT跳轉到EXIT
F01A3E, FFTRUE:MVI A, FFH將FFH載入到A暫存器
F01C32, 50, 80EXIT:STA 8050H將結果儲存到記憶體中
F01F76
HLT終止程式


輸出

第一個輸出

地址資料
.
.
.
.
.
.
8050FF
.
.
.
.
.
.

第二個輸出

地址資料
.
.
.
.
.
.
805000
.
.
.
.
.
.

第三個輸出

地址資料
.
.
.
.
.
.
8050FF
.
.
.
.
.
.

更新於:2019年7月30日

4K+ 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告