问题–在8085微处理器中编写汇编语言程序, 以将灰度数字转换为二进制。
示例–
算法–
- 将地址2050中的数据加载到A中
- 在C中移动数据07
- 将A的数据移到B
- 提取A中可用数据的MSB(最高有效位)
- 向右旋转A位
- 在A和7F中的数据之间取AND
- 在A和B中存在的数据之间进行XOR
- 减少C的内容
- 如果未设置零标志(ZF), 则转到步骤4, 否则转到步骤9
- 将结果存储在内存地址3050中
- 停止
程序–
内存地址 | 内存 | 注释 |
---|---|---|
2000 | LDA 2050 | A <-2050 |
2003 | MVI C, 07 | C <-07 |
2005 | MOV B, A | B <-A |
2006 | ANI 80 | A = A AND 80 |
2008 | RRC | 向右旋转A, 无需进位 |
2009 | ANI 7楼 | A = A AND 7F |
200B | XRA B | A = A异或B |
200度 | DCR C | C = C – 1 |
200D | JNZ 2008 | 如果ZF = 0, 则跳至2008 |
2011 | STA 3050 | 3050 <-A |
2014 | HLT | 停止 |
说明-
- LDA 2050用于从A中的地址2050加载数据
- MVI C, 07用于在C中移动数据07
- MOV B, A将A的数据移到B
- ANI 80提取A中可用数据的MSB(最高有效位)
- RRC将A的位向右旋转而不带进位
- ANI 7楼用于在A和7F中的数据之间取AND
- XRA B在A和B中存在的数据之间进行XOR
- DCR C用于减少C的内容
- JNZ 2008如果ZF = 0, 则用于跳转到地址2008
- STA 3050用于将结果存储在内存地址3050中
- HLT用于结束程序