С форума по ссылке Санты похоже работающий код.

С форума по ссылке Санты похоже работающий код.

 MAIN:
	pushfd			; Push Flags Register onto the Stack (use 32)
	push	eax
	push	ebx
	push	dx
	
	call	flatmode		; first, set up FS to access all 4G 
	xor	edx,edx 		; clear edx
	xor	eax,eax 		; clear edx
	mov eax,080000048h		; (G)MCH Base Address Register
	mov dx,0CF8h			; set port address
	out dx,eax			; send address through the port
	mov dx,0CFCh			; set port data
	in eax,dx			; fetch data
	mov ebx,eax			; save the old value
	and eax,0FFFFFFFEh		; set enable bit to zero
	or eax,000000001h    		; set bit to enable
	;or eax,000000000h     		; set bit to disable
	out dx,eax			; send data through port data

	and ebx,0FFFFC000h	       ; mask off bits 31:14 inclusive
	add ebx,250h		       ; point to the relevant part
	mov ax,[fs:ebx] 	       ; fetch data at 250h address
	and ax,07FFh		       ; set Tras data bit to zero
	or ax,8800h		       ; copy data for Tras 17T
	mov [fs:ebx],ax 	       ; send data with 17T change

	pop	dx
	pop	ebx
	pop	eax
	popfd			; Pop Stack into  Eflags Register
	retf			;  Return Far from Procedure

;----------------------------------------------------------------------
flatmode:
	; first, calculate the linear address of GDT
	push ds
	push fs

	xor	edx,edx 		; clear edx
	xor	eax,eax 		; clear edx
	mov	dx,ds			; get the data segment
	shl	edx,4			; shift it over a bit
	add	[cs:dword GDT+2],edx	; store as GDT linear base addr
					; now load the GDT into the GDTR
       lgdt    fword ptr cs:GDT 	; load GDT base (286-style 24-bit load)
	mov	bx,8			;1 * size DESC386 ; point to first descriptor
	mov	eax,cr0 		; prepare to enter protected mode

	or	al,1			; flip the PE bit
	cli				; turn off interrupts
	mov	cr0,eax 		; we're now in protected mode
	jmp short $+2

	mov	fs,bx			; load the FS segment register
	and	al,0FEh 		; clear the PE bit again
	mov	cr0,eax 		; back to real mode
	jmp short $+2

	pop fs
	pop ds 
	sti				; resume handling interrupts
	ret				;
;----------------------------------------------------------------------
GDT:
	dw  000fh			; limit low
	dw  GDT 			; base lo
	db  0				; base mid
	db  0				; dpltype
	db  0				; lim hi
	db  0				; base hi

	; this is the setup for the 4G segment
	dw  0ffffh			; limit low
	dw  0				; base lo
	db  0				; base mid
	db  092h			; dpltype
	db  0cfh			; lim hi
	db  0				; base hi
GDT_END:
 

Мой прокол - я не ушел во flat-режим. Хотя они там так и не догадались сами, просто пришел наш индонезийский гуру Пинчакко и наставил на путь истинный :)

Cсылка:
rebelshavenforum.com/sis-bin/ultimatebb.cgi?ubb=get_topic;f=52;t=000069

Скопированный код где-то в середине 4-ой страницы