Function 0Ah is function 09h without the colour: AL goes into CX cells from the cursor of page BH, and the attribute bytes are left as they are. Text written this way takes on whatever colours that part of the screen already has, which is what you want when filling in a form or a status bar painted once, or when changing a field's text without disturbing its highlight.

Like 09h it leaves the cursor where it was and draws control characters as symbols. In graphics modes there is no attribute to keep, and it draws the character in colour BL exactly like 09h. Here a bar is painted blue with blanks, then filled with "=" signs that keep the blue:

Prints "Blue bar: <- = signs that kept the blue"; on the screen twelve white "=" signs on a blue bar sit between the two parts.
MOV AH, 09h
MOV DX, OFFSET MSG1 ; "Blue bar: "
INT 21h
MOV AH, 03h ; the cursor: DH = row, DL = column
MOV BH, 0
INT 10h
PUSH DX
MOV AX, 0920h ; 09h: blanks...
MOV BX, 001Fh ; ...on page 0 in white on blue
MOV CX, 12
INT 10h
MOV AX, 0A00h + "=" ; 0Ah: the characters only
MOV BH, 0
MOV CX, 12
INT 10h ; each cell keeps its blue
POP DX
ADD DL, 13 ; past the bar and one blank
MOV AH, 02h
MOV BH, 0
INT 10h
MOV AH, 09h
MOV DX, OFFSET MSG2
INT 21h
MSG1 DB "Blue bar: $"
MSG2 DB "<- = signs that kept the blue", 13, 10, "$"

Pitfalls

On a screen just cleared every cell has the attribute of the clear, normally 07h, so 0Ah there looks just like DOS output: the colour must come from somewhere first, from 09h, a scroll with an attribute in BH (INT 10h AH=06h) or a direct write. Neither 0Ah nor 09h moves the cursor, so a program that forgets to move it writes everything into the same place.