;以下内容由BIOS与32位简单内核探究QQ群(67286087)创建者cxdzxc---宁静的天空(原兰州-自由人)创作于2008-11-22
;总共的代码只有21行,(去除空行和说明,如果不算伪指令的行,那就只有16行了)^_^,而且没有使用DOS的系统调用,
;这个程序由MASM6.15编译通过,生成的文件需要在DOS下执行,COM文件可以正确执行,EXE会死机或重启
;执行此程序后,恭喜你,你可以在实模式下访问4G的地址空间了
;要访问4G空间需要使用指令---MOV ESI,#data(#data是任意的不超过32位的立即数);---MOV AX,ES:[ESI]
;在程序执行后的实模式下,请不要使用像---MOV ES,AX这样的指令(不能重装ES),否则将丧失4G的访问能力
;传播请保留全部的信息,有什麽问题(表述或者程序有错误的话)请联系---QQ:750347821
;EMAIL:750347821@QQ.COM,CXDZXC@GMAIL.COM
.386P ;这个伪指令指出下面的代码兼容了80X386保护模式以上的代码,要操作保护模式的寄存器,
;数字后面必须要有个字母P
CSEG SEGMENT USE16 ;USE16这个伪指令指出代码段CS是使用16位的段,因为.386P伪指令的默认是32位段,
;这里要改一下默认
ORG 100H ;这里设定标号START开始的地址是100H,某些编译器可以不用这行
START: cli ;关中断,这个很重要,否则别怪我言之不预
in al,0eeh
;总共的代码只有21行,(去除空行和说明,如果不算伪指令的行,那就只有16行了)^_^,而且没有使用DOS的系统调用,
;这个程序由MASM6.15编译通过,生成的文件需要在DOS下执行,COM文件可以正确执行,EXE会死机或重启
;执行此程序后,恭喜你,你可以在实模式下访问4G的地址空间了
;要访问4G空间需要使用指令---MOV ESI,#data(#data是任意的不超过32位的立即数);---MOV AX,ES:[ESI]
;在程序执行后的实模式下,请不要使用像---MOV ES,AX这样的指令(不能重装ES),否则将丧失4G的访问能力
;传播请保留全部的信息,有什麽问题(表述或者程序有错误的话)请联系---QQ:750347821
;EMAIL:750347821@QQ.COM,CXDZXC@GMAIL.COM
.386P ;这个伪指令指出下面的代码兼容了80X386保护模式以上的代码,要操作保护模式的寄存器,
;数字后面必须要有个字母P
CSEG SEGMENT USE16 ;USE16这个伪指令指出代码段CS是使用16位的段,因为.386P伪指令的默认是32位段,
;这里要改一下默认
ORG 100H ;这里设定标号START开始的地址是100H,某些编译器可以不用这行
START: cli ;关中断,这个很重要,否则别怪我言之不预
in al,0eeh

本文提供了一段21行的汇编代码,能够在实模式下通过打开A20地址线和修改CPU工作模式控制寄存器CR0,使得CPU能够访问4GB的地址空间。代码适用于DOS环境,使用MASM6.15编译,并警告在执行后不要使用某些指令以避免失去4G访问能力。
最低0.47元/天 解锁文章
868

被折叠的 条评论
为什么被折叠?



