如何在 Intel 8085 中使用 Stack 添加四个数据字节?
How to add four data bytes using Stack in Intel 8085?
我需要使用堆栈将 4 个字节的数据 03H、02H、05H、01H 相加,并将结果存储在 i8085 微处理器的 3350H 中。数据字节来自从 3300H 开始的 4 个连续内存位置。如何去做这件事?
到目前为止我已经这样做了:
LXI SP,3599H ;Stack initialised
MVI L,00H
PUSH H
POP PSW ;Flags Cleared
LXI H,3300H
PUSH H
INX H
PUSH H
INX H
PUSH H
INX H
PUSH H
MVI A,00H
POP B
ADD B
POP B
ADD B
POP B
ADD B
POP B
ADD B
STA 3350H
HLT
我确定这不是一个好方法,因为有很多重复。可以有某种循环来让它更好地工作吗?
"use the stack" 位似乎有意义的唯一方法是将 SP 设置为 3300H,将堆栈中的数据(3300H 和 3301H)弹出到寄存器对(假设为 BC)中,将 B 添加到A,将C加到A,将接下来的两个数据字节弹出到BC(3302H和3303H),重复添加,然后将A存入3350H。这样你就可以 "using the stack" 将数据从内存中取出到寄存器中,这样你就可以进行数学运算了。做任何事情之前先归零。
祝你好运。
我需要使用堆栈将 4 个字节的数据 03H、02H、05H、01H 相加,并将结果存储在 i8085 微处理器的 3350H 中。数据字节来自从 3300H 开始的 4 个连续内存位置。如何去做这件事? 到目前为止我已经这样做了:
LXI SP,3599H ;Stack initialised
MVI L,00H
PUSH H
POP PSW ;Flags Cleared
LXI H,3300H
PUSH H
INX H
PUSH H
INX H
PUSH H
INX H
PUSH H
MVI A,00H
POP B
ADD B
POP B
ADD B
POP B
ADD B
POP B
ADD B
STA 3350H
HLT
我确定这不是一个好方法,因为有很多重复。可以有某种循环来让它更好地工作吗?
"use the stack" 位似乎有意义的唯一方法是将 SP 设置为 3300H,将堆栈中的数据(3300H 和 3301H)弹出到寄存器对(假设为 BC)中,将 B 添加到A,将C加到A,将接下来的两个数据字节弹出到BC(3302H和3303H),重复添加,然后将A存入3350H。这样你就可以 "using the stack" 将数据从内存中取出到寄存器中,这样你就可以进行数学运算了。做任何事情之前先归零。
祝你好运。