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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

图形变换程序设计Word格式.docx

1、时间安排: 12月 26日- 1 2月 28日 查阅资料及方案设计 12月 29日- 1月 2日 编程 1月 3日- 1月 7日 调试程序 1月 8日- 1月 9日 撰写课程设计报告指导教师签名: 年 月 日系主任(或责任教师)签名:摘 要图形变换程序的设计是利用微机中的BIOS或DOS中断显示调用功能在屏幕上根据要求显示各种图形的变换。在存储器系统中从地址0FE000H开始的8K ROM中装有BIOS例行程序,DOS是PC机上最重要的操作系统,它是由软盘或硬盘提供的,它的两个DOS模块IBMBIO.COM和IBMDOS.COM使DOS用起来更加方便。其中,IBMBIO.COM是一个输入/输出

2、设备处理程序,它提供了DOS到ROM BIOS的低级接口,它完成将数据从外设读入内存或把数据从内存写到外设去的工作。IBMDOS.COM包括一个文件管理程序和一些处理程序,在DOS下运行的程序可以调用这些处理程序。为了完成DOS功能调用,IBMDOS.COM把信息传送给IBMBIO.COM,形成一个或多个BIOS调用。用户通过对BIOS或DOS的调用,可以达到对显示屏幕的控制。本课程设计的任务是在屏幕上输出不同的图形,需要在显卡的相应地址区写入不同的内容,从而达到图形变换的目的,同时,为了根据输入的不同字符显示不同的图形,本例调用了键盘中断int9,以达到任意切换的要求。关键词:图形变换 DO

3、S调用 BIOS调用 键盘中断1.设计目的通过一个学期的微机原理的学习,我们已经初步的认识了8086的相关功能及其特点,学习了相关的指令及指令集,但是作为一名理工科的学生,光学习书本上面的知识是远远不够的,自己动手实践探索,才能将书本上的内容烂熟于心,才能正真意义上的解决问题,因此微机原理的课程设计应运而生。课程设计的目的在于锻炼学生各方面的能力,如查阅书籍,收集信息,灵活运用所学知识的能力等。同时通过在课程设计过程中的学习,能够独立自主的将学到的知识和平时生活实际相联系,达到学而活用,学而自用,学而能用的目的。从而达到进一步深入学习,锻炼自学,启发动手和自我思维的目的。微机原理这么课程融合了

4、像汇编语言,硬件,软件,基本输入输出,串行并行等多中知识,我们学习使用的集成环境emu8086其实是在很大程度上能够帮我们学习8086的编程与设计的,而这种基本的设计跟编程能力在今后的学习生活和工作中是必不可少的,因此,这次我们选择的课题是图形变换程序设计,图形变换,基本上就是设计缓冲区将需要的图形先设计出来,后面更重要的就是按照所需要的要求进行变换颜色,而各种功能的切换跟调用,这才是我们进行课设的难点和重点。因此大量的查阅书籍跟必要的调试工作是非常必要的。2.设计思路通过对设计任务的分析:程序运行后,键盘输入不同进行不同处理:我们小组通过分工,我分到的任务是设计一个五角星图案跟一个三角形图案

5、,一来是因为五角星比较好看,制作起来比较有挑战性,另外三角形通过上下角度的平移,设计起来也很不错的,我的设计思路就是这样。程序的总体流程图如图2.1所示。图 2.1 程序的总体流程图3.设计过程与步骤3.1相关理论介绍3.1.1 DOS中断与BIOS中断的功能及调用BIOS中断类型见表3-1:表3-1中断号中断名称20程序终止27结束并驻留内存21功能调用28键盘忙循环22终止地址29快速写字符23Ctr l_C 中断向量2A网络接口24严重错误向量2E执行命令25绝对磁盘读2F多路转接接口26绝对磁盘写30-3F保留给DOSDOS中断类型见表3-2:表3-210显示器I/ O 16键盘I/

6、O11取设备信息17打印机I/ O12取内存容量18ROM BASIC13磁盘I/ O19引导装入程序14RS-232 串行口I/ O 1A时钟15磁带I/ O40软盘BIOSDOS 功能与BIOS 功能都通过软件中断调用。在中断调用前需要把功能号装入AH寄存器, 把子功能号装入AL 寄存器, 除此而外, 通常还需在CPU 寄存器中提供专门的调用参数。一般地说, 调用DOS 或BIOS 功能时, 有以下几个基本步骤:(1) 将调用参数装入指定的寄存器中;(2) 如需功能号, 把它装入AH ;(3) 如需子功能号, 把它装入AL;(4) 按中断号调用DOS 或BIOS 中断;(5) 检查返回参数

7、是否正确。本例中需要的BIOS中断见表3-3:表3-3INTAH功能入口参数出口参数09H表示在当前的光标处按指令属性显示字符AH=09H AL=字符BH=显示页码BL=属性CX=重复输出字符的次数无02H用文本坐标下设置光标位置AH=02HDH=行(Y坐标)DL=列(X坐标)01H从键盘输入一个字符 无AL=ASCII在屏幕上显示一个字符 DL=ASCII读取键盘状态,即读入输入字符AH01H检查普通键盘ZF1无字符输入,否则,AH键盘的扫描码,AL按键的ASCII码(字符键)或者0(其他键)00H从键盘读入字符AH00H强制读普通键盘AH键盘的扫描码AL按键的ASCII码(字符键)或者0(

8、其他键)08H读光标处的字符及其属性AH08HBH显示页码AH属性AL字符06H1号2号功能的组合DL=0FFH时为1号功能;DL寄存器放入字符的ASCII值时就是2号功能无或AL=ASCII读取时间AH02HCHBCD码格式的小时;CLBCD码格式的分钟;DHBCD码格式的秒;DL00H标准时间,否则,夏令时;CF0时钟在走,否则,时钟停止3.1.2 子程序的设计子程序又称为过程, 它相当于高级语言中的过程和函数。在一个程序的不同部分, 往往要用到类似的程序段, 这些程序段的功能和结构形式都相同, 只是某些变量的赋值不同, 此时就可以把这些程序段写成子程序形式, 以便需要时可以调用它。过程定

9、义伪操作用在过程(子程序) 的前后, 使整个过程形成清晰的、具有特定功能的代码块。其格式为:procedure name PROC Attributeprocedure name ENDP其中过程名为标识符, 它又是子程序入口的符号地址。它的写法和标号的写法相同。属性(attribute) 是指类型属性, 它可以是NEAR 或FAR。段内调用使用NEAR 属性, 段间调用使用FAR 属性。为了使用户的工作更加方便, 80x86 的汇编程序用PROC 伪操作的类型属性来确定CALL 和RET 指令的属性。也就是说, 如果所定义的过程是FAR 属性的, 那么对它的调用和返回一定都是FAR 属性的;

10、 如果所定义的过程是NEAR 属性的, 那么对它的调用和返回也一定是NEAR 属性的。这样, 用户只需在定义过程时考虑它的属性, 而CALL 和RET 的属性可以由汇编程序来确定。用户对过程属性的确定原则很简单, 即:1 如调用程序和过程在同一个代码段中, 则使用NEAR 属性;2 如调用程序和过程不在同一个代码段中, 则使用FAR 属性。3.1.3 中断概述 CPU在执行某一程序的过程中,出现了内部或外部某些事件的请求,CPU暂时停止当前程序的正常执行,转去执行请求事件的处理工作,CPU在事件处理结束后又继续原来的程序,这个过程称作中断。 中断程序的入口地址称作中断向量。8086中断系统最多

11、可以支持256个中断源,系统将这些中断向量按照中断类型码的顺序依次存放在内存RAM的最低地址区的1024个内存单元中,这就构成了中断向量表。中断向量表的逻辑地址范围为0000H:0000H-0000H:03FF。另外,中断向量在中断向量表中的位置就是中断向量地址,它与中断类型码之间的关系可以表示如下: 中断向量地址=0000H:中断类型码*4CPU在响应中断后,根据中断源提供的中断类型码,首先计算出中断向量地址,然后根据中断向量地址在表中查找到相应的中断服务程序的入口地址。本例中即利用了键盘中断来实现相应的功能。3.2 设计步骤 中断子程序的设计说明:该程序完成的是在按下其他键时实现不同图形之

12、间的任意切换。实现过程是通过改变原键盘中断入口向量地址,使用户在输入其他字符时,原图形能从循环中退出,转向新的图形的子程序。同时,在重设的中断向量地址程序中,再次将原键盘中断的入口地址复原,以便程序能够正确的判断出输入的新字符。3.2.1 五角星子程序五角星子程序和流程图如图3.1和3.2所示 star proc near push bx push cx push dx push es mov es,dx lea si,a3 mov di,0 mov bx,0 mov cx,7b1: mov cx,17b2: mov al,si mov es:bx+di,ax inc si add di,2l

13、oop b2 pop cx add bx,0a0hloop b1 pop es pop dx pop cx pop bx retstar endp star_1 proc near 图3.1 star子程序流程图 push ax call clear_screen call delay mov word ptr es:9*4,offset int99*4+2,cs mov cx,01hlop4: mov ah,8ah mov dx,0b854h call star mov ah,8ch mov dx,0b854h mov ah,89h mov ah,8eh mov dx,0b854h Y mo

14、v ah,8dh call delay loop lop4 图3.2 star_1子程序流程图pop dx pop axstar_1 endp 从程序可以看出,其与菱形的显示程序基本相同,只需改动显示字符的偏移地址即可。至于图形的显示颜色和显示地址则可根据需要进行修改。本例中调用了两次star来显示变换的五角星,实现了题目的要求。3.2.2 三角形子程序 三角形子程序和流程图如图3.3和3.4所示angle proc near mov es,dx lea si,a4 mov di,0 mov cx,5d2: push cx mov cx,17 d3:bx+di,ax loop d3 mov d

15、i,0 图3.3 angle子程序流程图loop d2 pop bxangle endpangle_1 proc near call clear_screenlop6: call angle mov ah,8ch call angle1 call angle call delay mov ah,8eh 图3.4 angle_1子程序流程图 mov ah,8dh loop lop6 pop dxangle_1endp 从程序可以看出,其与菱形和五角星的显示程序基本相同,只需改动显示字符的偏移地址即可。至于图形的显示颜色和显示地址则可根据需要进行修改。本例中调用了三次angle来显示变换的三角形,

16、实现了题目的要求。 3.2.3 退出显示子程序退出显示子程序的流程图如图3.5所示sq proc near push ax ;相关寄存器入栈 call clear_screen ;清屏 mov ax,0b872h ;设置显示的段首址 mov es,ax 图3.5 退出显示子程序流程图 lea si,a2 ;取显示字符的偏移地址 mov cx,10 ;循环次数(字符个数)s4: mov al,si ;设置显示字符和颜色属性 mov ah,0ah inc si ;偏移地址增加loop s4 pop es ;相关寄存器出栈 pop axsq endp同样,由该子程序可知,其与图形变换相类似,故相关说

17、明不再赘述。当然,字符串的输出也可直接由DOS中断调用来完成,本例中并未使用,但同样完成了题目的要求。3.2.4 中断子程序和清屏子程序A)中断程序int9: mov ax,0 mov ax,es mov dx,int9ip9*4,dx ;-恢复原中断向量地址 mov dx,int9cs9*4+2,dx pushf ;-标志寄存器出栈 call dword ptr ds:int9ip STI ;-开中断 jmp input ;-转移到输入判断处 iret本例中,通过修改键盘中断的相关程序即可实现不同图形之间的任意切换,从而达到题目所要求的目的。B)清屏子程序clear_screen proc

18、near-相关寄存器入栈 mov ah,06h ;-功能号 mov al,00h ;-全屏幕空白 mov bh,00h ;-黑底黑字 mov ch,0 ;-左上角行号 mov cl,0 ;-左上角列号 mov dh,24 ;-右下角行号 mov dl,79 ;-右下角列号 int 10h ;-中断调用 pop dx ;-相关寄存器出栈clear_screen endp清屏子程序在程序中起清除前段图形的功能,即在按下其他键时,屏幕上立刻显示出当前想要得到的图形,不受前面图形的影响。3.3 程序调试过程3.3.1 emu8086简介 Emu8086结合了一个先进的原始编辑器、组译器、反组译器、具除

19、错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。这对刚开始学组合语言的人会是一个很有用的工具。它会在模拟器中一步一步的编译程序码并执行,视觉化的工作环境让它更容易使用。你可以在程序执行当中检视暂存器、旗标以及记忆体。模拟器会在虚拟PC中执行程序,这可以隔绝你的程序,避免它去存取实际硬体,像硬碟、记忆体,而在虚拟机器上执行组合程序,这可以让除错变得更加容易。这个软件完全相容於Intel的下一代处理器,包括了PentiumII、Pentium4,而相信Pentium5也会继续支援8086的。这种现象让8086程序码的可携性相当高,它可以同时在老机器以及现代的电脑是执行,8086的另一

20、个优势是它的指令比较小且相当容易学习。 该软件包含了学习汇编语言的全部内容。Emu8086集源代码编辑器,汇编/反汇编工具以及可以运行debug的模拟器(虚拟机器)于一身,此外,还有循序渐进的教程。这套软件对于刚开始学习汇编语言的朋友非常有帮助它能够编译源代码,并在模拟器上一步一步的执行。可视化界面令操作易如反掌可以在执行程序的同时可观察寄存器,标志位和内存算术和逻辑运算单元(ALU)显示中央处理器内部的工作情况 这个模拟器是在一台虚拟的电脑上运行程序的,它拥有自己独立的“硬件”,这样你程序就同诸如硬盘与内存这样的实际硬件完全隔离开,动态调试(DEBUG)时非常方便8086的机器代码同INTE

21、L下一代微处理器完全兼容,包括Pentium II 和 Pentium 4,我相信Pentium 5同样也会支持8086指令这意味着8086代码具有很广泛的应用范围,它在老式的和最新的计算机系统上都能工作8086指令的另外一个优点是它的指令集非常小,这样学起来会容易得多Emu8086同主流汇编程序相比,语法简单得多,但是它能生成在任何能兼容8086机器语言的代码。注意:如果你不使用Emu8086编译程序,那你无法在运行的时候单步跟踪。Emu8086界面见图3.6图3.6 Emu8086界面3.3.2 输出五角星的显示界面 当程序运行后,输入按键B,屏幕显示见图3.7和整体效果图3.8图3.7

22、部分图 图3.8 整体效果图3.3.3 输出三角形的显示界面 当程序运行后,输入按键D,屏幕显示见图3.9和整体效果图3.10图3.9 部分图图3.10 整体效果图3.3.4 退出的显示界面需要退出是,按下键Q/q均可退出,显示界面见图3.11图3.11 退出界面4.小结与体会 通过这次课程设计,让我进一步掌握了8086的相关指令的使用和相关DOS跟BIOS的调用功能,由于此次课程设计的趣味性比较强,学习操作的空间也比较大,不懂的东西通过与同学之间的相互讨论以及与查阅相关的书籍都可以迎刃而解,值得注意的是,8086的代码指令在此次课设中占的比重非常大,写程序代码是一件非常费脑筋的活,而且要求我

23、们有足够的耐性跟认真,如果稍有差错或者是格式错误,甚至多加或者漏掉一个阿拉伯数字都有可能是程序运行不完全,达不到想要的目的。 另外通过此次课程设计,我也发现了自己很多方面的问题。第一,平时只注重理论知识,而缺少实践。按道理来说,课设所要用到的很多知识自己平时都系统的学过,但等到自己真正想用的时候却不知道如何下手。这点在今后的学习中要引起注意。第二,自己快速学习的能力有待提高。这次微机课设,虽然只用了很少部分的课外知识,但是自己却不能很好的掌握,以后一定要更加注重理论与实践的相互配合,才能更好的锻炼自己。参考文献1周佩玲,彭虎,傅忠谦.微机原理与接口技术(基于16位机).北京:电子工业出版社,20052钱晓捷.汇编语言程序设计学习与解题指南.武汉:华中科技大学出版社,20023黄明,梁旭,常征.汇编语言程序设计习题详解.北京:机械工业出版社,20044王永山,杨宏五,杨婵娟.微型计算机原理与应用(第二版).西安:西安电子科技大学出版社,20065张晓明.汇编语言程序设计.北京:国防工业出版社,2009附 录程序(完整版):assume cs:code,ds:data,ss:sst;-

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

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