Идея такая: 1) Дескрипторы создаём (3 штуки: сегмента,кода и еще с базой 0 и 4Гб пределом) 2) Находим базы кода и данных,правим дескрипторы 3) переходим в защ. режим 4) заносим в рег. селектор на деск 4 Гб 5) возвращаемся в реальный режим Всё так?
Добавляю свой кодик.... где наврал? Код (Text): .MODEL SMALL .386P .DATA desc0 dd 0,0 desc1 dw 0ffffh ; Дескриптор сегмента кода dw ? db ?, 10011000b db 10011111b,? desc2 dw 0ffffh ; Дескриптор сегмента данных dw ? db ?,10010000b db 10001111b,? desc3 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 DS,0 ror EAX,16 mov WORD PTR DS:[desc1 + 1],ax ror EAX,8 mov BYTE PTR DS:[desc1 + 4],al ror EAX,8 mov BYTE PTR DS:[desc1 + 7],al MAKE CS,0 ror EAX,16 mov WORD PTR DS:[desc2 + 1],ax ror EAX,8 mov BYTE PTR DS:[desc2 + 4],al ror EAX,8 mov BYTE PTR DS:[desc2 + 7],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,18H 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