How to print a char on a specific location in graphics mode using 8086 assembly?
assembly, dosbox, x86-16
Solution
What should I do in order to print 'x' in specific location?
First know that on a graphics screen, BIOS will not be able to print your character at any (X,Y) spot you desire. You can only get characters on every (Col,Row) spot you can position the cursor.
So to display the "x" character in the center of the 320x200 256 colors graphical screen (mode 19), you can code:
mov dl, 20 ;Column
mov dh, 12 ;Row
mov bh, 0 ;Display page
mov ah, 02h ;SetCursorPosition
int 10h
mov al, 'x'
mov bl, 0Ch ;Color is red
mov bh, 0 ;Display page
mov ah, 0Eh ;Teletype
int 10h
Problem
I'm using 8086 assembly on DOSBox which is on Windows. I want to print a char in graphics mode, and I know it goes like this: ``` mov ah, 0eh ;0eh = 14 mov al, 'x' xor bx, bx ;Page number zero mov bl, 0ch ;Color is red int 10h ``` The code above prints the letter 'x' in the left side of the top of the screen. I don't know how to print 'x' char in specific location in my screen. What should I do in order to print 'x' in specific location?