问题–在8085微处理器中编写汇编语言程序,以检查存储在存储器2050中的8位数字是偶数还是奇数。如果是偶数,则将22存储在存储位置3050中,否则将11存储在存储位置3050中。
例子 –
如果数字的低位为1,则称该数字为奇数,否则为偶数。因此,为了确定数字是偶数还是奇数,我们借助ANI指令对01执行AND运算。如果数字为奇数,则累加器中将得到01,否则为00。 ANI指令也影响8085的标志。因此,如果累加器包含00,则置零标志,否则复位。
算法 –
- 将存储单元2050中的内容加载到累加器A中。
- 借助ANI指令,对累加器A的值01进行“与”运算。
- 检查是否设置了零标志,即,如果ZF = 1,则将22存储在累加器A中,否则将11存储在A中。
- 将A的值存储在内存位置3050
程序 –
MEMORY ADDRESS | MNEMONICS | COMMENT | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2000 | LDA 2050 | A <- M[2050] | ||||||||||||
2003 | ANI 01 | A <- A (AND) 01 | ||||||||||||
2005 | JZ 200D | Jump if ZF = 1 | ||||||||||||
2008 | MVI A 11 | A <- 11
200A |
JMP 200F |
Jump to memory location |
200D |
MVI A 22 |
A <- 22 |
200F |
STA 3050 |
M[3050] <- A |
2012 |
HLT |
END |
|
说明–使用的寄存器A:
- LDA 2050 –将存储器位置2050的内容加载到累加器A中
- ANI 01 –在累加器A和01之间执行“与”运算并将结果存储在A中
- JZ 200D –如果ZF = 1则跳转到存储位置200D
- MVI A 11 –将11分配给累加器
- JMP 200F –跳转到存储位置200F
- MVI A 22 –将22分配给累加器
- STA 3050 –在3050中存储A的值
- HLT –停止执行程序,并停止任何进一步的执行