8085微處理器線性查詢程式
我們將學習如何在8085微處理器中執行線性查詢。線性查詢是從起始位置到結束位置順序搜尋元素。
問題陳述 −
編寫一個8085組合語言程式,使用線性查詢(順序查詢)技術在一個數據塊中搜索一個關鍵值。
討論
假設資料儲存在8002H到8007H位置。8000H包含塊的大小,8001H儲存要搜尋的關鍵值。當我們執行程式時,它將返回找到項的資料地址,並將地址儲存在9000H和9001H位置。如果找不到該項,則返回FFFFH。
如果資料存在於FFFFH記憶體地址,它也會儲存FFFFH,所以這是一個模稜兩可的情況。我們假設資料不儲存在FFFFH,所以我們選擇該值來指示資料不存在。
輸入
地址 | 資料 |
---|---|
… | … |
8000 | 06 |
8001 | 55 |
8002 | 11 |
8003 | 22 |
8004 | 33 |
8005 | 44 |
8006 | 55 |
8007 | 66 |
… | … |
流程圖−
程式
地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
---|---|---|---|---|
F000 | 21, 00, 80 | | LXI H,8000H | 指向獲取陣列大小的位置 |
F003 | 4E | | MOV C,M | 獲取陣列大小 |
F004 | 23 | | INX H | 指向下一個位置 |
F005 | 46 | | MOV B,M | 獲取要搜尋的關鍵值 |
F006 | 78 | | MOV A,B | 將關鍵值放入累加器 |
F007 | 23 | LOOP | INX H | 指向下一個位置 |
F008 | BE | | CMP M | 將記憶體元素與累加器比較 |
F009 | CA, 19, F0 | | JZ FOUND | 當Z標誌設定時,跳轉到FOUND |
F00C | 0D | | DCR C | 將C減1 |
F00D | C2, 07, F0 | | JNZ LOOP | 當計數不為0時,跳轉到LOOP |
F010 | 21, FF, FF | | LXI H, FFFF | 將FFFFH載入到HL暫存器對 |
F013 | 22, 00, 90 | | SHLD 9000H | 儲存到9000H |
F016 | C3, 1C, F0 | | JMP DONE | 跳轉到DONE |
F019 | 22, 00, 90 | FOUND | SHLD 9000H | 儲存到9000H |
F01C | 76 | DONE | HLT | 終止程式 |
輸出
地址 | 資料 |
---|---|
… | … |
9000 | 06 |
9001 | 80 |
… | … |
廣告