ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:24.61KB ,
资源ID:10125447      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10125447.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机原理课29讲教案主讲人许文丹.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机原理课29讲教案主讲人许文丹.docx

1、微机原理课29讲教案主讲人许文丹微机原理 课 29 讲 教 案 主讲人 许文丹显示器与打印机接口7-6-1 显示器I/O显示器可通过两种适配器板连接到IBM PC机上。单色显示和并行打印机适配器连接IBM单色显示器和并行打印机。彩色/图形监视器适配器连接监视器或标准的电视机(彩色TV或黑白TV)。 单色适配器只能显示字符,只能用于黑白显示器。字符由标准字母、数字和符号组成,加上一些简单的图形,如菱形、矩形及笑脸等符号。 显示器的屏幕被划分成80列25行,适配器就是在这个2000个(2580)网格位置上显示字符。屏幕上的每个网格位置也称为一个“象素”。对应屏幕上的每个象素,存储器中都有一毡相应单

2、元,因此我们说屏幕是“存储器映象”的。这种存储器映象,使显示器电路很容易知道哪个单元的内容对应屏幕上哪个位置。属性 单色显示屏幕上的每个字符在存储器中由两个字节表示,一个字节保存字符的ASCII码,另一个字节保存字符属性。字符的属性确定了每个模显示字符的特性,如字符是否闪烁显示,是否被加亮,是否反相显示。属性可以有不同的组合,例如可以在屏幕是显示白底黑字(反相显示)代替通常的黑底白字。正常的属性是07(二进制00000111)即背景为黑色(000),前景为白色(111),而闪烁位为正常(0),加强亮度位也是正常(0)。为改变成反相显示,必须使背景为白色(111),前景为黑色(000),所以属性

3、字节的值应为70,即二进制01110000。如果想要黑底白字及闪烁显示,属性值应为87(10000111)。背景为000,前景为001,这种组合可产生下划线。属性值可以任意组合,下面是一些典型的属性值。二进制 十六进制 效 果00000000 00 不显示00000001 01 黑底白字, 下划线00000111 07 黑底白字, 正常显示00001111 0F 黑底白字, 高亮度01110000 70 白底黑字, 反向显示10000111 87 黑底白字, 闪烁11110000 F0 白底黑字, 反向闪烁 屏幕上的字符可以按相同的属性显示,也可以按不同的属性显示,如果你设置的属性为00H,字

4、符就是显示不出来。 单色屏幕有2000D个字符位置(2580),因每个字符需要两个字节表示,所以单色显示存储容量为4K字节。单色显示存储器安排在段地址为B000H区域,偏移地址从0到0F9FH。BIOS显示中断下面列出了中断类型10H的部分显示操作及所用的寄存器。AH 功 能 调用参数 返回参数1 置光标类型 (CX)0-3 =光标开始行 (CX )0-3=光标结束行2 置光标位置 (BH)= 页号(DH)=行(DL)=列3 读光标位置 (BH)=页号 CH=光标开始行 CL=光标结束行DH=行DL=列6 屏幕初始化 AL=上卷行数 或上卷 AL=0全屏幕为空白BH=卷入行属性CH=左上角行号

5、CL=左上角列号DH=右下角行号DL=右下角列号7 屏幕初始化 AL=下卷行数 或下卷 AL=0全屏幕为空白BH=卷入行属性CH=左上角行号CL=左上角列号DH=右下角行号DL=右下角列号8 读光标位置 BH=显示页 AH=属性的属性和字符 AL=字符9 在光标位置 BH=显示页显示字符及 AL=字符其属性 BL=属性 CX=字符重复次数A 在光标位置 BH=显示页只显示字符 AL=字符 CX=字符重复次数 控制光标 光标不是ASCII字符表中的字符,计算机有专门的硬件来控制光标。我们熟悉的光标一般是一个下划线或方块符。利用INT 10H的功能1使光标显现或关闭。这个功能也控制光标行的开始和结

6、束,也就是说控制光标的大小。表示光标行开始和结束的数据分别放在CH和CL的低四位(03),当CH的第4位为1时,光标不显现出来(关闭);当第4位为0时,光标在屏幕上显现出来。单色显示器的光标大小的范围从0到13。INT 10H的功能2设置光标位置。光标新位置的行号设在DH寄存器中,列号设在DL中。行号设在(0,0)是屏幕的左上角,(24,79)是屏幕的右下角。BH中必须包含被输出的页号,对单色显示器来说,页号总是0。例 : 置光标开始行为5,结束行为7,并把它设置到第5行第6页。 MOV CH,5 ;Beginning of cursor and turn onMOV CL,7 ;End of

7、 cursorMOV AH,1 ;define cursorINT 10H ;call BIOSMOV DH,4 ;row 5MOV DL,5 ;column 6MOV BH,0 ;page 0MOV AH,2 ;place cursorINT 10H ;call BIOS routine 读光标位置 10H的功能3是读光标位置,页号必须在BH中指定。此功能把光标位置的行号回送给DH,列号回送给DL。光标大小的参数填入CH和CL,也就是说,在CH和CL中回送的是用功能1设置的光标参数。例 : 读0页的当前光标位置。 MOV AH,3 MOV BH,0 INT 10H 清屏和卷屏10H的功能6能

8、使屏幕内容上卷指定的行,这个功能需要设置7个参数。如果屏幕的起始行列不为(0,0),结束行列不为(24,79),则屏幕只有指定的一部分具有上卷的功能,这个屏幕上的部分区域我们叫做窗口(、Window),像这样的窗口我们可以在屏幕上设置多个,这些窗口都可独立使用。如果上卷超过指定窗口的顶部,这些行的内容就被丢失,出现在窗口底部的新行被填为空格,其属性由BH寄存器决定。如果AL=0,则实际完成的工作是清除屏幕的功能,它将按AL中的BLANK字符(0)使指定的窗口为空白。10H的功能7和功能6类似,也能使屏幕(或窗口)初始化或使屏幕(或窗口)的内容下卷指定的行。它的其它参数的设置与功能6一样。例:

9、清除左上角为(0,0),右下角为(24,39)的窗口,初始化为反向显示,该窗口相当于全屏幕的左半部分。 MOV AH,7 ;scroll downwardfunction MOV AL,0 ;code to blank screen MOV BH,70H ;reverse video attributeMOV CH,0 ;upper left rowMOV CL,0 ;upper left columnMOV DH,24 ;lower right rowMOV DL,39 ;lower right columnINT 10H ;video ROM call下面我们编写一个完整的程序在PC机上运

10、行。此程序在屏幕的中间建立一个20列宽和9行高的窗口,然后把键入的内容显示出来。键按入的字符将被显示在窗口的最下面一行,每当输入20个字符,该行就向上卷动,9列字符输入完后,顶端行的内容丢失。例: 在屏幕中心的小窗口显示字符。 ;WINDOW-Demonstrates video window function ;keyboard writes into a window 20 chars wide ;and 9 chars high in middle of screen ; program segment assume cs:program push ds sub ax,ax push a

11、x ;clear screen ,using scroll up function mov ah,6 mov al,0 mov ch,0 mov cl,0 mov dh,24 mov dl,79 mov bh,7 int 10h ;position cursor at bottom of window pos_cursor: mov ah,2 mov dh,16mov dl,30 mov bh,0 int 10h get characters from key boardmov cx,20 get_char: mov ah,1int 21hcmp al,3jz exitloop get_cha

12、r ;scrooll up mov ah,6mov al,1mov ch,8mov cl,30mov dh,16mov dl,50mov bh,7int 10hjmp pos_curseexit: ret program ends; end 此程序使用了几种ROM显示例行程序:清除屏幕,光标定位和上卷。如果在屏幕上同时有几个窗口工作,就要分别清除它们,这可通过设置不同的左上角坐标和右下角坐标来完成。 字符显示10H的功能9和功能A都能把一个字符传送到显示屏幕,然后光标返回到它的初始位置上。这两种功能的区别是:AH=9的功能把字符及其属性输出到当前光标位置上。而AH=OAH的功能只输出字符,它的

13、属性值就是这一位置上先前一具有的属性。0AH功能在使用黑白显示器时特别方便,因为此时我们很少改变显示的属性。例: 置光标到0显示页的(20,25)位置,并以正常属性显示一个星号*。 MOV AH,2 MOV BH,0 MOV DH,20 MOV DL,25 INT 10H MOV AH,9MOV AL,*MOV BH,0MOV CX,1INT 10H 10H的功能8读取当前光标位置及属性。例: 在0显示页的(11,0)位置读取字符和属性。 MOV AH,2 MOV BH,0 MOV DH,0INT 10H ;video ROM callMOV AH,8 ;read char and atter

14、MOV BH ,0 ;page0INT 10H ;video ROM call DOS 显示功能调用 表7-7为INT 21H 的显示操作,其中有两个是显示单字符的功能,另一个是显示字符串功能,这些功能都能自动向前移动光标。表7-7 DOS显示操作(INT 21H) AH 功 能 调用参数2 显示一个字符(检验Ctrl_Break) DL=字符 光标跟随字符移动6显示一个字符(不检验Ctrl_Break)DL=字符 光标跟随字符移动 9 显示字符串 DS:DX=串首址 光标跟随字符移动串必须以$结束 AH =9 的功能是显示字符串,它要求被显示输出的字符必须以$字符(24h)作为定界符,此功能

15、是用 作为标记来计算串 的长度的。有些ASCII 码,如控制码,不能出现该字符串。显示字符串时,如果希望光标能自动换行,那么可在字符串结束之前加上回车和换行的ASCII 码。 MESSAGE DB THE SORT OPERATION IS FINISHED。,13,10,要显示输出的信息一般定义在数据段。输出该字符串的指令为:MOV AH ,9 MOV DX ,SEG MESSAGE MOV DS ,DX MOV DX ,OFFEST MESSAGE INT 21H 使用赋值伪操作可以使程序的可读性更好,另外也可以根据显示格式的要求使用TAB 符,TAB 的 ASCII 码为09 。CR E

16、QU 13 (或 CR EQU 0DH)LF EQU 10 (或LF EQU OAH )TAB EQU 09 MESSAGE DB TABTHE sort operation is finished。 DB CR , LF, 使用INT 21H 显示字符串,一定要在显示串之后加上定界符,丢失定界符可能会在屏上引起意想不到的后果。 7-6-2 打印机编程击打式的 字符打印机大都实现全字符打印,即整个字符由一次打印动作完成,这种打印机的字迹清晰,还能提供点划线、阴影、粗体字符等,速度在每分钟1000行左右。随着打印机字符种类的增加,特别是打印图形和 汉字的 需要 ,发展了点阵式打印机。点阵式打印机

17、的字符是以点阵形式构成的 ,一般是7*7或9*9的 点阵。它可打印出点阵图形,斜体字,粗体双线字符以及笑脸、心形等字符。激光打印机既具有点阵打印机的图形功能,也能打印出和字符打印机一样的高质量字符。 打印机的接口有并行接口,即一次从处理器接收8 位代码,还有串行打印接口,即每次从处理器接收一位代码。IBM PC 适用并行接口。 许多打印机都具有存储几千个字符的缓冲(组成缓存器)。一台打印机必须能识别并处理从处理器来的信号,如换页,换行或列表符(TAB)。处理器也必须能理解从打印机发来的表示忙或者纸出界等信号。 不同类型的打印机可以响应从处理器来的不同的信号,这给打印机与接口的程序设计造成一些困

18、难,所以在编写打印机程序之前,必须先了解连接在计算机上的打印的 型号,认真查阅打印机的技术手册,但是就打印机的处理过程而言,它比屏幕处理、磁盘处理都要简单,它只涉及到很少的一些操作,既能用DOS INT 21H 来实现,也能用BIOS INT 17H 来实现。表7-8是有关打印机I/O 的中断操作。表7-8 打印机I/O中断INT AH 功 能 调用参数 返回参数21H 5 打印一个字符 DL=字符17H 0 打印一个字符 AL=字符 AH=状态字节 并回送状态字节 DX=打印机号17H 1 初始化打印机 DX=打印机号 AH= 状态字节回送状态字节 17H 2 回送状态字节 DX=打印机号

19、AH= 状态字节 DOS 打印功能INT 21 H 的功能5 把一个字符送到打印机,字符必须放在DL 寄存器中,这是唯一的DOS 打印功能。如果需要回车,换行等打印功能,必须由汇编语言程序送出回车、换行等字符码。下面 的功能段是送一个字符给打印机,为了连续打印,还指定了打印的字符数。当然也可以用指定的结束符来代替计数控制的方法。 TEXT DB hello ,everybody ! COUNT EQU -NEXT . . . MOV CX ,COUNT MOV BX ,0NEXT : MOV AH ,5 ;request print function MOV DL , TEXTBX ; cha

20、racter to print INT 21H ; call DOS INC BX LOOP NEXT 这些指令也适用于发送打印控制字符。例如 TEXT 字符串定义如下: TEXT DB 0CH ,HELLO ,everbody! , 0dh ,0ah ,0ah 字符串中的第一个字符是换页码(och),最后两个字符是换行码(0ah)。用上面的指令把TEXT 在打印机上输出,则字符串打印在新的一页的顶部,并余下文有两个空行的距离。下面我们来介绍打印机的标准控制字符和特殊控制字符。 打印机的控制字符打印机的标准控制字符如下:十进制 十六进制 功 能08 08 空格09 09 水平Tab(横表)10

21、 0A 换行11 0B 垂直Tab(纵表)12 0C 换页13 0D 回车水平TAB (09h )仅当打印机有此功能并被设置成打印机TAB状态时才有效。 换行命令使打印机向前空走一行,若连续用两次换行命令,则会空出两行。 当打印机加电启动后,打印头在一页纸的顶部位置。打印机打印时,记下所打印的行数,并检查是否到了一页的最大行数(如55行/页),如果打印了最后一行,就执行一个换页命令(0ch),然后再把行计数器置成0。一般显示器遇到显示文件中的TAB 字符(09),就把当前的光标位置移到8,16,24,.等字符位置上。但许多打印机并不认识TAB字符,若要打印一个ASCII 码文件(如汇编语源程序

22、),就必须检验送到打印机的每个字符,若该字符是TAB ,就要插入空格,使下一个字符的位置在8,16 等。形成TAB终止位置 的方法由下面三个例子来说明。当前打印的位置: 1 9 21二进制数: 0000001 00001001 00010101清最右边的三位: 0000000 00001000 00010000加8 : 00001000 00010000 00011000新的TAB 终止位置: 8 16 24以下程序是一个能打印ASCII 文件的子程序(PRTASC)。它的基本是把已读到输入缓冲区(recarea )中的字符送到一个打印区(prtline),并检查行尾、文件尾,处理换行符和TA

23、B 符。;printing an ASCII file dseg segment recarea db 512 dup ( ) ; input area for ASCII file prtline db 82 dup ( ) ; print line count dw 0 dseg ends csefg segment assume cs :cseg , ds:dseg ,es :dsegmain proc far push ds sub ax,axpush ax mov ax,dsegmov ds , ax call prtascretmain endp;transfer data to

24、print line :prtasc proc nearcldlea si ,reccareap10: lea di , partline mov count ,0p20: lea dx , recarea+512cmp si, dxje p70p30: mov bx, countcmp bx ,80jb p40mov word ptrdi+bx,odoahadd count, 2call subprtlea di, prtline mov count ,0mov bx ,0p40: lodsb mov di+bx,al Inc bx Cmp a1, 0ah Jne p70 Cmp a1 ,

25、oah Jne p50 Call subprt Jmp p10P50: cmp a1,09 Jne p60 Dec bx Mov bute ptr di+bx, 20h And bx ,0ff8h Add bx , 08 P60 : mov count ,bx Jmp p20 P70: mov bx, count Mov bx ,count mov byte ptrdi+bx,0chcall subprtretprtasc endp;-subprt proc near mov cx, count inc cxmov bx ,0-next: mov ah ,5mov di ,prtlinebxi

26、nt 21hinc bxloop next mov ax,2020hmov cx,41lea di, prtlinerep stowsret subprt endp;-cseg ends end main 特殊的打印命令我们已经讨论了打印机基本控制命令的使用。还有一些命令包括: 一些命令需要和ESC(1BH)字符一起使用,这些命令是: 1B 30 设置 每英寸为8行 1B 32 设置每英寸为6行 1B 45 设置加重打印方式 IB 46 设置加重打印方式 我们可以用两种不同的方式把命令码发送给打印机。1. 在数据 区中定义命令码。下下述数据区中的命令是设置紧缩方式,每寸8行,打印一个标题,并发

27、送回车、换行字符。HEAD DB 0FH ,1BH,30H , TITLE.,0DH ,0AH 2. 直接用命令方式MOV AH, 05 MOV DL , 0FH INT 21H上面的指令使以后打印的字符都是以紧缩方式打印,只有当程序发送取消此方式的命令后,采变成正常的方式进行打印。上述这些特殊命令并不适用于所有型号的打印机,这就需要查阅打印机手册,看其是否具有执行这些特殊命令的功能。BIOS 打印功能BIOS 17H 中断指令提供了由AH 寄存器指定的三种不同的操作。 BIOS 中断 17H 的功能0 是打印一个字符的功能 。要打印输出的字符放在AL 中,打印机号放在DX 中,BIOS 最多

28、允许连接三台打印机,机号分 别为0、1、和2。如果只有一台打印机,那么就是0号打印机,打印机的状态信息 被回送到ah 寄存器。MOV AH ,0 MOV AL , CHARMOV DX ,0INT 17H17H 的功能1初始化打印机,并回送打印机状态到AH寄存器。如果把打印机开关关上然后又打开,打印机各部分就复位到初始值。此功能和打开打印机时的作用一样。在每个程序的初始化部分可以用17h 的 功能1 来初始化打印机。MOV AH , 01 MOV DX ,0INT 17 H 这个操作要发送一个换页符,因此这个操作能把打印头设置在一页的顶部。对于大多数打印机,只要一接通电源,就会自动地初始化打印

29、机。 打印机忙(PRITER BUSY ) 表示打印机正在接收数据,活正在打印,或处于脱机状态。应答位(acknowledge)表示打印机已发出一个表明它已经接收到数据的信号。选择位(select)表示打印机是联机的。超时位(time out) 表示打印机发出忙信号很长一段时间了,系统将不在给它传送数据。表示打印机出错的是第5位(纸出界)或第3位(I/O错)为1,如果打印机没有接上电源,没有装上纸或者没有联机,而打印程序已开始运行,这时显示器的指示光标会不停的闪烁,当接通打印机的电源后,某些输出数据就会丢失。如果在打印程序中先 安排指令测试打印机的状态,则BIOS 操作就会返回状态码,(DOS 打印操作是自动进行测试的,但对各种情况都显示一个“纸出界”的信息)。当打印机接通电源后,即开始正常打印,而且不会丢失任何数据。下面我们应用前面介绍的BIOS和DOS功能调用,编写一个简单的打字程序。它要求把从键盘上接收的字符显示在屏幕上,并由打印机输出,在键盘上按下CTRL_C键即退出程序。Prog_stack segment stack stack Db 64 dup (stack)Prog_stack ends ;-prog_data segment data inchar db 20 dup (?) prog_data en

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1