2

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

因此,如果我将堆栈段设置为0x0900,这将使堆栈的范围从0x0900 << 40x0900 << 4 + 0xFFFF0x090000x18FFF这意味着我将获得一个安全的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
4

0 回答 0