发的第二篇文章,尽管技术不牛,但还是希望给大家一些帮助。
大致讲一下内容,就是微机原理结课的一个课程设计,使用8086模拟器做一个数字时钟。也没有使用什么比较牛的技术,就是不停的用DOS中断(系统函数)去获取系统时钟,然后对获取的数据转换为对应的ACSII值,然后显示。(这里有初始化一个简单的提示信息)
代码如下:
datas segment
STR DB ‘2021/’
STR1 DB ‘present time:′STR2DB′exit:pleaseesc!' STR2 DB 'exit:please esc!′STR2DB′exit:pleaseesc!’
datas ends
stacks segment;此处输入堆栈段代码
stacks ends
codes segment
assume cs:codes,ds:datas,ss:stacks
start:mov ax,datas
mov ds,ax

ready1:mov dh,00h;行数
mov dl,0 ;列数
mov bh,0 ;页数
mov ah,2
int 10h ;确定光标位置,使其居中
mov cx,2000h
mov ah,01h
int 10h ;设置光标类型,隐藏光标

;显示日期2021/
mov ax,datas
mov ds,ax
LEA bx, str
mov cx,5

llp:mov ah,02h
mov dl,[bx]
inc bx
int 21h
loop llp

;显示月份、日
ready2:
mov ah,2ah
int 21h
mov ax,dx
push ax
pop cx
push cx
xor ax,ax
mov al,ch
mov bl,10
div bl
mov bx,ax
mov dl,bl
add dl,30h
mov ah,02h
int 21h
mov dl,bh
add dl,30h;
int 21h
mov dl,’/’
int 21h

pop cx
xor ax,ax
mov al,cl
xor bx,bx
mov bl,10
div bl
mov bx,ax
mov dl,bl
add dl,30h
mov ah,02h
int 21h
mov dl,bh
add dl,30h
int 21h

;显示提示词
ready3:
mov dh,08h;行数
mov dl,35 ;列数
mov bh,0 ;页数
mov ah,2
int 10h ;确定光标位置,使其居中
mov cx,2000h
mov ah,01h
int 10h ;设置光标类型,隐藏光标
mov ah,9
LEA dx,STR1
int 21h

mov dh,0ch;行数
mov dl,35 ;列数
mov bh,0  ;页数
mov ah,2
int 10h   ;确定光标位置,使其居中
mov cx,2000h
mov ah,01h
int 10h   ;设置光标类型,隐藏光标
mov ah,9
LEA dx,STR2
int 21h

ready4:
;打印小时
mov dh,0ah;行数
mov dl,35 ;列数
mov bh,0 ;页数
mov ah,2
int 10h ;确定光标位置,使其居中
mov cx,2000h
mov ah,01h
int 10h ;设置光标类型,隐藏光标
mov ah,2ch
int 21h
;push dx
push cx

;xor dl,dl
pop cx
;push cx
xor ax,ax
;mov ax,ch
mov al,ch
mov bl,10
div bl
;mov bx,ax
mov dx,ax
;mov dl,bl
add dl,30h
mov ah,02h
int 21h
mov dl,dh
add dl,30h
int 21h
mov dl,':'
int 21h

go:

mov dh,0ah;行数
mov dl,38 ;列数
mov bh,0  ;页数
mov ah,2
int 10h   ;确定光标位置,使其居中
mov cx,2000h
mov ah,01h
int 10h   ;设置光标类型,隐藏光标mov ah,2ch
int 21h
push dx
push cx;打印分
pop cx
xor ah,ah
mov al,cl
mov bl,10
div bl
;mov bx,ax
mov dx,ax
;mov dl,bl
add dl,30h
mov ah,02h
int 21h
mov dl,dh
add dl,30h
int 21h
mov dl,':'
int 21h

;打印秒
;xor dx,dx
pop cx
xor ax,ax
mov al,ch
mov bl,10
div bl
mov dx,ax
add dl,30h
mov ah,02h
int 21h
mov dl,dh
add dl,30h
int 21h

a1: mov ah,0bh ;调用dos功能0bh检测键盘是否有输入
int 21h
cmp al,00h
jne a2 ;如果有输入,则跳转到a2
jmp go ;如果没有输入,则跳转到go
a2: mov ah, 08h
int 21h ;调用dos功能08h判断键盘输入的字母
cmp al,1bh ;判断键盘是否输入esc
je exit ;如果输入esc跳转到exit
jmp go ;重新跳回开头
exit:mov ah, 4ch
int 21h
codes ends
end start
运行结果如下:
如果在emu8086模拟器上运行时有跳秒的现象请看一下心得。(最后答辩的时候老师解释是模拟器上就这样,用DOSBox就好很多)
一,理论不等于实践。以我们起初的想法,利用cpu的高速性不停的读取系统时钟然后转换,显示时钟理论上我们认为cpu的速度足够快,只要读取系统时钟的时间间隔足够小就可以很准确的显示时钟,可是事实并不如我们猜想的那样。最开始的代码我们希望能够对年,月份,日期,小时,分钟,秒都进行实时显示,可是我们在实现的时候发现循环体内的代码量很大,读取系统时间的时间间隔太长,最后的结果就是年份,月份,日期,小时都能正常显示,因为这些属性的时间跨度大,但是对分钟的显示就没有那么准确了,秒数的显示更是离谱,跳秒的现象严重。后来我们分析原因,尽可能的减小读取系统时钟的时间间隔,可是效果并不明显,后来我们妥协了,我们选择对非重要信息作一次性初始化显示,对重要信息作实时性显示,我们显示时钟的准确度大大提高。
二,如何阅读他人的代码。和很多人一样,我们最开始也是希望能够通过网络参考一些别人的代码,甚至有现成的更好,但是当我们去尝试阅读别人的代码时,就发现读不懂,一方面是自己的知识掌握不牢阅读起来吃力,另一方面是难以静下心来,内心浮躁。最好的是要在内心上接受这段代码,先跟着作者的思路尝试理解作者的代码,不懂得地方可以网上检索一些信息,然后去论证自己思路的可行性。
三,检索信息。网上的信息多而繁,如何快速筛选有用信息就显得很重要了,这个需要自己通过大量的实践总结自己的索引方式,比如收藏一些优质的网站,优秀的博主。四,对开发环境的学习,在实践的过程中我们不仅需要学习编程更要熟悉你所使用的编程软件,因为这有可能让你事半功倍,这点我深有体味,这里不再赘述。以上就是我们小组对这次课程设计的总结和体会吧,我们也确实学习到了很多东西。

汇编语言 emu8086 电子时钟 课程设计相关推荐

  1. c语言电子时钟课程设计报告,电子时钟嵌入式课程设计报告

    <电子时钟嵌入式课程设计报告>由会员分享,可在线阅读,更多相关<电子时钟嵌入式课程设计报告(19页珍藏版)>请在人人文库网上搜索. 1.合海大学计算机信息工程学院(常州)课程设 ...

  2. 单片机电子时钟的设计(期末课程设计)

    题目:单片机电子时钟的设计 设计一个时钟,可以正常显示时分秒,也可以通过按键改变分钟和小时,且有整点提醒功能 1.能够正常计时并且能够显示小时.分钟.秒,10分. (1)正常显示秒,2分 (2)正常显 ...

  3. 电子信息处理课程设计-用blinker实现的arduino小车和ESP32桌面时钟

    文章目录 前言 一.利用blinker和arduino c语言设计的环境监测小车(自我认知为大杂烩) 1.物品准备 2.界面设计 3.arduino mega2560控制小车 4.esp32cam做传 ...

  4. 数字电子时钟的设计与实现

    摘 要 钟表的数字化给人们生产生活带来了极大的方便,大大的扩展了原先钟表的报时.诸如,定时报警.按时自动打铃.时间程序自动控制等,这些,都是以钟表数字化为基础的.功能数字钟是一种用数字电路实现时.分. ...

  5. 计数器的设计--电子技术课程设计说明书--模99

    < 计数器的设计> 电子技术课程设计说明书 目录 < 计数器的设计> 电子技术课程设计说明书 引言 方案比较 电路设计 电路的仿真 结论 参考文献: 引言 计数是一种最简单基本 ...

  6. 数字电子技术课程设计——盲人报时钟

    数字电子技术课程设计 盲人报时钟 任务书 0.1  设计课题 盲人报时钟 0.2  设计目的 (1)     掌握盲人报时钟的设计.组装和调试方法. (2)     掌握声响模块的设计. 0.3  设 ...

  7. 电子电路课程设计——8位数字抢答器设计论文

    江苏广播电视大学 (电子电路课程设计--8位数字抢答器设计论文) 班级: 姓名: 指导老师: 日期:2010年10月 目录 一.摘要 二.前言 三.设计目的与要求 1 .设计目的 2. 设计要求 四. ...

  8. 数字电子技术课程设计-八路抢答器

    数字电子技术课程设计-八路抢答器 大学生活逐渐虚度光阴,不知道干了啥都已经快大三了~~~~ 做的东西还是有一些bug,到最后答辩完事之后就开始复习期末考试了,没时间再整 有错误请指正 目录 第一章 课 ...

  9. c语言图形时钟编程,C语言图形时钟课程设计实验报告.doc

    C语言图形时钟课程设计实验报告.doc 目录 1.系统功能要求 . 2. 数据结构设计及 说明 . 3.程序结构(画流程图) . 4.各模块的功能 . 5.试验结果(包括输入数据和输出结果) . 6. ...

  10. c语言时钟报告,C语言图形时钟课程设计实验报告

    C语言图形时钟课程设计实验报告 目录1.系统功能要求.2. 数据结构设计及说明.3.程序结构(画流程图) .4.各模块的功能.5.试验结果(包括输入数据和输出结果) .6.体会.7.参考文献.8.附录 ...

最新文章

  1. 你是一个职业的页面重构工作者吗?
  2. 电梯维修属于什么服务器,电梯维修属于建筑服务中的修缮服务吗?
  3. Scala Iterator(迭代器)详解
  4. python get argument_Python-Web框架-get_argument方法
  5. android 自定义弹窗diss,Android中自定义PopupWindow,动态弹窗。
  6. 手机应用只清理不够,还要卸载
  7. PHP文件上传类(页面和调用部分)
  8. 用户自定义变量、系统变量、环境变量
  9. 工业上服务器无线投屏到电视,台式电脑支持无线投屏吗 如何投屏到电视上
  10. MySQL基础(2)----DDL DML DQL语言完成数据库的增删改查操作 数据备份(导入导出sql包) 单表查询
  11. Ubuntu卸载Anaconda步骤
  12. 深海迷航坐标传送代码_深海迷航秘籍代码大全 美丽水世界秘籍代码使用教程...
  13. 【C#】Activator.CreateInstance用法
  14. 你好2020,再见2019(年终总结)
  15. Apple?apple!
  16. linux 虚拟光驱软件,在Linux操作系统下使用虚拟光驱的方法
  17. python调用谷歌地图_使用Python调用谷歌地图并记录运动轨迹进行可视化
  18. Python中os.listdir的排序问题
  19. Qt中国象棋之棋子的实现
  20. 毕业论文 入侵防御系统在企业网络中的应用

热门文章

  1. APK反编译JAVA源码
  2. java自定义表单系统_java自定义表单
  3. javascript 阮一峰入门教程
  4. listview控件在php的使用方法,VBA窗体之ListView控件的基本应用 | VBA实例教程
  5. 几款经典css框架下载
  6. hexo之Volantis主题美化
  7. CF621E Wet Shark and Blocks
  8. 详解超网技术(路由聚合技术)
  9. java之pdf打印
  10. 数值线性代数徐树方pdf_MIT线性代数4-8:矩阵分解,向量空间,列空间和零空间,线性方程组求解...