微机接口研究性教学专题三_题目一_第1页
微机接口研究性教学专题三_题目一_第2页
微机接口研究性教学专题三_题目一_第3页
微机接口研究性教学专题三_题目一_第4页
微机接口研究性教学专题三_题目一_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 微机接口研究性教学专题三 本次研讨,我们组对题目一展开研究。题目一:编写程序,将自己的名字以动画的形式显示在屏幕上。看谁的动画漂亮。(题目难度较大,考察的是显示器接口。) 汉字并不属于ASCII码,不能直接显示,但是我们可以利用字符来组成汉字,进而完成汉字的显示。通过查阅资料,我们了解到可以通过三种方法解决这个问题,直接控制显存,使用BIOS,使用DOS功能,最终我们选择使用BIOS解决这个问题。BIOS是英文"Basic Input Output System"的缩略语,直译过来后中文名称就是"基本输入输出系统"。其实,它是一组固化到计算机内主板上一

2、个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。 首先说明工作原理: 我们使用BIOS中的中断INT 10H解决问题。汇编中的10H中断是由BIOS对显示器和屏幕所提供的服务程序。 使用int 10h服务程序时,必须先指定ah寄存器为以下显示服务编号之一,以指定需要调用的功用。显示服务 (Video Service:int 10h)00H:设置显示器模式01H:设置光标形状02H:设置光标位置03H:读取光标信息04H:读取光笔位置05H:设置显示页06H、07H:初始化或

3、滚屏08H:读光标处的字符及其 属性09H:在光标处按指定属性显示字符0AH:在当前光标处显示字符0BH:设置调色板、背景色或边框0CH: 写图形象素0DH:读图形象素0EH:在Teletype模式下显示字符0FH:读取显示器模式10H:颜色11H: 字体12H:显示器的配置13H:在Teletype模式下显示字符串1AH:读取/设置显示组合编码1BH: 读取功能/状态信息1CH:保存/恢复显示器状态 我们使用了功能06H,13H。功能06H功能描述:初始化屏幕或滚屏入口参数:AH06H向上滚屏AL滚动行数(0清窗口)BH空白区域的缺省属性(CH、CL) 窗口的左上角位置(Y坐标,X坐标)(D

4、H、DL)窗口的右下角位置(Y坐标,X坐标)具体结合我们的清屏函数看一下:;-CLEAR PROC USES AX BX CX DXMOV CL,0MOV CH,0 ;(CH、CL) 窗口的左上角位置(Y坐标,X坐标)MOV DL,79MOV DH,24 ;(DH、DL)窗口的右下角位置(Y坐标,X坐标)MOV BH,7 MOV AL,0 ;整屏为空白MOV AH,6 ;初始化屏幕或滚屏INT 10HRETCLEAR ENDP ;-通过功能06H我们可以在每次显示之前清屏并对屏幕做相关设定。功能 13H功能描述:在Teletype模式下显示字符串入口参数:AH13HBH页码BL属性(若AL=0

5、0H或 01H)CX显示字符串长度(DH、DL)坐标(行、列)ES:BP显示字符串的地址 AL显示输出方式0 字符串中只含显示字符,其显示属性在BL中。显示后,光标位置不变1字符串中只含显示字符,其显示属性在BL中。显示后,光标位置改变2 字符串中含显示字符和显示属性。显示后,光标位置不变3字符串中含显示字符和显示属性。显示后,光标位置改变出口参数:无还是结合具体程序来看一下:首先说明在定义数据段时,我们将要输出的字符串按照如下方式定义,BUFF DB "H",15,"E",15,"L",15,"L",15,&qu

6、ot;O",15则在使用功能13H输出字符串时,每个字符后的数字可以作为该字符的颜色,比如0为黑色,1为蓝紫色,2为翠绿色,15为白色。;-MOV BUFFSI,15 ;将第SI-1个字符设置为白色MOV BH,0MOV CX,5 ;显示字符串长度MOV DH,20MOV DL,20LEA BP,BUFF ;显示字符串的地址MOV AL,2MOV AH,13H ;在Teletype模式下显示字符串INT 10H;-BUFF DB " ",15," ",15," ",15," ",15,"*&qu

7、ot;,15," ",15," ",15," ",15," ",15," ",15," ",15," ",15," ",15," ",15," ",15 DB " ",15," ",15," ",15,"*",15,"*",15,"*",15,"*",15,&

8、quot;*",15,"*",15,"*",15,"*",15," ",15," ",15," ",15," ",15 DB " ",15," ",15,"*",15," ",15,"*",15," ",15," ",15," ",15," ",15,"*&q

9、uot;,15," ",15," ",15," ",15," ",15," ",15 DB " ",15,"*",15," ",15," ",15," ",15,"*",15," ",15," ",15,"*",15," ",15," ",15," ",15,

10、" ",15," ",15," ",15 DB " ",15," ",15," ",15," ",15," ",15," ",15,"*",15,"*",15," ",15," ",15," ",15," ",15," ",15," ",15," &

11、quot;,15 DB " ",15," ",15," ",15," ",15,"*",15," ",15," ",15," ",15,"*",15," ",15," ",15," ",15," ",15," ",15," ",15 DB " ",15," "

12、,15," ",15,"*",15," ",15," ",15," ",15," ",15," ",15," ",15,"*",15," ",15," ",15," ",15," ",15 DB " ",15," ",15,"*",15," ",15,&quo

13、t; ",15," ",15," ",15," ",15," ",15," ",15," ",15," ",15,"*",15," ",15," ",15 DB "*",15," ",15," ",15," ",15," ",15,"*",15," "

14、;,15," ",15," ",15," ",15," ",15," ",15," ",15," ",15,"*",15 DB " ",15," ",15," ",15," ",15," ",15," ",15," ",15,"*",15," ",15,&qu

15、ot; ",15," ",15," ",15," ",15," ",15," ",15 DB " ",15," ",15," ",15," ",15," ",15,"*",15," ",15," ",15," ",15,"*",15," ",15," &quo

16、t;,15," ",15," ",15," ",15 DB " ",15," ",15," ",15," ",15," ",15," ",15," ",15,"*",15," ",15," ",15," ",15," ",15," ",15," ",15,&q

17、uot; ",15 DB " ",15," ",15," ",15," ",15," ",15," ",15," ",15," ",15," ",15,"*",15," ",15," ",15," ",15," ",15," ",15以上字符串为我们显示“冬”这个汉字时所构造的字符串,空格

18、和“*”经过合适的位置搭配即可显示出“冬”字。通过功能13H我们可以实现变换颜色以及变换位置的字符串输出。在显示时,我们希望一个图形能够停顿一下,不要刷新过快,所以我们每次显示需要一个延时。可以利用空的循环来实现延时,这里我们利用了一个4层循环。为了便于书写程序,我们将延时程序写成了一个子程序。;-Delay1S PROCmov AH,200DEL0:DEC AH CMP AH,0 JZ BR mov AL,150DEL1:DEC AL CMP AL,0 JZ DEL0 mov BL,150DEL2:DEC BL CMP BL,0 JZ DEL1 MOV BH,150DEL3: DEC BH

19、CMP BH,0 JZ DEL2 JMP DEL3BR:RETDELAY1S ENDP;-此外,我们希望最后的程序有按下某一个键就能够退出的功能,此功能我们利用INT 16H(键盘中断)来实现。;-MOV AH,1 ;读键盘之前先检查是否有按键INT 16HJZ AGAIN ;没有则回到显示字符的循环MOV AH,0 ;读键盘功能INT 16H ;AL返回输入字符ASCII码CMP AL,KBESC ;和定义的退出键的ASCII码比较JNZ AGAIN ;不是则回到显示字符的循环;-这样,关于原理就介绍完毕。下面是程序实现流程。具体变换显示颜色及位置的方法为将要变颜色的字符的位置和要显示的颜色

20、分别用两个变量表示,每次显示之前循环变换,这样就能实现每次位置与颜色的变换。;- ADD SI,2.IF SI>29MOV SI,1.ENDIFADD DI,1.IF DI>13MOV DI,0.ENDIF;-在调试程序时遇到的问题为字符串显示的位置不对,后来经过用TD调试发现是因为每次显示完后,DH,DL(即表示显示的位置)会自动清零,而我的程序并没有在每次显示前都赋值。改为每次显示之前都做一次赋值后问题得到解决。程序效果截图:程序清单:.MODEL SMALL;-.DATAKBESC EQU 1BHBUFF1 DB " ",15," ",

21、15," ",15," ",15,"*",15," ",15," ",15," ",15," ",15," ",15," ",15," ",15," ",15," ",15," ",15BUFF2 DB " ",15," ",15," ",15,"*",15,

22、"*",15,"*",15,"*",15,"*",15,"*",15,"*",15,"*",15," ",15," ",15," ",15," ",15BUFF3 DB " ",15," ",15,"*",15," ",15,"*",15," ",15,&qu

23、ot; ",15," ",15," ",15,"*",15," ",15," ",15," ",15," ",15," ",15BUFF4 DB " ",15,"*",15," ",15," ",15," ",15,"*",15," ",15," ",15,"

24、*",15," ",15," ",15," ",15," ",15," ",15," ",15BUFF5 DB " ",15," ",15," ",15," ",15," ",15," ",15,"*",15,"*",15," ",15," ",15," &q

25、uot;,15," ",15," ",15," ",15," ",15BUFF6 DB " ",15," ",15," ",15," ",15,"*",15," ",15," ",15," ",15,"*",15," ",15," ",15," ",15," "

26、;,15," ",15," ",15BUFF7 DB " ",15," ",15," ",15,"*",15," ",15," ",15," ",15," ",15," ",15," ",15,"*",15," ",15," ",15," ",15," ",1

27、5BUFF8 DB " ",15," ",15,"*",15," ",15," ",15," ",15," ",15," ",15," ",15," ",15," ",15," ",15,"*",15," ",15," ",15BUFF9 DB "*",15," &qu

28、ot;,15," ",15," ",15," ",15,"*",15," ",15," ",15," ",15," ",15," ",15," ",15," ",15," ",15,"*",15BUFF10 DB " ",15," ",15," ",15," "

29、;,15," ",15," ",15," ",15,"*",15," ",15," ",15," ",15," ",15," ",15," ",15," ",15BUFF11 DB " ",15," ",15," ",15," ",15," ",15,"*",

30、15," ",15," ",15," ",15,"*",15," ",15," ",15," ",15," ",15," ",15BUFF12 DB " ",15," ",15," ",15," ",15," ",15," ",15," ",15,"*",15

31、," ",15," ",15," ",15," ",15," ",15," ",15," ",15BUFF13 DB " ",15," ",15," ",15," ",15," ",15," ",15," ",15," ",15," ",15,"*",15,&

32、quot; ",15," ",15," ",15," ",15," ",15COLOR DB 1,2,3,4,5,6,7,8,9,10,11,12,13,14;-.CODECLEAR PROC USES AX BX CX DXMOV CL,0MOV CH,0MOV DL,79MOV DH,24MOV BH,7MOV AL,0MOV AH,6INT 10HRETCLEAR ENDPDelay1S PROCmov AH,200DEL0:DEC AH CMP AH,0 JZ BR mov AL,150DEL1:

33、DEC AL CMP AL,0 JZ DEL0 mov BL,150DEL2:DEC BL CMP BL,0 JZ DEL1 MOV BH,150DEL3: DEC BH CMP BH,0 JZ DEL2 JMP DEL3BR:RETDELAY1S ENDP;-.STARTUPCALL CLEARMOV AX,DSMOV ES,AXMOV SI,29MOV DI,13AGAIN:CALL CLEARMOV BUFF1SI,15MOV BUFF2SI,15MOV BUFF3SI,15MOV BUFF4SI,15MOV BUFF5SI,15MOV BUFF6SI,15MOV BUFF7SI,15M

34、OV BUFF8SI,15MOV BUFF9SI,15MOV BUFF10SI,15MOV BUFF11SI,15MOV BUFF12SI,15MOV BUFF13SI,15ADD SI,2.IF SI>29MOV SI,1.ENDIFADD DI,1.IF DI>13MOV DI,0.ENDIF;-MOV BH,COLORDIMOV BUFF1SI,BHMOV BH,0MOV CX,15.IF SI>23MOV DH,2JMP GO1.ENDIF.IF SI>15MOV DH,4JMP GO1.ENDIF.IF SI>8MOV DH,6JMP GO1.ENDIF

35、MOV DH,8GO1:.IF DI>9MOV DL,40JMP GO011.ENDIF.IF DI>6MOV DL,10JMP GO011.ENDIF.IF DI>3MOV DL,30JMP GO011.ENDIFMOV DL,20GO011:LEA BP,BUFF1MOV AL,2MOV AH,13HINT 10H;-MOV BH,COLORDIMOV BUFF2SI,BHMOV BH,0MOV CX,15.IF SI>23MOV DH,3JMP GO2.ENDIF.IF SI>15MOV DH,5JMP GO2.ENDIF.IF SI>8MOV DH,

36、7JMP GO2.ENDIFMOV DH,9GO2:.IF DI>9MOV DL,40JMP GO22.ENDIF.IF DI>6MOV DL,10JMP GO22.ENDIF.IF DI>3MOV DL,30JMP GO22.ENDIFMOV DL,20GO22:LEA BP,BUFF2MOV AL,2MOV AH,13HINT 10H;-MOV BH,COLORDIMOV BUFF3SI,BHMOV BH,0MOV CX,15.IF SI>23MOV DH,4JMP GO3.ENDIF.IF SI>15MOV DH,6JMP GO3.ENDIF.IF SI&g

37、t;8MOV DH,8JMP GO3.ENDIFMOV DH,10GO3:.IF DI>9MOV DL,40JMP GO33.ENDIF.IF DI>6MOV DL,10JMP GO33.ENDIF.IF DI>3MOV DL,30JMP GO33.ENDIFMOV DL,20GO33:LEA BP,BUFF3MOV AL,2MOV AH,13HINT 10H;-MOV BH,COLORDIMOV BUFF4SI,BHMOV BH,0MOV CX,15.IF SI>23MOV DH,5JMP GO4.ENDIF.IF SI>15MOV DH,7JMP GO4.EN

38、DIF.IF SI>8MOV DH,9JMP GO4.ENDIFMOV DH,11GO4:.IF DI>9MOV DL,40JMP GO44.ENDIF.IF DI>6MOV DL,10JMP GO44.ENDIF.IF DI>3MOV DL,30JMP GO44.ENDIFMOV DL,20GO44:LEA BP,BUFF4MOV AL,2MOV AH,13HINT 10H;-MOV BH,COLORDIMOV BUFF5SI,BHMOV BH,0MOV CX,15.IF SI>23MOV DH,6JMP GO5.ENDIF.IF SI>15MOV DH,

39、8JMP GO5.ENDIF.IF SI>8MOV DH,10JMP GO5.ENDIFMOV DH,12GO5:.IF DI>9MOV DL,40JMP GO55.ENDIF.IF DI>6MOV DL,10JMP GO55.ENDIF.IF DI>3MOV DL,30JMP GO55.ENDIFMOV DL,20GO55:LEA BP,BUFF5MOV AL,2MOV AH,13HINT 10H;-MOV BH,COLORDIMOV BUFF6SI,BHMOV BH,0MOV CX,15.IF SI>23MOV DH,7JMP GO6.ENDIF.IF SI&

40、gt;15MOV DH,9JMP GO6.ENDIF.IF SI>8MOV DH,11JMP GO6.ENDIFMOV DH,13GO6:.IF DI>9MOV DL,40JMP GO66.ENDIF.IF DI>6MOV DL,10JMP GO66.ENDIF.IF DI>3MOV DL,30JMP GO66.ENDIFMOV DL,20GO66:LEA BP,BUFF6MOV AL,2MOV AH,13HINT 10H;-MOV BH,COLORDIMOV BUFF7SI,BHMOV BH,0MOV CX,15.IF SI>23MOV DH,8JMP GO7.

41、ENDIF.IF SI>15MOV DH,10JMP GO7.ENDIF.IF SI>8MOV DH,12JMP GO7.ENDIFMOV DH,14GO7:.IF DI>9MOV DL,40JMP GO77.ENDIF.IF DI>6MOV DL,10JMP GO77.ENDIF.IF DI>3MOV DL,30JMP GO77.ENDIFMOV DL,20GO77:LEA BP,BUFF7MOV AL,2MOV AH,13HINT 10H;-MOV BH,COLORDIMOV BUFF8SI,BHMOV BH,0MOV CX,15.IF SI>23MOV

42、 DH,9JMP GO8.ENDIF.IF SI>15MOV DH,11JMP GO8.ENDIF.IF SI>8MOV DH,13JMP GO8.ENDIFMOV DH,15GO8:.IF DI>9MOV DL,40JMP GO88.ENDIF.IF DI>6MOV DL,10JMP GO88.ENDIF.IF DI>3MOV DL,30JMP GO88.ENDIFMOV DL,20GO88:LEA BP,BUFF8MOV AL,2MOV AH,13HINT 10H;-MOV BH,COLORDIMOV BUFF9SI,BHMOV BH,0MOV CX,15.IF SI>23MOV DH,10JMP GO9.ENDIF.IF SI>15MOV DH,12JMP GO9.ENDIF.IF SI>8MOV DH,14JMP GO9.ENDIFMOV DH,16GO9:.IF DI>9MOV DL,40JMP GO99.ENDIF.IF DI>6MOV DL,10JMP GO99.ENDIF.IF DI>3MOV DL,30JMP GO99.ENDIFMOV DL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论