[bits 16] BLANK: db 0x12 SPACE: db " ",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 print_clear: pusha mov ah,0x6 ;func mov al,0 ;scroll one line mov bh,[BLANK] ;blank char mov ch,0 ;upper left corner mov cl,0 mov dh,20 ;lower right corner mov dl,40 int 0x10 mov ah,0x2 mov bh,0 mov dl,0 mov dh,20 int 0x10 popa print_nextline: pusha mov ah,0x6 ;func mov al,1 ;scroll one line mov bh,[BLANK] ;blank char mov ch,0 ;upper left corner mov cl,0 mov dh,20 ;lower right corner mov dl,40 int 0x10 mov ah,0x3 mov bh,0 int 0x10 mov ah,0x2 mov dl,0 int 0x10 mov bx,SPACE call print_string popa ret ;print byte from al to screen print_hex_byte: pusha mov [.temp],al shr al,4 cmp al,10 sbb al,69h das mov ah,0Eh int 10h mov al,[.temp] ror al,4 shr al,4 cmp al,10 sbb al,69h das mov ah,0Eh int 10h popa ret .temp db 0