ASM - 8086 - 使用寄存器和变量

时间:2015-08-16 13:49:14

标签: assembly x86-16

我开始掌握asm编程,但我觉得我遗漏了一些关于使用寄存器来存储变量的东西。 我遇到的问题是,由于内部原因,某些指令会修改其他寄存器。在某些情况下,我使用这些寄存器来存储应用程序逻辑。 如何使用寄存器有什么黄金法则吗?

例如:以下代码更改了dx寄存器并清除了当前变量。

mov ax, 04h
mov bx, 02h
mul bx

我不想也不说我希望dx寄存器被清除掉。这里发生了什么?

1 个答案:

答案 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