8085程式:查詢兩個二進位制模式之間的位差異。


我們將學習如何使用8085查詢兩個二進位制模式的位差異。

問題陳述

兩個二進位制模式儲存在8030H和8031H位置。將它們載入到暫存器A和B中。找出位不同的位置,並將這些位置編號從8050H開始儲存到記憶體中。(在A為0且B為1的位置,位不同)

討論

為了解決這個問題,我們將數字放入A和B中。然後用08H初始化C作為計數器,暫存器L將跟蹤A為1且B為0的位位置。透過旋轉數字並透過進位標誌,我們可以檢查這些條件。假設我們放入B5H(1011 0101)和E6H(1110 0110),那麼我們可以看到D1和D6位置不同。所以我們將1和6儲存到記憶體中。

輸入

地址
資料


8030
B5
8031
E6


 

流程圖

 

程式

地址
十六進位制程式碼
標籤
助記符
註釋
8000
21, 30, 80
START
LXI H,8030H
初始化指向輸入緩衝區的指標
8003
11, 50, 80
 
LXI D,8050H

初始化指向輸出緩衝區的指標
8006
7E
 
MOV A, M
從輸入緩衝區讀取資料並存儲到暫存器A和B
8007
23
 
INX H

 
8008
46
 
MOV B, M
 
8009
0E, 08
 
MVI C, 08H

將計數器初始化為8
800B 
2E, 00
 
MVI L, 00H
使用暫存器L跟蹤位位置
800D 
1F
LOOP
RAR

將累加器右移到進位標誌
800E 
DA, 1C, 80
 
JC CHECK
檢查D7位是開還是關
8011
67
 
MOV H, A

暫存器H臨時儲存暫存器A的內容
8012
78
 
MOV A, B
暫存器B的D7位被放入進位標誌
8013
1F
 
RAR

 
8014
47
 
MOV B, A
將A複製到B
8015
7C
DCRM
MOV A, H

將H複製到A
8016
2C
 
INR L
將位位置加1
8017
0D
 
DCR C

遞減計數器,直到達到0
8018
C2, 0D, 80
 
JNZ LOOP
 
801B 
76
 
HLT

終止程式
801C 
67
CHECK
MOV H, A
暫存器H臨時儲存暫存器A的內容
801D 
78
 
MOV A, B

暫存器B的D7位被放入進位標誌
801E 
1F
 
RAR
 
801F 
D2, 26, 80
 
JNC WRITE

檢查進位標誌是否設定
8022
47
 
MOV B, A
將A複製到B
8023
C3, 15, 80
 
JMP DCRM

無條件跳轉
8026
47
WRITE
MOV B, A
匹配的位模式位置被
寫入輸出緩衝區
8027
7D
 
MOV A, L

 
8028
12
 
STAX D
 
8029
13
 
INX D

轉到下一個位置
802A 
C3, 15, 80
 
JMP DCRM
無條件跳轉

 

輸出

地址
資料


8050
01
8051
06


 

更新於:2019年7月30日

149 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.