Professional Documents
Culture Documents
1
Video Programming
When an application program needs to write characters on the screen
in text mode, it can choose between three types of video output:
MS-DOS-level access:
Any computer running or emulating MS-DOS can use INT 21h to write
text to video display.
BIOS-level access:
Characters are output using INT 10h function, known as BIOS
services. This executes more quickly than int 21h, and permits the
control of text color.
Direct video access:
Characters are moved directly to video RAM (screen buffer), so the
execution is instantaneous.
2
Screen features
• 25 rows (0-24) and 80 columns (0-
(0,79)
79)
(0,0)
(24,0) (24,79)
Screen Buffer
The screen buffer begins at B800:0000
and it has some rows and columns.
Number of columns is usually 80.
Number of rows can be 25 or 40 in most
cases.
Each line on screen takes 160 bytes (80 x
2 byte for CHARACTER + ATTRIBUTE).
4
Display Modes
Monitors can display both text and graphics and have
different techniques and memory requirements for each.
Consequently, video adapters have two display modes:
text and graphics.
In text mode, the screen is divided into columns and rows, typically 80
columns by 25 rows, and a character is displayed at each screen position
(character cell).
In graphics mode, the screen is again divided into columns and rows, and
each screen position is called a pixel (short for picture element). A picture
can be displayed by specifying the color of each pixel on the screen.
Text Modes
Mode Description Adapters
3 80 x 25 16-color text VGA (most frequently used mode for text
display) Graphics Modes
Mode(hex) Description Adapters
12 640 x 480 4 color VGA 13 320 x 200 256 color VGA
6
BIOS Interrupt 10H
Option 2H – Sets the cursor to a specific
location.
Registers used:
AH = 2H
BH = 0H selects Page 0.
DH = Row position.
DL = Column position.
7
BIOS Interrupt 10H
Ex:
MOV AH,2
MOV BH,0
MOV DH,12
MOV DL,39
INT 10H
8
BIOS Interrupt 10H
Option 6H – Scroll window up. This
interrupt is also used to clear the screen
when you set AL = 0.
Registers used:
AH = 6H
AL = number of lines to scroll.
BH = display attribute.
CH = y coordinate of top left.
CL = x coordinate of top left.
DH = y coordinate of lower right.
DL = x coordinate of lower right.
9
BIOS Interrupt 10H
Clear Screen Example:
MOV AH,6
MOV AL,0
MOV BH,7
MOV CH,0
MOV CL,0
MOV DH,24
MOV DL,79
INT 10H
11
Practice/Lab
4. Modify your code so that it performs the following
tasks:
- Clear screen
- Set cursor to the middle of screen Display the characters
(5) in: CHAR_TBL DB ‘A’ ,’B’, ’C’, ’D’, ’E’
on the middle of the screen
5. Compile and run your code
12
13
14
15
BIOS Interrupt 10H
Option 8H – Read a character and its
attribute at the cursor position.
Registers used:
AH = 8H and returned attribute value.
AL = Returned ASCII value.
BH = display page.
16
BIOS Interrupt 10H
Option 9H – Write a character and its
attribute at the cursor position.
Registers used:
AH = 9H.
AL = ASCII value.
BH = display page.
BL = attribute.
CX = number of characters to write.
17
Attribute Definition
Blinking Background Intensity Foreground
D7 D6 D5 D4 D3 D2 D1 D0
I R G B Color
Color display attributes 0 0 0 0 B lack
Blinking 0 0 0 1 B lue
0 0 1 0 Gre e n
D7 = 0 - Non-blinking 0 0 1 1 Cyan
D7 = 1 - Blinking 0 1 0 0 Re d
Intensity 0 1 0 1 M age nta
0 1 1 0 B rown
D3=0 - Normal intensity
0 1 1 1 White
D3=1 - Highlighted 1 0 0 0 Gray
intensity 1 0 0 1 Light blue
Background and 1 0 1 0 Light gre e n
foreground 1 0 1 1 Light cyan
1 1 0 0 Light re d
D6 D5 D4 and D2 D1 D0 1 1 0 1 Light mage nta
RGB values defined by 1 1 1 0 Ye llow
the table to the right. 1 1 1 1 High inte nsity white
19
20
DOS Interrupt 21H
Option 1 – Inputs a single character from
keyboard and echoes it to the monitor.
Registers used:
AH =1
AL = the character inputted from keyboard.
Ex:
MOV AH,1
INT 21H
21
DOS Interrupt 21H
Option 2 – Outputs a single character to
the monitor.
Registers used:
AH =2
DL = the character to be displayed.
Ex:
MOV AH,2
MOV DL,’A’
INT 21H
22
INT 21h/ 01H and 02H
• Input a character
– Step 1: Set AH =01H
– Step 2: : Call INT 21H to display the character
– Step 3: The input character is saved in AL
• To display the entered character
– Step 1: Set AH=02H
– Step 2: Load the character from AL to DL
– Step 3 Call INT 21H to display the
character
23
Int 21h/1h 2h
24
Example
reading a characterPrompt •
25
26
DOS Interrupt 21H
Option 9 – Outputs a string of data,
terminated by a $ to the monitor.
Registers used:
AH =9
DX = the offset address of the data to be
displayed.
Ex:
MOV AH,09
MOV DX,OFFSET MESS1
INT 21H
27
DOS Interrupt 21H
Option 0AH – Inputs a string of data from
the keyboard.
Registers used:
AH = 0AH
DX = the offset address of the location where
string will be stored.
DOS requires that a buffer be defined in
the data segment. It should be defined as
follows:
1st byte contains the size of the buffer.
2nd byte is used by DOS to store the
number of bytes stored. 28
DOS Interrupt 21H
Ex:
.DATA
BUFFER1 DB 15,?,15 DUP (‘$’)
.
.
MOV AH,0AH
MOV DX,OFFSET BUFFER1
INT 21H
29
DOS Interrupt 21H
Option 4CH – Terminates a process, by
returning control to a parent process or to
DOS.
Registers used:
AH = 4CH
AL = binary return code.
Ex:
MOV AH,4CH
INT 21H
30