社区
community_281
帖子详情
汇编语言来完成"按指定格式显示时间程序设计"
岳丰源
2007-12-01 07:53:53
基本功能:读取微机系统当前日期及时钟信息,并按英文格式显示在屏幕上。如2008年1月1日14点38分28秒,显示为“JAN 1,2008 14:38:28”。
增强功能:计算该日期是当年的第几天并显示结果。
...全文
356
5
打赏
收藏
汇编语言来完成"按指定格式显示时间程序设计"
基本功能:读取微机系统当前日期及时钟信息,并按英文格式显示在屏幕上。如2008年1月1日14点38分28秒,显示为“JAN 1,2008 14:38:28”。 增强功能:计算该日期是当年的第几天并显示结果。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
knowledge_Is_Life
2008-05-01
打赏
举报
回复
这个简单啊,网上搜一下就得到答案了.
岳丰源
2008-03-07
打赏
举报
回复
我的源代码:
希望有高手进行指点:
DIS MACRO A
PUSH DX ;DIS 宏定义开始
MOV DL,A ;显示特殊字符
MOV AH,2
INT 21H
POP DX
ENDM
WRITE MACRO B ;WRITE 宏定义开始
LEA DX,B ;显示字符串
MOV AH,9
INT 21H
ENDM
PRIN MACRO C,D ;PRIN宏定义开始
MOV AL,C ;功能:显示数据
CBW ;特殊字符
CALL RADIX
DIS D
ENDM
stack segment ;堆栈段开始
db 200 dup(0)
stack ends
data segment ;数据段开始
INP db 0dh,0ah,'The information of day and time display:$'
OUTPUT db 0dh,0ah,'Today of this year is: $'
TAB db 'JAN$','FEB$','MAR$','APR$','MAY$','JUN$',
'JUL$','MUG$','SEP$','OCT$','NOV$','DEC$'
DAT dw 0,31,59,90,120,151,181,212,243,273,304,334
DAT1 DW 0,31,60,91,121,152,182,213,244,274,305,335
;闰年查DAT1,非闰年查DAT;用查表的方法来显示月份和统计天数
data ends
code segment ;代码段开始
assume cs:code,ds:data,ss:stack
start:
mov ax,data ;
mov ds,ax ;数据段地址给DS
mov ax,stack ;
mov ss,ax
WRITE INP ;提示显示信息
call print ;调用显示日期和时间的子程序
WRITE OUTPUT ;提示统计信息
call ACOUNT ;调用统计第几天的子程序
mov ah,4ch ;结束
int 21h
RADIX PROC NEAR ;子程序定义开始
push cx ;功能:将字的十六为无符号数二进数转换成十进制并显示出来
push dx ;入口参数:AX --待转换的十六位无符号二进数
mov cx,0 ;无出口参数
Lop: ;
mov dx,0 ;把高位数置0
mov bx,10 ;进行十进制转换
div bx
push dx
inc cx
or ax,ax ;AX!=0继续循环
jne Lop
Lop1: pop ax
cmp al,10 ;判断一下是否在0-9之间
jb L ;0-9之间的数转换为ASCII代码
add al,7 ;A-F之间的转换
L: add al,30h
mov dl,al ;将转换的数显示出来
mov ah,2
int 21h
dec cx
jne Lop1
pop dx ;恢复DX的内容
pop cx ;恢复CX的内容
ret
RADIX ENDP ;
PRINT PROC ;显示的子程序开始定义
mov ah,2ah ;功能显示英文格式的日期和时间
int 21h ;暂时保护日、月、年
push dx ;
push cx ;把月份给BL,用于查表
mov bl,dh ;月份从1开始,地址从0
dec bl ;开始,应减1
mov bh,0 ;
mov cl,2 ;
shl bl,cl ;乘以4,确定月份所在地址
lea si,TAB ;
add si,bx ;
mov dx,si ;把确定的月份地址传给
mov ah,9 ;DX,调用9号功能,显示
int 21h ;英文月份简写
pop cx ;释放保护的月、日数
pop dx ;
DIS ' ' ;显示空格
PRIN DL,',' ;显示天数和','
mov ax,cx ;显示年份
call RADIX ;
DIS ' ' ;
mov ah,2ch ;获取当前的小时、分、秒
int 21h ;并已时间的格式显示出来
PRIN ch,':' ;显示小时
PRIN cl,':' ;显示分钟
PRIN dh,' ' ;显示秒钟
ret ;显示的子程序结束
PRINT ENDP ;
ACOUNT PROC NEAR ;统计天数的子程序
mov ah,2ah ;调用日期指令
int 21h ;功能:统计当天是当年的第几天
mov bl,dh ;把月份给BL,用于查表
dec bl ;月份从1开始,地址从0
shl bl,1 ;乘以2,确定要查月份的
mov bh,0 ;开始前的天数和
;mov ax,cx ;GETYEAR入口参数是CX
call GETYEAR
cmp ax,1 ;
jnz NLEAP ;判断是否为闰年
mov bx,DAT1[bx] ;若是闰年查表DAT1
jmp AGAIN ;
NLEAP:
mov bx,DAT[bx] ;若不是闰年查表DAT
AGAIN:
mov al,dl ;获取当月天数
mov ah,0 ;把查表所得和当月
add ax,bx ;加一起就是当年的
call RADIX ;第几天
RET
ACOUNT ENDP
GETYEAR PROC ;判断是否为闰年的子程序定义
push bx
push cx ;入口参数是-CX
push dx ;出口参数十-Ax
;若AX为1当年就是闰年
mov ax,cx
cwd ;若AX为0当年不是闰年
mov bx,400 ;年份除以400
div bx ;
cmp dx,0 ;若能够整除是闰年
jz M ;
cwd
mov ax,cx ;不能够整除进行第二轮判断
mov bx,4
div bx
cmp dx,0
jnz N ;若不能够被4整除就不是闰年
mov bx,100 ;若能够被4整除然后再除以100
div bx
cmp dx,0
jz N
M: mov ax,1 ;若不能够被100整除就是闰年
jmp Q
N : mov ax,0 ;若能够被100整除就不是闰年
Q:
pop dx
pop cx ;恢复保护
pop bx
ret
GETYEAR ENDP
code ends
end start
wuyi8808
2008-02-13
打赏
举报
回复
沙发。
按
指定
格式
显示
时间
汇编
程序设计
(5)所设计系统的具体...基本功能:读取微机系统当前日期及时钟信息,并按英文
格式
显示
在屏幕上。如2008年1月1日14点38分28秒,
显示
为“JAN 1,2008 14:38:28”。 增强功能:计算该日期是当年的第几天并
显示
结果。
汇编语言
程序设计
入门
汇编语言
程序设计
一,
汇编语言
程序设计
概述1,
程序设计
语言2,
汇编语言
源程序3,
汇编语言
程序开发过程二,
汇编语言
基本语法(重点)1,
汇编语言
的语句类型2,常量、标识符和表达式3,
汇编语言
程序伪指令(重点)4,DOS...
汇编语言
程序设计
汇编语言
是一门低级
程序设计
语言,在数以千计的计算机语言中,有着不可替代的重要地位,广泛地用于开发操作系统内核、设备驱动程序等。随着近年来物联网、嵌入式系统的发展,
汇编语言
在行业中的地位也再次攀升,在...
汇编语言
程序设计
——屏幕
显示
和键盘输入
汇编语言
程序设计
——屏幕
显示
和键盘输入 在
汇编语言
中,凡是涉及到键盘输入、屏幕
显示
等输入输出操作,都可以用软件中断指令INT n的功能调用来实现。所谓功能调用是计算机系统设计的简单 I / O 子程序,能方便地...
汇编语言
(三)——
汇编语言
程序
格式
4.2
汇编语言
程序
格式
4.2.1
汇编语言
语句的基本
格式
一个
汇编语言
源程序中有3种基本语句:指令语句、伪指令语句和宏指令语句(宏指令语句就是由若干条指令语句形成的语句) 指令语句:计算机中指令系统的各条指令...
community_281
590
社区成员
254,055
社区内容
发帖
与我相关
我的任务
community_281
提出问题
复制链接
扫一扫
分享
社区描述
提出问题
其他
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章