![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
汇编
qq_42136434
这个作者很懒,什么都没留下…
展开
-
汇编:实模式->保护模式->实模式 切换的注意事项
1、程序开始时在实模式下要有自己的堆栈段,进入保护模式前先暂存ss及sp的值至某内存处,以便从保护模式返回实模式后恢复到原先的堆栈。 2、返回实模式前需把各段寄存器设置为规范段,包括SS也要设置 3、返回实模式前必须在16位段返回,不能在32位段里返回实模式。 4、返回实模式前的段必须定义在GDT中。 5、在32位段下操作有关寄存器时,注意32位寄存器和16位寄存器的差别,类似于SP寄存器,应用使用ESP寄存器。 6、在使用定义在LDT中的段时,一定要使用LLDT先加...原创 2022-05-06 23:27:26 · 135 阅读 · 0 评论 -
汇编:实模式->保护模式->实模式 的切换步骤
1、设置必要的实模式环境,如实模式下的堆栈等。 2、初始化全局描述符表(GDT)、局部描述符表(LDT)及中断描述符表(IDT)等。 3、保存实模式下的堆栈地址到某内存处,以便切换回实模式后恢复,如有必要也可保存DS、ES、FS、GS等数据段寄存器的值。 4、加载全局描述符表至全局描述符表寄存器(GDTR),如果未定义中断描述符表,则关中断,然后打开地址线A20。 5、修改cr0的PE位为1,切换到保护模式。 6、使用段间跳转指令转到保护模式下的段,如果有局部描述符表,则应首先加载局部描述表段至局部描述符表原创 2022-05-06 23:25:14 · 361 阅读 · 0 评论 -
16位汇编中不同特权级切换注意事项
记录一下16位汇编中不同特权级切换注意事项 1、各段定义中的DPL和段选择子中的RPL是否正确,注意堆栈段和目标代码段。 2、注意在初始化LDT或GDT中的非门描述符时别把已定义好的门描述符给修改了。 3、外层通过调用门调用内层的函数,如果函数有参数,则必须由内层的函数进行堆栈平衡。 ...原创 2022-05-06 23:21:01 · 69 阅读 · 0 评论