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)
输入
地址 | 数据 |
---|---|
. . . | . . . |
8200 | EB |
. . . | . . . |
流程图
程序
地址 | 十六进制代码 | 标签 | 指令助记符 | 注释 |
---|---|---|---|---|
8000 | 3A, 00, 82 | START: | LDA 8200 H | A = (8200 H); 加载格雷码 |
8003 | 57 | MOV D, A | D = A | |
8004 | 0E, 07 | MVI C, 07 H | C = 07 H | |
8006 | 37 | UP: | STC | Cy = 1 |
8007 | 3F | CMC | Cy = 0; 清除Cy | |
8008 | 1F | RAR | 带进位的右移旋转 | |
8009 | AA | XRA D | A = A XOR D | |
800A | 0D | DCR C | C = C – 1 | |
800B | C2, 06, 80 | JNZ UP | C是否为0?如果不是,则跳转到UP | |
800E | 32, 01, 82 | STA 8201 H | (8201 H) = A; 存储数字 | |
8011 | 76 | HLT | 停止 |
输出
地址 | 数据 |
---|---|
. . . | . . . |
8201 | B2 |
. . . | . . . |
广告