8085程序:灰度码转换为二进制码


现在让我们来看一个Intel 8085微处理器的程序。这个程序将把格雷码转换为二进制码。

问题陈述

编写一个8085汇编语言程序,将格雷码转换为二进制码。数据存储在地址8200H,结果存储在内存位置8201H。

讨论

在这里,我们从内存中加载数字,并在每一步执行右移操作,并将中间结果与前一个结果进行异或运算。这样我们就得到了结果。在下面的演示中,您可以了解逻辑。

C       1110 1011    (A) (EBH)
07H     0111 0101    (RAR)
XOR     1110 1011    (D)
        1001 1110    (A = A XOR D) (9EH)
06H     0100 1111    (RAR)
XOR     1110 1011    (D)
        1010 0100    (A = A XOR D) (A4H)
05H     0101 0010    (RAR)
XOR     1110 1011    (D)
        1011 1001    (A = A XOR D) (B9H)
04H     0101 1100    (RAR)

XOR     1110 1011   (D)

        1011 0111    (A = A XOR D) (B7H) 03H     0101 1011    (RAR) XOR     1110 1011    (D)         1011 0000    (A = A XOR D) (B0H) 02H     0101 1000    (RAR) XOR     1110 1011    (D)         1011 0011    (A = A XOR D) (B3H) 01H     0101 1001    (RAR) XOR     1110 1011    (D)         1011 0010    (A = A XOR D) (B2H) 

输入

地址数据
.
.
.
.
.
.
8200EB
.
.
.
.
.
.


流程图

程序

地址十六进制代码标签指令助记符注释
80003A, 00, 82START:LDA 8200 HA = (8200 H); 加载格雷码
800357
MOV D, AD = A
80040E, 07
MVI C, 07 HC = 07 H
800637UP:STCCy = 1
80073F
CMCCy = 0; 清除Cy
80081F
RAR带进位的右移旋转
8009AA
XRA DA = A XOR D
800A0D
DCR CC = C – 1
800BC2, 06, 80
JNZ UPC是否为0?如果不是,则跳转到UP
800E32, 01, 82
STA 8201 H(8201 H) = A; 存储数字
801176
HLT停止


输出

地址数据
.
.
.
.
.
.
8201B2
.
.
.
.
.
.

更新于:2019年7月30日

1K+ 次浏览

启动你的职业生涯

通过完成课程获得认证

开始学习
广告