.MODEL SMALL
.386P
.DATA
desc0 dd 0,0
desc1 dw 0ffffh ; Дескриптор сегмента кода
dw ?
db ?, 10011000b
db 10011111b,?
desc2 dw 0ffffh ; Это для нереала
dw 0
db 0,10010000b
db 10001111b,0
GDTR LABEL FWORD
dw offset GDTR - 1 - offset desc0
line dd ?
.CODE
MAKE MACRO SEG,OFF
mov EAX,0
mov EBX,0
mov AX,SEG
mov BX,OFF
shl EAX,4
add EAX,EBX
ENDM
.STARTUP
mov AX,@data
mov DS,AX
mov eax,cr0
test al,1
jnz exit
MAKE DS,OFFSET desc0
mov line,EAX
LGDT FWORD PTR GDTR
cli
in AL,70h
or AL,80h
out 70h,AL
MAKE CS,0
mov WORD PTR DS:[desc2 + 1],ax
ror EAX,24
mov BYTE PTR DS:[desc2 + 7],al
ror EAX,8
mov BYTE PTR DS:[desc2 + 4],al
in AL,92h
or AL,2
out 92h,AL
mov EAX,CR0
or EAX,1
mov CR0,EAX
jmp FAR PTR nex1
nex1:
mov AX,10H
MOV DS,AX
MOV ES,AX
MOV SS,AX
MOV GS,AX
MOV FS,AX
mov EAX,CR0
and EAX,0FFFEh
mov CR0,EAX
jmp FAR PTR next2
next2:
sti
in AL,70h
and AL,08Fh
out 70h,AL
XOR AX,AX
MOV DS,AX
MOV ES,AX
MOV SS,AX
MOV GS,AX
MOV FS,AX
exit:
.EXIT
END
Программа для перехода в нереальны режим
Вот у меня тут кодик есть, только что-то не пойму где ошибка...