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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(微机原理实习报告电子时钟用汇编语言实现.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机原理实习报告电子时钟用汇编语言实现.docx

1、微机原理实习报告电子时钟用汇编语言实现河南农业大学 课 程 设 计 报 告题 目:电子时钟显示设计课 程:微型计算机原理专 业:电子信息工程班 级:学生姓名:学 号:指导教师:完成日期:机电工程学院 目 录前言 .1 第一章 绪论 .2一、 实习目的 2二、实习要求 .2三、 设计所需设备 2 第二章 软件系统介绍 .3 一、 中断技术 (或其它相关技术 .3(一 介绍中断的概念中断技术 .3(二 DOS 及 BIOS 中断 .3二、 汇编语言及汇编工具简介 .3三、 软件介绍 .3 第三章 设计分析 4一、 软件设计思路 .4二、 软件各模块内容 .4(一 光标定位子程序原理 .4(二 清屏

2、原理 .4(三 字符及字符串显示原理 .4(四 压缩 BCD 转为 ASCII 码原理 .5(五 动态扫描键盘原理 .5三、 程序流程图设计 .5 第四章 系统实现 .7一、 程序原代码清单及详细注释 .7二、 实验结果 . .15 总结 .16一、 软件的选取 .16二、 图案的设计 .16三、 程序调试 .16参考文献 .16前言软件设计题目电子时钟。 (在计算机屏幕上显示当前系统的时间,日期,或时间和日期, 3人一组设计目的:1. 了解定时 /计数器和中断(DOS/BIOS的使用;2. 掌握定时 /计数器和中断的工作原理和编程方法。编程要求:1. 调用系统时间,在屏幕上显示出来;2. 获

3、取键盘的按键值,判断键值并退出系统。程序设计参考步骤:第一部分:定义显示界面。第二部分:调用系统时间 (日期 , 并将调用的用二进制表示的时间数转换成 ASCII 码, 并将时间数(日期数存入内存区。第三部分:将存在系统内存区的时间数(日期数用显示字符串的形式显示出来。 第四部分:获取键盘的按键值,判断键值并退出系统。第一章 绪论 一、实验目的1. 理解掌握定时 /计数器和中断的使用方法。2. 掌握微机常用的输入输出方式及接口技术。3. 掌握一定的汇编语言知识,培养自己的动手操作能力。4. 学习程序设计的基本思路和方法。二、实习要求1. 调用系统时间,在屏幕上显示出来;2. 获取键盘的按键值,

4、判断键值并退出系统。三、设计所需设备 :PC 机第二章 软件系统介绍一、中断技术(或其它相关技术(一介绍中断的概念中断技术在微机中,当 CPU 在执行过程中时,由于随机的事件(包括 CPU 内部的和 CPU 外部的事件 引起的 CPU 暂时停止正在执行的程序, 而转去执行一个用于处理该事件的程序称为中断式服务 程序(或称中断处理程序,处理完后又返回被终止的程序断点处继续执行,这一过程成为中段 (二 DOS 及 BIOS 中断通过调用 DOS 系统的 8号功能实现控制字符的输入, 通过调用延时程序实现十分之一秒的定 时,通过调用 DOS 系统的 2号功能实现光标定位,调用 DOS 系统的 2号功

5、能实现字符的输出,通 过调用 DOS 系统的 9号功能实现字符串的输出。二、汇编语言及汇编工具简介汇编语言 (AssemblyLanguage是面向机器的程序设计语言。 在汇编语合中, 用助记符 (Memoni代替操作码,用地址符号 (Symbol或标号 (Label代替地址码。这样用符号代替机器语言的二进制 码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序, 机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程 序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为 汇编。EMU8086是学习汇编

6、必不可少的工具,它结合了一个先进的原始编辑器、 组译器、 反组译 器、具除错功能的软件模拟工具(虚拟 PC ,还有一个循序渐进的指导工具。 Emu8086同主 流汇编程序相比,语法简单得多,但是它能生成兼容8086的机器语言。可以直接对通用寄存 器,段寄存器,直接进行汇编编址操作,而且便于直接生成 exe 文件进行操作。三、软件介绍这个电子时钟可以通过 DOS 命令实现对系统时间进行调用,并且直接显示出来,按 C 或 c 直接修改时间,然后按 ESC 退出此时的程序第三章 设计分析一、 软件设计思路先在数据段开一段显示缓冲区, 用来存储系统时间, 调用子程序的清屏部分。 调用 DOS 中断,

7、得到系统当前时间,并将其二进制转换成 ASCII 码。再分别将小时数、分钟数、秒数存入显示缓 冲区,在修改时间的时候调用键盘输入输出程序实现时钟的修改功能,然后存入结束字符$。 调用 DOS 字符串显示功能将时间显示在显示器上,调用屏幕的 I/O中断,定位光标的开始位置, 将时间显示在预先定义好的位置。把程序设计成用刷新的方式来不断获取系统的时间,这样就有了会一秒一秒走动的电子时 钟。二、软件各模块内容(一光标定位子程序原理DOS显示屏为 25行、 80列,左上角为(0, 0 ,右下角(18,4F 设置光标,可调用 BIOS 系统,用汇编语句调用中断 INT10H 。入口信息为(AH=2 要设

8、置光标;(BH=0 页号;(DH,DL =光标的行号、列号(二 清屏原理开始执行程序时为保证有一个洁净的屏幕,可使显示屏做上滚动作,使屏幕留下一片空白。 要使屏幕上滚,可用汇编语句 INT 10H ,入口信息为(AH =6 使屏幕上滚(AL =00上滚行数(CH , CL =滚动区域左上角的行、列号(DH , DL =滚动区域右下角的行、列号(BG =00 颜色的设置(三字符及字符串显示原理通过调用 DOS 系统模块 2只能是西安 DL 中的一个字符的显示。为了实现字符串的显示,调 用其 9号模块功能,其入口信息为(AH =9 显示字符串的功能模块(DS:DX 指向字符串的首地址,要求字符串以

9、字符 $结尾。4(四 压缩 BCD 转为 ASCII 码原理(1.两位的:先将压缩 BCD 码的高 4位取出,右移四位后,与 30H 相或,存到相应内存单 元;然后将低 4位取出,与 30H 相或,存到下一内存单元。(2.一位的:原数字加 30H(五 动态扫描键盘原理运用 INT 21H的 8号功能来实现动态扫描键盘。如果有键按下,则相应的键值的 ASCII 码被 存到 AL 中。判断 AL 中的数值,若不是控制字符,则继续循环,从而实现动态扫描键盘。 三、程序流程图设计56 第四章 系统实现一、 程序原代码清单及详细注释;-数据段定义阶段 -data segmentmess1 DB ( &

10、& (o ,0ah,0dh DB & & Happy New * Year ,0ah,0dhDB * * * * ,0ah,0dhDB * * * * * * * * ASM ASSIGNMENT * ,0ah,0dhDB * * * * * * ELECTRONIC CLOCK * ,0ah,0dhDB * * * * * *Designed by ZhangLei ChengQin and WuXiao* ,0ah,0dhDB * * * * * * Press C or c to correct the time * ,0ah,0dhDB * * * * * * Press ESC bu

11、tton to exit * ,0ah,0dhDB * * * * * ,0ah,0dhDB * * * * * * ,0ah,0dhDB * * * * ,0ah,0dh,$TS DB ?,0ah,0dhDB ?,0ah,0dhDB =*=*=,0ah,0dhDB Please input the new time (hh:mm:ss:,0dh,0ah,$ ; 提示输入时间的格式 mess2 db The Time is:,0ah,0dh,$HCQ db 40 ; 在数据段开一段时间显示缓冲区,大小为 40个字节hor db ? ; 为变量分配一个字节的空间,初值为任意字符7min db ?

12、 ; 为变量分配一个字节的空间,初值为任意字符sec db ? ; 为变量分配一个字节的空间,初值为任意字符data ends;-堆栈段定义阶段 -stack segmentdb 100 dup(? ; 定义 100个字节的堆栈段stack ends;-代码段定义阶段 -code segmentassume cs:code,ss:stack,ds:data ;确定各个逻辑段的类型start:call clear ;调用清屏子程序display: ;时间显示部分mov ax, data ; 将 DATA 的段基地址送到寄存器 AXmov ds,ax ; 将 AX 寄存器的内容存到 DS 中mov

13、 bx,offset HCQ ; 送 HCQ 的偏移地址到 BXmov ah,2ch ; 调用 DOS 时间调用功能 , 功能号 :2cH,小时 , 分钟 , 秒数 int 21h ; 分别保存在 CH,CL,DH 中mov al,ch ; 小时数设定mov ah,0 ; 此处置零是为了call C16-10 ; 调用进制转换子程序inc bx;-mov al,: ; 显示分隔符号mov bx,al ; 将寄存器内容存入 BX 中inc bx ; 寄存器指向的地址 +1;-mov ah,2ch ; 调用 DOS 时间调用功能 , 功能号 :2cH,小时 , 分钟 , 秒数8int 21h ;

14、分别保存在 CH,CL,DH 中mov al,cl ;分钟数设定mov ah,0 ;将该位置零call C16-10inc bx;-mov al,: ; 显示分隔符号mov bx,al ; 将寄存器内容存入 BX 中inc bx ;寄存器指向的地址 +1;-秒的设计 -mov ah,2ch ; 秒设定int 21hmov al,dhmov ah,0 ;将该位置零call C16-10inc bx;-mov al,$ ; 将字符串的结束位送至显示缓冲区的最后一位 mov bx,al;-push bx ; 修改时间显示的地方mov ah,2 ; 置光标位置 ,调用功能号 AH=2mov bh,0

15、; 置显示模式mov dh,17 ; DH 跟 DL 分别为行号与列号 , 并入栈保护 BX mov dl,50 ; 显示输出在第 17行int 10h ; 显示输出在 51列pop bxlea dx,HCQ ; 送 HCQ 偏移地址到 DX, 并调用 DOS 显示功能 , 功能号为 9 mov ah,9 ; 调用 DOS 9号功能,显示字符串int 21hpush bxmov ah,2 ; 置光标位置调用 DOS 的功能 , AH=2mov bh,0 ; 置显示以下模式mov dh,1 ; 修改前面附加的内容的显示位置mov dl,0int 10hlea dx,mess1 ; 取 m ess

16、1的有效地址赋给 DXmov ah,9 ; 调用 DOS 9号功能,显示字符串int 21hpop bx ;BX 寄存器出栈push bx ;PUSH BXmov ah,2 ; 置光标位置mov bh,0 ; 置显示模式mov dh,17 ; 定位在 17行mov dl,35 ; 定位在 35列int 10hpop bxlea dx,mess2 ; 取 mess1的有效地址赋给 DXmov ah,9int 21h;-mov ah,1 ; 调用键盘 I/O中断功能号 1, 获取键值到 AL int 16hcmp al,c ; 是 c 键 , 转到时间修改程序je Corcmp al,C ; 是

17、C 键 , 转到时间修改程序je Corcmp al,1bhjz quit ; 是 ESC 键 , 退出程序jmp displayquit:mov ah,4ch ; 程序终止功能号int 21hretCor: call correct ; 调用时间修改子程序;-C16-10 PROC NEARPUSH CXMOV AH,0 ; 16位二进制数转换为 ASCII 码MOV CX,10D ; 基数 10DIV CL ; 用除 10取余的方法转换为 BCD 码(二进制码ADD AX,3030H ;BCD 码转换为 ASCII 码的代码MOV BX,AL ; 此时将低八位的 AL 加载到 BX 中,

18、BX指的是寄存器 BX 指向的内存单元INC BX ; BX 指向的存储单元加一MOV BX,AHPOP CXRETC16-10 ENDP;-clear proc nearpush ax ; 入栈保护现场push bxpush cxpush dxmov ax,0600h ; ah=06(滚动 al=00(全屏空白 mov bh,2eh ; 设置背景颜色 (2和前景颜色 (esub cx,cx ; 将寄存器清零mov dx,5f5fh ; 设备重定向 子功能号功能描述int 10hpop dx ; 出栈恢复现场pop cxpop bxpop axretclear endp;-correct pr

19、oc NEAR ; 时间修改子程序call input ; 调用键盘输入子程序输入数据mov ch,hormov cl,minmov dh,secand dl,0hmov ah,2dh ; 调用 DOS 功能调用系统时间并修改系统时间 int 21hjmp startretcorrect endp;-input proc NEAR ; 键盘输入子程序push ax ; 入栈保护数据push bxpush cxpush dxpushfmov dx,offset TS ; 显示修改时间的格式提示mov ah,09h ; 显示字符串,提示的内容int 21h ; 调用 DOS 功能mov dx,OF

20、FSET HCQ ; 数据缓冲区的数据输入mov ah,0ah ; 带缓存的键盘输入(字符串int 21hand dx,0h ; 将寄存器置零lea bx,HCQ ; 向 BX 装入有效地址inc bx ; 地址 +1inc bx ; 跳过:mov dh,bx ; 将 BX的内容储存到寄存器 DH 中sub dh,30h ; 将得到的 ASCII 码转化为 16进制的数据 inc bx ; 地址加 1mov dl,bx ; 分sub dl,30h ; 转化为 16进制的数据mov cl,10 ; 计数器计数十次mov al,dh ; 将 DH 的内容送入寄存器mul cl ; 通过减 30h

21、,再乘 10的方法得到该二进制数 add al,dl ; 然后将两个数据相加mov ch,al ; 存入时间mov hor,al ; 将寄存器的内容存入 HOR 中inc bxinc bxmov dh,bx ; 将 ASCII 码转换为二进制数sub dh,30hinc bx mov dl,bx sub dl,30h mov cl,10 mov al,dh mul cl add al,dl mov cl,al mov min,al inc bx inc bx mov dh,bx sub dh,30h inc bx mov dl,bx sub dl,30h mov cl,10 mov al,dh

22、 mul cl add al,dl mov dh,al mov sec,al popf pop dx pop cx pop bx pop ax ret input endp ;-14 ;乘以 10 ;将 ASCII 码转换为二进制数 ;出栈恢复数据 code ends end start 二、 实验结果 点击运行后,出现运行的结果如下: 当按下c或C时显示提示符“please input the new time(hh:mm:ss:” 15 总结 “纸上得来终觉浅,绝知此事要躬行”,这是本次课程设计我最大的体会。刚开始时,看着 老师给的参考材料,心里想“这个课程设计不是很难的事情嘛,把这几个子

23、程序堆一块不就完 了”,可是真正做起来时,才发现事情远非想的那么简单。从上机软件的选取,到课程设计报告 的最终完成,我们经历了很多曲折,也收获了很多,下面具体阐述一下。 一、软件的选取 古语云:工欲善其事必先利其器。汇编语言上机软件和流程图绘制软件的选取对此次课程设 计非常重要。经过对比我们最终选取了 EMU8086 最终也能熟练操作这款软件。这是此次设计较 大的收获。 二、图案的设计 为了能得到一个比较漂亮的界面显示,我们在图案设计上花了不少功夫。很多次设计的图案 很漂亮,可是搬到程序里面运行时却是一堆乱码,让我们很沮丧.还有要把秒表的显示正好调 到图案正中央,我们也经过了多次调试。在这个过

24、程中,我们学会了耐心,去除浮躁,平心静气 的把程序一遍遍的修改、调试,臻于完美。 三、 程序调试 程序调试前,我们检查了好几遍。可是调试时还是错误百出。尤其是“;”的使用,一定要 区分英文输入的分号和中文分号的区别,还有字符串结束时一定要加$,否则会出现乱码。 这些都是调试中发现的问题,只有注意细节,细心,才能顺利完成任务。 通过本次课程设计,我加深了对课汇编语言的理解,同时熟练掌握了汇编语言的编辑、调试 软件。在以后的学习生活中还要继续保持严谨认真的科学态度,保持不断尝试和探索的耐心,保 持勇于解决问题的决心。不断地向老师、同学们学习、交流,分享吸取他们的经验,更好的提高 自己。 参考文献 微型计算机原理P150158、P166171 张荣祥 中国电力出版社 微型计算机原理与接口技术(第二版) 冯博琴 吴宁主编 清华大学出版社 16

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

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