我开始掌握asm编程,但我觉得我遗漏了一些关于使用寄存器来存储变量的东西。 我遇到的问题是,由于内部原因,某些指令会修改其他寄存器。在某些情况下,我使用这些寄存器来存储应用程序逻辑。 如何使用寄存器有什么黄金法则吗?
例如:以下代码更改了dx寄存器并清除了当前变量。
mov ax, 04h mov bx, 02h mul bx
我不想也不说我希望dx寄存器被清除掉。这里发生了什么?
答案 0 :(得分:2)
像mul这样计算函数的指令需要一个寄存器来存储函数的结果。 DX主要用于此。
您将无法将所有变量存储在寄存器中。您还需要使用堆和堆栈来存储变量。
堆栈对于临时存储变量特别有用。您的代码通常如下所示:
// some variable is in ax
// needing the register for something else now, pushing current variable to the stack
push ax
// put some new value into ax
// ... do some computations with it ...
// now we need the old value back in ax
pop ax