سلام من دارم یه سیستم عامل طراحی میکنم با اسمبلی حالا کسی میدونه مشکل این کد کجاست
Bits 16
jmp Main
;in = -. out= -
convert_sector:
push bx
push ax
mov bx, ax
mov dx, 0
div WORD [sectorspertrack]
add dl, 01h
mov cl, dl
mov ax, bx
mov dx, 0
div WORD [sectorspertrack]
mov dx, 0
div WORD [sides]
mov dh, dl
mov ch, al
pop ax
pop bx
mov dl, BYTE [bootdrive]
ret
sectorspertrack dw 18
sides dw 0
reset_floppy:
mov ah, 0
mov dl, BYTE[bootdrive]
int 13h
jmp load_root
print:
lodsb
cmp al, 0
je Done
mov ah, 0eh
int 10h
jmp print
Done:
ret
Main:
cli
mov ax, 0x0000
mov ss, ax
mov sp, 0xFFFF
sti
mov ax, 07C0h
mov ds, ax
mov es, ax
mov [bootdrive], dl
mov bx, buffer
mov cl,2
mov ch,0
mov dh,1
mov ah,2
mov al,14
pusha
load_root:
int 13h
jnc loaded_root
call reset_floppy
jmp load_root
loaded_root:
popa
mov di, buffer
mov cx, 224
mov ax, 0
search_loop:
push cx
pop dx
mov si, filename
mov cx, 11
rep cmpsb
je found_file
add ax, 32
mov di, buffer
add di, ax
push dx
pop cx
loop search_loop
int 18h
found_file:
mov ax, WORD [di+15]
mov WORD [FirstSector], ax
mov bx, buffer
call convert_sector
mov ah, 2
mov al, 9
pusha
load_fat:
int 13h
jnc loaded_fat
call reset_floppy
jmp load_fat
loaded_fat:
mov ah, 2
mov al, 1
push ax
load_file_sector:
mov ax, WORD [FirstSector]
mov ax, 31
call convert_sector
mov ax, 2000h
mov es, ax
mov bx, WORD [pointer]
pop ax
push ax
int 13h
jnc calculate_next_sector
call reset_floppy
jmp load_file_sector
calculate_next_sector:
mov ax, [FirstSector]
mov dx, 0
mov bx, 6
mul bx
mov bx, 4
div bx
mov si, buffer
mov si, ax
mov ax, WORD [si]
or dx, dx
jz even
odd:
shr ax, 4
jmp short next_sectors_caculate
even:
and ax, 0FFFh
next_sectors_caculate:
mov WORD [FirstSector], ax
cmp ax, 0FF8
jae end
add WORD [pointer], 512
jmp load_file_sector
end:
pop ax
mov dl, BYTE [bootdrive]
jmp 2000h:0000h
cli
hlt
bootdrive db 0
msg db "Hello world!", 0
filename db "KERNEL BIN"
FirstSector dw 0
pointer dw 0
times 510-($-$$) db 0
dw 0xAA55
buffer: ;byte 513
این ارور رو میده
boot.asm:153: error: expression syntax error