Буду очень признателен, если кто-то сможет помочь мне со следующей программой, выполняющей переключение в защищённый режим: include macros.inc .386p PUBLIC _RealModeEntryPoint RealModeCodeSegment SEGMENT PARA USE16 ASSUME cs: RealModeCodeSegment, es: PMDataSegment _RealModeEntryPoint: cli lgdt fword ptr InitialGDT SetPEBit ClearCPUPrefetchQueue JumpToEntryPoint FlatCodeSelector, _PMEntryPoint RealModeCodeSegment ENDS PMCodeSegment SEGMENT PARA USE32 ASSUME cs: PMCodeSegment, ds: PMDataSegment _PMEntryPoint: jmp $ PMCodeSegment ENDS PMDataSegment SEGMENT PARA USE32 InitialGDT TABLE_REGISTER <GDTSize - 1, GDT> GDT LABEL BYTE GDTNull DESCRIPTOR <0000h, 0000h, 00h, 00h, 00h, 00h> GDTFlatCode DESCRIPTOR <0FFFFh, 0000h, 00h, DSCR_CODE, DSCR_FLAG_GRANULARITY OR 0FFh, 00h> GDTFlatData DESCRIPTOR <0FFFFh, 0000h, 00h, DSCR_DATA, DSCR_FLAG_GRANULARITY OR 0FFh, 00h> GDTSize = $ - GDT FlatCodeSelector = SIZEOF(DESCRIPTOR) SHL 1 FlatDataSelector = SIZEOF(DESCRIPTOR) SHL 2 PMDataSegment ENDS END _RealModeEntryPoint Макросы и структуры: LoadGDTR MACRO dwGDTAddress ; 32-bit overridden lea bx, GDTAddress db 66h db 8Dh db 1Eh dd dwGDTAddress ; lgdt fword ptr [bx] db 0Fh db 01h db 17h EndM SetPEBit MACRO mov eax, cr0 or eax, CR0_PROTECTION mov cr0, eax EndM ClearCPUPrefetchQueue MACRO jmp $ + 2 EndM JumpToEntryPoint MACRO wSelector, dwOffset ; 32-bit overriden far jmp db 66h db 0EAh dd offset dwOffset dw wSelector EndM DESCRIPTOR STRUC LimitL DW 0 BaseL DW 0 BaseM DB 0 Access DB 0 Granularity DB 0 BaseH DB 0 DESCRIPTOR ENDS Пробую запускать exe-файл из-под VMWare и получаю kernel stack fault (как я понял, так VMWare называет Double fault). В чём может быть проблема? Заранее спасибо![font=][/font][font=][/font]