首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

保护模式返回实模式出现的有关问题

2012-05-08 
保护模式返回实模式出现的问题Assembly codemov ax , csmov ds , axmov es , axmov ss , axin al , 92hand

保护模式返回实模式出现的问题

Assembly code
    mov ax , cs    mov ds , ax    mov es , ax    mov ss , ax    in al , 92h    and al ,11111101b    out 92h , al        ;sti 如果sti放在这里我单步调试问什么下面的代码就不能这确的执行了,而且cs的值也变了    mov ax , 0b800h    mov es , ax    mov si , (80 * 6  + 11 ) * 2    mov byte [es:si] , 'm'    inc si     mov byte [es:si] , 01101100b    sti  ;sti放在这里为什么就一切正常    mov ax , 4c00h    int 21h


纠结中。。。。

[解决办法]
STI是开中断,在模式转换前应该关中断,因为中断会打断模式的切换
[解决办法]
进了保护模式,中断会切换ss:esp,push esp,ss,cs,eip,eflags,加载tss的esp :ss,cs:eip你滴明白的干活?
[解决办法]
那个cs:eip 不是tss 的啊,是intr_gate或者trap_gate或者system_gate里面的
[解决办法]
正是因为你没有设置啊,CPU只管从TSS取,PC上电开始,要么0要么1,所以TR里面就是随机数,TR不合法,所以 常规错误,但是你的常规错误没有handle,所以bochs 会提示CPU HLT WITH IF!=0
[解决办法]
应该不是常规错误,应当是INVALIDATE TSS才对

热点排行