8085 微處理器計算最小公倍數的程式
現在讓我們來看一個 Intel 8085 微處理器的程式。此程式將找到兩個 8 位數的最小公倍數。
問題陳述 -
編寫 8085 組合語言程式,以查詢儲存在 8000H 和 8001H 位置的兩個 8 位數的最小公倍數。
討論 -
在此程式中,我們從 8000H 和 8001H 讀取資料。透過載入數字,我們將它儲存在 C 暫存器中,並清除 B 暫存器。第二個數字載入到累加器中。將 DE 設定為 BC 暫存器的二進位制補碼。此 DE 用於從 HL 對中減去 BC。
方法如下:假設數字為 25 和 15。當我們將第一個數字除以第二個數字時,如果餘數為 0,則第一個數字就是最小公倍數。但是對於這種情況,存在餘數。然後我們將檢查 25 的下一個倍數以檢查可除性。當餘數變為 0 時,程式終止,結果被儲存。
輸入
第一個輸入
| 地址 | 資料 |
|---|---|
| . . . | . . . |
| 8000 | 03 |
| 8001 | 07 |
| . . . | . . . |
第二個輸入
| 地址 | 資料 |
|---|---|
| . . . | . . . |
| 8000 | 23 |
| 8001 | 07 |
| . . . | . . . |
流程圖

程式
| 地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
|---|---|---|---|---|
| F000 | 21, 00, 80 | | LXI H, 8000H | 指向 8000H 獲取第一個數字 |
| F003 | 4E | | MOV C,M | 將記憶體元素載入到 C |
| F004 | 06, 00 | | MVI B, 00H | 清除 B 暫存器 |
| F006 | 23 | | INX H | 指向下一個位置 |
| F007 | 7E | | MOV A,M | 將第二個數字載入到累加器 |
| F008 | 2F | | CMA | 取累加器的反碼 |
| F009 | 5F | | MOV E,A | 將 A 的反碼形式載入到 E |
| F00A | 16, FF | | MVI D, FFH | 載入 00H 的反碼形式 |
| F00C | 13 | | INX D | 增加 DE 暫存器對 |
| F00D | 21, 00, 00 | | LXI H, 0000H | 將 0000H 載入到 HL 對中 |
| F010 | 09 | NEXT | DAD B | 將 BC 與 HL 相加 |
| F011 | 22, 50, 80 | | SHLD 8050H | 將 HL 內容儲存到 8050H |
| F014 | 19 | LOOP | DAD D | 將 DE 與 HL 相加 |
| F015 | D2, 20, F0 | | JNC SKIP | 當 CY = 0 時,跳轉到 SKIP |
| F018 | 7C | | MOV A,H | 將 H 內容獲取到 A |
| F019 | B5 | | ORA L | 將 L 與 A 進行或運算 |
| F01A | CA, 26, F0 | | JZ EXIT | 當 HL 為 0000 時,跳轉到 EXIT |
| F01D | C3, 14, F0 | | JMP LOOP | 跳轉到 Loop |
| F020 | 21, 50, 80 | SKIP | LHLD 8050H | 從 8050H 載入 HL |
| F023 | C3, 10, F0 | | JMP NEXT | 跳轉到 NEXT |
| F026 | 2A, 50, 80 | EXIT | LHLD 8050H | 將 HL 對儲存為最小公倍數 |
| F029 | 76 | | HLT | 終止程式 |
輸出
第一個輸出
| 地址 | 資料 |
|---|---|
| . . . | . . . |
| 8050 | 15 |
| 8051 | 00 |
| . . . | . . . |
第二個輸出
| 地址 | 資料 |
|---|---|
| . . . | . . . |
| 8050 | 3B |
| 8051 | 01 |
| . . . | . . . |
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP