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 |
| . . . | . . . |
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP