为什么切换到保护模式后重启

masmaster 2010-10-12 09:43:03
今天在纯dos模式debug。 当debug到切换到保护模式那段程序, 系统重启啦,不知道咋回事? 望高手教之。
;加载GDTR
lgdt fword ptr vgdtr

cli ;关中断
call ea20 ;打开A20地址线
;切换到保护模式
mov eax,cr0
or eax,1
mov cr0,eax
清指令预取队列,进入保护模式
jump <code_sel>,<offset virtual>
...全文
121 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qlyzpqz 2011-10-10
  • 打赏
  • 举报
回复
顶。。。。。
masmaster 2010-10-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zoologist 的回复:]
http://www.lab-z.com/old4.html

上面有我之前调试过ok的保护模式的例子。
[/Quote]
老大, 这个例子我也有,我运行了一下,在纯dos下,是可以得到110000H的数据。 我想问一句,
第一:编写汇编源程序的时候跟汇编普通16位程序由何区别,应该注意什么?
第二:可以用debug(16位的)调试实模式转保护模式这样的程序吗?
masmaster 2010-10-12
  • 打赏
  • 举报
回复
多谢LS
zoologist 2010-10-12
  • 打赏
  • 举报
回复
http://www.lab-z.com/old4.html

上面有我之前调试过ok的保护模式的例子。
masmaster 2010-10-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 procomfan 的回复:]
debug程序只是用于实方式下的程序调试。
你的程序中出现了cr0这个字,cr0寄存器是80386才有的,而80386是一个32位CPU。
总之,调试保护模式相关的程序最好别用debug,用Bochs虚拟机装一个FreeDos也可以,这个虚拟机也是有调试功能的。
我平时几乎不调试,所以就用DOSBox运行程序。
[/Quote]
嗯, 下一步就装bochs。 多谢指导。
ProComFan 2010-10-12
  • 打赏
  • 举报
回复
debug程序只是用于实方式下的程序调试。
你的程序中出现了cr0这个字,cr0寄存器是80386才有的,而80386是一个32位CPU。
总之,调试保护模式相关的程序最好别用debug,用Bochs虚拟机装一个FreeDos也可以,这个虚拟机也是有调试功能的。
我平时几乎不调试,所以就用DOSBox运行程序。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧