当前位置: 技术问答>linux和unix
关于保护模式下打开地址线A20的问题
来源: 互联网 发布时间:2015-12-04
本文导语: EnableA20 MACRO push ax in al,92h or al,00000010b out 92h,al pop ...
EnableA20 MACRO
push ax
in al,92h
or al,00000010b
out 92h,al
pop ax
ENDM
=====================
如上代码是一个保护模式下打开地址线A20的宏。请问in指令中的92H是什么意思?以及为什么要执行or al,00000010b语句,其中的00000010b又是什么意思?谢谢!!
push ax
in al,92h
or al,00000010b
out 92h,al
pop ax
ENDM
=====================
如上代码是一个保护模式下打开地址线A20的宏。请问in指令中的92H是什么意思?以及为什么要执行or al,00000010b语句,其中的00000010b又是什么意思?谢谢!!
|
1、端口0x92控制A20信号线,即操作0x92端口就能开启和禁止寻址超过1M时的环绕。
2、or al,00000010b 就是将从端口0x92读入数据的二进制码的第二位置1,从而实现开启A20地址。因为A20信号的第二位就是用于控制开启/禁止A20地址的。
同理,在DisableA20 MACRO 中就读入0x92端口,并将相应的位置0,用的是and al,11111101b
2、or al,00000010b 就是将从端口0x92读入数据的二进制码的第二位置1,从而实现开启A20地址。因为A20信号的第二位就是用于控制开启/禁止A20地址的。
同理,在DisableA20 MACRO 中就读入0x92端口,并将相应的位置0,用的是and al,11111101b