Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement