gpt4 book ai didi

assembly - 汇编中的 "MOV"指令是分配内存吗?

转载 作者:行者123 更新时间:2023-12-03 01:12:46 24 4
gpt4 key购买 nike

我注意到 MOV 应该在寄存器之间复制和覆盖数据,但是如果任何其他寄存器中没有当前数据,MOV 是否会将特定大小的字节从 RAM 移动到寄存器以暂时保存它,或者这到底是如何工作的?

为了澄清我的问题,假设我使用:

MOV AL, 0x10;

在这种情况下,移动到8位寄存器的“10”位数据在哪里?

这是从 RAM 移动到 AL 作为 8 位来保存,还是“10”字节只是不在内存中的暂存器数字?

我不明白这一点,如果有人能解决这个问题那就太好了。

我的问题是,我需要知道在哪里使用了多少内存,以及使用了多少内存,以及如何以及具体解决了什么问题(教程没有明确说明这一点)。

最佳答案

猜测心理障碍:了解 RAM 既包含代码又包含数据非常重要。值 0x10 来自代码。它被汇编器编码成机器代码指令。当操作系统开始执行您的代码时,该代码就会被操作系统加载到 RAM 中。

值得注意的是,它不是一个变量,指令将始终加载 0x10,无论程序的状态如何。 RAM 的其他部分存储您在汇编程序中声明的数据。就像 .data 和 .stack 部分一样。但此特定指令不会以其他方式使用。

增加了可能的困惑:它没有位于RAM中。在没有操作系统或引导驱动器的嵌入式系统上,代码通常被烧录到 ROM 中。处理器不关心它,它只是从内存总线读取字节,使用 EIP 寄存器(指令指针)告诉内存子系统它需要哪些字节。

关于assembly - 汇编中的 "MOV"指令是分配内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14205054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com