Assembly bootloader al returns empty string

Asked

Viewed 27 times

1

I’m creating a bootloader but had a problem writing on screen

I am using two files the bootloader.asm and Keyboard.asm

bootloader.asm:

%include "src/assembly/setings.asm"

[org BOOTADD]

_mode:

    _grapichmode:
        mov ax, 0x4F02
        mov bx, 0x0105
        int 10h

        _loopgrapich:

        mov ah, 00h
        int 16h

        cmp al, "L"
        je _linemode

        jmp _loopgrapich

    _linemode:
        mov ah, 0
        mov al, 3
        int 10h
        
        push word msg
        call _print

        msg db "Ola Mundo", 0

        _loopline:

            mov ah, 00h
            int 16h

            cmp al, "L"
            je _grapichmode

            jmp _loopline

_hang:
    jmp _hang

%include "src/assembly/keyboard.asm"

Keyboard.asm

_print:
    %define strptr [bp + 4]
    
    push bp
    mov bp, sp

    mov si, strptr

    .charloop:

    lodsb    

    cmp si, 0
    je _end
    
    mov ah, 0Eh
    mov bh, 0
    mov bl, 0Fh
    int 10h

    ;jmp .charloop

    _end:

    pop bp
    ret 2

simplifying the code I have two modes a chart and a line and alternate between them using shift + L. In line mode I define to print the message Hello World, but al returns an empty string, and quado habilito o jmp . charloop he gets in an eternal loop.

  • What is the contents of the file setings.asm? Are you setting segment registers in this file? How are you compiling the files, generating the image and running boot?

  • 1

    friend, I do not know what I did but I managed to solve the problem, I thank for the help

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.