资源描述
计算机与信息工程系系统接口设计报告专业 计算机与信息工程系班级 Z090551 学号 Z09055109 姓名 王承玲 报告完成日期 2011-6-10 指导教师 赵国增 评语:成绩:批阅教师签名: 批阅时间: 摘要 微型计算机原理与接口技术这门课以Intel微处理器为背景,围绕“基础”“主线”和“关键技术”展开。使我们掌握微型计算机的基本概念,介绍CPU、汇编程序设计及32位汇编程序设计简介、存储器、I/O接口;结合微处理器的发展历程,使我们了解微型计算机在不断克服瓶颈效应,提高性能和速度方面,采用的技术和方法,如Cache、虚拟存储、超标 量流水线,将微型计算机的发展作为贯穿教材的主线;将微型计算机的关键技术如存储器的管理、中断、DMA、系统总线、与外设的接口作为重点。微型计算机是现代社会不可缺少的智力辅导工具,面向21世纪的学子,只有学好0微型计算机原理与接口技术这门课,掌握汇编语言的编辑,调试技术及接口芯片的编程与使用,才能为以后应用微机解决工程实践中的各种技术问题(参数测试,数据的采集处理,工程控制,生产自动化,设备的改造与研制)打下良好的基础。而作为计算机专业的学生学习这门课是必须的,是我们学习更深层次的专业知识的基础。比如我们以后将要接触更多的单片机,对单片机进行编程,用到的语言的就有汇编语言,当然也有用其他的语言的,如C语言, 汇编程序设计是计算机应用开发人员必须接受的最重要的专业基础训练之一,是计算机软件、硬件研究的基础,是一个优秀的计算机工作者必须掌握的基础知识和基本技能,汇编语言也是计算机能够提供给用户的最快而又有效的语言,也是能够利用计算机所有硬件特性并能直接控制的唯一语言,因而,对程序的空间和时间的要求很高的场合,汇编语言是必不可少的。 目录第一章 设计背景.31.2 本次设计目的31.3 本次程序设计的原理3第二章 设计思想及题目分析42.1 设计的指导思想4 2.2 对设计题目的分析.第三章 源程序及流程图63.1 整个程序的流程图:63.2.程序源程序8第四章 运行结果124.1 输入时间前程序运行的界面124.2 输入时间后运行的界面13第五章 遇到的问题及解决的方法13第六章 心得体会13参考文献14 第一章 设计背景1.1 本次设计的内容 编写一个8086/8088汇编语言程序,是程序运行后屏幕显示器成为一台电子钟。首先屏幕上显示提示符,要求输入当前时间,然后每隔一秒使显示的秒之值加1,秒值清零;达到60 分时使小时加1,分值清零;达到24 小时则小时清零。上述过程一直进行下去,当按Ctrl+C时推退出“电子钟”的状态,返回DOS。1.2 本次设计目的 1.理解掌握定时/计数器和中断的使用方法。 2.掌握微机常用的输入输出方式及接口技术。 3.掌握一定的汇编语言知识,培养自己的动操作手能力。 4.掌握程序设计的基本思路和方法。1.3 本次程序设计的原理: 首先在数据段开辟一显示缓冲区,用来存储输入时间。调用DOS中断,返回时间,并将来返回的二进制时间转换成ASCII码,方便时间显示时的调用。分别将来小时数、分钟数、秒数存入显示缓冲区,并最终存入一结束字符号$。调用DOS字符串显示功能将时间显示出来,并调用屏幕I/O中断,定位光标的开始位置,结合者将时间显示在我们预先定义好的位置上。由于获取的时间不会自动刷新,所以我们要设计成刷新的方式来不断获取时间,这样就形成了会跳动的电子时钟了。调用延时中断服务程序,累加到存放秒值的存储器DL中,并进行十进制调整。在累加的过程中,不断地对时分秒值进行比较,秒值不能等于60,分值不能等于60时不能等于24。秒值等于限制值时,则使秒值为0分值加1,分值等于限制值时,则使分值为0时值加1;时值等于限制值时,则使时值为0;时分秒值都不超过限制值时,就转显示屏输出。时间显示的刷新要配合延时程序进行,为了得到良好的显示效果,延时程序要尽量接近1秒,但又不超过1秒,所以本程序调用了一段较精确的时间延时程序,利用BIOSS设计窗口,选择适当的背景和前景,使屏幕更加完美。程序一旦进入运行,就将不间断地在显示时间,要想停止时间,可按下Ctrl+C键返回DOS系统。 第二章 设计思想及题目分析2.1 设计的指导思想: 彩色图形是在图形的方式下,由一组像素点在屏幕上形成的。图形方式相对于文本方式所要处理的数据量大,而且不同的显示适配器所支持的分辨率不同,因此同一彩色图形在不同分辨率的情况下,处理的数据量差别很大。在屏幕上绘制彩色的图形,可用BIOS中的INT 10H的0号、11号、12号和13号功能调用。利用INT 10H的这些功能调用,就可以使屏幕上的绘图比较简单。通常情况下,有以下几步:(1)用INT 10H的0号功能将显示方式设置成320*200彩色图形的方式。 MOV AH,0 ;设置显示方式 MOV AL,4 ;置CGA为320*220彩色图形方式 INT 10H ;BIOS中断的调用(2)用INT 10H的11号功能设置彩色图形方式下的调色板或者背景颜色 MOV BH,0 ;设置背景色 MOV BL,C ;C=颜色值(0-16) MOV AH,11 ;功能号送入AH INT 10H MOV BH,1 MOV BL,N MOV AH,11 INT 10H如果保持色调不变那么只需设置一次就可以了。若需要改变调色板,要注意的是调色板的改变将使整个屏幕的颜色发,发生变化。(3)在上述工作的基础上,利用INT 10H的12号功能调用或13号功能调用在屏幕上写彩色像素点或读彩色像素点。 MOV AH,12 ;12号功能调用,写像素点 MOV AL,C ;C=像素点颜色(0-3) MOV DX,ROW ;ROW=行号(0-199) MOV CX,COL ;COL=列号(0-319) INT 10H ;BIOS中断调用 MOV AH,13 ;13号功能调用,读像素点 MOV DX,ROW ;ROW=行号(0-199) MOV CX,COL ;COL=列号(0-319) INT 10H ;BIOS功能调用2.2 对题目进行分析: 显示一个字符串,以及从键盘上接收一个字符串可分别通过09号和0AH号和DOS功能调用实现。延时一秒可以编写一个延时子程序。程序中对时、分、秒三个时间单位与许多类似的操作。例如,分别将它们由ASCII码转换成BCD码,或由BCD码转换成ASCII码,以及将时、分、秒值分别加1,可以采用宏处理伪指令,以便缩短源程序的长度,是程序更加清晰,有利于结构的模块化。此外,还可以利用BIOS调用设计窗口,选择适当的背景色和前景色等,使屏幕更加美观。 第三章 源程序及流程图3.1 整个程序的流程图: 图3-13.2.源程序代码:DATA SEGMENTBUF1 DB Please input the time : $BUF2DB 10 DB 10DUP(?)DATA ENDS STACK SEGMENT STACK DB 100DUP(?)STACKENDSCODE SEGMENT ASSUME CS: CODE,DS:DATA ASSUME SS: STACKCURSOR MACROROW,CLM MOV AH,2 MOV BH,0 MOV DH,ROW MOV DL,CLM INT 10H ENDMWIN MACRO ROWL,CLML,ROWR,CLMR,COLOR MOV AH,6 MOV AL,0 MOV CH,ROWL MOV CL,CLML MOV DH,ROWR MOV DL,CLMR MOV BH,COLOR INT10H ENDMASCBCD MACROREG INC BX INC BX MOV REG,BX MOV CL,4 SHLREG,CL INCBX MOVAL,BX ANDAL,0FH ORREG,AL ENDMBCDASC MACRO REG INC BX INC BX MOV AL,REG MOV CL,4 SHR AL,CL OR AL,30H MOV BX,AL INC BX MOV AL,REG ANDAL,0FH OR AL,30H MOV BX,AL ENDMINCBCD MACROREG,COUNT MOV AL,REG INC AL DAA MOV REG,AL CMP AL,COUNT JNZ DISPY MOV REG,0 ENDMSTRDSPY MACROADRS LEA DX,ADRS MOV AH,9 INT 21H ENDMCLOCK PROC FARSTART:PUSH DS MOV AX,0 PUSH AXMOVAX,DATA MOVDS,AX WIN 0,0,24,79,7 WIN9,28,15,52,01010111B CURSOR11,32 STRDSPYBUF1 CURSOR 13,36 LEADX,BUF2 MOVAH,0AH INT21H LEA BX,BUF2ASCBCDCH ASCBCDDHASCBCDDL TIMER: CALLDELY INCBCD DL,60H INCBCDDH,60H INCBCDCH,24HDISPY: LEABX,BUF2 BCDASCCH BCDASCDH BCDASCDL INCBX MOVAL,$ MOV BX,AL PUSH DX CURSOR13,36 STRDSPYBUF2 POPDX JMPTIMERDELYPROC PUSHCX PUSHAX MOVAX,3FFFHX1: MOVCX,0FFFFHX2: DECCX JNEX2 DECAX JNEX1 POPAX POPCX RETDELY ENDPCLOCK ENDPCODE ENDS ENDSTART 第四章 运行结果4.1 输入时间前程序运行的界面:4.2 输入时间后运行的界面: 第五章 遇到的问题及解决的方法 在这次课设中遇到的最大的问题就是如何让使用BIOS中断,为了解决这个问题,我上网搜到了好多资料,并认真比对,学习如何应用,还有就是如何使用子程序的调用,我们又重新翻阅了平时的课本,对其进行深入的研究,总算解决了这个问题。 第六章 心得体会 这是我第一次接触到汇编语言,并编写一个大一点的程序,说实话,这个过程是比较艰难的,这个世道并不欢迎孤独的英雄,因为一个人的力量有限,唯有团队合作才能发挥出最大的能量。在这次课设中,我真正体会到合作的重要性,我们这个班集体在这次课设中总在一起,从要实现的程序到流程图的绘制,从程序的编写到程序的检查,从程序的调试再到实验报告的写作,其间,每个过程都凝聚了我们班级的力量。在遇到的棘手的问题,我们总是在一起讨论,一起把问题解决;在我遇到不明白的程序时,是同学们给我耐心的讲解;在我面对出错的程序不知所措的时候,也是同学们帮我一步步地调试,耐心得指导,直至程序能正常运行,在查阅了大量的资料和参考了别人编的程序,最终合成出这个程序。 在这次课程设计中,我认识到自己在一些知识上还是一知半解,还有待进一步提高,我更加明白了做任何事都要脚踏实地、认真钻研、严格谨慎。参考文献【1】王士元,等.IBM PC/XT接口技术及其应用.天津:南开大学出版社,1990【2】朱传乃,等.微机系统原理分析与维修(上册).北京:科学出版社,1990【3】李伯成,等.80486/386系统设计和应用.成都:电子科技大学出版社,1992【4】齐志儒,等.8086/8088汇编语言程序设计.北京:科学出版社,1994【5】王闵,等PC汇编语言程序设计. 西安:西安电子科技大学出版社,2001 【6】郑初华,等.汇编语言、微机原理及接口技术.北京:清华大学出版社,2003【7】戴梅萼,等.微机原理及应用技术.北京:电子工业出版社,2006
展开阅读全文