- 1、本文档共77页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编语言程序设计08
6.1 计算机的I/O 6.1.1 I/O端口 外设通过接口(interface)与主机相连。 而外设又是与接口中的端口(PORT)直接相连,当CPU要与外设交换信息或对外设进行某种控制时,可借助于访问端口来完成。 I/O端口地址 在计算机系统中,用不同的数字给各类I/O端口进行编号,这种I/O端口的编号就称为I/O端口地址。 通常占有3组I/O端口地址。 有时两个端口合用一个端口地址,使用I/O读或I/O写信号来分别选择输入、输出的访问。 前256个端口(000H~0FFH供系统板上的I/O接口芯片使用 后768(100H~3FFH)给扩展槽上的I/O接口控制卡使用。 由于BIOS介于DOS和具体硬件之间,所以,调用BIOS的功能是一个很好的折中方案。程序员可在以下三种情况下考虑使用BIOS的功能: 1)、BIOS提供的功能,而DOS没有提供该功能的情况; 2)、不能利用DOS功能调用的情况(可能因为某些具体应用的限制); 3)、基于处理速度的考虑,需要绕过DOS层的情况。 综上所述,可以归纳出如下结论:使用中断的层次越高,它与硬件设备相关程度就越低,处理速度也就越低,但用户程序的适用范围较广。反之也然。 ?表 BIOS键盘中断(INT 16H) ???? AH 功 能 返回参数 0 从键盘读一字符 AL=字符码 AH=扫描码 1 读键盘缓冲区的字符 如ZF=0,AL=字符码,AH=扫描码 如ZF=1,缓冲区空 2 取键盘状态字节 AL=键盘状态字节 MOV AH,0 ; 读字符功能INT 16H ; 键盘BIOS调用MOV BX,AX ; 扫描码和字符码送BXCALL BINIHEX ; 打印扫描码和字符码 1.执行: Int ah,0 Int 16h 后,缓冲区中的内容如下: 5.执行: Mov ah,0 Int 16h Int16h中断例程检测键盘缓冲区,发现缓冲区空,则循环等待,直到缓冲区中有数据。 6.按下A键后,缓冲区中的内容: (1)、4色320×200图形显示模式 由于每个象素只能是四种颜色之一,而四种情况用2位二进制就可表示,所以,一个字节可表示4个象素的显示颜色,存储一行上的所有象素信息就需要80个字节。 在具体存储过程中,它又把偶数行象素和齐数行分开来存储。偶数行和齐数行的象素总数各有32000个,也都需要8000个字节来存储,并规定:偶数行象素从0B800:0000H开始存储,齐数行象素从0B800:2000H开始存储。该显示模式的存储形式如图8.8所示。 (2)、16色640×480图形显示模式 640×480图形显示模式共有307200个象素,每个象素可选用16种颜色,它需要用4位二进制来表示。该显示模式在存储显示信息时,把该4位分在四个位平面P1、P2、P3和P4上,所以,位平面Pi(i=1,2,3,4)共有307200个二进制位,即有38400个字节。其显示缓冲区的存储形式如图8.9所示。 若用BIOS中断10H之功能0DH/0CH来读/写象素,则它可屏蔽掉各种显示模式的差异,用同样的参数完成同样的功能。所以,在此建议:使用系统中断的方法来实现对图形象素的操作。 (3)、256色320×200图形显示模式 表达256种不同颜色需要8位二进制,即一个字节。在该模式下,其显示缓冲区的存储方式是非常简单的,即:第一个字节存储第一个象素的颜色,第二个字节存储第二个象素的颜色,以此类推,所以,存储满屏象素所需要的字节数为:320×200×1=64000。其显示缓冲区的存储方式如图8.10所示。 从上面三种不同图形显示模式的介绍,不难看出:各种显示模式在显示缓冲区存储方式上的明显差异,操作象素方法的难易程度相差也很大,所以,再次建议:程序员不要用直接操作显示缓冲区的办法来达到改变显示象素的目的,最好是通过BIOS内的中断功能来实现相应的功能,这样,所编写的程序能很方便地适应不同的图形显示模式。 2、显示缓冲区 显示缓冲区是用来记录屏幕显示信息的。在文本显示方式下,这些显示信息包括:每个显示字符的ASCII码及其显示属性,如图8.7所示。在图形显示方式下,显示缓冲区内存储每个象素的显示颜色。 在图8.7中,我们并没有给出具体的段地址,只用XXXX来表示其段地
文档评论(0)