汇编课设 显示系统时间 汇编语言程序设计
《汇编语言》课程设计报告显示系统时间

《汇编语言》课程设计报告显示系统时间《汇编语言》课程设计报告题目:院(系):班级:姓名:学号:指导教师: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彩色。
- 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