8085 微處理器中查詢兩個給定位元組的 HCF 程式
在這裡,我們將瞭解如何使用 8085 查詢兩個給定位元組的 HCF 或 GCD。這些數字是 8 位數字,不超過此大小。
問題陳述−
編寫一個 8085 組合語言程式,以查詢儲存在記憶體位置 8000H 和 8001H 中的兩個數字的 HCF 或 GCD。
討論−
這裡我們將使用歐幾里得演算法來查詢 HCF。此演算法非常簡單。我們必須遵循以下步驟−
- 如果第一個數字和第二個數字相同,則
a) 轉到步驟 3。
否則,如果第一個數字 < 第二個數字,則
b) 交換 no1 和 no2。
- 第一個數字 ← 第一個數字 – 第二個數字;轉到步驟 1
- 將結果顯示為第一個數字
這些值儲存在位置 8000H 和 8001H 中,結果將儲存在位置 8050H 中。
輸入
第一個輸入
地址 | 資料 |
---|---|
… | … |
8000 | 2D |
8001 | 69 |
… | … |
8050 | 0F |
… | … |
第二個輸入
地址 | 資料 |
---|---|
… | … |
8000 | 25 |
8001 | 35 |
… | … |
8050 | 01 |
… | … |
流程圖
程式
地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 | |
---|---|---|---|---|---|
F000 | 21, 00, 80 | | LXI H,8000H | 指向第一個數字 | |
F003 | 7E | | MOV A,M | 將第一個數字載入到累加器 | |
F004 | 23 | | INX H | 指向下一個位置 | |
F005 | 46 | | MOV B,M | 載入第二個數字 | |
F006 | B8 | LOOP | CMP B | 將 B 與 A 比較 | |
F007 | CA, 17, F0 | | JZ STORE | 當 A 和 B 相同時,儲存結果 | |
F00A | DA, 11, F0 | | JC EXG | 如果 B > A,則交換 B 和 A | |
F00D | 90 | | SUB B | 如果 B < A,則從 A 中減去 B | |
F00E | C3, 06, F0 | | JMP LOOP | 跳轉到 LOOP | |
F011 | 48 | EXG | MOV C,B | 將 B 載入到 C | |
F012 | 47 | | MOV B,A | 將 A 移動到 B | |
F013 | 79 | | MOV A,C | 將 C 移動到 A | |
F014 | C3, 06, F0 | | JMP LOOP | 跳轉到 LOOP | |
F017 | 32, 50, 80 | STORE | STA 8050H | 將值儲存到記憶體中 | |
F01A | 76 | | HLT | 終止程式 | |
| | | | | |
輸出
第一個輸出
地址 | 資料 |
---|---|
… | … |
8050 | 0F |
… | … |
第二個輸出
地址 | 資料 |
---|---|
… | … |
8050 | 01 |
… | … |
廣告