8085程式用於乘以兩個16位二進位制數


現在讓我們來看一個 Intel 8085 微處理器的程式。這個程式將計算兩個16位數的乘積。

問題陳述

編寫 8085 組合語言程式,將儲存在 8000H - 8001H 和 8002H - 8003H 的兩個 16 位數相乘。

討論

此程式從記憶體位置 8000H – 8001H 和 8002H – 8003H 獲取 16 位資料。32 位結果儲存在位置 8050H – 8053H。

這裡我們用兩個 16 位數進行了測試。結果如下

      1111H × 1111H = 01234321H 

      1C24H × 0752H = 00CDFF88H

輸入

第一個輸入

地址資料
.
.
.
.
.
.
800011
800111
800211
800311
.
.
.
.
.
.

第二個輸入 

地址資料
.
.
.
.
.
.
800024
80011C
800252
800307
.
.
.
.
.
.


流程圖

程式

地址十六進位制程式碼標籤助記符註釋
F00031, 00, 20
LXI SP,2000H   初始化堆疊指標
F0032A, 00, 80
LHLD 8000H  從 8000H - 8001H 載入 16 位資料
F006EB
XCHG    交換 HL 和 DE 中的資料
F0072A, 02, 80
LHLD 8002H  載入第二個 16 位數
F00AE5
PUSH H  將 HL 對壓入堆疊
F00BC1
POP B   從堆疊中載入 BC 與 HL 對的內容
F00C21, 00, 00
LXI H,0000H清除 HL 對
F00F22, 52, 80
SHLD 8052H   將 0000H 儲存為結果的低 2 個位元組
F01219LOOPDAD D   將第一個數加到 HL 對中
F013D2, 1F, F0
JNC NINC    如果 CY = 0,跳轉到 NINC
F016E5
PUSH H  將 HL 壓入堆疊
F0172A, 52, 80
LHLD 8052   從結果的低 2 個位元組載入 HL 對
F01A23
INX H   增加 HL 對
F01B22, 52, 80
SHLD 8052H   將 HL 對儲存為結果的低 2 個位元組  
F01EE1
POP H   將堆疊內容彈出到 HL 對
F01F0BNINCDCX B   減少 BC 暫存器對
F02078
MOV A,B將 B 載入到 A
F021B1
ORA C   將 C 與 A 進行或運算
F022C2, 12, F0
JNZ LOOP    當 Z = 0 時,跳轉到 LOOP
F02522, 50, 80
SHLD 8050H  將 HL 對儲存到 8050H
F02876
HLT終止程式


輸出

第一個輸出

地址資料
.
.
.
.
.
.
805021
805143
805223
805301
.
.
.
.
.
.

第二個輸出 

地址資料
.
.
.
.
.
.
805088
8051FF
8052CD
805300
.
.
.
.
.
.

更新於: 2019年7月30日

3K+ 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告