问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

汇编语言电子时钟的课程设计

发布网友 发布时间:2022-04-30 10:41

我来回答

5个回答

热心网友 时间:2022-06-21 08:42

;name: ELECTRONIC CLOCK
data segment
mess1 db ' ****************ASM ASSIGNMENT**************** ',0ah,0dh
db ' ',0ah,0dh
db ' ***************ELECTRONIC CLOCK*************** ',0ah,0dh
db ' ',0ah,0dh
db ' ',0ah,0dh
db ' *******Press C or c to correct the time******* ',0ah,0dh
db ' ',0ah,0dh
db ' ***********Press ESC button to exit*********** ',0ah,0dh,'$'
tn db 'Please input the new time (hh:mm:ss):',0dh,0ah,'$'
mess2 db '*******Time is:',0ah,0dh,'$'
t_buff db 40 ;在数据段开一段时间显示缓冲区
db ?
db 40 p (?)
hor db ?
min db ?
sec db ?
fg db 0
data ends

stack segment
db 100 p(?)
stack ends

code segment
assume cs:code,ss:stack,ds:data ;确定各个逻辑段的类型
start:
call clear ;调用清屏子程序

display: ;时间显示部分
mov ax,data
mov ds,ax
mov bx,offset t_buff ;送t_buff的偏移地址到BX
mov ah,2ch ;调用DOS时间调用功能,功能号:2cH,小时,分钟,秒数分别保存在CH,CL,DH中
int 21h
mov al,ch ;小时数设定
mov ah,0
call bctd ;调用进制转换子程序
push ax
and al,0f0h ;选取al高四位
mov cl,4 ;设置右循环的次数
rol al,cl ;右循环
or al,30h ;加30h得到ACSII码
mov [bx],al ;将得到的结果送到t_buff缓冲区
inc bx ;BX自加1,指针指向下一个缓冲区的下一个地址

pop ax
and al,0fh ;选取低四位
or al,30h
mov [bx],al ;将转换后的低四位值送入缓冲区的第二个地址
inc bx
;----------------------------------------------------------
mov al,':' ;显示分隔符号
mov [bx],al
inc bx
;-------------------------------------------------------
mov ah,2ch
int 21h

mov al,cl ;分钟数设定
mov ah,0
call bctd
push ax
and al,0f0h
mov cl,4
rol al,cl
or al,30h

mov [bx],al
inc bx
pop ax
and al,0fh
or al,30h
mov [bx],al
inc bx
;-------------------------------------------------------------------------
mov al,':' ;显示分隔符号
mov [bx],al
inc bx
;-------------------------------------------------------------------------

mov ah,2ch ;秒设定
int 21h
mov al,dh
mov ah,0
call bctd
push ax
and al,0f0h
mov cl,4
rol al,cl
or al,30h

mov [bx],al
inc bx
pop ax
and al,0fh
or al,30h
mov [bx],al
inc bx
;----------------------------------------------------------------------
mov al,'$' ;将字符串的结束位送至显示缓冲区的最后一位
mov [bx],al
;------------------------------------------------------------------------
push bx ;置光标位置 ,AH=2,BH=0,DH跟DL分别为行号与列号,并入栈保护BX
mov ah,2
mov bh,0
mov dh,17
mov dl,41
int 10h
pop bx
lea dx,t_buff ;送t_buff偏移地址到DX,并调用DOS显示功能,功能号为9
mov ah,9
int 21h

push bx ;置光标位置
mov ah,2
mov bh,0
mov dh,0
mov dl,0
int 10h
pop bx
lea dx,mess1
mov ah,9
int 21h

push bx ;置光标位置
mov ah,2
mov bh,0
mov dh,17
mov dl,21
int 10h
pop bx

lea dx,mess2
mov ah,9
int 21h

;-----------------------------
call delay1
mov ah,1 ;调用键盘I/O中断功能号1,获取键值到AL
int 16h
cmp al,'c' ;是c键,转到时间修改程序
je Cor
cmp al,'C' ;是C键,转到时间修改程序
je Cor
cmp al,1bh
jz quit ;是ESC键,退出程序
jmp display

quit:
mov ah,4ch ;程序终止功能号
int 21h
ret

Cor: call correct ;调用时间修改子程序
;-------------------------------
bctd proc near ;二进制转BCD码子程序
;AX输入参数
;AX输出参数,存放调整过的BCD码
mov dx,ax
mov ax,0
mov cx,16 ;设循环次数
bctd1:
clc ;清进位标志C
rcl dx,1 ;通过进位的循环右移
adc al,al ;带进位加法
daa ;加法的十进制调整
xchg al,ah ;交换高、低八位
adc al,al
daa
xchg al,ah
loop bctd1 ;循环次数保存在CX里
ret
bctd endp
;-------------------------------------------
clear proc near
push ax ;入栈保护现场
push bx
push cx
push dx
mov ax,0600h ;ah=06(滚动)al=00(全屏空白)
mov bh,3eh ;设置背景颜色(2)和前景颜色(e)
sub cx,cx
mov dx,5f5fh
int 10h
pop dx ;出栈恢复现场
pop cx
pop bx
pop ax
ret
clear endp

;-----------------------------------------
delay1 PROC ;精确延迟时间子程序

MOV DX,04ffh ;循环次数
up: XOR CX,CX
a: NOP
LOOP a
DEC DX
JNZ up
RET
delay1 ENDP
;----------------------------
correct proc ;时间修改子程序
call input ;调用键盘输入子程序输入数据
mov ch,hor
mov cl,min
mov dh,sec
and dl,0h
mov ah,2dh
int 21h
jmp start
ret
correct endp
;----------------------------------
input proc ;键盘输入子程序
push ax ;入栈保护数据
push bx
push cx
push dx
pushf

mov dx,offset tn ;显示修改时间的格式提示
mov ah,09h
int 21h

mov dx,offset t_buff ;数据缓冲区的数据输入
mov ah,0ah
int 21h
and dx,0h
lea bx,t_buff
inc bx
inc bx
mov dh,[bx]
sub dh,30h
inc bx
mov dl,[bx]
sub dl,30h
mov cl,10
mov al,dh
mul cl
add al,dl
mov ch,al
mov hor,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
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
mul cl
add al,dl
mov dh,al
mov sec,al
popf ;出栈恢复数据
pop dx
pop cx
pop bx
pop ax
ret
input endp
;----------------------------
code ends
end start

热心网友 时间:2022-06-21 08:43

有人回答出来了怎么还不给分啊

热心网友 时间:2022-06-21 08:43

驱动CRT显示,真晕。也不知道谁想出的这个问题,真是高手,模数结合。那需要你会单片机还要明白显像管显示器的显示原理,开发出这个估计去公司可以工程师了。

热心网友 时间:2022-06-21 08:44

曾经杭电的单片机课程设计和你的有些像,不过是在8字管上显示的,比较容易。

怎么控制CRT显示我不知道,返回DOS应该是什么DOS系统调用的不知道,其它应该不难的吧。
以前学微机原理与接口的时候整过8086的汇编,现在早忘记光光了。

只能给你一点我关于这个问题的理解,如果愿意就给一点点分数,不愿意也没关系。

一个积存器用来保存 时分秒。秒,另一个积存器用来保存当前的时分秒。秒
时分秒。秒 和 时分秒之间的切换用一个子程序实现转换。模式1直接显示,模式2转换后显示。设置时间么,(汇编我不懂,不知道有没有变量的概念的)我从C的角度出发,就是时存于一个变量,按某个按键,切换到分设置,等等,然后把这些变量的值综合成0.1秒单位计时的数值,装入积存器。
没想过用汇编去解决问题啊,因为我汇编除了51的学过之外,其它都没学过,最多只是看得懂简单的指令,比如说跳转,装载什么的,不会拿汇编去实现什么复杂的功能。我觉得根本没必要啊。除了机器相关的,其他用C实现多方便。
我可以猜测这是你老师布置的作业,或者也可能是课程设计的。
只能说到这了

热心网友 时间:2022-06-21 08:45

好难~- -
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
华为freebuds4i切歌怎么操作_华为freebuds4i怎么切歌 华为freebuds pro切歌方法_华为freebuds pro怎么切歌 华为耳机怎么切换下一曲 欧美电影,好像是宠物有一个世界,宠物会想办法跟主人的灵魂互换占据 ...的名字,欧洲中世纪,一个王子的继母把他的灵魂和狗的灵魂互换了... 问一部外国电影的名字 剧情记得不大清楚l了 是前几年的片子 灵魂互换的... HUAWEI 华为 AGS2-W09 10.1英寸平板电脑 (香槟金、64GB+4GB、WiFi版... 诛仙3百法和千法差距大吗 微信怎么解除应用授权登录 授权应用删除方法 微信怎么解除应用授权登录授权应用删除方法 化纤面料的衣服三伏天穿热不热? 教靠地型和道具赢的单机游戏 我有一块12864的液晶模块,应该如何的去使用12864液晶模块? 全屏滚动的原理是什么?用到了css的那些属性 元旦要吃汤圆吗 电脑w7系统桌面图标一样怎么恢复? w7桌面图标怎么还原?急急急 w7电脑桌面图标以前的没有了,怎么恢复 Oppo a59m 手机怎么强制解锁 请问oppoa59手机怎样双清!我的锁屏密码忘记了!谢谢! 用solidworks这个椭圆半球怎么画 oppo a59s 怎么强制恢复出厂? 用solidworks怎么画椭圆的凹面 solidworks三维椭圆弹簧怎么画。急急急!!! oppoa59m怎么格机 solidworks如何做出椭圆曲面 怎么用solidworks画椭圆球体 solidwork怎么画,特别是环绕半椭圆凸起来的那个……谢谢 solidworks中怎样画椭圆形的胶垫? solidworks绘制椭圆螺旋管怎么画啊,急急急! 如何详细的去使用12864液晶模块 怎么显示MacBook顶部菜单栏 怎么创号 ADM3251E的器件特性 怎么QQ创号? 怎么创号? TLP127与TLP181有什么区别? HCNR201的特点 灯具UL认证要求有那些 请推荐一种光耦,可以实现将3.3V单片机输出的脉冲转为24V高电平的脉冲 吃鸡卡密正确怎么激活不了 光耦的耐压,是不是指的持续1分钟加指定的电压不坏掉的意思? ul1598标准 N si 8120NOQ有效期是几年 绝地求生卡密怎么拿货 请问一下蛋糕粉能用低筋面粉代替吗 急急急 白雪蛋糕粉还可以用什么代替 做蛋糕的蛋糕粉能不能换成淀粉? 奶粉可以替代蛋糕粉么,就是家里有好多婴儿奶粉,想只用奶粉做蛋糕可以么? excel表格中,如何在合并后的大格左上方输入文字