关于从保护模式切换到实模式的相关说明
2014-06-16 09:50
309 查看
关于为什么不能从32位的保护模式直接跳转到实模式,而要先跳转到16位的保护模式,再从16位的保护模式跳转到实模式的理解
;****************注意在此用normal选择子对段寄存器进行填充******************************
mov ax, SelectorNormal
317 mov ds, ax
318 mov es, ax
319 mov fs, ax
320 mov gs, ax
321 mov ss, ax
从上述代码可以看出:ds,es,fs,gs,ss这些段寄存器对应的高速缓冲寄存器中的内容可以通过加载normal选择子而得到更新,当向这几个段寄存器中装入normal选择子时,会自动地将normal对应的描述符装载到描述符高速缓冲寄存器中,因normal选择子所对应的描述符的属性符合实模式下的要求,即:段界限为ffffh,段属性也是固定的。
但是:CS寄存器是不可以通过装载normal来更新CS对应的高速缓冲寄存器的,为什么:你能写出这样的指令吗:MOV CS,SelectorNormal,汇编中没有这样的指令。
即然这样,那怎么可以让CS对应的高速缓冲寄存器中的内容符合实模式的要求呢?
方法是这样的:因为CS的值只能通过jmp,call这样的指令去改变,所以,定义一个16位的代码段,这个代码段的描述符定义为:段界限0ffffh,段属性:存在的只执行代码段
假设这个代码段的选择子为:select32,偏移地址为:offsetaddr
用一条转移指令向这段代码跳转:jmp select32:offsetaddr
因现在处于保护模式,所以jmp指令执行的结果是将select32对应的描述符装入cs对应的描述符高速缓冲寄存器中,这个描述符就是符合实模式要求的。这样,CS段寄存器对应的高速缓冲寄存器中的内容终于达到实模式的要求了,所以现在可以进行从保护模式到实模式跳转了,再用一条jmp语句就可以从保护模式跳转到实模式了。
;****************注意在此用normal选择子对段寄存器进行填充******************************
mov ax, SelectorNormal
317 mov ds, ax
318 mov es, ax
319 mov fs, ax
320 mov gs, ax
321 mov ss, ax
从上述代码可以看出:ds,es,fs,gs,ss这些段寄存器对应的高速缓冲寄存器中的内容可以通过加载normal选择子而得到更新,当向这几个段寄存器中装入normal选择子时,会自动地将normal对应的描述符装载到描述符高速缓冲寄存器中,因normal选择子所对应的描述符的属性符合实模式下的要求,即:段界限为ffffh,段属性也是固定的。
但是:CS寄存器是不可以通过装载normal来更新CS对应的高速缓冲寄存器的,为什么:你能写出这样的指令吗:MOV CS,SelectorNormal,汇编中没有这样的指令。
即然这样,那怎么可以让CS对应的高速缓冲寄存器中的内容符合实模式的要求呢?
方法是这样的:因为CS的值只能通过jmp,call这样的指令去改变,所以,定义一个16位的代码段,这个代码段的描述符定义为:段界限0ffffh,段属性:存在的只执行代码段
假设这个代码段的选择子为:select32,偏移地址为:offsetaddr
用一条转移指令向这段代码跳转:jmp select32:offsetaddr
因现在处于保护模式,所以jmp指令执行的结果是将select32对应的描述符装入cs对应的描述符高速缓冲寄存器中,这个描述符就是符合实模式要求的。这样,CS段寄存器对应的高速缓冲寄存器中的内容终于达到实模式的要求了,所以现在可以进行从保护模式到实模式跳转了,再用一条jmp语句就可以从保护模式跳转到实模式了。
相关文章推荐
- 关于从保护模式切换到实模式的相关说明
- 实模式切换到保护模式,为什么要开启A20地址线(系统升级产生的兼容性问题)
- (实模式+保护模式)模式切换的过程步骤(代码+文字解析)
- [Rx86OS-III] 由实模式切换到保护模式
- 实模式切换到保护模式,为什么要开启A20地址线(系统升级产生的兼容性问题)
- 关于本特利内华达状态监测保护系统相关说明
- (实模式+保护模式)模式切换的过程步骤(代码+文字解析)
- 关于实模式和保护模式
- 从保护模式切换到实模式遇到了大问题,求解
- 实模式、保护模式的区别 实模式保护模式切换方法
- 关于“实模式”和“保护模式” .
- 关于linux内核中大内核的向保护模式切换的一个细节
- 关于“实模式”和“保护模式”
- 保护模式和实模式
- 关于unicode,mbcs,utf8,charset,encoding等相关概念的说明
- 关于push和pull模式的说明
- 保护模式下的编程<六>---任务切换
- 如何调试从实模式切换到保护模式的程序
- 关于unicode,mbcs,utf8,charset,encoding等相关概念的说明
- 关于asp技术相关说明