I have some code, but no one can be assemble in masm or nasm. Maybe there are in some syntax that is not recognized in nasm nor masm. i am working in window vista
So, if someone can give codes that work fine in nasm or masm32 of protected mode, will be really appreciated. Also some links or tutorial will be of big help for me and others.
The following code is an example of protected mode that I find but can’t be assemble. There are some lines and instructions that need to be converted in nasm or masm syntax but I don’t know how.
.386p
stack segment stack use16
dd 100 dup(0)
stack ends
data segment use16
gdt dd 0
dd 0
code_desc dd 0000ffffh
dd 00cf9a00h
data_desc dd 0000ffffh
dd 00cf9200h
ret_desc dd 0000ffffh
dd 00cf9a00h
gdt_label label fword
gdt_limit dw 4*8-1
gdt_base dd ?
protected_code_address dd 0
dw 08h
data ends
code segment para public use16 'code'
assume cs:code,ds:data,ss:stack
start:
mov ax, data
mov ds,ax ; setup gdt
mov eax,0
mov ax, offset data
shl eax,4
add eax,offset gdt
mov gdt_base,eax ; runtime fixup of far jump into pmode
mov eax,0
mov ax, offset code32
shl eax,4
add eax,offset protected_code
mov protected_code_address,eax ; runtime fixup for far jump back to rmode
mov eax,0
mov ax, offset code32
mov es,ax
mov word ptr es:[4],18h
cli
db 66h
lgdt gdt_label
smsw ax
or ax,1
lmsw ax
jmp next
next: jmp fword ptr protected_code_address
ret_real:
smsw ax
and ax,0fffeh
lmsw ax
jmp cs:s16
s16:
mov ax,4c00h
int 21h
code ends
code32 segment use32
assume cs:code32
sto:
jmp cs:ret_real
protected_code:
mov ax,10h
mov ds,ax
mov ebx,0b8000h
mov ax,0741h
mov ecx,80*25
st1:
mov [ebx],ax
add ebx,2
loop st1
jmp sto
code32 ends