(This was written to complete information found in the node interrupt 10h. I assume basic assembly knowledge, and that you want to try and use interrupt 10h. PLEASE DO NOT VOTE ON THIS NODE UNLESS YOU KNOW OR HAVE USE FOR ATTRIBUTE BYTES!
In command line prompts (text modes on computers) each character on screen actually takes up two bytes of memory. ASCII codes are only one byte big, so what is the other byte for? Setting the attributes! If you're using interrupt 10h in assembly to write stuff on the screen, you will notice that some of the functions as for an attribute byte.
The attribute byte is 8 bits long. The 8 bits are separated into 3 sections.
Blinking bit Background Color Foreground Color
0 101 0101
As you can see, that's 8-bits or one byte long.
0: Not blinking!
Foreground (Text) Color:
1001: Light Blue
1010: Light Green
1011: Light Cyan
1100: Light Red
1101: Light Magenta
1111: Bright White
You might notice for the foreground color that all the colors starting with a 1 bit are just brighter versions of the colors starting with a 0 bit.
Some sample assembly code:
To write a blinking light blue '$' with a black background to the cursor location on screen:
mov ah, 9 ;Write Character and Attribute
mov al, '$' ;Puts ASCII code of '$' into AL
mov bh, 0
mov bl, 10001001b ;The attribute byte!
mov cx, 1
If I moved into BL, 01110000b I would have black text on a white background. If I moved into BL, 10001100b I would have blinking light red text on a black background. Now you know how to fully manipulate on-screen text using assembly!
Source: Assembly Language for Intel-Based Computers: Third Edition by Kip R. Irvine, published by Prentice Hall. I did not copy verbatim. Instead I tried to improve and give a better explaination than the book does. Please /msg me for factual and spelling errors!