DOS与BIOS中断及程序设计.ppt

上传人:牧羊曲112 文档编号:6504693 上传时间:2023-11-07 格式:PPT 页数:68 大小:321.99KB
返回 下载 相关 举报
DOS与BIOS中断及程序设计.ppt_第1页
第1页 / 共68页
DOS与BIOS中断及程序设计.ppt_第2页
第2页 / 共68页
DOS与BIOS中断及程序设计.ppt_第3页
第3页 / 共68页
DOS与BIOS中断及程序设计.ppt_第4页
第4页 / 共68页
DOS与BIOS中断及程序设计.ppt_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《DOS与BIOS中断及程序设计.ppt》由会员分享,可在线阅读,更多相关《DOS与BIOS中断及程序设计.ppt(68页珍藏版)》请在三一办公上搜索。

1、第七章 DOS与BIOS中断及程序设计,本章讲述DOS与BIOS中断功能调用,这些都是系统提供给汇编语言程序员的现成资源,几乎每个DOS程序都要用到这些资源。本章中要求掌握DOS 功能调用的概念、调用方法及基本的功能调用,熟悉磁盘文件读写的操作过程。,7.1 DOS中断与系统功能调用 7.2 BIOS功能调用,7.1 DOS中断与系统功能调用,7.1.1 DOS中断 7.1.2 DOS系统功能调用 7.1.3 磁盘文件管理,返回本章首页,7.1.1 DOS中断,DOS除了给用户提供了命令行服务以外,还为汇编语言程序员提供了大量的子程序,这些子程序包含了从基本输入输出到内存管理、磁盘读写、文件系

2、统等各个方面,使用这些子程序,使得汇编语言程序员不必搞清大量的设备接口、数据结构等细节,即可完成所需功能,从而极大简化了汇编语言的编程。由于DOS提供的这些子程序被看作是DOS系统功能的一部分,因而人们把对这些子程序的调用又称为DOS功能调用。每个汇编语言程序员必须熟悉一些最常用的DOS功能调用,否则很难编写出有实用价值的程序。,DOS提供的这些子程序位于DOS的基本系统文件IBMBIO.COM和IBMDOS.COM中,随着DOS的加载而进入内存,即只要能启动DOS就可以使用。DOS的这些子程序是以中断的方式向系统及应用程序提供服务的,故必须用内中断指令INT进行调用,而不是用传统的CALL指

3、令。DOS提供的中断服务如表7-1所示:,表7-1 DOS中断功能表,在DOS发展过程中,中断号的分配显得有些混乱,最初的时候DOS提供的功能很少,而且也为了与以前流行的操作系统CP/M在中断号方面保持兼容,所以占用了上表所示的中断号。但后来随着DOS的发展,所提供的功能(子程序)越来越多,不可能每一个子程序都占用一个中断号,于是想出了让它们共用一个中断号,即21H号的办法,进入这一个中断后,DOS再根据用户程序中入口参数的设置来确定用户程序到底想调用哪一个子功能。这样,实际上DOS所有的功能都可通过21H中断调用来实现。早期版本中独占一个中断号的旧功能为兼容缘故并没有被撤销,而是保留了下来,

4、这样就形成了有些功能既可以通过调用21H号中断来实现,又可以通过调用别的中断实现,如:终止程序功能,调用20H号中断与调用21H号中断之00H号子功能,效果完全相同。,一般情况下,将调用21H号以外的DOS中断,称为DOS中断调用。而将调用21H号中断的各个子功能,称为DOS功能调用。事实上DOS功能调用也是一个DOS中断调用,并且有时也不太区分二者的差别。,返回本章首页,返回本节首页,进入下一节,7.1.2 DOS系统功能调用,本节中介绍DOS功能调用的方法及常用的DOS I/O功能调用。DOS最核心的功能调用文件操作功能调用将在下节中介绍。1.DOS功能调用的方法 调用DOS功能调用需要进

5、行如下三项工作:调置入口参数,如果所调用的子程序不需参数,则可省略此步。欲调用的子程序编号AH。发中断调用指令INT 21H。,2.DOS基本I/O功能调用(1)键盘输入(1号调用),功能:此调用扫描键盘,若有键按下,先检查是否是Ctrl-Break键,若是,则退出命令执行并调用DOS的Ctrl-Break处理程序;若否,则将字符ASCII码设置到AL中,同时在屏幕上显示这个字符,然后返回。若无键按下,该调用等待直到有键按下为止。,调用示例:MOVAH,1INT21H,入口参数:无出口参数:所读取的字符ASCII码在AL内。,(2)键盘输入(8号调用)同1号类似,但是不在屏幕上显示输入的字符,

6、在读取密码时常用本功能。,调用示例:MOV DL,AMOVAH,2INT21H,(3)键盘输入(7号调用)同8号类似,并且不特殊检查Ctrl-Break键(当作普通字符)。,(4)在屏幕上显示一个字符(2号),入口参数:DL=待显示字符的ASCII码出口参数:无,功能:将字符显示在屏幕上。但如果字符是控制符,则实际执行相应的功能,如:在屏幕上显示一个换行符(0AH),实际上将光标转到下一行上去。,(5)显示或读取字符(6号调用)此功能调用既可显示字符也可接收字符,这取决于入口参数中DL的设置,若DL=FFH,表示从键盘读取字符;若DLFFH,表示显示字符。具体为:,显示字符:,入口参数:DL=

7、待显示字符的ASCII码(但不能为FFH)出口参数:无,功能:将字符显示在屏幕上。但如果字符是控制符,则实际执行相应的功能。,调用示例:MOVDL,$MOVAH,6INT21H,读取字符:,入口参数:DL=FFH出口参数:若读到字符,ZF=0,AL=键入字符的ASCII码。若未读到字符,ZF=1。,功能:从键盘读取字符,但不等待按键,即不论有无键按下都立即返回,并且也不特殊检查Ctrl-Break键。当要求用户必须立即做出反应时可用此调用读取键盘,如在游戏程序中。,调用示例:在本示例中,通过一个循环来实现等待读取一个字符。L1:MOVAH,6MOVDL,0FFHINT21HJZL1,(6)打印

8、一个字符(5号),入口参数:DL=待打印字符的ASCII码出口参数:无,功能:在打印机上打印字符,若打印机出现错误,则在屏幕上显示相应错误信息。,(7)字符串显示(9号),入口参数:DS:DX指向待显示字符串,且字符串必须以“$”作为结束符出口参数:无,功能:结束符之前的字符都被显示在屏幕上。,调用示例:DATASEGMENTBUFDBTHIS ISA TEST!$DATAENDSCODESEGMENTSTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSET BUFMOVAH,9INT21HMOVAH,4CHINT21HCODEENDSENDSTART,(8)字符串输入(10号

9、),入口参数:DS:DX指向输入缓冲区。输入缓冲区必须由用户在调用前准备好,且具有如下格式:第一个字节必须放一非0数据,该数值指明准备接收的最大字符数,这个字符数包括用户在结束时必须输入的回车符,如果键入的字符数达到了此数减一,那么系统将不再接收字符(按键时会发出“嘟嘟”声,而且光标不再向右移动),直到用户按回车为止。第二个字节保留,由DOS在功能调用结束后填入实际输入的字符个数(这个数并不包括最后的回车符)。用户输入的字符串从第三个单元开始存放。出口参数:用户实际输入字符个数在缓冲区第二个单元中。,调用示例:DATASEGMENTBUFDB8;指明最大字符数DB?;保留,供DOS填入实际字符

10、数DB8 DUP(0);用户输入的字符存放区DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSET BUFMOVAH,10INT21H;其它操作MOVAH,4CHINT21HCODEENDSENDSTART,例7-1:字符串的输入输出 编一程序先提示用户输入一个字符串,然后读取用户的输入,并将用户输入的数据在下行输出。程序如下:DATASEGMENTMESSAGE DB“PLEASEINPUT A STRING:$”;定义输入提示BUF DB 255,?,255 DUP(0);用户输入缓冲区,可

11、接收255个字符DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART:MOVAX,DATA MOVDS,AXMOVDX,OFFSET MESSAGEMOVAH,9INT21H;显示输入提示信息,MOVDX,OFFSETBUFMOVAH,10INT21H;接收用户输入MOVAH,2MOVDL,0AH;0AH为换行符ASCII码INT21H;屏幕换行MOVBL,BUF+1;用户实际输入字符数BLMOVBH,0;使BX=用户实际输入字符数MOVBYTEPTRBUF+2BX,$;在字符结束处放置一个“$”MOVDX,OFFSETBUF+2;用户实际输入字符起始处

12、DXMOVAH,9INT21H;显示用户输入的字符MOVAH,4CHINT21HCODEENDSENDSTART,返回本节首页,返回本章首页,进入下一节,磁盘文件管理,磁盘文件的管理是DOS的主要功能之一,为此DOS提供了二组相关的功能调用,一组是DOS1.0版时提出的,使用文件控制块FCB管理文件,这种办法相当麻烦而且功能又弱(如不支持目录结构),因而早已被淘汰;另一组是DOS2.0版时提出的,使用文件句柄来管理文件,我们主要介绍这组功能调用。,1.文件名 要访问一个文件,必须先指定文件名。DOS要求用ASCIIZ串来描述文件名,即一个ASCII码字符串,后面跟一个全0字节为结束符。例如:F

13、ILENAME DB“C:DOSWWW.TXT”,0 文件名中可以包含绝对路径或相对路径,但总长度不能多于63个字符。,2.文件属性 很多操作都涉及文件属性,文件属性用一个字节描述,各位含义如下:,常用文件属性值为:00一普通文件。01一只读文件,该文件不能为写而打开。02 一隐含文件,用DIR查不到该文件。03 一系统文件,用DIR查不到该文件。04一软盘的卷标号。10一子目录。20一已写入并关闭了文件(硬盘用)。一个文件可以同时具有几种属性,也就是说可以把字节中的几位同时置1,如IBMBIO.COM和IBMDOS.COM文件既是只读文件,又是隐含文件和系统文件。,3.错误返回码 文件操作的

14、功能调用返回时,以标志寄存器的CF位指示调用是否成功,若调用失败,CF=1,AX内为错误返回码,这些错误返回码都取自一个统一的信息表,如表7-2所示。,表7-2 文件操作的错误返回码,4.常用的文件管理功能调用(1)DOS的文件管理功能 DOS提供的文件管理功能非常丰富,如表7-3所示。,(2)使用方法 使用文件代码法的基本过程是:在读写文件前,必须先打开或创建文件,成功后,DOS返回一个文件代号(file handle,或称文件句柄),这个文件代号是一个16位二进制数,以后对该文件进行读写操作时,就用这个文件代号去代表相应的文件。当读写完了后,最后必须关闭文件,否则DOS暂存在其内部文件缓冲

15、区的信息没有真正写到磁盘上。另外,操作时还必须注意文件属性,如果以只读属性打开,则不能向其写;如果以只写属性打开,则不能对其读。同时打开的文件不能太多,因为DOS可能没有足够空间为每个打开的文件准备缓冲区,这个数据取决于config.sys文件中files=nnn一行的设置数。缺省情况下最多可同时打开8个文件。,(3)关于文件指针的说明 利用文件代号存取文件是以字节为存取单位的,一个文件被看作由许多字节组成,尽管每次读写的字节数可任意指定,但一般还是为输入输出缓冲区的大小所限制,所以一个比较大的文件总是要分几次读写。对每个打开的文件,DOS都为其保存了一个读写指针(readwrite poin

16、ter),它指示文件的操作位置,每次读写后会自动调整并指向新位置,但有时我们想从文件的中间开始读写而不是从头读写,或者是不作连续读写,这就需要移动这个指针。为此,DOS提供了移动文件指针功能调用(42H号),该功能调用具体情况如下:,入口参数要求在 BX中指定文件代号,由CX和DX指定一个双字长的偏移值,低位字在DX中,高位字在CX中,这个偏移值是一个带符号的整数,它可以是正数,也可以是负数;由AL中的代码确定改变指针的三种方式。每种方式的含义如下:,绝对移动方式(AL=0):偏移值从文件首开始计算。例如偏移值是582,则读写指针指向文件的第582字节。为了使指针指向文件首,可以在CX,DX,

17、AL中都送入0,那么随后的读写就从文件首开始。,相对移动方式(AL=1):当前的指针值加上偏移值作为新的指针值,也就是说,偏移值指出了从当前的读写位置起移动的字节数。根据偏移值的正负可正向或反向移动指针。,绝对倒移方式(AL=2):新的指针位置通过把偏移值和文件尾的位置相加而确定。如果文件的总长度是32字节,那么在AL中送入2,DX中送入-32,CX中送入OFFFFH(符号扩展到高位字),则读写指针指向文件的第一个字节。如果CX和DX为0,AL为2,则指针将指向文件尾,此时指针的值即是文件长度。,移动文件指针功能可能出现的错误码是01和06,错误码01说明AL中的方式值是不合法的,错误码06说

18、明BX中的文件代号不合法。如果指针移动成功,AX和DX将是移动后的指针值,AX中是低位字,DX是高位字(调用之前,DX是偏移值的低位字,CX是偏移值的高位字)。方式1和偏移值0能找出指针的当前值。方式2和偏移值0能找出文件的长度。如果要在一个已存在的文件后面添加记录,则在写之前把指针指向文件尾:关于磁盘文件读写操作的具体实例本章实训三。,返回本节首页,返回本章首页,进入下一节,7.2 BIOS中断功能调用,7.2.1 BIOS中断7.2.2 常用BIOS功能调用举例7.2.3 图形显示程序设计,7.2.1 BIOS中断 PC机1M内存空间中最高端(最大地址空间处)是系统ROM区,安装在此区中的

19、ROM内固化了ROM BIOS(基本输入输出系统,Basic Input/Output System)代码,这段代码除完成开机时加电自检、对主要I/O接口初始化、引导装入DOS等功能外,还提供了大量的例程(子程序)供汇编语言程序员调用。通过调用BIOS提供的例程,汇编语言程序员在不必了解复杂的硬件接口细节的情况下,也可以轻松完成对硬件的控制。并且,还可使程序简洁清晰,因为只需几条指令便可完成对BIOS例程的调用,而直接对硬件编程实现相同功能则需要大段代码。和DOS服务例程一样,ROM BIOS服务例程也是以中断服务程序的形式提供的,ROM BIOS在其初始化期间将所提供服务例程的地址登记在中断

20、矢量表中,而应用程序想对其调用时发“int n”指令即可。因为以中断方式工作,故对ROM BIOS的调用也称为BIOS中断调用。常用的ROM BIOS 中断情况如表7-4所示,表7-4 常用的BIOS中断,对于硬件的访问控制,一般来说有三种方法可以考虑:调用DOS功能调用,调用BIOS功能调用或直接访问硬件。这三种方法中DOS功能调用层次最高,实际上用户对DOS的功能调用,DOS经过处理后再转化为对BIOS的功能调用,最终由BIOS完成对硬件的访问。若需要的操作有相应的DOS功能调用,则尽量通过DOS功能调用实现,因为高层调用需要了解的细节少,往往参数也少,而且兼容性好。即只要能启动DOS,这

21、项服务(功能调用)就保证能用。若通过BIOS调用实现,则不同机器上BIOS代码提供的服务可能不同,所以兼容性要差些。,BIOS调用在层次上低于DOS功能调用而高于直接访问硬件。因它比DOS更接近硬件,故硬件控制功能更强,而且执行速度更快。但是需要了解的硬细节也更多,而且兼容性也比DOS调用差。当需用到DOS功能调用没法实现的功时,或需要追求较高的执行速度时,需要使用BIOS功能调用。例如:DOS显示功能调用非常简单,而用执行速度也慢。而BIOS则提供了相当丰富的显示功能调用,而且速度也快。故在显示控制方面一般都用BIOS功能调用。再如:如果因加密需要要将磁盘按非标准格式格式化,DOS无此功能调

22、用,而BIOS功能调用却允许这样做,因而也必须通它完成。,直接访问硬件层次最低,可以控制实现硬件的全部功能,但是需要了解的硬件细节也最多,而且不同机器间若被访问硬件有差异,可能程序不能通用。当需要的功能BIOS中断调用也未提供时,只能直接访问硬件实现。例如:要想编一播放音乐的程序,只能直接访问硬件实现。,返回本节首页,返回本章首页,返回上一节,7.2.2 常用的BIOS功能调用举例,BIOS功能调用比DOS功能调用在控制底层方面功能更强大,能完成许多DOS功能调用无法完成的功能,下面对其常用功能作简单介绍。,1.磁盘操作 BIOS中无磁盘文件的概念(文件是DOS一级的概念),它“眼中”的磁盘是

23、扇区和磁道。它的13H号功能调用提供了详尽的控制磁盘操作的功能,如可以按道格式化磁盘,而且格式化磁道时可以自由设定每道扇区数、每扇区的字节数。同时,每面格式化的磁道数也可以自由设定。这样,加密软件就可以调用这些功能格式化出非DOS标准的磁盘结构,在这样的磁盘中记录的数据在DOS下不能读取,当然也无法拷贝,从而达到防拷贝的目的。并且,这并不妨碍加密者自己使用磁盘,因为它知道磁盘的结构,它可以通过设置适当的参数后调用BIOS的扇区读写功能,来读写磁盘中的数据。13H号功能调用内含的子功能如表7-5所示:,表7-5 BIOS 13H号功能调用的子功能,下面介绍13H号功能调用中最常用的扇区读写功能调

24、用。,入口参数:AH=02,指明读扇区功能调用。AL 要读扇区数。DL 驱动器代号,0和1代表软盘,80H和81H代表硬盘。DH 所读磁盘磁头号,以软盘来说,只能是0和1。CH 10位磁道号的低8位,CL寄存器的第6、7位存放其高2位(对于1.2M软盘,范围079)。CL 低5位为要读的第一个扇区的扇区号(注意扇区号从1开始而非从0开始。对1.2M软盘,范围115)。高2位表示磁道柱面号的高2位。ES:BX 指出存放从磁盘所读数据的内存地址。,13H号功能调用02H号子功能:读扇区,出口参数:读出数据放在ES:BX所指的内存区域中。若产生错误,CF置1,AH内为错误代码。,13H号功能调用03

25、H号子功能:写扇区,入口参数:AH=03,指明写扇区功能调用 AL 要写扇区数,DL 驱动器代号,0和1代表软盘,80H和81H代表硬盘 DH 所读磁盘磁头号,以软盘来说,只能是0和1。CH 10位磁道号的低8位,CL寄存器的第6、7位存放其高2位(对于1.2M软盘,范围079)。CL 低5位为要写的第一个扇区的扇区号(注意扇区号从1开始而非从0开始。对1.2M软盘,范围115)。高2位表示磁道柱面号的高2位。ES:BX 指出写往磁盘所数据的内存地址。,出口参数:除非产生错误,信息都写入磁盘。若产生错误,CF置1,AH内为错误代码。,例7-2 本例中读取A驱0面10道1扇区中的数据到内存buf

26、处,然将这此数据逐个字节加1,最后再写回原处。,DATASEGMENTERROR_MESSAGEDB0AH,ERROR!,$;出错时的提示OK_MESSAGEDB0AH,OK!,$;成功后的提示BUFDB512 DUP(0);磁盘数据缓冲区DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,START:MOVAX,DATAMOVDS,AXMOVAH,2;读扇区MOVAL,1;读1个扇区MOVDL,0;读A驱MOVDH,0;读0面MOVCH,10;读第10磁道MOVCL,1;读第1扇区PUSHDSPOPESMOVBX,OFFSETBUF;读出数据放到BUF处INT1

27、3H;读调用JCERROR;出错,转ERROR处MOVCX,512MOVSI,OFFSETBUF,L1:INCBYTEPTRSIINCSILOOPL1;这个循环将BUF内的512个字节各自加1MOVAH,3;写扇区MOVAL,1MOVDL,0MOVDH,0MOVCH,10MOVCL,1PUSHDSPOPESMOVBX,OFFSETBUFINT13H;写调用,写的位置同上面读的位置JCERRORMOVAH,9;若都成功,显示成功提示MOVDX,OFFSETOK_MESSAGEINT21HJMPEND1,ERROR:;失败时显示提示MOVDX,OFFSET ERROR_MESSAGEMOVAH,9

28、INT21HEND1:MOVAH,4CHINT21HCODEENDSENDSTART,2.显示功能(1)BIOS的显示功能 DOS的显示功能相当简单,而BIOS的显示功能则非常丰富。如DOS功能调用中不能显示图形,即使显示字符,也不能控制显示位置,不能设置字符颜色等。因而实际应用软件开发中屏幕操作总是调用BIOS来完成,而很少有仅靠DOS调用完成的情况。BIOS的显示功能集中在10H号中断中。其各个子功能基本情况如表7-6所示:,表7-6 BIOS的10H号能调用的子功能,(2)显示方式 PC机的基本显示方式有2种,一种是文本方式,一种是图形方式。文本方式 在文本方式下,屏幕可显示的最小单位是

29、字符,字符可以设置背景色、前景色、闪烁等属性。CGA显示器有4025字符低分辨率和8025高分辨率两种方式。文本方式下屏幕上的每个字符在显存中占二个字节,一个字节对应ASCII码,一个字节对应属性值。由于屏幕上最多有2000个这符,只需4000个字节的显存即可。因而32K的显存被划分成8份使用,每份4K,称为一个显示页。一次只有一个显示页中的数据显示在屏幕上,这个页称为当前页。系统中有相应的方法控制切换当前页。,图形方式 在图形方式下,屏幕上可控制的最小单位是点,CGA将显示屏幕划分为320200个象素的中分辨率和640200个象素的高分辨率方式。在中分辨率方式下,每个象素可以有4种不同的颜色

30、显示,背景可以有16种颜色。在高分辨率方式下,只能以黑白方式显示。在图形方式下,屏幕有光标但不显示。本节主要介绍字符方式下的显示,图形方式下的显示下节介绍。,(3)字符属性 在文本方式下,字符属性用一个字节表示,属性字节格式如下:D7:闪烁。D6D4:背景色 D3D0:前景色 颜色属性与取值对应关系如表7-7所示:,表7-7 颜色属性与取值,(4)光标与窗口 在文本方式下,光标可由程序设置其形状或是否显示,由10H号功能调用的1号子功能完成;也可以调置或读取其位置,由10H号功能调用的2、3号子功能完成。另外,当前光标处显示的字符也可以读出,由10H号功能调用的8号子功能完成。窗口是屏幕上的一

31、个矩形区域,可以独立进行显示文本的输出及上卷、下卷等操作。屏幕上可以同时设置多个窗口。窗口上卷时,超过顶部的行将自动丢失,出现在底部的新行被填为空格。上、下滚动窗口的操作分别由10H号功能调用的6、7号子功能完成,清屏操作也是借助于这二种操作完成的,只要在其入口参数中设置AL=0即可。,(5)文本显示,10H号功能调用中常用的文本显示子功能如表7-8所示。10H号功能调用的子功能09H和了功能0AH都能把一个字符传送到显示屏幕,然后光标返回到它的初始位置,所以在当前光标位置上写一字符之后,必须用10H号功能调用的子功能02H移动光标到下一个字符位置上。这两种子功能的区别是:AH09H的功能把字

32、符及其属性输出到当前光标位置上,而AHOAH的子功能只输出字符,它的属性值就是这一位置上先前已具有的属性。OAH功能在使用黑白显示器时特别方便,因为此时我们很少改变显示字符的属性。如果想在显示字符后自动后移光标位置,则应用0EH号子功能。,表7-8 BIOS的文本显示功能,表7-8 BIOS的文本显示功能,表7-8 BIOS的文本显示功能,例7-3 本例中程序运行后先清屏,然后在20行25列处显示10个星号。CODESEGMENTASSUMECS:CODESTART:MOVAH,6;上滚窗口MOVAL,0;上滚行数MOVCH,0;窗口左上角行号MOVCL,0;窗口左上角列号MOVDH,24;窗

33、口右下角行号MOVDL,79;窗口右下角列号MOVBH,1FH;窗口底部空白行属性:蓝底白字INT10H,MOVAH,2;置光标位置MOVBH,0;页号0MOVDH,20;行号为20MOVDL,25;列号为25INT10HMOVAH,9;显示字符功能MOVAL,*;显示字符ASCII码MOVBH,0;设置页号MOVBL,7;字符属性MOVCX,10;重复次数INT10HMOVAH,4CHINT21H;返回DOSCODEENDSENDSTART,返回本节首页,返回上一节,返回本章首页,7.2.3 图形显示程序设计,编制图形程序是程序设计中非常有趣和有价值的工作之一。在图形领域中,汇编语言具有潜在

34、的优点,因为屏幕上显示的一个图象由成千上万个元素组成,处理这些图象需要大量的指令。以速度而论,汇编语言远比高级语言快得多,最高级的图形技术,例如动画,往往以汇编语言编写才更逼真、有效。1.显示功能 如上节所述,BIOS的显示功能全部集中在10H号功能调用中。10H号功能调用中常用的图形方式子功能如表7-9所示:,表7-9 BIOS的图形显示功能,表7-9 BIOS的图形显示功能,2.图形方式下的分辨率与颜色 显示器(实际由显示卡控制)默认的显示方式是文本方式,要想设置为图形方式,需要调用INT 10H的00号子功能完成。在图形方式中,屏幕被视为MN的点阵,每个点的坐标上的图象元素就是一个象素。

35、在图形方式下显存中要对屏幕上的内容按点存储,由于显存容量有限,在320200中分辨率下,每个点(象素)的颜色用2个二进制位来表示,故可有4种颜色;在640200象素的高分辨率下,每个点(象素)的颜色用1个二进制位来表示,故只有黑白2种颜色。在写点调用中例7-4 本例运行后先将屏幕设置为320200彩色图形方式,然后在(0,0)(99,99)处画一条红色线。,程序如下:CODESEGMENTASSUMECS:CODESTART:MOVAH,0MOVAL,4INT10H;设置320200彩色图形方式MOVBX,100;控制循环次数MOVDX,0;写点行坐标MOVCX,0;写点列坐标MOVAL,2;

36、写点的颜色,红色MOVAH,0CH;设置调用写点子功能,L1:INT10HINCCXINCDXDECBXJNZL1;控制循环100次MOVAH,4CHINT21H;返回DOSCODEENDSENDSTART,返回上一节,返回本节首页,返回本章首页,小 结,DOS与BIOS向汇编语言程序员提供了大量的服务例程,以简化汇编语言程序的编写。所有的DOS/BIOS服务例程都是以中断服务程序的方式提供的,用户可通过软中断指令INT n调用这些服务例程,以满足自己程序的要求。调用不同的服务功能需要不同的中断号n,调用DOS服务功能时一般n=21H,调用BIOS服务功能时所用到的中断号n比较多,本章讲过的有n=10H(显示服务)、n=13H(磁盘服务)。本书的附录3和4列出了具体的DOS/BIOS服务功能与中断号的对应关系,以及相关的调用参数信息。,读取键盘按键信息、显示或打印字符及字符串,这是程序最常进行的操作,这可通过调用DOS提供了1、2、5、6、7、8、9、10号功能调用来完成。磁盘文件的访问操作也是常用的操作,这方面DOS提供了3CH43H号功能调用予以支持。在复杂的显示操作及底层的磁盘操作方面,DOS提供的服务非常有限,一般应通过调用BIOS的10H与13H号中断调用完成。,返回本章首页,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号