8085微處理器檢查迴文程式
在這裡,我們將看到一個8085微處理器程式,它可以檢查一個數字是否為迴文。
問題陳述−
編寫一個8085組合語言程式來檢查一個位模式是否為迴文。
討論−
在這個程式中,我們從8000H位置獲取數字。如果數字不是迴文,程式將返回00H,否則將返回FFH。
例如,輸入為18H,則二進位制值為(0001 1000),這是一個迴文。數字52H (0101 0010)則不是迴文。
在這個問題中,我們將第一個數字放入累加器,然後將其左移。當它左移時,MSB將被放置到LSB,並且也會在進位標誌中。這個進位標誌透過右移插入D暫存器。因此,位模式將被反轉,現在透過檢查實際數字和反轉數字的值,我們可以確定它是否為迴文。
輸入
第一個輸入
地址 | 資料 |
---|---|
… | … |
8000 | BD |
… | … |
第二個輸入
地址 | 資料 |
---|---|
… | … |
8000 | 52 |
… | … |
第三個輸入
地址 | 資料 |
---|---|
… | … |
8000 | 18 |
… | … |
流程圖
程式
地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
---|---|---|---|---|
F000 | 3A, 00, 80 | | LDA 8000H | 將數字載入到A |
F003 | 67 | | MOV H,A | 將Acc移到H |
F004 | 0E, 08 | | MVI C,08H | 初始化計數器 |
F006 | 7C | LOOP | MOV A,H | 將H載入到Acc |
F007 | 07 | | RLC | 左移 |
F008 | 67 | | MOV H,A | 將Acc移回H |
F009 | 7A | | MOV A,D | 將D內容載入到Acc |
F00A | 1F | | RAR | 帶進位的右移 |
F00B | 57 | | MOV D,A | 將Acc移回D |
F00C | 0D | | DCR C | 遞減C |
F00D | C2, 06, F0 | | JNZ LOOP | 如果Z=0,則跳轉到LOOP |
F010 | 7C | | MOV A,H | 將H資料載入到Acc |
F011 | BA | | CMP D | 將D與Acc比較 |
F012 | CA, 1A, F0 | | JZ TRUE | 如果兩者相同,則為迴文 |
F015 | 3E, 00 | | MVI A, 00H | 將00H載入到A |
F017 | C3, 1C, F0 | | JMP EXIT | 跳轉到Exit |
F01A | 3E, FF | TRUE | MVI A,FFH | 將FFH載入到A |
F01C | 32, 50, 80 | EXIT | STA 8050H | 將結果儲存到記憶體中 |
F01F | 76 | | HLT | 終止程式 |
輸出
第一個輸出
地址 | 資料 |
---|---|
… | … |
8050 | FF |
… | … |
第二個輸出
地址 | 資料 |
---|---|
… | … |
8050 | 00 |
… | … |
第三個輸出
地址 | 資料 |
---|---|
… | … |
8050 | FF |
… | … |
廣告