汇编入门与精通3课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《汇编入门与精通3课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 入门 精通 课件
- 资源描述:
-
1、汇编语言程序设计第九章第九章 BIOSBIOS和和DOSDOS中断中断1 BIOS与DOS中断调用概述 2 键盘I/O程序设计3 显示器I/O程序设计4 BIOS及DOS的时间功能调用汇编语言程序设计BIOSBIOS与与DOSDOS中断调用概述中断调用概述在实际应用中,PC机与外部设备的传送数据大部分采用中断方式来实现,在主机系统主板上较高地址的ROM中,驻留着基本输入/输出系统(basic input/output system BIOS)的程序,它提供了系统加电自检、引导并装入操作系统、主要的I/O设备的处理程序等功能。用户可在不必了解中断服务程序的内部结构的基础上来使用中断服务程序。DO
2、S是磁盘操作系统,是由BIOS在开机后自动装入内存的,DOS中断是建立在BIOS之上的中断,它借用了BIOS软中断的功能来调用系统的中断服务程序。汇编语言程序设计键盘I/O程序设计1.基础知识 键盘是计算机最基本的输入设备,键盘上的键主要分成三种基本类型键:字符键、功能键、组合控制键。(1)字符码与扫描码 键盘上的每一个键都有一个按位置进行的编码:扫描码,用户每按下一个键,都会产生一个键盘中断,BIOS中的键盘中断处理程序根据读到的扫描码就能唯一确定按下了哪个键。如果按下的是字符键,键盘处理程序求出对应的ASCII码,把扫描码和ASCII码一起存入一个BIOS定义的键盘缓冲区中;如果按下的不是
3、字符键,就把扫描码和一个全0字节一起存入键盘缓冲区。汇编语言程序设计(2)(2)键盘缓冲区键盘缓冲区 由于所按键并不会马上被用户读取,所以在BIOS的参数区中,定义了一个键盘输入缓冲区,它的位置在内存0040:001AH处,结构如下:0040:001A BUFF_HEAD DW?;首指针 0040:001C BUFF_TAIL DW?;尾指针 0040:001 KB_BUFFER DW 16 DUP(?);16个字的缓冲区 0040:001 KB_BUFFER_END LABEL WORD;尾地址 汇编语言程序设计2.BIOS键盘功能调用 BIOS提供的键盘中断类型号为16H,它的中断处理程序
4、又分为3个功能,通过AH中的功能号来选择。(1)0号功能从键盘读入字符 输入参数:AH=0 返回结果:AH=键入字符的扫描码 AL=键入字符的ASCII码(如按下的是字符键)或AL=0(如按下的是其它键)0号功能读键盘是强制读。汇编语言程序设计例:从键盘读一字符,把扫描码存到KEY1单元,ASCII码存到KEY2单元。MOV AH,0 INT 16H MOV KEY1,AH MOV KEY2,AL汇编语言程序设计(2)1号功能读键盘缓冲区的字符 输入参数:AH=1 返回结果:ZF=0时,AH=扫描码,AL=字符的ASCII码或0 ZF=1时表示无键按下,键盘缓冲区为空,1号功能读键盘是探测读。
5、例如:在一程序中,加入一段指令序列,检测是否按下了ESC键,如果按下,则退出程序,否则,继续执行程序。加入的指令序列如下:MOV AH,1 ;1号功能 INT 16H ;BIOS的读键盘缓冲区的字符 JZ CONT ;ZF=1,无键按下继续执行程序 CMP AH,01H ;ZF=0,有键按下,判是ESC键的扫描码?JZ EXIT ;是ESC键的扫描码退出程序 CONT:;继续执行程序 EXIT:;退出程序汇编语言程序设计(3)2号功能读键盘状态字节 输入参数:AH=2 返回结果:AL=键盘状态字节 键盘上有一些控制键和状态键,如Shift、Ctrl、Alt、NumLock、Scroll、Ins
6、和CapsLock等,当按下这些键时,键盘处理程序并不返回扫描码,而是设置键盘状态字节的相应位。键盘状态字节如下图所示:位 7 6 5 4 3 2 1 0 1=Insert状态已改变 1按下右Shift键 1=Caps Lock状态已改变 1按下左Shift键 1=Num Lock状态已改变 1按下Ctrl键 1=Scroll Lock状态已改变 1按下Alt键汇编语言程序设计【例1】编写程序,当无键按下时,循环等待,当有键按下时,从键盘读10个按键,并将其扫描码和字符码保存到内存单元中。(1)分析 1)利用INT 16H的1号功能为探测读键盘,当无键按下时循环等待,当有键按下时读键。2)利用
7、INT16H的0号功能读取10个键的扫描码和字符码并保存到内存单元中。汇编语言程序设计DATA SEGMENTSTRING DB 20 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATAMAIN PROC FAR MOV AX,DATA ;初始化DS MOV DS,AXL1:MOV AH,1 ;利用INT 16H的功能1探测读键盘 INT 16H JZ L1 ;无键按下则循环 LEA SI,STRING MOV CX,10汇编语言程序设计L2:MOV AH,0 ;用INT 16H的功能0读键盘 INT 16H MOV SI,AL ;保存字符码
8、MOV SI+1,AH ;保存扫描码 ADD SI,2 LOOP L2 ;循环10次MOV AX,4C00H INT 21HMAIN ENDPCODE ENDSEND MAIN汇编语言程序设计3.DOS键盘功能调用 上面介绍了BIOS键盘功能调用(16H),而在实际应用中,对于一般的键盘操作,最好使用对硬件依赖更少、更为方便的DOS键盘功能调用。下表中列出了DOS功能调用INT 21H中与键盘输入有关的功能调用。汇编语言程序设计【例2】编写一程序,从键盘输入一字符,若为“Y”,则从键盘接收一个字符串;若为“N”,则结束程序;若都不是则循环读键盘。(1)分析:1)调用INT 21H的1号功能从键
9、盘读入一个字符。2)若键入的字符为Y,则调用INT 21H的0AH号功能从键盘输入一个字符串。(2)程序流程图如下:从键盘输入字符串从键盘输入字符串开始开始从键盘读一字符从键盘读一字符返回返回是字符是字符Y Y?N NY Y是字符是字符N N?Y YN N汇编语言程序设计DATA SEGMENT STRING DB 20,?,20 DUP(?);定义存放字符串的缓冲区DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATAMAIN PROC FARSTART:MOV AX,DATA MOV DS,AXLOP1:MOV AH,1 ;从键盘读入一个字符 INT 21
10、H CMP AL,Y ;若为“Y”,转输入字符串程序段 JZ IN_STRING CMP AL,N ;若为“N”,结束程序 JZ EXIT JMP LOP1 ;若都不是,循环读键盘字符IN_STRING:LEA DX,STRING ;从键盘输入一字符串 MOV AH,0AH INT 21HEXIT:MOV AX,4C00H INT 21HMAIN ENDPCODE ENDS END START汇编语言程序设计显示器显示器I/O程序设计程序设计显示器通过显示适配器(显示卡)与PC机相连,显示卡是计算机和显示器的接口,现在常用的显示卡都支持字符显示和图形显示两种方式,每种显示方式还有多种显示模式。
11、字符方式也称为文本方式,在这种显示方式下,屏幕上只能显示字符及其属性。字符通常是指字母、数字、符号和一些简单的图形(如菱形、笑脸符等)。在字符方式下,屏幕被划分为若干行和列,较典型的是80列25行。显示字符有两种方法,一种是用BIOS和DOS功能调用,另一种是直接组织显示缓冲区。汇编语言程序设计显示的基础知识显示的基础知识(1)显示模式 在字符方式下包括几种显示模式,每种模式具有不同的分辨率和颜色,如下表所示。其中用得最普遍的是显示模式3,在这种模式下,显示器的屏幕被划分成80列(0-79)25行(0-24),可以用列号和行号组成的坐标来表示屏幕上的每个可显示位置,如左上角的坐标为(0,0),
12、右下角的坐标为(79,24)。汇编语言程序设计汇编语言程序设计汇编语言程序设计BIOS显示功能调用BIOS中提供的显示调用INT 10H功能如下:AH=0AH=0:设置显示模式:设置显示模式 输入参数:AL=显示模式号(表8-10 常见的字符显示模式)返回结果:无返回参数,只是屏幕设置为指定的模式AH=1AH=1:设置光标类型:设置光标类型输入参数:(CH)4=0,光标显示,(CH)0-3=光标起始线(CL)0-3=光标结束线,(CH)4=1,光标不显示(关闭)返回结果:无汇编语言程序设计AH=2AH=2:设置光标位置:设置光标位置 输入参数:BH=页号(一般为0)DH=新光标的行号 DL=新
13、光标的列号 返回结果:无 AH=3AH=3:读光标位置:读光标位置 输入参数:BH=页号(要显示的当前页号)返回结果:CH=光标开始线,CL=光标结束线 DH=光标当前行号,DL=光标当前列号汇编语言程序设计AH=5:选择当前显示页输入参数:AL=选择的页号 返回结果:无AH=6:屏幕初始化或向上滚动 输入参数:AL=要滚动的行数,AL=0,全屏滚动(清屏)CH=滚动窗口左上角行号,CL=滚动窗口左上角列号 DH=滚动窗口右下角行号,DL=滚动窗口右下角列号 BH=滚入行属性 返回结果:无汇编语言程序设计AH=7:屏幕初始化或向下滚动 输入参数:AL=要滚动的行数,AL=0,全屏滚动(清屏)C
14、H=滚动窗口左上角行号,CL=滚动窗口左上角列号 DH=滚动窗口右下角行号,DL=滚动窗口右下角列号 BH=滚入行属性 返回结果:无AH=8:读光标位置的属性和字符 输入参数:BH=显示页 返回结果:AH=光标位置的属性 AL=光标位置的字符 汇编语言程序设计AH=9:在光标位置显示字符及属性 输入参数:BH=显示页 BL=字符的属性 AL=待显示字符的ASCII码 CX=字符重复次数(只显示一个字符时,CX=1)返回结果:无 AH=0AH:在光标位置只显示字符,不改变属性 输入参数:BH=显示页 AL=待显示的字符 CX=字符重复次数(只显示一个字符时,CX=1)返回结果:无 汇编语言程序设
15、计AH=0EH:显示字符且光标自动前移 输入参数:AL=要显示的字符 BL=前景色 返回结果:无 AH=0FH:获取当前的显示模式 输入参数:无 返回结果:AL=当前显示模式号 AH=当前显示模式每行的列数 BH=当前显示页号 汇编语言程序设计AH=13H:显示字符串输入参数:ES:BP=字符串首地址 CX=串长度DH,DL=起始行、列号BH=显示页号AL=0,BL=属性,光标保持在原处,串由字符组成,仅显示字符 AL=1,BL=属性,光标到串尾,串由字符组成,仅显示字符AL=2,光标保持在原位不动,串由字符及属性组成AL=3,光标到串尾,串由字符及彩色字符属性和背景属性(两个属性由一个字节决
16、定)组成 返回结果:无 汇编语言程序设计【例3】在屏幕中间建立一个34列11行反相显示的小窗口,在窗口最上面一行以青底淡红字显示一个菜单栏:File Edit Search View Options Help,在屏幕最下面一行再显示该菜单栏,但每一项属性不同。汇编语言程序设计(1)分析1)在屏幕中间建立一个34列11行反相显示的小窗口,应调用INT 10H的6号功能,定义左上角坐标为(7,23),右小角坐标为(17,56),即屏幕中间大小为34列11行的小窗口,把小窗口清为白底黑字的属性即为反相显示,指令序列如下:MOV AH,6 ;调用INT 10H的6号功能MOV AL,0 ;AL=0,全
17、屏滚动(清屏)MOV CH,7 ;CH=滚动窗口左上角行号7MOV CL,23 ;CL=滚动窗口左上角列号23MOV DH,17 ;DH=滚动窗口右下角行号17MOV DL,56 ;DL=滚动窗口右下角列号56MOV BH,70H ;白底黑字,反向显示INT 10H汇编语言程序设计2)在窗口最上面一行显示一个菜单栏,应调用INT 10H的功能13HMOV AH,13H ;INT 10H的功能13H,在窗口最上面一行显示菜单栏LEA BP,STRING1 ;BP字符串SRING1的首地址MOV CX,ST1_LEN ;CX=串长度ST1_LENMOV DH,7 ;DH=起始行号7MOV DL,2
18、3 ;DL=起始列号23MOV BH,0 ;BH=显示页号,一般为0MOV AL,1;光标到串尾,串由字符组成,仅显示字符MOV BL,3CH ;字符属性为青底淡红色INT 10H汇编语言程序设计DATA SEGMENTSTRING1 DB File Edit Search View Options Help;窗口上面待显示的字符串ST1_LEN EQU$-STRING1 ;显示串1的长度STRING2 DB F,1ch,i,1ch,l,1ch,e,1ch,20h,1ch;窗口下面待显示的字符串 DB E,4ah,d,4ah,i,4ah,t,4ah,20h,4ah DB S,2dh,e,2dh
19、,a,2dh,r,2dh,c,2dh,h,2dh,20h,2dh DB V,5ah,i,5ah,e,5ah,w,5ah,20h,5ah DB O,3eh,p,3eh,t,3eh,i,3eh,o,3eh,n,3eh,s,3eh,20h,3eh DB H,6bh,e,6bh,l,6bh,p,6bhST2_LEN EQU ($-STRING2)/2 ;显示串2的长度DATA ENDS汇编语言程序设计CODE SEGMENT ASSUME CS:CODE,DS:DATA MAIN PROC FAR MOV AX,DATA ;设置DS=ES MOV DS,AX MOV ES,AX MOV AH,0 ;设
20、置显示模式3 MOV AL,3 INT 10H汇编语言程序设计MOV AH,6 ;清屏MOV AL,0 MOV CH,0 ;屏幕左上角坐标MOV CL,0MOV DH,24 ;屏幕右下角坐标MOV DL,79MOV BH,07 ;属性INT 10HMOV AH,1 ;暂停,等待键盘输入单个字符 INT 21HMOV AH,6 ;建立小窗口MOV AL,0 ;全屏滚动MOV CH,7 ;左上角坐标MOV CL,23MOV DH,17 ;右下角坐标MOV DL,56汇编语言程序设计MOV BH,70H ;白底黑字,反向显示INT 10HMOV AH,13H ;在窗口最上面一行显示菜单栏LEA BP
21、,STRING1;ES:BP字符串首地址MOV CX,ST1_LEN;CX=串长度MOV DH,7 ;DH,DL=起始行,列位置MOV DL,23MOV BH,0MOV AL,1MOV BL,3CH ;属性为青底淡红色INT 10H MOV AH,1 ;暂停INT 21H;在窗口最下面一行以多种属性显示菜单栏汇编语言程序设计MOV AH,13H ;INT 10H的功能13HLEA BP,STRING2 ;串首地址MOV CX,ST2_LEN ;显示串的长度MOV DH,17 ;起始位置行号MOV DL,23 ;起始位置列号MOV BH,0 MOV AL,3 ;光标到串尾,串由字符及属性组成IN
22、T 10HMOV AH,4CH ;返回DOSINT 21HMAIN ENDPCODE ENDS END MAIN汇编语言程序设计(4)程序说明:INT 10H的13H号功能有四种显示字符串的方式,前两种方式(AL=0,1),整个字符串只能以一种属性显示,后两种方式(AL=2,3)每个字符都可以不同属性显示。本程序中,显示窗口上面的菜单栏用AL=1的方式,显示字符的属性相同;显示窗口下面的菜单栏用AL=3的方式,每个字符以不同的属性显示。(5)执行结果如下图:汇编语言程序设计3.DOS显示功能调用 DOS的INT 21H提供的显示功能调用如下:AH=2,显示一个字符,光标跟随字符移动,检测Ctr
23、l_Break 输入参数:DL=待显示字符的ASCII码 返回结果:无AH=6,显示一个字符,光标跟随字符移动,不检测Ctrl_Break 输入参数:DL=待显示字符的ASCII码 返回结果:无AH=9,显示字符串,光标跟随字符串移动 输入参数:DS:DX=待显示字符串的首地址,字符串必须以$结尾。返回结果:无汇编语言程序设计用INT 21H的9号功能显示一个字符串,首先要在数据段中定义一个待显示的字符串,这个字符串必须以$结尾。例如,定义一个字符串如下:STRING DB HOW ARE YOU,0DH,0AH,$然后,在代码段中,显示该字符串的指令为:LEA DX,STRING MOV A
24、H,9 INT 21H汇编语言程序设计汇编语言程序设计【例4】用DOS时间功能调用获取当前时间,并在屏幕上显示出来。(1)分析1 1)本程序首先调用本程序首先调用DOSDOS时间功能调用(时间功能调用(INT 21HINT 21H的的2CH2CH功功能),读取系统当前时间:能),读取系统当前时间:MOV AHMOV AH,2CH2CHINT 21HINT 21H执行后的返回结果:执行后的返回结果:CH=CH=小时(小时(0-230-23)CL=CL=分钟(分钟(0-590-59)DH=DH=秒(秒(0-590-59)2 2)然后按照一定的格式显示出来,其中需要多次把返回的然后按照一定的格式显示
25、出来,其中需要多次把返回的二进制数结果转换成十进制并显示出来,所以用子程序二进制数结果转换成十进制并显示出来,所以用子程序来实现这一功能。来实现这一功能。汇编语言程序设计(2)编写程序如下:DATA SEGMENT TIME DB CURRETN TIME IS$;定义一个提示串 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA MAIN PROC FAR汇编语言程序设计LEA DX,TIME ;显示提示串 MOV AH,9 INT 21H MOV AH,2CH ;获取当前时间 INT 21H MOV AL,CH ;显示小时数 CALL P1 MOV
展开阅读全文