1、幸运BIOS功能调用(课本P.241)BIOS(Basic Input/Output System)是驻留在ROM中的程序,提供了系统加电自检,引导装入以及对主要I/O接口的控制等功能。提供了最基本的系统硬件与软件间的接口。包括开机自检,显示器、键盘和打印机的字符传送,图形发生等。主要以中断处理程序的形式提供I/O设备的处理程序和常用例行程序。表表8.48.4 BIOSBIOS中断调用表中断调用表幸运用户程序和操作系统关系示意图用户程序高级语言磁盘操作系统(DOS)高级语言其他操作系统基本输入输出(BIOS)微机硬件系统幸运BIOS中断调用方法(1)设置分功能号。按实现的操作功能的要求,给指定
2、寄存器(通常为AH)送入分功能号。(2)设置入口参数。按操作要求,给寄存器填写相应参数的内容(某些调用无参数)。(3)使用中断语句INT n。执行调用的功能,其中n为中断号。(4)分析出口参数。如:MOVAH,0;分功能号为0 MOV AL,10H ;置入口参数 INT1AH;1AH为中断号,功能为读时间计数器的值幸运显示器中断调用(10H中断调用)有关显示输出的DOS功能调用不多,而BIOS调用(INT 10H)的功能很强,主要包括设置显示方式,设置光标大小和位置,设置调色板号,显示字符和显示图形等,见表8.5。幸运(1)设置显示方式(0号功能)入口参数:AH=0,AL=设置方式,见表8.6
3、。出口参数:无 表8.6 显示器工作方式 功能号 类型 分辨率 颜色 00H,01H 文本 4025 16 02H,03H 文本 8025 16 04H,05H 图形 3202004 06H 图形 6402002幸运(2)设置光标类型(1号功能)入口参数:AH=1,CH=光标开始行,CL=光标结束行。出口参数:无。根据CX给出光标的大小。(要在纯DOS下才能实现)mov ch,1 mov cl,3 mov ah,1 int 10h幸运(3)设置光标位置(2号功能)入口参数:AH=2,BH=页号,DH=行号,DL=列号。出口参数:无。根据DX给出确定光标的位置。(4)在当前光标位置写字符和属性(
4、9号功能)入口参数:AH=9,BH=页号,AL=字符的ASCII码,BL=字符属性,CX=写入字符数。出口参数:无。在当前光标处,可连续写CX个字符。幸运 例1:在第0页(20,25)的位置显示3个*mov bh,0 ;第0页 mov dl,25 ;坐标 mov dh,20 mov ah,2 ;设置光标位置 int 10h mov al,*;要显示的字符 mov bh,0 ;第0页 mov bl,0c3h ;颜色 mov cx,3 ;字符个数 mov ah,9 ;功能调用在光标位置显示字符 int 10h mov ah,4ch int 21h 幸运(5)初始始窗口或向上滚动(6号功能)入口参数
5、:AH=6,AL=上滚行数(当AL=0时,整个屏幕为空白),CX=上滚窗口左上角的行、列号。DX=上滚窗口右上角的行、列号。BH=空白行的属性。出口参数:无。当滚动后,顶部为空白输入行。(6)初始窗口或向下滚动(7号功能)入口参数:AH=7,AL=下滚行数(当AL=0时,整个屏幕为空白),CX=下滚窗口左上角的行、列号。DX=下滚窗口右上角的行、列号。BH=空白行的属性。出口参数:无。当滚动后,底部为空白输入行。BH属性见表8.7-表8.10幸运 例2.清屏幕的左半边,呈反相显示(白底黑字BH=70H).(BH=07H 黑底白字)(BH=0 不显示)mov ah,7 ;下滚 mov al,0
6、;行数,0为全屏 mov bh,70h ;属性 mov ch,0 ;区域坐标 mov cl,0 mov dh,24 mov dl,39 int 10h mov al,0幸运 例3.清屏幕,并在小窗口显示键盘输入的字符,按回车键结束 mov ah,6 ;上滚当前页 mov al,0 ;行数,0为整个屏幕 mov ch,0 ;区域坐标 mov cl,0 mov dh,24 mov dl,79 mov bh,07H ;黑底白字 int 10h ;清屏幕幸运pos:mov ah,2 ;设置光标位置 mov bh,0 mov dh,16 ;起始坐标 mov dl,30 int 10h mov cx,20
7、 ;每行显示的个数get:mov ah,1 键盘输入一个字 int 21h cmp al,0dh ;是否是回车键 jz exit loop get mov ah,6 ;上滚一行 mov al,1 mov ch,8 ;区域坐标 mov cl,30 mov dh,16 mov dl,50 mov bh,37 ;颜色 int 10h jmp posexit:幸运(7)写字符串到指定的页面(AH=13H)入口参数:ES:BP=要显示字符串的地址CX=字符串的长度;DH=起始光标行号,DL=列号;BH=页号;AL=方式代码;BL=属性结果:在屏幕的任意位置显示彩色的字符串幸运 例4.用INT 10H功能
8、调用,在屏幕左上角显示字符串DSeg Segment string db This is Form of*.EXE len db$-stringdSeg endsCSeg Segment Assume cs:CSeg,ds:DSeg,es:dsegStart:mov ax,DSeg mov ds,ax幸运mov al,3 ;设置8025彩色显示模式mov ah,0int 10hmov bp,seg string ;段地址送ES,偏移地址送BPmov es,bpmov bp,offset stringmov cl,len ;字符串长度mov ch,0mov dx,0 ;光标起始位置mov bl,
9、41h ;属性mov al,0 ;光标不移动mov ah,13h ;显示字符串功能调用 int 10h幸运例5从(10,20)的位置开始用*画一条斜线 mov ah,0 ;设置字符显示模式 mov al,3 int 10h mov cx,1 ;一次显示一个字符 mov dl,10 ;起始位置 mov dh,20set:mov ah,2 ;设置光标位置 int 10h mov al,*;显示的字符 mov ah,0ah ;功能调用,在光标位置显示字符,属性不变 int 10h dec dh inc dl cmp dh,0 jne set幸运set1:mov ah,2 int 10h mov al,2 mov ah,0ah int 10h inc dh inc dl cmp dh,21 jne set1例6.接例5写程序,画出下面图形,笑脸的ASC码为2幸运幸运