问题–在8085微处理器中编写汇编语言程序,以将灰度数字转换为二进制。
例子 –
算法 –
- 将地址2050中的数据加载到A中
- 在C中移动数据07
- 将A的数据移到B
- 提取A中可用数据的MSB(最高有效位)
- 向右旋转A位
- 在A和7F中的数据之间取AND
- 在A和B中存在的数据之间进行XOR
- 减少C的内容
- 如果未设置零标志(ZF),则转到步骤4,否则转到步骤9
- 将结果存储在内存地址3050中
- 停止
程序 –
MEMORY ADDRESS | MNEMONICS | COMMENT | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 | Rotate A to Right without carry | 2009 | ANI 7F | A = A AND 7F | 200B | XRA B | A = A XOR B | 200C | DCR C | C = C – 1 | 200D | JNZ 2008 | JUMP to 2008 if ZF = 0 | 2011 | STA 3050 | 3050 <- A | 2014 | HLT | Stop |
解释-
- LDA 2050用于从A中的地址2050加载数据
- MVI C,07用于在C中移动数据07
- MOV B,A将A的数据移至B
- ANI 80提取A中可用数据的MSB(最高有效位)
- RRC无需进位就将A的位向右旋转
- ANI 7F用于在A和7F中的数据之间进行“与”运算
- XRA B对A和B中存在的数据进行XOR
- DCR C用于减少C的内容
- 如果ZF = 0,则使用JNZ 2008跳转到地址2008
- STA 3050用于将结果存储在内存地址3050中
- HLT用于结束程序