8085程式計算最小公倍數


現在讓我們來看一個Intel 8085微處理器的程式。這個程式將找到兩個8位數的最小公倍數。

問題陳述

編寫8085組合語言程式,找出儲存在8000H和8001H位置的兩個8位數的最小公倍數。

討論

在這個程式中,我們從8000H和8001H讀取資料。透過載入數字,我們將其儲存在C暫存器中,並清除B暫存器。第二個數字載入到累加器中。將DE設定為BC暫存器的二進位制補碼。此DE用於從HL對中減去BC。

方法是這樣的:假設數字是25和15。當我們將第一個數字除以第二個數字時,如果沒有餘數,則第一個數字是最小公倍數。但對於這種情況,存在餘數。然後我們將檢查25的下一個倍數以檢查可除性。當餘數變為0時,程式終止,結果被儲存。

輸入

第一個輸入

地址資料
.
.
.
.
.
.
800003
800107
.
.
.
.
.
.

第二個輸入

地址資料
.
.
.
.
.
.
800023
800107
.
.
.
.
.
.

流程圖

程式

地址十六進位制程式碼標籤助記符註釋
F00021, 00, 80
LXI H, 8000H   指向8000H以獲取第一個數字
F0034E
MOV C, M將記憶體單元載入到C
F00406, 00
MVI B, 00H  清除B暫存器
F00623
INX H   指向下一個位置
F0077E
MOV A, M將第二個數字載入到累加器
F0082F
CMA取反累加器
F0095F
MOV E, A將A的反碼載入到E
F00A16, FF
MVI D, FFH  載入00H的反碼
F00C13
INX D   增加DE暫存器對
F00D21, 00, 00
LXI H, 0000H   將0000H載入到HL對
F01009NEXTDAD B   將BC與HL相加
F01122, 50, 80
SHLD 8050H  將HL內容儲存到8050H
F01419LOOPDAD D   將DE與HL相加
F015D2, 20, F0
JNC SKIP    當CY = 0時,跳轉到SKIP
F0187C
MOV A, H將H的內容獲取到A
F019B5
ORA L   將L與A進行或運算
F01ACA, 26, F0
JZ EXIT當HL為0000時,跳轉到EXIT
F01DC3, 14, F0
JMP LOOP    跳轉到Loop
F02021, 50, 80SKIPLHLD 8050H  從8050H載入HL
F023C3, 10, F0
JMP NEXT    跳轉到NEXT
F0262A, 50, 80EXITLHLD 8050H  將HL對儲存為最小公倍數
F02976
HLT終止程式


輸出

第一個輸出

地址資料
.
.
.
.
.
.
805015
805100
.
.
.
.
.
.

第二個輸出

地址資料
.
.
.
.
.
.
80503B
805101
.
.
.
.
.
.

更新於:2019年7月30日

3K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告