我注意到MOV应该复制和覆盖寄存器中的数据,但是如果任何其他寄存器中没有当前数据,MOV是否会将一定大小的字节从RAM移动到寄存器以暂时保存它,或者如何这项工作究竟呢?
为了澄清我的问题,请说我使用:
MOV AL, 0x10;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,移动到8位寄存器的"10"位数据在哪里?
这是从RAM移到AL是否为8位保持,或者"10"字节只是一个不在内存中的暂存号?
我不明白这一点,如果有人能理顺这一点,那就太棒了.
我的问题是我需要知道使用的内存的位置和内容,以及如何以及如何解决它(并且教程没有明确这一点).
猜测心理障碍:了解RAM包含代码和数据非常重要.值0x10来自代码.它由汇编程序编码到机器代码指令中.当代码开始执行代码时,操作系统将该代码加载到RAM中.
值得注意的是,它不是变量,指令将始终加载0x10,无论程序的状态如何.RAM的其他部分存储您在汇编程序中声明的数据.像.data和.stack部分一样.但是这个特定指令没有使用它.
添加到可能的混淆:它不具有可在RAM中.在没有操作系统或引导驱动器的嵌入式系统上,代码通常会被刻录到ROM中.处理器不关心它,它只是从存储器总线读取字节,使用EIP寄存器(指令指针)告诉存储器子系统它需要什么字节.