汇编课设 显示系统时间 汇编语言程序设计
《汇编语言》课程设计报告显示系统时间
《汇编语言》课程设计报告显示系统时间《汇编语言》课程设计报告题目:院(系):班级:姓名:学号:指导教师:1设计主要任务这个程序主要是用来显示系统时间的程序。
在这个程序中,主程序首先设置显示方式,取系统时间后将时间保存,继续设置显示方式,利用BIOS 的INT 1AH的2号系统功能调用,将计算机系统的时间参数(BCD码)送入寄存器,将用BCD码表示的时、分、秒转换成ASCII码并进行显示。
读字符串到al中进行判断是否为结束,然后进行显示时间。
后又重新取系统时间。
然后进行一系列的判断是否有进位。
有则进行进位操作,否则重新取系统时间。
1.1设计任务与目标任务:对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。
汇编语言程序设计课程设计是在教学实践基础上进行的一次大型实验,也是对该课程所学理论知识的深化和提高。
因此,要求学生能综合应用所学知识,设计与制造出具有较复杂功能的应用系统,并且在实验的基本技能方面上进行一次全面的训练。
培养学生综合运用所学知识独立完成汇编程序课题的能力。
使学生能够较全面地巩固和应用课堂中所学的基本理论和程序设计方法,能够较熟练地完成汇编语言程序的设计和调试。
提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。
培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。
培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。
目标:用“时:分:秒”(均为两位)的形式连续显示系统时间。
利用BIOS 的INT 1AH的2号系统功能调用,将计算机系统的时间参数(BCD码)送入寄存器,将用BCD码表示的时、分、秒转换成ASCII码并进行显示。
2 设计方案(1)在DOS环境下完成,先利用BIOS功能调用中显示器驱动程序的00H类型调用,设置显示器的显示模式为80*25彩色。
汇编语言+第14章+显示程序设计
第24行 : : … … … :
1. CGA显示存储器(A/N方式)
1)80×25 A/N方式 每屏可显示2000个字符,需要4KB字节单元,16KB字节单元可以同时存放4
个显示画面文本。显示位置与存储单元偏移地址的计算方法: 显示字符位置:行号×80+列号 显示单元的偏移地址(相对于0B800H段) 页面第0个字符地址偏移量+(行号×80+列号)×2
例:已知显示器工作于80×25 A/N方式,在(X,Y)处以蓝底 红字显示一字符‘A’。已知X,Y分别在AL和BL中。
MOV MOV MOV MUL MOV ADD SHL MOV MOV
DX,0H DS,DX CL,80 CL BH,0 BX,AX BX,1 AX,1441H [BX],AX
第十四章 显示程序设计
14.1 显示器种类及性能 14.2 用BIOS调用编制显示程序 14.3 CGA显示程序设计
14.1 显示器种类及性能
1. MDA显示适配器(Monochrome Display Adapter)
单色显示适配器,只支持字符显示方式,字符为白(或绿) 色。
2 . CGA显示适配器(Color Graphics Adapter)
00:第一象素 01:第二象素 10:第三象素 11:第四象素
象素所处字节在存储区的偏移地址的计算方法:
行值/2×80+列值/4
1. CGA显示存储器(APA方式)
第0字节 000000000 000000001 000000010 000000011 高7位为0
第1字节 000000100 000000101 000000110 000000111 高7位为1
14.3.2 CGA适配器
主要部件有:适配器存储器、 操作方式控制寄存器、CRT状态 寄存器、颜色选择寄存器和 6845CRTC,还有一些相应的控 制电路。
汇编语言课程设计报告-时间显示
北华航天工业学院《微机原理与汇编语言程序设计》课程设计报告报告题目:年.月.日.星期,当前时间显示作者所在系部:计算机科学与工程作者所在专业:计算机应用作者所在班级:07511作者姓名:王清指导教师姓名:杨立完成时间:12月31日北华航天工业学院教务处制前言汇编语言是一门程序设计语言,学习程序设计的思想与方法既是学习的重点也是难点,课设的目标就是要帮助读者提高程序设计的能力,较深入地掌握汇编语言程序设计的思想与方法。
学习汇编语言时,有些同学已经学习过例如C语言等高级语言,将为我们理解程序设计的思想打下良好基础;但也可能从未学习过其他语言,虽然框框较少,但建立计算机语言与程序设计的概念将是一大难题。
汇编语言是多类知识交叉的学科,一部分知识往往还连带着其他的相关内容,如果处理不好这些连带的内容,将影响学习者对当前知识点的理解。
但是如果先扫清外围,例如先介绍CPU与存储器的内部结构、数据形式,再介绍指令与指令系统、程序设计方法……,虽然可以做到内容单一,也容易接受,但教学未以程序设计为线索展开,可能在开始学习后相当长一段时间里不接触汇编语言程序设计的内容,将令学习过程抽象无趣。
本书考虑到这些情况,采用了实践先行的方法,以一个完整的程序实例引导,首先通过演示与动手,对程序设计及一些基本概念、基本方法建立感性认识,从而屏蔽了一些相关知识带来的干扰,在此基础上再逐一展开。
学习的过程除了理解还有记忆与模仿,人们往往都是从死记、模仿走向创新的,实践引导的过程将为模仿创造条件,也提供了记忆的线索与内容。
以程序为线索展开,将使我们在整个学习过程中的每一步都目标明确,主题清晰,基础扎实,在不知不觉中登上程序设计的颠峰。
汇编语言的主要用途之一是涉及硬件的开发,目前社会对具有一定硬件基础的计算机人才需求较旺,本书围绕输入、输出程序设计介绍了若干常用芯片的结构与程序设计方法,即加强了涉及硬件的程序设计技术的教学,也有助于提高设计实际应用系统的能力。
汇编语言课程设计显示系统当前时间与日期.doc
华北科技学院课程设计说明书课程名称:汇编语言班级: 计算机B08-1 姓名: _邵璐婷 _ 学号:__ 200807014109 设计题目:显示系统当前时间与日期 _ 设计时间: 2009-06-21至2009-07-02指导教师: _ 孟广学 _ _ 评语:_________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩:____评阅教师:____________一、课程设计目的进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。
二、课程设计要求1.要求编写并调试通过一个小型软件,实现对软件或硬件的操作。
2.遵循模块化、结构化的程序设计方法。
3.要求程序必须正确。
4.程序简明易懂,多运用输入输出提示,出错信息及必要的注释。
5.要求程序结构合理,语句使用得当。
6.适当追求编程技巧和程序运行效率。
三、课程设计题目:题目:显示系统当前时间与日期要求设计界面提示信息为:“Please input DATE(D) OR TIME(T)OR QUIT(Q):”,从键盘键入“D”,可显示系统日期。
从键盘输入“T”,可显示系统时间。
从键盘输入“Q”,退出程序。
利用DOS的系统功能调用的2AH和2CH功能调用,读取系统日期和时间。
将日期和时间转换为相应的ASCII码字符,显示在屏幕上。
四、课题分析这个题目是显示系统当前时间与日期,这就需要用DOS的2A号功能---取系统日期和2C号功能---取系统时间,以及BIOS的06号功能---清屏或上卷,02号功能---制光标位置。
汇编语言程序设计实验教程教学设计
汇编语言程序设计实验教程教学设计一、教学目标1.掌握汇编语言的基本指令和编程思想;2.能够使用汇编语言进行简单程序设计;3.能够理解计算机底层运行原理。
二、教学内容1.汇编语言基础知识(常用指令、流程控制、数据传输等);2.简单的程序设计实例(数值计算、字符串处理等);3.实验环境的搭建和使用。
三、教学方法1.讲授型教学结合实例演示;2.学生自学课程材料和实验操作指南;3.实验探究和讨论;4.组织小组项目,鼓励合作学习。
四、教学过程第一周本周教学目标:讲解汇编语言基础知识和常用指令。
时间安排教学内容教学方式第一课时引言:计算机底层工作原理讲授时间安排教学内容教学方式第二课时汇编语言概述讲授第三课时汇编语言基本指令(数据传输)讲授+实例演示第四课时汇编语言基本指令(逻辑运算)讲授+实例演示第二周本周教学目标:讲解汇编语言的流程控制和程序设计实例。
时间安排教学内容教学方式第一课时汇编语言基本指令(流程控制)讲授+实例演示第二课时程序设计实例(数值计算)讲授+实例演示第三课时程序设计实例(字符串处理)讲授+实例演示第四课时总结回顾讲授第三周本周教学目标:实验环境的搭建和使用,以及实验探究和讨论。
时间安排教学内容教学方式第一课时实验环境搭建实验操作指导第二课时实验一:初识汇编语言编程实验操作指导+实验探究第三课时实验二:数值计算的汇编实现实验操作指导+实验探究第四课时实验三:字符串处理的汇编实现实验操作指导+实验探究第四周本周教学目标:自主学习和小组项目。
时间安排教学内容教学方式第一-四课时自主学习和小组项目自主学习+小组研究五、考核方式1.实验报告和代码评分;2.期末考试和综合评价。
六、教学资源1.课程PPT和课程材料;2.实验指导书和实验代码;3.在线学习平台和资料共享平台。
七、教学效果评价在本门课程学习结束后,学生应能够熟练掌握汇编语言的基本知识和编程思想,能够使用汇编语言进行简单程序设计,能够理解计算机底层运行原理。
DOS课程设计汇编显示日期
DOS课程设计汇编显示日期一、教学目标本节课的教学目标是让学生掌握DOS环境下汇编语言编程的基本技能,能够使用汇编语言编写程序显示系统日期。
具体分为以下三个方面的目标:1.知识目标:使学生了解DOS环境下汇编语言的基本语法和编程方法,理解汇编语言与机器码的关系,掌握如何使用汇编语言访问系统功能和硬件资源。
2.技能目标:培养学生具备使用汇编语言编写简单程序的能力,能够独立完成显示系统日期的汇编程序编写和调试。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,激发学生主动探索和学习计算机编程的内在动力,培养学生的团队协作意识和解决问题的能力。
二、教学内容本节课的教学内容主要包括以下几个部分:1.DOS环境下汇编语言的基本语法和编程方法。
2.汇编语言与机器码的关系及其转换过程。
3.使用汇编语言访问系统功能和硬件资源的方法。
4.编写和调试汇编语言程序的技巧。
5.汇编语言编程实践:编写显示系统日期的汇编程序。
三、教学方法为了达到本节课的教学目标,将采用以下几种教学方法:1.讲授法:讲解DOS环境下汇编语言的基本语法、编程方法和汇编语言与机器码的关系。
2.案例分析法:分析示例程序,让学生了解如何使用汇编语言编写程序。
3.实验法:让学生动手编写和调试汇编语言程序,巩固所学知识。
4.讨论法:在课堂上鼓励学生提问、交流和分享心得,提高学生的团队协作能力和解决问题的能力。
四、教学资源为了支持本节课的教学内容和教学方法的实施,将准备以下教学资源:1.教材:《DOS汇编语言编程教程》。
2.参考书:提供一些汇编语言编程的参考书籍,以便学生课后自学。
3.多媒体资料:制作课件和教学视频,帮助学生更好地理解汇编语言编程的相关概念。
4.实验设备:为学生提供计算机和汇编语言编程所需的开发环境及实验设备。
五、教学评估本节课的教学评估将采取多元化方式,以全面、客观、公正地评价学生的学习成果。
评估方式包括:1.平时表现:观察学生在课堂上的参与程度、提问回答、小组讨论等表现,以了解学生的学习态度和实际操作能力。
汇编设计(显示系统时钟)
课程设计设计题目:学号:班级:姓名:成绩:一、系统时间显示程序设计功能:调用系统时间,并将调用的用二进制表示的时间数转换成ASCII码,并将时间存入显存区。
将存在显存区的时间用字符串的形式显示出来,并且增加功能选项来控制显示的颜色和显示的位置。
二、主要的设计思想由用户输入前景色和背景色,输入行和列,存入数据段。
利用int 21h中断(ah=2ah和ah=2ch)调取系统时间,存入数据段。
然后依次取数据段中存储的时间字符和颜色结合组成一个数(大小两个字节,颜色在高位,字符在低位)送到段地址为b800偏移地址为(行*160+列*2)的内存区,就可以得到一个带颜色的字符,再取下一个时间字符和颜色,循环显示得到一次结果。
然后循环调用获得系统时间,输出时间子程序,得到变化的时间。
按下任意键退出程序。
三、主要程序框图四、 源代码.model small.386.stack 200h;************************************************************数据段.dataa db 16,'please input the position. $'b db 16,'please input the color.$'c db '1:red 2:blue 3:green 4:black 5:white $'d db 16,'please input the row 1-25 :$'e db 16,'please input the cloun 1-80 :$'f db 16,'please input the backgroud color :$'g db 16,'please input the foreColor :$'返回h db 0dh,0ah,16,'you set backcolor and forecolor the same color.$'x db 0dh,0ah,16,'press any key to exit the program.$'i db '/// ::: ' ;时间中间的间隔符savetime db 10 dup(0) ;用于保存时间savecolor db 2 dup(0) ;用于保存颜色(背景和前景色)saveposition dw 2 dup(0) ;用于保存位置(行和列)color db 4h,1h,2h,0,0fh ;分别对应颜色红、蓝、绿、黑、白;*****************************************************************数据段结束.codemain proc farstart:push dssub ax,axpush axmov ax,@datamov ds,ax;-------------------------------------------------------------------------------------------------------------------- lea dx,b ;用于提示信息mov ah,9hint 21hcall linefeedcall linefeedlea dx,c ;用于提示信息mov ah,9hint 21hcall linefeedlea cx,fcall setColor ;********* *****调用子程序用于设置颜色(前景和背景色)mov savecolor[0],al ;把颜色存到内存中s00:lea cx,gcall setColor ;********** ****调用子程序用于设置颜色(前景和背景色)mov savecolor[1],al ;把颜色存到内存中cmp al,savecolor[0] ;提示两次输入颜色相同否则不执行jnz s01lea dx,h ;用于提示信息mov ah,9h ;用于提示信息int 21h ;用于提示信息jmp short s00;------------------------------------------------------------------------------------------------------------------------s01:call linefeedlea dx,a ;用于提示信息mov ah,9h ;用于提示信息int 21h ;用于提示信息call linefeedlea cx,drepeat1:call setPosition ;**** ********调用子程序用于存贮行和列cmp bl,0 ;判断输入是否合法jl repeat1cmp bl,24jg repeat1mov ax,bxmov cl,0a0hmul clmov saveposition[0],ax ;把行号乘160后存储lea cx,erepeat2:call setPosition ;***** ******调用子程序用于存贮行和列cmp bl,0 ;判断输入是否合法jl repeat2cmp bl,79jg repeat2mov ax,bxmov cl,2mul clmov saveposition[2],ax ;把列号乘2后存储mov dx,offset xmov ah,9int 21h;---------------------------------------------------------------------------------------------------------------------------- repeat00:call datetime ;******* *调用子程序存储时间;----------------------------------------------------------------------------------------------------------------------------mov ax,0b800h ;设置显示段地址mov es,axmov di,saveposition[0]add di,saveposition[2] ;di中为要显示位置的偏移地址mov al,savecolor[0]mov cl,4shl al,cladd al,savecolor[1]mov bh,al ;先把颜色存到al再存到bhmov eax,0mov si,0call showtime ;****** *****调用子程序用于显示时间;---------------------------------------------------------------------------------------------------------------------- mov dl,0ffhmov ah,6int 21hjz repeat00retmain endp;--------------------------------------------------------------------------------------------------------------------datetime proc near ;****** *** 子程序存储时间;时间依次存在savetime数组中mov ah,2Ah ;时间依次存在savetime数组中int 21hmov word ptr savetime[0],cxmov savetime[2],dhmov savetime[3],dlmov savetime[4],almov ah,2Chint 21hmov savetime[5],chmov savetime[6],clmov savetime[7],dhmov savetime[8],dlret;------------------------------------------------------------------------------------------------------------------ setColorproc near ;******* ****调用子程序用于设置颜色(前景和背景色)call linefeedmov dx,cx ;用于提示信息mov ah,9hint 21hcall linefeeds0:mov ah,1hint 21hsub al,30hcmp al,1 ;判断输入是否合法jl s0cmp al,5djg s0mov bl,al ;把颜色的二进制数值先存在al中mov bh,0mov al,color[bx-1]ret;------------------------------------------------------------------------------------------------------------- setPositionproc near ;******** *子程序用于存贮行和列push cxcall linefeedmov dx,cx ;用于提示信息mov ah,9hint 21hcall linefeedmov bx,0 ;以下几行用于把输入的数保存在bx寄存器中newchar:mov ah,1int 21hsub al,30hjl exit0cmp al,9djg exit0cbwxchg ax,bxmov cx,10dmul cxxchg ax,bxadd bx,axjmp newcharexit0:dec bxpop cxret;------------------------------------------------------------------------------------------------------------------- showtimeproc near ;**********子程序用于显示时间mov dx,word ptr savetime[si] ;输出年mov cx,1000dcall divAllmov cx,100dcall divAllmov cx,10dcall divAllmov cx,1dcall divAllmov bl,i[eax]mov es:[di],bx ;用于输出符号“/”add di,2add si,2inc eaxshow: ;循环输出后面的时间,每次循环输出一个两位数时间mov bl,savetime[si]mov dl,blmov dh,0mov cx,10dcall divAllmov cx,1dcall divAllinc simov bl,i[eax]mov es:[di],bx ;循环输出符号“/或:”inc eaxadd di,2cmp si,8jng showretdivAllproc near ;功能输出具体的数字到屏幕上push bxpush axmov ax,dxmov dx,0div cxadd al,30hmov bl,almov es:[di],bxadd di,2pop axpop bxretlinefeed ptr near ;换行的子程序mov dl,0dhmov ah,2hint 21hmov dl,0ahint 21hretend start五、总结报告(1)课程设计中所遇到的主要问题和解决方法。
《汇编语言》课程设计报告显示系统时间.
《汇编语言》课程设计报告题目:院(系):班级:姓名:学号:指导教师:1设计主要任务这个程序主要是用来显示系统时间的程序。
在这个程序中,主程序首先设置显示方式,取系统时间后将时间保存,继续设置显示方式,利用BIOS的INT 1AH的2号系统功能调用,将计算机系统的时间参数(BCD码)送入寄存器,将用BCD码表示的时、分、秒转换成ASCII码并进行显示。
读字符串到al 中进行判断是否为结束,然后进行显示时间。
后又重新取系统时间。
然后进行一系列的判断是否有进位。
有则进行进位操作,否则重新取系统时间。
1.1设计任务与目标任务:对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。
汇编语言程序设计课程设计是在教学实践基础上进行的一次大型实验,也是对该课程所学理论知识的深化和提高。
因此,要求学生能综合应用所学知识,设计与制造出具有较复杂功能的应用系统,并且在实验的基本技能方面上进行一次全面的训练。
培养学生综合运用所学知识独立完成汇编程序课题的能力。
使学生能够较全面地巩固和应用课堂中所学的基本理论和程序设计方法,能够较熟练地完成汇编语言程序的设计和调试。
提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。
培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。
培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。
目标:用“时:分:秒”(均为两位)的形式连续显示系统时间。
利用BIOS 的INT 1AH的2号系统功能调用,将计算机系统的时间参数(BCD码)送入寄存器,将用BCD码表示的时、分、秒转换成ASCII码并进行显示。
2 设计方案(1)在DOS环境下完成,先利用BIOS功能调用中显示器驱动程序的00H 类型调用,设置显示器的显示模式为80*25彩色。
汇编语言程序设计课程设计_编写一个时钟程序
课程设计报告课程名称汇编语言程序设计课题名称编写一个时钟程序专业班级学号姓名指导教师2011年3 月6 日课程设计任务书课程名称汇编语言程序设计课题编写一个时钟程序专业班级学生姓名学号指导老师审批任务书下达日期2011年2 月28 日任务完成日期2011年3 月6 日一、设计内容与设计要求1.课程设计目的:《汇编语言程序设计》是计算机专业的重要的专业基础课,通过本课程设计使学生进一步巩固课堂所学,全面熟悉、掌握8088宏汇编语言程序设计的基本方法和技巧,进一步提高编写程序、阅读分析程序及上机操作、调试程序的能力。
2.课题题目1)用“*”画菱形框2)读入一个文本文件并以DEBUG中的D命令格式显示。
3)文件加密程序4)编写一个时钟程序5)画网格线6)画脉冲波图形7)测量任意程序的运行时间8)计算比赛成绩3.设计要求:1)在一周内学生须上机16小时以上,程序调试完后,须由指导老师在机器上检查运行结果,经教师认可后的源程序可通过打印机输出。
2)分组及安排A.每组同学必须完成所指定的题目,每个同学须自己完成设计,应有不同的思路。
B.按学号分组,第一组为1、9、17、25、33号同学,第二组为2、10、18、26、34号,第三组为3、11、19、27、35号,依次类推,其中第一组做第一题,第二组做第二题,依次类推。
3)按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。
4)不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计,成绩的考核按上机表现、答辩成绩及课程设计说明书来综合评定。
成绩分为优、良、中、及格、不及格五级分评定。
二、进度安排第2 周星期一 8时:00分——12时:00分星期二 8时:00分——12时:00分星期三 8时:00分——12时:00分星期四 8时:00分——12时:00分课题1.用“*”画菱形框要求:A、背景为蓝色、“*”为红色,菱形框画在屏幕中间,菱形中间为空格。
汇编语言编程在屏幕右上角显示系统时间
汇编语言编程:在屏幕右上角显示系统时间汇编语言编程:在屏幕右上角显示系统时间在系统加电初始化期间,把系统定时器初始化为每隔约55毫秒发出一次中断请求,CPU在响应定时器中断请求后转入8H号中断处理程序,BIOS提供的8H号中断处理程序中有一条中断指令INT 1CH,所以每秒要调用到约18.2次1CH号中断处理程序,而BIOS的1CH号中断处理程序实际上并没有做任何工作,只有一条中断返回指令。
------------------------------------------------------------------------------------------系统Int 08h系统定时器由系统时钟每秒大约调用18.2次(每小时65536次)调用寄存器:无返回寄存器:无注释:Int 08h是一个每秒钟要调用18.2次的中断,用于完成高级的各种计数,该中断直接与系统时钟芯片的通道0相连。
要编写实用程序中的TSR,如SideKick,就会发现Int 08h对于由定时来触发的任务来说是特别有用的。
此中断要调用Int 1Ch(定时计数)。
因此大多数TSR应该连接到Int 1Ch而不是连接到Int 08h上。
由于每隔55毫秒此中断就被调用一次,因而,面向该中断的处理程序必须尽可能快地执行。
中断处理只能是处理器系统常规使用的一小部分。
并且,由于计时器被当作IRQ0(高优先级硬件中断),因而会优先于同一系统上的其它中断而服务于中断Int 08h。
若对该中断处理得不好,就会导致服务于其它的重要中断(如磁盘服务)时出现问题。
注意,由于在Int 08h处理程序完成其处理之前调用了Int 1Ch(计时器的用户拴接),因而,面向该中断的操作也领先于其它任何硬件中断请求而得以执行。
富有经验的软件设计人员则常常利用这一事实。
地址0040:006Ch是一个32位按天计算的时间(time-of-day)指示符,计数自启动以来的时间计数。
用汇编语言显示系统日期时间
国家示范性软件学院汇编程序设计与组成原理课程设计姓名: _______ _班级: _______ _学号: _______ _指导老师: _______ _成绩: _______ _评语一. 课程设计的目的及意义通过课程设计,主要达到以下目的:1. 使学生增进对汇编语言的认识,加强用汇编语言编程的能力。
2. 使学生掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制等。
3. 使学生了解和掌握汇编语言程序设计过程、方法及实现,为以后微机原理课程的学习打下良好基础。
(垃,圾,文库,叫你说我文档质量偏低)二. 基本内容题目:显示系统当前时间与日期要求设计界面提示信息为:“Please input DATE(D) OR TIME(T)OR QUIT(Q):”,从键盘键入“D”,可显示系统日期。
从键盘输入“T”,可显示系统时间。
从键盘输入“Q”,退出程序。
利用DOS 的系统功能调用的2AH 和2CH 功能调用,读取系统日期和时间。
将日期和时间转换为相应的ASCII 码字符,显示在屏幕上。
(垃,圾,文库,叫你说我文档质量偏低) (垃,圾,文库,叫你说我文档质量偏低) (垃,圾,文库,叫你说我文档质量偏低)三. 系统功能结构框图(垃,圾,文库,叫你说我文档质量偏低) (垃,圾,文库,叫你说我文档质量偏低) (垃,圾,文库,叫你说我文档质量偏低)主程序MAIN(显示界面提示信息,根据键盘输入的字符调用各子程序) 子程序DATEDISPLAY(调用DOS 的2AH 功能,取系统当前日期,将日期转换成对应的ASCII 码值并显示)子程序TIMEDISPLAY(调用DOS 的2CH 功能,取系统当前时间,将时间转换成对应的ASCII 码值并显示)CALLCALL四. 系统流程框图五. 源程序代码;*************清屏宏定义***********CLEAR_SCREEN MACRO ;宏定义,设置七个参数MOV AH,06H ;AH=06屏幕初始化或上卷指定的行 MOV AL,00H ;清屏INT 10H ;调用BIOS 功能 MOV AH,02H ;制定光标位置 MOV BH,00H ;第0页 MOV DH,00H ;第0行 MOV DL,00H ;第0列 INT 10H ENDM;*********定义堆栈段******** STACK SEGMENT DB 200 DUP (?) tos label byte STACK ENDS;*********定义数据段******** DATA SEGMENTSTR00 DB ' |********** Welcome! **********|$' ;提示界面 STR01 DB 0DH,0AH,' |* *|$' STR02 DB 0DH,0AH,' |* This is a display program. *|$'开始设置显示方式为80×25彩色文本方显示界面提示信息从键盘输入单个字符判断字符显示系统日期显示系统时间提示输入错误结束D(d)T(t)otherQ(q)STR03 DB 0DH,0AH,' |* D: display Date *|$' STR04 DB 0DH,0AH,' |* T: display Time *|$' STR05 DB 0DH,0AH,' |* Q: Quit *|$' STR06 DB 0DH,0AH,' |* *|$' STR07 DB 0DH,0AH,' |********************************|$' STR08 DB 0DH,0AH,'Please input a char: $'INPUTER DB 0DH,0AH,'Input Error!',0DH,0AH,'$'DATEDIS DB' 0000-00-00 ',0AH,'$';显示DATETIMEDIS DB' 00:00:00',0AH,'$';显示TIMEDATA ENDS;*********定义代码段********CODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MAIN PROC FARMOV AH,00H ;AH=0设置显示模式MOV AL,03H ;设置80*25图形显示INT 10HCLEAR_SCREEN ;调用宏定义MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXmov sp,offset tos;*******显示宏定义********;用于显示字符串SHOW MACRO strLEA DX,strMOV AH,9INT 21HENDMSHOW STR00SHOW STR01SHOW STR02SHOW STR03SHOW STR04SHOW STR05SHOW STR06SHOW STR07INPUT:SHOW STR08 ;显示输入提示MOV AH,01 ;键盘输入并回写INT 21HCMP AL,"D";与D比较JE PRINT_DATE ;相等转PRINT_DATE打印日期CMP AL,"d"JE PRINT_DATECMP AL,"T";与D比较JE PRINT_TIME ;相等转PRINT_TIME打印时间CMP AL,"t"JE PRINT_TIMECMP AL,"Q";与Q比较JE EXIT ;相等转EXIT退出程序CMP AL,"q"JE EXITSHOW INPUTER ;显示输入错误JMP INPUTPRINT_DATE:CALL DATEDISPLAY ;调用日期显示子程序JMP INPUT ;继续输入字母PRINT_TIME:CALL TIMEDISPLAY ;调用时间显示子程序JMP INPUT ;继续输入字母EXIT: ;结束,退出程序MOV AH,4CHINT 21HMAIN ENDP;*********日期显示子程序*********DATEDISPLAY PROC NEARMOV AH,2AH ;取当前系统日期INT 21HMOV AX,CX ;送年份入AX作为被除数【年份存在CX中】MOV BX,10 ;(BX)=10LEA SI,DATEDIS+4 ;使SI指向年的最后一位【从0开始数】MOV CX,4 ;(CX)=4 年的位数,循环4次PUSH DX ;DX入栈,保存月日TAB:XOR DX,DX ;DX清零,存余数DIV BX ;(DX,AX)/BX,商送AX,余数送DXADD DL, 30H ;余数与30H相加变为字符的ASCII码MOV [SI], DL ;余数送入SI所指向的字节区DEC SI ;SI减一LOOP TAB ;循环4次POP DX ;DX还原MOV AL, DL ;日送AL【日存在DL中】XOR AH, AH ;AH清零DIV BL ;AX/BL,商送AL,余数送AH【AL为十位,AH为个位】ADD AX, 3030H ;转变为数字字符的ASCII码LEA SI, DATEDIS+9 ;使SI指向日的十位MOV [SI], AX ;(AX)送SI所指向的字节区MOV AL, DH ;月送AL 【月存在DH中】XOR AH, AH ;AH清零DIV BL ;AX/BL,商送AL,余数送AH【AL为十位,AH为个位】ADD AX, 3030H ;转变为数字字符的ASCII码LEA SI, DATEDIS+6 ;使SI指向月的十位MOV [SI], AX ;(AX)送SI所指向的字节区SHOW DATEDIS ;显示日期RET ;调用后返回DATEDISPLAY ENDP;*********时间显示子程序*********TIMEDISPLAY PROC NEARMOV AH,2CHINT 21HMOV BX,10MOV AL,CH ;CH存时XOR AH,AHDIV BLADD AX,3030HLEA DI,TIMEDIS+1MOV [DI],AXMOV AL,CL ;CL存分XOR AH,AHDIV BLADD AX,3030HLEA DI,TIMEDIS+4MOV [DI],AXMOV AL,DH ;DH存秒XOR AH,AHDIV BLADD AX,3030HLEA DI,TIMEDIS+7MOV [DI],AXSHOW TIMEDISRET ;时间调用返回TIMEDISPLAY ENDPCODE ENDSEND START六.使用说明七.参考文献[1]沈美明、温冬婵,《IBM-PC汇编语言程序设计(第二版)》,清华大学出版社,2010年10月。
汇编汇编语言课程设计电子时钟
课程设计任务书专业计算机科学与技术班级姓名设计起止日期设计题目:电子时钟设计任务(主要技术参数):[1]硬件环境:CPU:1.6GH以上内存:4GB以上[2]软件环境:操作系统:Windows 8运行环境:masm.Exe[3]设计任务:要求有显示位置:屏幕中央;日期显示格式"时:分:秒";12/24时制可调;在显示屏上显示提示语“CURRENT TIME IS:”和当前时间;整点和半点报时功能。
指导教师评语:成绩:签字:年月日电子时钟1.课程设计目的汇编语言是面向机器的程序设计语言。
在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。
这样用符号代替机器语言的二进制代码,就把机器语言变成了汇编语言。
汇编语言能够最大限度的发挥硬件的性能。
本次课程设计我做的是计算机时钟模拟显示程序的设计,要求有显示位置:屏幕中央;日期显示格式"时:分:秒";12/24时制可调;在显示屏上显示提示语“CURRENT TIME IS:”和当前时间。
在这次课程设计中我加入了整点和半点报时功能。
使得程序更加完善。
2.设计思路2.1设计任务及要求(1)使用汇编语言设计一个运行于计算机的时钟模拟显示软件,软件应实现模拟显示时钟。
(2)根据任务书的要求,可知需要设计的计算机时钟模拟显示程序是基于汇编语言的WINDOWS应用程序设计,程序运行成功后,页面出现数字式的时钟。
具体过程如下首先界面中间出现“TIME SYSTEM IS:”提示输入12/24时制。
输入以后会出现“CURRENT TIME IS:”提示输入初值时间其格式为:时(XX):分(XX):秒(XX)。
接着就会在界面出现所设的初值开始计时其输出格式为XX:XX:XX。
并且到半点或整点会报时。
此模拟时钟外观简洁明了,功能和实际运用到的时钟的基本功能一样,用起来非常方便、快捷。
2.2设计原理1. 12/24时制的设置调用DOS操作系统模块1,输入12/24时制的第一位即高位,再调用DOS操作系统模块1输入12/24时制的第二位即低位。
汇编语言显示系统时间、日期程序
汇编语言显示系统时间、日期程序姓名:院(系):专业:学号:任务起止日期:课程设计题目:微机中断接口实践与编程课程设计要求:设计内容:1、要求有自己设计的菜单和功能合理、可用的选项,可以随意设计只要合理就达到要求。
2、完成的程序能够说明所使用的接口,并且给出一定接口使用演示。
3、在测试程序中能够明确的是说选用了哪一类中断入口,中断入口的特征是什么,有哪些使用方式,在你所设计的程序中使用了哪一部分。
4、接口程序应该有明确的输入和输出,并且能够解释输入和输出的含义。
5、(难度加分项目1)同时在你的程序中使用两类入口进行程序设计的可以在总成绩加上10分。
6、(难度加分项目2)能够合理运用接口编写全自动程序的给予15分加分。
设计要求1、项目1-4为题目内要求项目,要求必须逐项全部完成;2、项目5、6为难度项目,不要求必须完成。
有能力的小组在完成实验要求1后,考虑选择尝试完成。
3、2人一个小组完成题目。
要求每个组员必须要有明确的分工,要独立完成一部分的内容(可以组内自己分工),或者要有独立制作的功能,能够在实训报告中体现出各自的分工内容;4、小组根据本实验提纲书写完成期末实训报告,要求每个人分别写一份,在提交实验程序的同时提交实训报告,否则不予计分;5、,不论使用哪类入口函数做接口,只要能够完成实验内容1-4都认为达到要求。
工作计划及安排:1、6月25日早上,根据老师发的资料,选择课程设计的内容以及实现功能的端口,拟定题目。
2、针对所选的方案,寻找相关素材,并对素材进行分析收集。
3、6月26日,组员讨论处理过的素材,研究其含义,不懂的问班上其他同学或老师。
4、经过讨论选出要使用的接口,并知道接口程序的输入和输出的含义。
5、6月27—28日,应用Editplus3软件进行程序设计。
编好后进行调试验证,直到调试成功能显示时间日期并且能对其进行修改。
6、6月29日,对设计调试好的程序写实验报告。
程序代码完成、报告完成,上交老师。
汇编语言实时时钟程序设计教材
xor dl,dl
mov dl,cl
mov dh,cl
mov cl,4
shr dl,cl
add dl,30h ;转化成相应的ASCII码
mov ah,02
int 21h ;光标处显示分的第一位
mov cl,dh
and cl,0fh
add cl,30h ;转化成相应的ASCII码
程序如下:
mov dh,0ah ;行数
mov dl,35 ;列数
mov bh,0 ;页数
mov ah,2
int 10h ;确定光标的位置,使其居在中间
mov cx,2000h
mov ah,01h
int 10h;隐藏光标
3.2
获取系统的时间,用程序将系统的时间调用,使显示的时间和系统的时间同步变化,其中时间的时分秒显示都是需要先转换成相应的ASCII码,再显示在屏幕上。
图1主程序设计流程图
2.2
可知,在时间的获取时,需要时、分、秒分别获取,显示时使用的是相应的ASCII码。加上分隔符“:”,共同组成完整时钟显示,我们对子程序做流程图,如图2所示。
图2子程序流停移动,使时间能不停地显示时间的时分秒,并使其显示界面不消失,并随着系统时间的变化而同步变化,隐藏光标使界面看起来更美观。
1.3
每隔一秒显示系统时钟;可以重复输入,有退出键功能。
第二章
2.1
由方案设计分析可知,此次设计比较简单,先初始化程序,然后设立光标,在光标移动时,不断地取时,取分,取秒,并不断的循环。在循环的过程中,当按下ESC键时退出程序;当按下其它键时,程序继续运行,并显示时间界面,再按下ESC键时,程序又将退出。
int 21h ;光标处显示时的第一位
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
;输出毫秒 mov bh,dl call adjust mov es:[120+18],al mov es:[120+20],ah
pop es pop ds pop bx pop ax iret showtime endp
mov ax,2c00h ;调用 21h 号中断的 2ch 功能 int 21h
;输出时钟 mov bl,':' mov bh,ch call adjust mov es:[120],al mov es:[1ห้องสมุดไป่ตู้0+2],ah mov es:[120+4],bl
;输出分钟 mov bh,cl
6
call adjust mov es:[120+6],al mov es:[120+8],ah
2.程序驻留并结束
;调用 21 号中断的 31h 程序结束并驻留功能 mov ax,3100h mov dx,proclen int 21h
3.显示系统时间
showtime proc push ax push bx push ds push es mov ax,cs mov ds,ax mov ax,0b800h mov es,ax
9
六.源程序
assume cs:code,ds:code stack segment
db 128 dup(?) stack ends
code segment start:
;ss 段寄存器的装入 mov ax,stack mov ss,ax mov sp,128
;重定位中断程序的入口地址 lea dx,showtime mov ax,seg showtime mov ds,ax mov ax,251ch int 21h
;输出秒钟 mov bh,dh call adjust mov es:[120+12],al mov es:[120+14],ah mov es:[120+16],bl
;输出毫秒 mov bh,dl call adjust mov es:[120+18],al mov es:[120+20],ah
pop es pop ds pop bx pop ax iret showtime end
pop es pop ds pop bx pop ax iret showtime endp
intchar proc push cx
mov bh,al mov bl,bh mov cl,4 shr bh,cl and bl,0fh
add bh,30h add bl,30h
pop cx ret intchar endp proclen equ $-showtime code ends end start
通过这一次的课设练习,对汇编了解了很多,更加的巩固了以前学习的那些基础知 识,同时我也发现在写汇编程序中要注意的很多细节:
1. 对重要的语句块,子程序必须记得的写注释,不然很难让人看懂,除非你不想让 别人看懂它,上机的过程中,一同学要我帮他去看一下他在网上下载过来的源程序,整 个程序下来就没有看到一个注释,200 多行的代码,让人怎么看啊!!!!
功能模块图如下:
开始
重定位中断程 序入口地址
调用程序结束 并驻留功能
系统按每秒 18。2 次的频率调用
显示时间模块
N
按任意键
结束
Y
结束
5
三.主要功能实现
1.重定位入口地址
;重定位中断程序的入口地址 lea dx,showtime mov ax,seg showtime mov ds,ax mov ax,251ch int 21h
课程设计报告
课程名称 汇编语言程序设计 课题名称 显示系统时间
专业 班级 学号 姓名 指导教师
计算机科学与技术 计算机 0901
200903010128 饶发强 唐北平
2011 年 12 月 23 日
湖南工程学院 课程设计任务书
课程名称 课题
专业班级 学生姓名 学号 指导老师 审批
汇编语言程序设计 显示系统时间 计算机 0901
显示系统时间的流程图如下:
开始
输出时钟
输出分钟
输出秒钟
输出毫秒
结束
7
四.上机调试
程序运行结果如下:
调试过程遇到了一些问题,主要的是显示结果为乱码的情况,通过 debug 调试,发 现原来是把两位数的时间转换为两个对应的字符输出时出现了问题,原来在《汇编语言》 ---王爽 写得那本书上看到介绍 CMOS 存取块时说过其中就保存有当前的系统时间,我 也自己用代码实现过,应为那里面保存两位的时间是用组合型 BCD 码来实现的,受它的 影响在实现调用系统时间中断功能时也想它是不是也是这样实现的,或者根本就是调用 了它的值,后来才发现自己想错了,该过之后就得出了上面真确的结果。 在编写程序 过程中也出现一些编译错误,但我认为这些都是最低级的错误,和容易就能通过编译器 的提示把它解决,这里就没说了。
2. 要合理,真确的利用自定义的堆栈来保护好寄存器的值,只要把入口参数,和子 程序中要用到的寄存器的值保护起来就好了,输出参数是不能保护的,在调试程序的过 程中我就出现了应为把输出参数也保护起来的低级的错误。
3. 合理的利用 debug 功能,会是你在调试程序过程中事半功倍。刚开始认为调用系 统时间中断,保存在对应寄存器中的值是用组合型 BCD 码形式保存的(因为 CMOS 中存 取的系统时间就是用组合型 BCD 码来存取的)。于是我直接通过移位操着得到其高四位, 低四位的值,并输出来,发现结果时乱码,后来通过 debug 功能,查看对应寄存器中的 值,发现原来就是用十进制形式保存的,直接除以 10 就可以得到其余数和商,输出即 可。
11
另外附上用直接调用 70,71 号端口显示系统时间的源程序: assume cs:code,ds:code stack segment
db 128 dup(?) stack ends
code segment start:
mov ax,stack mov ss,ax mov sp,128
lea dx,showtime mov ax,seg showtime mov ds,ax mov ax,251ch int 21h
学了一学期的汇编,一个这么小小的程序还不能完成那真是白学了,况且平时花在 这门课程上的时间也不少。于是,我不断的鼓励自己,一定能做得出来的,看不懂的地 方我就到网上去查,问身边的同学,经过一下午的努力终于把那示例程序调试了出来。 也大致清楚了我要做的那题的基本思路,后来根据那个示例程序的提示,在晚上就把它 弄出来了。
200903010128 唐北平
任务书下达日期 2011 年 12 月 1 日 任 务 完 成 日 期 2011 年 12 月 23 日
2
目录
一、课题主要功能………………………………………………………………………4 二、课题的功能模块的划分………………………………………………………5 三、课题主要功能实现………………………………………………………………6 四、上机调试………………………………………………… …… ……………………8 五、心得体会………………………………………………………………………………9 六、附录(原程序)……………………………………………………………… …10
mov ax,3100h mov dx,proclen int 21h
showtime proc push ax push bx push ds push es mov ax,cs mov ds,ax mov ax,0b800h mov es,ax
mov ah,':' mov al,4 out 70h,al in al,71h call intchar mov es:[120],bh mov es:[120+2],bl mov es:[120+4],ah
mov al,2
12
out 70h,al in al,71h call intchar mov es:[120+6],bh mov es:[120+8],bl mov es:[120+10],ah
mov al,0 out 70h,al in al,71h call intchar mov es:[120+12],bh mov es:[120+14],bl
mov ax,2c00h ;调用 21h 号中断的 2ch 功能 int 21h
;输出时钟 mov bl,':' mov bh,ch call adjust
10
mov es:[120],al mov es:[120+2],ah mov es:[120+4],bl
;输出分钟 mov bh,cl call adjust mov es:[120+6],al mov es:[120+8],ah
;调用 21 号中断的 31h 程序结束并驻留功能 mov ax,3100h mov dx,proclen int 21h
showtime proc push ax push bx push ds push es mov ax,cs mov ds,ax mov ax,0b800h mov es,ax
3
一.课题的主要内容
我做的是第三个课题:利用 INT 1CH(大约每秒中断 18.2 次)编写一个中断驻留程 序,要求在屏幕的右上角显示计算机中当前系统时间,显示格式为
时:分:秒:1/100 秒
4