Не грузится ядро оси

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

Сам код находится в 4-х файлах (скомпилен в bin'ки, склеен в iso).

  1. (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
  1. (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(?)
  1. (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(?)
  1. (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.

→ Ссылка