[org 0x7c00] [bits 16] jmp boot_16 ;start boot process STR_VERSION: db "FoolOs~",0 ;print_string routine ([bx]) ;this routine will print a null terminated string at [bx] to the screen. print_string: pusha ;push all registers mov ah,0x0e print_string_loop: ;check if value at [bx] is "\0" (end of string) mov cl,[bx] cmp cl,0 je print_string_finish ;otherwise instruct BIOS to print the current char mov al,cl int 0x10 ;proceed with next char inc bx jmp print_string_loop print_string_finish: popa ;pop all registers ret ;return to caller boot_16: mov bx, STR_VERSION call print_string jmp boot_16 times 510-($-$$) db 0 dw 0xaa55