So I'm currently working on a simple chunk of assembly which I hope to turn into an efficient bootloader to load a C-kernel.
My main question right now is. Are there any pointers for how I'm currently storing and printing a string out of the SI register?
It renders the string perfectly. I just want to make sure I'm developing good practice.
Here's my code.
ORG 0x7c00
msg db 'Hello World!', 0
start:
mov ax, 0x00
mov ds, ax
mov ah, 0x0e ;prepare AH register to be written to.
mov si, msg ;move string into SI register and prepare for read/write
call print
print:
lodsb ;load byte string pointed to in SI and DS register
or al, al ;check if al equals 0
jz end ; if zero, end execution
int 0x10 ;print string
jmp print ;^ above line and this only execute if AL > 0.
end:
hlt
jmp end
times 510-($-$$) db 0
dw 0xaa55