如何解决在此代码中的何处切换到 32 位保护模式
我阅读了有关如何从默认实模式切换到保护模式的信息,我想知道代码中的切换发生在哪里。有一部分是我抄的,没完全看懂,就是这个:
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 举报,一经查实,本站将立刻删除。