;http://www.daniweb.com/software-development/assembly/threads/333365/boot-loader BITS 16 start: mov ax, 07C0h ; Set up 4K stack space after this bootloader add ax, 288 ; (4096 + 512) / 16 bytes per paragraph mov ss, ax mov sp, 4096 mov ax, 07C0h ; Set data segment to where we're loaded mov ds, ax mov si, text_string ; Put string position into SI call print_string ; Call our string-printing routine text_string db 'This is my cool new OS!', 0 print_string: ; Routine: output string in SI to screen mov ah, 0Eh ; int 10h 'print char' function .repeat: lodsb ; Get character from string cmp al, 0 je .background_colors ; If char is zero, end of string int 10h ; Otherwise, print it jmp .repeat .background_colors: mov ah,0Bh mov bh,0 mov bl,02h int 10h jmp .cursor_pointer .cursor_pointer: mov ah,2h ;set the value to "ah" to move the cursor pointer mov bh,0 ;select page mov dh,22 ;set row position of the cursor mov dl,0 ;set column position of the cursor int 10h ;tell bios "hey dude now we are done,take action!!!" jmp .character_write .character_write: mov ah,9h mov al,65 ;ascii value mov bh,0 ;display page mov bl,5h ;display attribute mov cx,10 ;display times int 10h jmp .cursor_pointer2 .cursor_pointer2: mov ah,2h ;set the value to "ah" to move the cursor pointer mov bh,0 ;select page mov dh,23 ;set row position of the cursor mov dl,0 ;set column position of the cursor int 10h ;tell bios "hey dude now we are done,take action!!!" jmp .character_read .character_read: mov ah,00h ;remeber set the value to "ah" now you are going to read a keyboard input int 16h ;this interrupt is given to control keystrokes of keyboard jmp .print_input ;now lets print what we took as input .print_input: mov ah,9h ;set the value to "ah" to print one character to std out mov bh,0 ;set page number mov bl,5h ;set the color attribute of the font to be print mov cx,10 ;set the value how many time the character in "al" should be print int 10h ;tell bios "hey dude now we are done,take action!!!" jmp .done .done: ret times 510-($-$$) db 0 ; fill up the rest part of the boot secotr with 0 s dw 0xAA55 ; The standard PC boot signature