【发布时间】:2020-02-27 15:14:33
【问题描述】:
在汇编语言中,当我们声明像 ds:data,cs:code,es:extra,ss:stack 等时。我有点困惑,这些段是在 RAM 或硬盘内存中创建的。
【问题讨论】:
标签: assembly x86-16 segment memory-segmentation
在汇编语言中,当我们声明像 ds:data,cs:code,es:extra,ss:stack 等时。我有点困惑,这些段是在 RAM 或硬盘内存中创建的。
【问题讨论】:
标签: assembly x86-16 segment memory-segmentation
对于您的程序,它始终在 RAM 中。如果它在裸机上运行,那么对于硬件也是如此。
但是,如果程序在典型的现代操作系统下运行,您不知道是否以及何时将某些数据移动到磁盘。在访问尝试时,您的程序可能会停止,然后在操作系统将数据返回到 RAM 时恢复。 详情请见Paging。
而且,您应该注意谁以及如何“创建”细分。如果您在实模式下使用 x86,则应分配内存并将数据放在 1MB 地址空间中。只有这样你才能将段地址加载到段寄存器并声明它的用途。
【讨论】: