name "hi-world" ; this example prints out "hello world!" ; by writing directly to video memory. ; in vga memory: first byte is ascii character, byte that follows is character attribute. ; if you change the second byte, you can change the color of ; the character even after it is printed. ; character attribute is 8 bit value, ; high 4 bits set background color and low 4 bits set foreground color. ; hex bin color ; ; 0 0000 black ; 1 0001 blue ; 2 0010 green ; 3 0011 cyan ; 4 0100 red ; 5 0101 magenta ; 6 0110 brown ; 7 0111 light gray ; 8 1000 dark gray ; 9 1001 light blue ; a 1010 light green ; b 1011 light cyan ; c 1100 light red ; d 1101 light magenta ; e 1110 yellow ; f 1111 white org 100h ; set video mode mov ax, 3 ; text mode 80x25, 16 colors, 8 pages (ah=0, al=3) int 10h ; do it! ; cancel blinking and enable all 16 colors: mov ax, 1003h mov bx, 0 int 10h ; set segment register: mov ax, 0b800h mov ds, ax ; print "hello world" ; first byte is ascii code, second byte is color code. mov [02h], 'H' mov [03h], 11101100b mov [04h], 'e' mov [05h], 11101100b mov [06h], 'l' mov [07h], 11101100b mov [08h], 'l' mov [09h], 11101100b mov [0ah], 'o' mov [0bh], 11101100b mov [0ch], ',' mov [0dh], 11101100b mov [0eh], 'W' mov [0fh], 11101100b mov [10h], 'o' mov [11h], 11101100b mov [12h], 'r' mov [13h], 11101100b mov [14h], 'l' mov [15h], 11101100b mov [16h], 'd' mov [17h], 11101100b mov [0A0h], 'X' mov [0A1h], 11101100b mov [0280h], '!' mov [0281h], 11101100b ; wait for any key press: mov ah, 0 int 16h ret