从实模式到保护模式的跳转指令是怎么取到的?
好多类似的代码:
lgdt GdtPtr //加载 GDTR
cli //关中断
//打开地址线A20
//准备切换到保护模式
mov eax, cr0
or eax, 1
mov cr0, eax
//真正进入保护模式,根据GDR中注册的信息,跳转到段基址0x7d00,偏移量为0的地方(pm32.c中main函数内存地址)
jmp dword SelectorSode32:0x0
执行mov cr0, eax命令之后,已经是保护模式了,此时,按实模式的解释方式cs:ip即cs*16+ip-->jmp dword SelectorSode32:0x0
但这时已经是保护模式了,此时的cs:ip为什么还是指向jmp命令呢?如果不是,那就根本执行不了jmp命令,也就乱了。
我的疑问:
mov cr0,eax是在实模式下执行的,当把这个命令取到指令缓冲寄存器的时候,ip下移,这时cs:ip指向jmp命令,接着执行
mov cr0,eax命令,此后,取指令的模式已经变了,已经从cs的投影寄存器取信息了,为什么还是取到jmp命令?
lgdt GdtPtr //加载 GDTR
cli //关中断
//打开地址线A20
//准备切换到保护模式
mov eax, cr0
or eax, 1
mov cr0, eax
//真正进入保护模式,根据GDR中注册的信息,跳转到段基址0x7d00,偏移量为0的地方(pm32.c中main函数内存地址)
jmp dword SelectorSode32:0x0
执行mov cr0, eax命令之后,已经是保护模式了,此时,按实模式的解释方式cs:ip即cs*16+ip-->jmp dword SelectorSode32:0x0
但这时已经是保护模式了,此时的cs:ip为什么还是指向jmp命令呢?如果不是,那就根本执行不了jmp命令,也就乱了。
我的疑问:
mov cr0,eax是在实模式下执行的,当把这个命令取到指令缓冲寄存器的时候,ip下移,这时cs:ip指向jmp命令,接着执行
mov cr0,eax命令,此后,取指令的模式已经变了,已经从cs的投影寄存器取信息了,为什么还是取到jmp命令?
...全文
相关推荐
x86汇编语言从实模式到保护模式(完整版)更新过
**从实模式到保护模式的转换**: - 启动过程中,BIOS会将控制权交给操作系统。
X86汇编语言深入指南:从实模式到保护模式
本文还有配套的精品资源,点击获取 简介:《X86汇编语言:从实模式到保护模式》详细介绍了X86架构处理器从实模式到保护模式的演进过程,包含汇编语言基础、内存管理、中断处理和系统级编程等内容。书中解释了实模式下的内存访问和中断机制,以及保护模式如何通过分页和分段机制提供高级内存管理和保护。作者提供了丰富的汇编代码示例,通过"booktool"工具,读者可以实践和调试代码,加深...
x86汇编语言-从实模式到保护模式源码及工具
转移控制权:通过中断或跳转指令,将执行流程转移到保护模式下的代码。书中的源码部分可能包含了这些转换过程的示例,以及在保护模式下如何进行内存管理、中断处理、进程调度等核心操作的实现。
Python-带注释的X86汇编语言从实模式到保护模式一书代码
《X86汇编语言-从实模式到保护模式》是一本深入讲解X86架构汇编语言的经典著作,尤其关注计算机系统从实模式到保护模式的转变过程。
很详细的保护模式编程
#### 四、从实模式过渡到保护模式由于计算机启动时默认处于实模式,因此需要通过特定的指令序列来进入保护模式。


