没有合适的资源?快使用搜索试试~ 我知道了~
用汇编语言编写程序,使其能实现在PC机上用电子时钟时、分、秒的格式显示时间的功能。
资源推荐
资源详情
资源评论
程序源代码:
data segment
mess1 db '
****************ASM ASSIGNMENT**************** ',0ah,0dh
db ' ',0ah,0dh
db '
***************ELECTRONIC CLOCK*************** ',0ah,0dh
db ' ',0ah,0dh
db '
*****Designed by Xie jiasheng and Guoding***** ',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 dup (?)
hor db ?
min db ?
sec db ?
fg db 0
data ends
stack segment
db 100 dup(?)
stack ends
code segment
data segment
mess1 db '
****************ASM ASSIGNMENT**************** ',0ah,0dh
db ' ',0ah,0dh
db '
***************ELECTRONIC CLOCK*************** ',0ah,0dh
db ' ',0ah,0dh
db '
*****Designed by Xie jiasheng and Guoding***** ',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 dup (?)
hor db ?
min db ?
sec db ?
fg db 0
data ends
stack segment
db 100 dup(?)
stack ends
code segment
assume cs:code,ss:stack,ds:data ;确定各个逻辑段的类型
start:
call clear ;调用清屏子程序
display: ;时间显示部分
mov ax,seg 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
;-------------------------------------------------------
start:
call clear ;调用清屏子程序
display: ;时间显示部分
mov ax,seg 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
;-------------------------------------------------------
剩余9页未读,继续阅读
资源评论
duanxiaojun114001
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功