8085 微處理器中查詢陣列中最大數的程式
在這個程式中,我們將瞭解如何使用 8085 從位元組塊中找到最大數。
問題陳述
編寫 8085 組合語言程式,以從位元組塊中查詢最大數。
討論
在這個程式中,資料儲存在 8001H 及其之後的地址中。8000H 儲存著塊的大小。執行此程式後,它將返回最大數,並將其儲存在 9000H 地址處。
邏輯很簡單,我們將第一個數字儲存到暫存器 B 中以開始工作。在每次迭代中,我們從記憶體中獲取數字並將其儲存到暫存器 A 中。然後,如果 B < A,則我們只需將 B 的值更新為 A,否則繼續進行下一次迭代。因此,我們可以找到位元組塊中的最小數。
輸入
地址 | 資料 |
---|---|
... | ... |
8000 | 06 |
8001 | 55 |
8002 | 22 |
8003 | 44 |
8004 | 11 |
8005 | 33 |
8006 | 66 |
... | ... |
流程圖
程式
地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
---|---|---|---|---|
F000 | 21, 00, 80 | LXI H,8000H | 指向獲取陣列大小的地址 | |
F003 | 4E | MOV C, M | 獲取陣列的大小 | |
F004 | 23 | INX H | 指向實際陣列的地址 | |
F005 | 46 | MOV B, M | 將第一個數字載入到 B 中 | |
F006 | 0D | DCR C | 遞減 C | |
F007 | 23 | LOOP | INX H | 指向下一個位置 |
F008 | 7E | MOV A, M | 將下一個數字從記憶體獲取到累加器 | |
F009 | B8 | CMP B | 比較累加器和 B | |
F00A | DA, 0E, F0 | JC SKIP | 如果 B > A,則跳過 | |
F00D | 47 | MOV B, A | 如果 CY 為 0,則更新 B | |
F00E | 0D | SKIP | DCR C | 遞減 C |
F00F | C2, 07, F0 | JNZ LOOP | 當計數不為 0 時,跳轉到 LOOP | |
F012 | 21, 00, 90 | LXI H,9000H | 指向目標地址 | |
F015 | 70 | MOV M, B | 儲存最小數 | |
F016 | 76 | HLT | 終止程式 |
輸出
地址 | 資料 |
---|---|
... | ... |
9000 | 66 |
... | ... |
廣告