问题描述
我阅读了有关如何从默认实模式切换到保护模式的信息,我想知道代码中的切换发生在哪里。有一部分是我抄的,没完全看懂,就是这个:
global loader
global stack_ptr
extern main
MODULEALIGN equ 1<<0
MEMINFO equ 1<<1
FLAGS equ MODULEALIGN | MEMINFO
MAGIC equ 0x1BADB002
CHECKSUM equ -(MAGIC + FLAGS)
section .mbheader
align 4
MultiBootHeader:
dd MAGIC
dd FLAGS
dd CHECKSUM
section .text
STACKSIZE equ 0x4000
loader:
mov esp,stack+STACKSIZE
push eax
push ebx
call main
cli ;clear interrupt flag
hang:
hlt
jmp hang
section .bss
align 4
stack:
resb STACKSIZE
stack_ptr:
由于我可以正常使用 32 位寄存器并且使用中断失败,我想我处于保护模式,但我不明白切换发生在哪里。我读到使用保护模式时您必须设置内存分页,但这只是推荐还是强制性的?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)