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 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告