Не грузится ядро оси
Пишу по фану свою ось, но не могу понять. При нажатии на Enter (см картинку ниже) ничего не происхоидт, а должно грузиться ядро. Никто не знает почему?

Сам код находится в 4-х файлах (скомпилен в bin'ки, склеен в iso).
- (fboot.asm):
org 7c00h
start:
cli
xor ax,ax
mov ds,ax
mov es,ax
mov ss,ax
mov sp,07C00h
sti
mov ax, 0002h
int 10h
mov dx,0h
call SetCursorPos
mov bp, msg
mov cx, 13
call PrintMes
add dh,1
call SetCursorPos
mov bp, Con
mov cx, 23
call PrintMes
mov ah,10h
int 16h
Continue:
cmp al, 0Dh
jz Kernel
jmp Continue
Kernel:
mov ax,0000h
mov es,ax
mov bx,500h
mov ch,0
mov cl,02h
mov dh,0
mov dl,80h
mov al,01h
mov ah,02h
int 13h
jmp 0000:0500h
PrintMes:
mov bl,04h
mov ax,1301h
int 10h
ret
SetCursorPos:
mov ah,2h
xor bh,bh
int 10h
ret
msg db 'OS Loading...',0
Con db 'Press Enter to Continue',0
times(512-2-($-07C00h)) db 0
db 055h,0AAh
- (fkernel.asm):
org 500h
message:
mov ax, 0002h
int 10h
mov dx,0h
call SetCursorPos
mov bp, msg
mov cx, 20
mov bl,04h
xor bh,bh
mov ax,1301h
int 10h
add dh,2
call SetCursorPos
mov si,0
Command:
mov ah,10h
int 16h
cmp ah, 0Eh
jz Delete_symbol
cmp al, 0Dh
jz Input_Command
mov [string+si],al
inc si
mov ah,09h
mov bx,0004h
mov cx,1
int 10h
add dl,1
call SetCursorPos
jmp Command
Input_Command:
mov ax,cs
mov ds,ax
mov es,ax
mov di,string
push si
mov si,write
mov cx,5
rep cmpsb
je wrt
pop si
jmp Command
Delete_symbol:
cmp dl,0
jz Command
sub dl,1
call SetCursorPos
mov al,20h
mov [string + si],al
mov ah,09h
mov bx,0004h
mov cx,1
int 10h
dec si
jmp Command
wrt: mov ax,0000h
mov es,ax
mov bx,700h
mov ch,0
mov cl,03h
mov dh,0
mov dl,80h
mov al,01h
mov ah,02h
int 13h
jmp 0000:0700h
SetCursorPos:
mov ah,2h
xor bh,bh
int 10h
ret
msg db 'Input the command...',0
write db 'write',0
string db 5 dup(?)
- (fwriter.asm):
org 700h
start:
mov ax,0002h
int 10h
xor dx,dx
call SetCursorPos
mov bp, msg
mov cx, 24
call PrintMes
mov dl,0
mov dh,1
call SetCursorPos
mov bp, helper
mov cx,77
call PrintMes
Option:
mov ah,10h
int 16h
cmp ah, 3Bh
jz Load_text
cmp al, 0Dh
jz Print_text
jmp Option
Load_text:
mov ax,0000h
mov es,ax
mov bx,string
mov ch,0
mov cl,4
mov dh,0
mov dl,80h
mov al,01h
mov ah,02h
int 13h
xor dl,dl
mov dh,3
call SetCursorPos
mov bp, string
mov cx, 256
call PrintMes
mov si,255
add dl, 15
add dh,3
call SetCursorPos
jmp Command
Print_text:
xor dx,dx
add dh,3
call SetCursorPos
mov si,0
Command:
mov ah,10h
int 16h
cmp al, 1Bh
jz Esc
cmp al, 0Dh
jz Caret
cmp ah, 0Eh
jz Delete_symbol
cmp ah, 3Ch
jz Save_text
cmp si, 256
jz Command
mov [string + si],al
inc si
mov ah,09h
mov bx,0004h
mov cx,1
int 10h
add dl,1
call SetCursorPos
jmp Command
Caret:
add dh,1
xor dl,dl
call SetCursorPos
jmp Command
Save_text:
mov ax,0000h
mov es,ax
mov ah, 03h
mov al,1
mov ch,0
mov cl,4
mov dh,0
mov dl,80h
mov bx, string
int 13h
jmp Command
Delete_symbol:
cmp dl,0
jne Delete
cmp dh,3
jz Command
sub dh,1
mov dl,79
jmp Cursor_Pos
Delete: sub dl,1
Cursor_Pos:
call SetCursorPos
mov al,20h
mov [string + si],al
mov ah,09h
mov bx,0004h
mov cx,1
int 10h
cmp si,0
jz Command
dec si
jmp Command
Esc:
jmp 0000:0500h
PrintMes:
mov bl,04h
mov ax,1301h
int 10h
ret
SetCursorPos:
mov ah,2h
xor bh,bh
int 10h
ret
msg db 'This is a text writer...',0
helper db 'To print text - press Enter, to load text - press F1, to save text - press F2',0
string db 256 dup(?)
- (main.asm):
macro align value { db value-1 - ($ + value-1) mod (value) dup 0 }
HEADS = 1
SPT = 4
Begin:
file "fboot.bin",512
file "fkernel.bin"
align 512
file "fwriter.bin"
align 512
align HEADS*SPT*512
Скомпилил я все это в bin'ки и склеил с помощью UltaISO в ISO образ. Гружусь через vm virtualbox, но нажимая на enter абсолютно ничего.
Ответы (1 шт):
Автор решения: TigerTV.ru
→ Ссылка
Continue:
cmp al, 0Dh
jz Kernel
jmp Continue
Думаю, проблема состоит в том, что производится сверка символа с 0xD, попробуйте 0xA или вообще уберите цикл, и сразу загружайте Kernel.