0x0900对于堆栈段是否是一个很好的值?

时间:2015-12-25 08:37:41

标签: assembly nasm bootloader real-mode

我正在编写一个用于教育目的的小内核,我正在考虑在实模式下设置堆栈的好方法。 我从这里读到:http://wiki.osdev.org/Memory_Map_%28x86%29 0x07E00 地址 0x7FFFF 保证免费使用。

因此,如果我将堆栈段设置为 0x0900 ,那么堆栈的范围将从 0x0900<< 4 0x0900<< 4 + 0xFFFF 0x09000 0x18FFF 这意味着我会得到一个安全的 0x10000 字节的堆栈空间,对吗?

我可以将我的堆栈指针设置为0,它会"下溢"在下一次推动时到0xFFFE?分割对我来说有点混乱。

这是代码的相关部分的外观:

BITS 16
ORG 0x0000

mov ax, 0x07C0
mov ds, ax          ; ds = origin of code

mov ax, 0xB800
mov es, ax          ; es = origin of video memory

mov ax, 0x0900
mov ss, ax

mov ax, 0
mov sp, ax

0 个答案:

没有答案