8085程式檢查給定的16位數是否為迴文數
在這個程式中,我們將看到如何檢查一個16位數是否為迴文數。
問題陳述
編寫8085組合語言程式來檢查一個16位數是否為迴文數。該數字儲存在8000H和8001H位置。
討論
如果一個數字與其反向序列相同,則該數字為迴文數。例如,5225是迴文數,但ABCD不是迴文數。
在這個問題中,我們取該數字並將其儲存到HL暫存器對中。然後,我們對L的內容執行反向操作。如果H和更新後的L值相同,則該數字為迴文數。為了檢查這一點,我們對H和L執行異或運算。當結果為0時,它是迴文數,否則不是迴文數。
如果數字是迴文數,我們將在8050H位置儲存FFH,如果不是迴文數,則在8050H位置儲存00H。
輸入
地址 | 資料 |
---|---|
… | … |
8000 | 25 |
8001 | 52 |
… | … |
輸入
地址 | 資料 |
---|---|
… | … |
8000 | CD |
8001 | AB |
… | … |
流程圖
程式
地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
---|---|---|---|---|
F000 | 2A, 00, 80 | | LHLD 8000H | 將16位數從記憶體取到HL暫存器對 |
F003 | 7D | | MOV A,L | 將L暫存器內容送入A暫存器 |
F004 | 0F | | RRC | 累加器迴圈右移四次 |
F005 | 0F | | RRC | |
F006 | 0F | | RRC | |
F007 | 0F | | RRC | |
F008 | AC | | XRA H | A暫存器與H暫存器進行異或運算 |
F009 | 3E, FF | | MVI A,FFH | 將FFH載入到A暫存器 |
F00B | CA, 0F, F0 | | JZ STORE | 如果Z=1,跳轉到STORE |
F00E | AF | | XRA A | 否則將A設定為0 |
F00F | 32, 50, 80 | STORE | STA 8050H | 將結果儲存到8050H |
F012 | 67 | | HLT | 程式結束 |
輸出
地址 | 資料 |
---|---|
… | … |
8050 | FF |
… | … |
輸出
地址 | 資料 |
---|---|
… | … |
8050 | 00 |
… | … |
廣告