8085程式:求兩個給定位元組的最大公約數(HCF)
在這個程式中,我們將學習如何使用8085查詢兩個數字的最大公約數(HCF)或最大公因數(GCD)。
問題陳述
編寫8085組合語言程式,查詢儲存在記憶體位置8000H和8001H的兩個數字的最大公約數(HCF)。
討論
這個問題透過歐幾里得演算法來求解HCF。這個演算法非常簡單。演算法步驟如下:
如果第一個數字和第二個數字相同,則
- 跳轉到步驟3。
否則,如果第一個數字 < 第二個數字,則
- 交換第一個數字和第二個數字。
第一個數字 <- 第一個數字 – 第二個數字;跳轉到步驟1
顯示第一個數字作為結果
值儲存在8000H和8001H位置,結果將儲存在8050H位置。
輸入
第一個輸入
| 地址 | 資料 |
|---|---|
| ... | ... |
| 8000 | 8000H |
| 8001 | 69 |
| ... | ... |
| 8050 | 0DH |
| ... | ... |
第二個輸入
| 地址 | 資料 |
|---|---|
| ... | ... |
| 8000 | 25 |
| 8001 | 35 |
| ... | ... |
| 8050 | 01 |
| ... | ... |
流程圖

程式
| 地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
|---|---|---|---|---|
| F000H | 21, 00, 80 | LXI H,8000H | 指向第一個數字 | |
| F003H | 7E | MOV A, M | 將第一個數字載入到累加器(Acc) | |
| F004H | 23 | INX H | 指向下一個位置 | |
| F005H | 46 | MOV B, M | 載入第二個數字 | |
| F006H | B8 | LOOP: | CMP B | 比較B和A |
| F007H | CA 17 F0 | JZ STORE | 當A和B相同時,儲存結果 | |
| F00AH | DA 11 F0 | JC EXG | 如果B > A,則交換B和A | |
| F00DH | 90 | SUB B | 如果B < A,則從A中減去B | |
| F00EH | C3 06 F0 | JMP LOOP | 跳轉到LOOP | |
| F011H | 48 | EXG: | MOV C,B | 將B載入到C |
| F012H | 47 | MOV B, A | 將A移動到B | |
| F013H | 79 | MOV A, C | 將C移動到A | |
| F014H | C3 06 F0 | JMP LOOP | 跳轉到LOOP | |
| F017H | 32, 50, 80 | STORE: | STA 8050H | 將值儲存到記憶體中 |
| F01AH | 76 | HLT | 終止程式 |
輸出
第一個輸出
| 地址 | 資料 |
|---|---|
| ... | ... |
| 8050 | 0DH |
| ... | ... |
第二個輸出
| 地址 | 資料 |
|---|---|
| ... | ... |
| 8050 | 01 |
| ... | ... |
廣告
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP