1 [BITS 32] 2 3 [MAP all] 4 ; This file is loaded as a DOS .COM file. 5 [SEGMENT _TEXT start=0 vstart=100h] 6 7 ; shrink & relocate stack: 8 mov sp, stack_ends ; NASM puts 460h here - 9 ; 9B0h is desired. 10 mov bx, sp 11 mov cl, 4 12 shr bx, cl 13 mov ah, 4Ah ; DOS resize mem.block 14 int 21h 15 16 [SEGMENT GATESEG align=1 follows=_TEXT vstart=0] 17 ; label to use for copying this segment at run-time. 18 gate0cpy: 19 dd 0 20 21 ; 32-bit ring-0 protected mode code that interacts 22 ; with the VMM (Win3.x/9x kernel). To be relocated 23 ; at run-time to memory dynamically allocated with 24 ; DPMI, and called through a call-gate from ring-3. 25 ; vstart=0 makes some calculations easier. 26 27 ; Reserve space for stack: 28 [SEGMENT .bss follows=GATESEG align=16] 29 resb 400h 30 stack_ends: 31 32