《汇编语言》PPT课件.ppt
《《汇编语言》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《汇编语言》PPT课件.ppt(57页珍藏版)》请在三一办公上搜索。
1、汇编语言,数学科学学院计算机应用技术专业,修兴强&Ariel北京师范大学数学科学学院202.112.84.202/xiux/download.php,第15章 BIOS程序设计,2007年11月,汇编语言,3,BIOS数据区BIOS数据区包含了ROM BIOS服务历程使用的系统数据,它位于内存的0040h段内。,2007年11月,汇编语言,4,INT 16h键盘中断,BIOS层次仅在硬件层次之上,在该层次控制计算机有着极大的灵活性,这种方法的一个重要限制就是所有的程序必须在实地址模式或虚拟8086模式下运行。BIOS键盘处理程序INT 16h获取键盘输入。INT 16h不允许重定向,但却是读取
2、扩展功能键、方向盘、PgUp和PgDn的最好方法,这些扩展键产生一个8位的扫描码(scan code)。对IBM兼容机而言,每个键的扫描码都是惟一的。事实上,所有的按键都产生扫描码,但我们通常并不注意和ASCII字符对应的扫描码,因为这是ASCII码更加通用。当按下扩展健时,其ASCII码是00h或E0h,如下表所示:,2007年11月,汇编语言,5,键盘是如何工作的?键盘输入事件是从键盘控制芯片开始的,到字符被放在30字节的键盘输入缓冲区(在偏移001Eh003Dh处)中时结束。键盘输入缓冲区在任何时刻最多可容纳15个击键,因为每次击键将产生两个字节(ASCII码+扫描码)的数据。当用户按键
3、时将产生下列事件:键盘控制芯片向PC的键盘输入端口发送一个8位的扫描码(sc)。输入端口引发一个中断,中断是预定义的信号,用于通知CPU一个输入输出设备需要引起注意。CPU通过执行INT 9h服务例程响应键盘中断。INT 9h服务例程从输入端口获取键盘的扫描码(sc)并查找对应的ASCII码(ac),如果找到了ASCII码就将ASCII码和扫描码仪器插入到键盘缓冲区中(如果扫描码没有对应的ASCII码,键盘缓冲区中的ASCII码就设为0)。,2007年11月,汇编语言,6,Keyboard,INT 9h handler,typeahead buffer,INT 21h handler,INT
4、16h handler,sc=scan codeac=ASCII code,sc,sc,sc,ac,ac,sc,ac,input port,2007年11月,汇编语言,7,一旦扫描码和ASCII码被安全地放置于缓冲区中,它们就一直保存在那里,直到被当前运行的程序取出为止,有两种方法取出按键:调用BIOS INT 16h功能从键盘缓冲区中返回扫描码和ASCII码。这在处理没有ASCII码的功能键和光标键时非常有用。调用MS-DOS INT 21h功能从输入缓冲区中返回按键的ASCII码。如果按下了扩展健,必须第二次调用INT 21h以返回扫描码。INT 16h功能进行键盘处理时INT 16h比I
5、NT 21h有许多明显的优点。INT 16h可在一步内同时返回扫描码和ASCII码;另外INT 16h还有一些额外的功能,如设置击键重复率和返回键盘状态标志等。击键重复率是指在按下键时击键的重复速率。当不知道用户按下的是否是扩展健时,INT 16h通常是可调用的最佳功能。,2007年11月,汇编语言,8,INT 16h功能03h(设置击键重复率)INT 16h功能03h允许设置键盘击键重复率。当一直按着某个键时,在键开始重复之前通常有2501000毫秒的延迟。重复速率的取值可以在1Fh(最慢)到0(最快)之间。,2007年11月,汇编语言,9,INT 16h功能05h(在键盘缓冲区中插入按键动
6、作)INT 16h功能05h允许你将一个按键动作送入键盘缓冲区。一个按键由两个8位整数构成:一个ASCII码和一个键盘扫描码。,2007年11月,汇编语言,10,INT 16h功能10h(等待按键)INT 16h功能10h从键盘缓冲区中删除下一个按键。如果缓冲区中没有现成的按键存在,则键盘处理程序等待用户按键。,2007年11月,汇编语言,11,INT 16h功能11h(检查键盘缓冲区)INT 16h功能11h允许察看键盘缓冲区内是否有按键在等待。如果有按键,则函数返回按键的ASCII码和扫描码。我们可在执行其他任务的循环内使用该功能,注意该功能并不从键盘缓冲区中删除按键。,2007年11月,
7、汇编语言,12,INT 16h功能12h(获取键盘标志)INT 16h功能12h返回非常有价值的关于当前键盘标志的信息。例如 字处理程序通常在CapsLock,NumLock和Insert等按下的时候在屏幕的底端显示标志或记号,这是通过不断检查键盘标志并监视其变化而做到的。,2007年11月,汇编语言,13,INT 10h视频程序设计,背景知识应用程序在文本模式下向屏幕上写字符的时候,可在下列三种类型的视频输出方式中进行选择:MS-DOS方式访问:任何运行或模拟MS-DOS的计算机都可以使用INT 21h在视频显示上写文本,输入输出可轻易地被重定向到其他设备上,如打印机和磁盘。但这种访问模式输
8、出较慢并且不能控制文本的颜色。BIOS方式访问:使用INT 10h BIOS服务输出字符。执行起来比INT 21h快得多,而且允许控制文本的颜色。在填充大块屏幕区域时,通常能感觉到轻微的延迟。输出不能重定向。直接视频访问:字符直接送视频RAM,因此执行是瞬时的。输出不可重定向。在MS-DOS时代,字处理程序和电子表格程序全部采用了这种方法(在Windows NT/2000/XP下这种方法仅限于全屏模式)。应用程序在选择使用何种访问方式时不尽相同。那些要求高性能的程序选择直接视频访问;其他一些则选择BIOS方式访问;当屏幕输出需要重定向或要和其他程序共享屏幕时,一般使用MOS-DOS方式访问。应
9、该说明的是,MS-DOS中断使用BIOS过程来完成它们的任务,而BIOS过程又使用直接视频访问在屏幕上输出结果。,2007年11月,汇编语言,14,在全屏幕模式下运行程序使用视频BIOS绘制图形的程序应该在以下环境下执行:纯MS-DOS。Linux 下的DOS模拟器。MS-Windows下的全屏模式。在MS-Windows下有两种方法切换到全屏模式:为程序的EXE文件创建一个快捷方式,打开快捷方式的属性对话框,选择屏幕标签,然后选择全屏幕模式。从开始菜单中打开一个命令行窗口,然后按下Alt-Enter键切换到全屏模式。使用cd命令(改变目录)进入EXE文件所在的目录,输入程序的名字运行程序。A
10、lt-Enter是一个开关,再次按下它就可以返回到窗口模式。,2007年11月,汇编语言,15,理解视频文本视频模式有两种类型:文本模式和图形模式。当计算机以MS-DOS引导后,视频控制器就被设置为视频模式3(彩色文本,25行80列)。在文本模式下,行从屏幕最顶端(行0)开始计算,行高是当前字体的一个字符单元的高度;列从屏幕的最左边(列0)开始计算,列宽是一个字符单元的宽度。字体字符是由驻留内存的字体表生成的。最初这个表格位于ROM中,但后来版本的BIOS允许程序员在运行时重写字体表,这使得在文本模式下自定义字体成为可能。视频文本页文本模式下的视频内存被分成多个视频页,每一页都可以容纳整个屏幕
11、的文本。应用程序可以在显示一页的时候写另外的隐藏页,并可以在页之间快速切换。在追求高性能的时代,MS-DOS程序常常要在内存中同时保留若干个文本页。随着当前图形接口的流行,文本页的特性已经不再重要了。默认的视频页是页0。,2007年11月,汇编语言,16,属性如下所示,每个字符都被赋予了一个控制字符颜色(称为前景色)和字符之后的屏幕颜色(称为背景色)的属性字节。视频显示的每个位置容纳一个字符以及其属性(颜色)。属性以一个单独的字节存储,在内存中的位置紧跟在字符后面。在下图中,屏幕上的三个位置包含字母ABC:闪烁视频显示的字符可以闪烁。视频控制器以预定的频率反转字符的前景色和背景色来做到这一点。
12、当PC从MS-DOS模式引导时,默认情况下闪烁是被允许的,我们可以使用视频BIOS功能来关闭闪烁。在MS-Windows下打开MS-DOS模拟窗口时,默认情况下闪烁是被禁止的。,2007年11月,汇编语言,17,色彩的控制原色的混合视频显示上的每个像素都是通过三种独立的电子束产生的:红、绿和蓝,还有一个通道用来控制像素的亮度。因此所有可用的文本颜色都可以用下表中的4位二进制值来表示(I=亮度、R=红、G=绿、B=蓝)。下图显示了一个白色像素的构成。,2007年11月,汇编语言,18,如下图所示,将三原色混合就可以产生新的色彩。进一步打开亮度位,混合后的色彩就会更亮。,2007年11月,汇编语言
13、,19,如下表所示,原色和混合色彩组成了所有可能的4位色彩值。右边列表中的每种色彩都打开了亮度位。,2007年11月,汇编语言,20,属性字节在色彩文本模式下,每个字符都被赋予了一个属性字节,该字节由两个4位的色彩代码构成,则前景色和背景色:,闪烁 这个简单的色彩方案有一点稍微复杂的地方,那就是如果当前的显卡允许闪烁,那么背景色高位的含义就是字符是否闪烁。当该位被设置时,字符将闪烁显示:,在允许闪烁时,上表中只有左边一栏的低亮度颜色可用做背景色(黑、蓝、青、红、洋红、棕和浅灰)。MS-DOS引导时默认的配色方案是二进制00000111(黑色背景、浅灰前景)。,2007年11月,汇编语言,21,
14、构造属性字节使用汇编编译器的SHL操作符将背景色值左移4位,然后与前景色进行或操作,这样就可以用两种颜色(前景和背景)构建一个属性字节。例如下面的语句创建蓝色背景浅灰色文字的属性字节:BLUE=1LIGHT_GRAY=111bmov bh,(BLUE SHL 4)OR LIGHT_GRAY;00010111下面创建红色背景白色文字的属性值:WHITE=1111bRED=100bmov bh,(RED SHL 4)OR WHITE;00010111,2007年11月,汇编语言,22,下面是在棕色背景上产生蓝色字符:BLUE=1BROWN=110bmov bh,(BROWN SHL 4)OR BL
15、UE);00010111在不同的操作系统下运行程序时字体和颜色会稍微有所不同。例如,在Windows 2000下闪烁是被禁止的,除非切换到全屏模式。,2007年11月,汇编语言,23,INT 10h视频功能,精选的INT 10h功能,在调用INT 10h之前保护通用寄存器(使用PUSH指令)是个好主意,因为不同版本的BIOS影响寄存器的方式并不相同。,2007年11月,汇编语言,24,INT 10h功能0(设置视频模式)INT 10h功能0允许将当前视频模式设置为文本或图形模式,一些文本模式的编号列在下表中。,2007年11月,汇编语言,25,在设置新的视频模式之前,最好首先获取(使用INT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 PPT 课件
链接地址:https://www.31ppt.com/p-5585133.html