汇编中的10H中断是由BIOS对显示器和屏幕所提供的服务程序。使用int 10h服务程序时,必须先指定ah寄存器为以下显示服务编号之一,以指定需要调用的功用。
1 显示字符串小程序
先运行一个int 10h显示字符串的程序;
DATA SEGMENT
OUT1 DB 'ABCDE'
COUNT = $ - OUT1
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START:
MOV AX,DATA
MOV ES,AX
MOV DS,AX
MOV AX,0600H ;清屏
MOV BH,07H
MOV CX,0
MOV DX,184FH
INT 10h
MOV AX,0200H ;移动光标到0,0
MOV BH,0
MOV DX,0
INT 10H
MOV AX,1300H ;显示字符串
MOV BX,0002H
MOV CH,0
MOV CL,COUNT
MOV DX,0
LEA BP,OUT1
INT 10h
MOV AX,4C00H
INT 21H
CODE ENDS
END START
2 子功能01H
功能描述:设置 光标形状
入口参数:AH=01H
CH低四位=光标的起始行
CL低四位=光标的终止行
mov ch,0
mov cl,3
mov ah,01h
int 10h
运行如下;屏幕看不到什么;可能仿真屏幕不太支持光标;
3 子功能 08H
功能描述:读光标处的字符及其属性
入口参数:AH=08H
BH=显示页码
出口参数:AH=属性
AL=字 符
mov ah,08h
mov bh,0
int 10h
运行如下;返回值在AX; AL是字符;现在光标处没有字符;AH=07不知道代表啥属性;
4 子功能0CH
功能描述:写图形象素
入口参 数:AH=0CH
AL=象素值
BH=页码
(CX、DX)=图形坐标列(X)、行(Y)
出口参数:无
首先运行如下代码;提示:没有图形模式;需要先设置图形模式,才能写像素;
ah=00h是设置显示器模式;al = 0DH, 设置 320×200 16色;
再运行如下代码;提示:仿真屏幕不支持 0Dh 的模式;提示使用13h 设置图形模式;
13H:640×480 256色;使用 al = 13h 设置;再运行;不出错,但是屏幕啥也没有;
还需要用cx和dx设置图形模式下x和y坐标,再写像素点;
设置x和y坐标为(50, 50),再运行;如下;屏幕上比较靠左上角出来一个小点;
mov ah,00h
mov al,13h
int 10h
mov ah,0ch
mov al,3
mov bh,0
mov cx,50
mov dx,50
int 10h
5 子功能02H
功能描述:用文本坐标下设置光标位置
入口参数:AH=02H
BH=显示页码
DH=行(Y坐标)
DL= 列(X坐标)
出口参数:无
把第一个程序设置光标位置的代码改为如下;
MOV AX,0200H ;移动光标到0,0
MOV BH,0
MOV DX,33
INT 10H
把 MOV DX,0 改为 MOV DX,33;DX值变了,输出字符串位置应该改变;再运行;显示和第一个程序一样;不知道哪儿不对;下回再整;