8085程式解壓16位BCD碼,並將其儲存到連續位置


在這裡我們將看到如何從記憶體中獲取16位BCD資料並對其進行解壓,然後使用8085將其儲存到記憶體中。

問題陳述

編寫8085程式,從記憶體中獲取16位BCD數,然後透過解壓將其每個數字儲存到不同的位置。

討論

為了解決這個問題,我們將建立一個子程式,該子程式可以解壓1位元組BCD數並將其儲存到記憶體中,然後我們將該子程式使用兩次來儲存16位資料。該子程式將透過掩蓋高4位和低4位來分割數字,並將其儲存到記憶體中。

輸入

DE暫存器對中的1234

流程圖

 

程式

地址
十六進位制程式碼
標籤
助記符
註釋
F000
31, 00, FC
 
LXI SP,FC00
初始化堆疊指標
F003
11, 34, 12
 
LXI D,ABCD
載入16位數
F006
21, 00, 90
 
LXI H,9000
指向目標地址
F009
7B
 
MOV A,E
將E移入A
F00A
CD, 13, F0
 
CALL UNPACK
解壓低位元組並存儲
F00D
23
 
INX H
指向下一個位置
F00E
7A
 
MOV A,D
獲取高位元組
F00F
CD, 13, F0
 
CALL UNPACK
解壓高位元組並存儲
F012
76
 
HLT
終止程式
F013
D5
UNPACK
PUSH D
將DE壓入堆疊
F014
57
 
MOV D,A
將數字儲存到D中
F015
E6, F0
 
ANI 0FH
掩蓋高4位
F017
77
 
MOV M,A
儲存低4位
F018
7A
 
MOV A,D
再次獲取數字
F019
E6, F0
 
ANI F0H
掩蓋低4位
F01B
07
 
RLC
左移旋轉
F01C
07
 
RLC
左移旋轉
F01D
07
 
RLC
左移旋轉
F01E
07
 
RLC
左移旋轉
F01F
23
 
INX H
指向下一個位置
F020
77
 
MOV M,A
將高4位儲存到記憶體中
F021
D1
 
POP D
從堆疊中彈出DE
F022
C9
 
RET
從子程式返回

 

輸出

地址
資料


9000
04
9001
03
9002
02
9003
01


 

 

 

 

更新於: 2019-07-30

838 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.