汇编显示计算机时间和日期(上午或下午、星期几)

合集下载

C++获取windows系统时间的七种方式

C++获取windows系统时间的七种方式

C++获取windows系统时间的七种⽅式 转载⾃:1.CTime类:获取系统当前时间,精确到秒[cpp]1. CString str;2. CTime tm;3. tm=CTime::GetCurrentTime();//获取系统⽇期4. str=tm.Format("现在时间是%Y年%m⽉%d⽇ %X");5. MessageBox(str,NULL,MB_OK);</span>a,从CTimet中提取年⽉⽇时分秒[cpp]1. CTime t = CTime::GetCurrentTime();2. int d=t.GetDay(); //获得⼏号3. int y=t.GetYear(); //获取年份4. int m=t.GetMonth(); //获取当前⽉份5. int h=t.GetHour(); //获取当前为⼏时6. int mm=t.GetMinute(); //获取分钟7. int s=t.GetSecond(); //获取秒8. int w=t.GetDayOfWeek(); //获取星期⼏,注意1为星期天,7为星期六</span>b,计算两段时间的差值,可以使⽤CTimeSpan类,具体使⽤⽅法如下:[cpp]1. CTime t1( 1999, 3, 19, 22, 15, 0 );2. CTime t = CTime::GetCurrentTime();3. CTimeSpan span=t-t1; //计算当前系统时间与时间t1的间隔4. int iDay=span.GetDays(); //获取这段时间间隔共有多少天5. int iHour=span.GetTotalHours(); //获取总共有多少⼩时6. int iMin=span.GetTotalMinutes();//获取总共有多少分钟7. int iSec=span.GetTotalSeconds();//获取总共有多少秒c,获得当前⽇期和时间,并可以转化为CString[cpp]1. CTime tm=CTime::GetCurrentTime();2. CString str=tm.Format("%Y-%m-%d");//显⽰年⽉⽇</span>2. time_t,time():C标准库(精确到秒)[cpp]1. time_t time(time_t *timer);//得到从标准计时点(⼀般是1970年1⽉1⽇午夜)到当前时间的秒数2. double difftime(time_t timer1,time_t timer0);//计算时间差</span>返回的字符串可以依下列的格式⽽定:[cpp]1. %a 星期⼏的缩写。

如何调试代码中的时间和日期问题

如何调试代码中的时间和日期问题

如何调试代码中的时间和日期问题在编写代码时,时间和日期是经常涉及到的问题。

然而,由于时间和日期的复杂性和特殊性,调试起来可能会比较困难。

下面将介绍一些常见的时间和日期问题,并提供一些调试技巧。

一、常见的时间和日期问题1.时区问题:当涉及到不同时区时,时间会有所不同。

在处理时间时,要确保正确地转换为所需的时区,以避免出现时间混乱的情况。

2.夏令时问题:夏令时是指在特定季节调整时钟,以节约能源和利用日照时间更长。

在处理夏令时时,需要特别注意时间的转换和计算,以免导致错误的结果。

3.时间戳问题:时间戳是指距离特定时间点或固定日期的秒数。

在处理时间戳时,要确保正确地转换为日期或时间,并注意数据类型的匹配,以免产生不一致的结果。

4.闰年问题:闰年是指能够被4整除但不能被100整除,或者是能够被400整除的年份。

在判断闰年时,要使用合适的算法,以避免出现错误的结果。

5.时间格式问题:不同的编程语言和库可能有不同的时间格式要求。

在处理时间时,要确保使用正确的格式,并且进行必要的转换,以便与系统或其他模块正确交互。

二、调试技巧1.使用调试工具:现代的集成开发环境(IDE)通常提供了强大的调试工具,可以逐步执行代码并观察变量的值。

通过使用断点和单步执行功能,可以查看程序在处理时间和日期时的具体行为,有助于找出问题所在。

2.输出日志信息:在代码中插入适当的日志语句,输出时间和日期相关的变量值以及计算结果。

通过查看日志信息,可以追踪程序执行过程中时间和日期的变化,从而找到出错的地方。

3.对比测试数据:准备一组已知的测试数据,包括一些边界情况和特殊情况。

与预期结果进行对比,分析实际输出和期望输出之间的差异。

通过对比测试数据,可以帮助快速定位问题和找出错误的原因。

4.单元测试:编写单元测试用例,针对时间和日期相关的函数进行测试。

通过输入不同的时间和日期值,验证函数的输出是否符合预期结果。

单元测试是一种高效的调试手段,可以对时间和日期相关问题进行及时发现和修复。

在win7任务栏时间中怎么设置显示星期几?

在win7任务栏时间中怎么设置显示星期几?

在win7任务栏时间中怎么设置显⽰星期⼏?
windows7的任务栏时间设置默认的是年⽉⽇⽽没有星期⼏的显⽰,有时会给你带来⼀定的不便。

那么如何解决这⼀问题呢,请按照下⾯⼏步来进⾏操作吧!
⽅法/步骤
1、在电脑屏幕右下⾓处,点击该时间项,出现更改时间和⽇期设置对话框。

2、点击该项,进⼊如下界⾯。

点击更改⽇期和时间项
3、然后再点击更改⽇历设置。

4、出现⾃定义格式对话框,系统默认的是短⽇期格式为yyyy/MM/dd
5、在短⽇期项中输⼊:dddd ddMMM 字符,如下图所⽰。

6、然后点击应⽤,之后再点击确定。

这样就完成了这个简单的操作。

这时你的电脑任务栏中时间项除了显⽰年⽉⽇还显⽰星期。

这多好啊!
以上就是在win7任务栏时间中怎么设置显⽰星期⼏⽅法介绍,操作很简单的,你学会了吗?希望能对⼤家有所帮助!。

Excel表格中怎么使用日期和时间函数公式

Excel表格中怎么使用日期和时间函数公式

Excel表格中怎么使用日期和时间函数公式关于日期和时间方面的函数公式,在Excel中我们经常会与时间和日期方面的数据打交道,所以掌握一些日期和时间函数的使用可以帮助我们快速完成一些工作。

以下是店铺为您带来的关于Excel使用日期和时间函数公式,希望对您有所帮助。

Excel使用日期和时间函数公式Excel如何显示当前日期函数公式显示当前年份函数:【=YEAR(NOW())】显示当前月份函数:【=MONTH(NOW())】显示当前日期函数:【=DAY((NOW()))】显示当前星期函数:【=TEXT(NOW(),"aaaa")】显示当前准确时间:【=TEXT(NOW(),"hh:mm:ss")】显示当前年月日:【=TODAY()】显示当前年月日和时间:【=NOW()】使用方法:直接在某单元格输入以上函数公式即可获得结果。

Excel如何通过日期判断星期几通过日期显示星期几:【=WEEKDAY(A2,2)】通过日期显示中文带星期:【=TEXT(A2,"aaaa")】通过日期计算中文星期:【=TEXT(A4,"aaa")】通过日期计算英文星期简写:【=TEXT(A5,"ddd")】通过日期计算英文星期:【=TEXT(A5,"dddd")】使用方法:指定输入日期的单元格,输入以上函数公式即可获取星期。

Excel如何求月份天数函数求某日期的月份天数:【=DAY(DATE(YEAR(A2),MONTH(A2)+1,0))】使用方法:需要指定包含日期的单元格。

直接求当前月份天数:【=DAY(EOMONTH(NOW(),0))】使用方法:直接在某单元格输入以上公式即可获取天数。

求当前月份天数减去周六和周日:【=SUMPRODUCT(--(MOD(ROW(INDIRECT(DATE(YEAR(NOW()),MONTH(NOW()),1)& ":"&DATE(YEAR(NOW()),MONTH(NOW())+1,0))),7)>1))】使用方法:直接在某单元格输入以上公式即可获取天数。

数字时钟代码

数字时钟代码

数字时钟代码1. 介绍数字时钟是一种常见的显示时间的装置,它通过数字显示屏显示当前的小时和分钟。

本文档将介绍如何编写一个简单的数字时钟代码。

2. 代码实现以下是一个基本的数字时钟代码实现示例:import timewhile True:current_time = time.localtime()hour = str(current_time.tm_hour).zfill(2)minute = str(current_time.tm_min).zfill(2)second = str(current_time.tm_sec).zfill(2)clock_display = f"{hour}:{minute}:{second}"print(clock_display, end="\r")time.sleep(1)代码说明:- `time.localtime()` 函数返回当前时间的结构化对象,包括小时、分钟和秒等信息。

- `str(current_time.tm_hour).zfill(2)` 将小时转换为字符串,并使用 `zfill()` 方法填充到两位数。

- `str(current_time.tm_min).zfill(2)` 和`str(current_time.tm_sec).zfill(2)` 同理处理分钟和秒。

- 使用 f-string 格式化字符串 `clock_display`,将小时、分钟和秒显示为 `` 的形式。

- `print(clock_display, end="\r")` 使用 `\r` 实现覆盖打印,使得时钟在同一行连续显示。

- `time.sleep(1)` 让程序每隔一秒更新一次时间。

请注意,上述代码需要在支持 Python 的环境中运行。

3. 结束语通过以上的代码实现,我们可以编写一个简单的数字时钟。

(汇编)实现数码管显示年,月,日,时,分,秒,星期,温度,按键可调万年历

(汇编)实现数码管显示年,月,日,时,分,秒,星期,温度,按键可调万年历

;///////////////////////////////////////////;本程序源代码由湖南工程职业技术学院提供.;专业单片机培训,让你学习单片机更容易.;程序员:蒋庆桥;QQ:xxxxxxxxx;本程序用汇编实现数码管显示年,月,日,时,分,秒,星期,温度,按键可调万年历,H_ADJ BIT P3.0 ;时/年调整M_ADJ BIT P3.1 ;分/月调整S_ADJ BIT P1.4 ;秒/日调整DT_SET BIT P1.6 ;时间/日期选择STR BIT P1.5;启动走时T_RST BIT P1.0 ;实时时钟复位线引脚T_CLK BIT P1.1 ;实时时钟时钟线引脚T_IO BIT P1.2 ;实时时钟数据线引脚HH_BIT EQU 40H ;时高位HL_BIT EQU 41H ;时低位MH_BIT EQU 42H ;分高位ML_BIT EQU 43H ;分低位SH_BIT EQU 44H ;秒高位SL_BIT EQU 45H ;秒低位TEMPER_L EQU 46HTEMPER_H EQU 47HYH_BIT EQU 48H ;年高位YL_BIT EQU 49H ;年低位MOH_BIT EQU 4aH ;月高位MOL_BIT EQU 4bH ;月低位DH_BIT EQU 4cH ;日高位DL_BIT EQU 4dH ;日低位SEC EQU 30HMIN EQU 31HHOUR EQU 32HDAY EQU 33HMONTH EQU 34HWEEK EQU 35HYEAR EQU 36HTEMPER equ 37hFLAG1 BIT 20h.0 ;DS18B20存在标志位DQ BIT P1.3A_BIT EQU 55HB_BIT EQU 56HDS1302_ADDR EQU 5EHDS1302_DATA EQU 5FHORG 00HLJMP STARTSTART:MOV SP,#60HMOV TMOD,#11HMOV TH0,#3CHMOV TL0,#0B0HMOV R0,#10SETB EASETB ET0SETB TR0MOV R1,37HMOV YEAR,#13H ;上电预置日期、时间MOV WEEK,#03H ;周1 MONMOV MONTH,#07H ;2011 04 25 12:00:00MOV DAY,#05HMOV HOUR,#23HMOV MIN,#00HMOV SEC,#00HMOV 50H,#0/////////////////////////////////////////////////////////////////////// ////MAIN:LCALL KEY//MAIN2:CALL FENLILCALL INIT_18B20LCALL GET_TEMPERcall CHANGEcall dispcall displayAJMP MAINFENLI:MOV A,YEARMOV B,#10HDIV ABMOV YL_BIT,BMOV YH_BIT,AMOV A,MONTHMOV B,#10HDIV ABMOV MOL_BIT,BMOV MOH_BIT,AMOV A,DAYMOV B,#10HDIV ABMOV DL_BIT,BMOV DH_BIT,AMOV A,HOURMOV B,#10HDIV ABMOV HL_BIT,BMOV HH_BIT,AMOV A,MINMOV B,#10HDIV ABMOV ML_BIT,BMOV MH_BIT,AMOV A,SECMOV B,#10HDIV ABMOV SL_BIT,BMOV SH_BIT,ARETKEY: ;按键子程序JB F0,MAIN10 ;F0=1,开始走时。

单片机C语言电子钟显示年月日星期及时间(带注释)

单片机C语言电子钟显示年月日星期及时间(带注释)

#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar code table[]=" 2011-12-30 SA T";uchar code table1[]=" 23:59:55 ";uchar code week1[][3]={"MON","TUE","WEN","THU","FRI","SA T","SUN"}; /*uchar code week2[]="TUE";uchar code week3[]="WEN";uchar code week4[]="THU";uchar code week5[]="FRI";uchar code week6[]="SA T";uchar code week7[]="SUN"; */uchar count,shi,fen,miao,dnum,year,month,day,week,a=5;sbit rs=P2^0; //数据命令sbit rw=P2^1; //读写sbit en=P2^2; //使能sbit d1=P3^1; //独立键盘sbit d2=P3^2;sbit d3=P3^3;sbit d4=P3^4;void delay(uchar z) //延时{uint x,y;for(x=110;x>0;x--)for(y=z;z>0;z--);}void write_com(uchar com) //写指令{rs=0;rw=0;en=0;P0=com;delay(5);en=1;delay(5);en=0;}void write_date(uchar date) //写数据{rs=1;rw=0;en=0;P0=date;delay(5);en=1;delay(5);en=0;}void write_weekday (uchar a){uchar x;write_com(0x80+13);for(x=0;x<3;x++){write_date(week1[a][x]);}}void weekday(uint i){write_weekday(i%7);}void write_sfm(uchar add,uchar date){uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add); //指向要写的地址write_date(0x30+shi); //0x30代表的数字是0,+shi表示shi的数字write_date(0x30+ge); //ge的数字}void write_ymd(uchar add,uchar date){uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+add); //指向要写的地址write_date(0x30+shi); //0x30代表的数字是0,+shi表示shi的数字write_date(0x30+ge); //ge的数字}void unit(){uchar num;en=0;write_com(0x38); //显示write_com(0x0c); //光标不显示write_com(0x06); //指针加1,整屏不移动write_com(0x01); //清屏write_com(0x80); //指针指向0x80for(num=0;num<16;num++) //第一行显示table数组{write_date(table[num]);delay(20);}write_com(0x80+0x40);for(num=0;num<16;num++) //第二行显示table1数组{write_date(table1[num]);delay(20);}TMOD=0X01;TH0=(65536-50000)/256; //开启中断TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;shi=23;fen=59;miao=55;year=11;month=12;day=30;}void jishu() //计数{if(count==20){count=0;miao++; //秒加if(miao==60){miao=0;fen++; //分加if(fen==60){fen=0;shi++;if(shi==24){shi=0;day++;a++;weekday(a);//时加}write_sfm(3,shi);write_ymd(9,day);if(day==31){day=0x01;write_ymd(9,day);month++;write_ymd(6,month);if(month==13){month=0x01;write_ymd(6,month);year++;write_ymd(3,year);}}}write_sfm(6,fen);}write_sfm(9,miao);}}void change(){d4=0;if(d1==0) //移光标{delay(10);if(d1==0){while(!d1);dnum++;if(dnum==1){TR0=0;write_com(0x0f);write_com(0x80+0x40+10);}if(dnum==2){write_com(0x80+0x40+7);}if(dnum==3){write_com(0x80+0x40+4);}if(dnum==4){write_com(0x80+10);}if(dnum==5){write_com(0x80+7);}if(dnum==6){write_com(0x80+4);}if(dnum==7){dnum=0;TR0=1;write_com(0x0c);}}}if(d2==0) //加数据{delay(10);if(d2==0){while(!d2);if(dnum==1){miao++;if(miao==60)miao=0;write_sfm(9,miao); //顺序不能换write_com(0x80+0x40+10); //顺序不能换}if(dnum==2){fen++;if(fen==60)fen=0;write_sfm(6,fen);write_com(0x80+0x40+7);}if(dnum==3){shi++;if(shi==24){shi=0;}write_sfm(3,shi);write_com(0x80+0x40+4);}if(dnum==4){day++;a++;weekday(a);if(day==31)day=1;write_ymd(9,day);write_com(0x80+10);}if(dnum==5){month++;if(month==13)month=1;write_ymd(6,month);write_com(0x80+7);}if(dnum==6){year++;write_ymd(3,year%100);write_com(0x80+4);}}}if(d3==0) //减数据{delay(10);if(d3==0){while(!d3);if(dnum==1){miao--;if(miao==-1)miao=59;write_sfm(9,miao);write_com(0x80+0x40+10);}if(dnum==2){fen--;if(fen==-1)fen=59;write_sfm(6,fen);write_com(0x80+0x40+7);}if(dnum==3){shi--;if(shi==-1)shi=23;write_sfm(3,shi);write_com(0x80+0x40+4);}if(dnum==4){day--;a--;weekday(a);if(day==0)day=30;write_ymd(9,day);write_com(0x80+10);}if(dnum==5){month--;if(month==0)month=12;write_ymd(6,month);write_com(0x80+7);}if(dnum==6){year--;write_ymd(3,year%100);write_com(0x80+4);}}}}void main(){unit();while(1){jishu();change();}}void timer0()interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;}#include<reg52.h>#define uchar unsigned char //宏定义#define uint unsigned int //宏定义sbit rs=P3^5; //液晶数据/指令选择端:1-数据,0-指令sbit lcden=P3^4; //液晶使能控制端:1-有效,0-无效sbit shift_key=P3^2;//位置移动键sbit up_key=P3^3;//增加键uchar temp=0;//定义定时器溢出计数变量,每隔50ms产生1次溢出,temp加1uint year=2011;//定义年变量并赋初值2011年uchar month=06,day=01,week;//定义月、日、星期变量,并赋初值5月23日uchar hour=23,minute=59,second=58;//定义时、分、秒变量,并赋初值12时00分00秒uchar code week_string[7][4]={"MON","TUE","WED","THU","FRI","SA T","SUN"};//定义星期英文缩写表uchar data month_day[12]={31,0,31,30,31,30,31,31,30,31,30,31};//定义每月天数表/*--定时计数器T0及中断初始化函数--*/void init(void){TMOD=0x01;//设置定时器0为工作方式1TH0=(65536-50000)/256;//16位计数初值除以256得到高8位初值TL0=(65536-50000)%256;//16位计数初值除以256的余数得到低8位初值EA=1;//开总中断ET0=1;//开启定时器0中断EX0=1;//开启外部中断,外部中断用于调整时间PT0=1;//将定时器0中断设置高优先级,调整时间期不停止计时TR0=1;//启动定时器0}/*----------1ms延时函数----------*/void delay(uint n){uint i,j;for(i=n;i>0;i--)for(j=114;j>0;j--);}/*-------LCD1602写指令函数-----*/void LCD1602_write_com(uchar com){rs=0;//rs=0,置指令输入状态P0=com;//输出指令码delay(1);//延时1mslcden=1;//lcden=1,使能端有效delay(1);//延时1mslcden=0;//lcden=0,使能端无效}/*-------LCD1602写数据函数-----*/void LCD1602_write_dat(uchar dat){rs=1;//rs=1,置数据输入状态P0=dat; //输出待显示字符的字符码(ASCII码)delay(1);//延时1mslcden=1;//lcden=1,使能端有效delay(1);//延时1mslcden=0;//lcden=0,使能端无效}/*********************公历平年的2月只有28天,公历闰年的2月有29天。

S7-300CPU系统时钟应用

S7-300CPU系统时钟应用

S7-300CPU系统时钟应用S7-300的数据类型分以下三种:基本数据类型、复合数据类型和参数类型,时钟Date_And_Time属于复合数据类型。

Date_And_Time是一复杂数据类型,包含8个字节,Byte0-Byte7对应年、月、日、时、分、秒、毫秒、星期,的数据,占用8个字节。

星期天代码为1,星期一~星期六代码分别是2~7,如:DT#20**_07_15_12:30:15.200为20**年7月15日12时30分15.2秒。

使用SFC0和SFC1即可设置和读取时钟。

日期和时间(DATE-AND-TIME)S7-300plc的系统时钟使用的是“日期和时间(DATE-AND-TIME)”数据类型。

用于存储年、月、日、时、分、秒、毫秒和星期的数据。

占用8个字节,数据类型以BCD形式保存。

如:DT#20**_07_15_12:30:15.200为20**年7月15日12时30分15.2秒。

以下实例表示20**年8月5日,星期四,8点12分5.250秒。

并且给出了每个字节所包含的时间和日期数据的内容。

字节内容例子0年B#16#041月B#16#082日B#16#053小时B#16#084分钟B#16#055秒B#16#056毫秒的百位和十位数值B#16#257(高4位)毫秒的个位数值B#16#0S5T#格式定时器使用的时间类型有所不同,定时器使用S5T#格式:S5T#aD_bH_cM_dS_eMS,其中a,b,c,d,e分别是日,小时,分,秒和毫秒的数值,输入时可以省掉下划线。

S5TIME时基及相应的时间范围如下:如下两种格式定义时间值:1)W#16#wxyzow=时基(即时间间隔或精度)oxyz=BCD格式的时间值这种方式只能用于STL编程。

2)S5T#aH_bbM_ccS_dddMSoa=小时,bb=分钟,cc=秒,dd=毫秒o这种情况下时基自动选择,数值为该时基下取整去尾到下一个较低值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机原理与接口技术编程作业
学院:xxxx学院班级:xxxxxxxxxx学号:xxxxxxxxxx姓名:xxx
【题目要求】
根据当前计算机的时间和日期,显示上午(AM)或下午(PM),并显示星期几。

【设计思路】
通过使用软中断指令“INT 21H”进行系统功能调用,获取系统时间和日期。

当AH=2AH时,可获取系统日期,有
CX=year(1980~2099)
DH = month (1~12)
DL = day (1~31)
AL = day of the week (0~6, 0=Sunday, 1=Monday, etc.)
当AH=2CH时,可获取系统时间,有
CH=hours(0~23)
CL = minutes (0~59)
DH = seconds (0~59)
DL = hundredths of seconds (0~99)
将对应的寄存器内容取出,二进制转换为ASCII码,再输出即可获知当前系统时间与日期。

其中,当小时(hours)值小于等于12时为上午(AM),大于12时为下午(PM),大于12时显示的小时数值与12进行作差操作。

星期几可由AH=2AH时系统功能调用所得的AL数值对应得到,选取相符的字符串进行显示即可。

【源码】
.MODEL SMALL
.DA TA
WEEK DB 'Sunday$','Monday$','Tuesday$','Wednesday$','Thursday$','Friday$','Saturday$'
.CODE
START: MOV AX,@DA TA
MOV DS,AX
HOUR:
MOV AH,2CH ; To get system time
INT 21H
MOV AL,CH ; Hour is in CH
MOV CH,1
CMP AL,12 ; To determine AM or PM
JLE NEXT
SUB AL,12
MOV CH,2
NEXT:AAM
MOV BX,AX
CALL DISP
MOV DL,':'
MOV AH,02H
INT 21H
MINUTE:
MOV AL,CL ; Minute is in CL AAM
MOV BX,AX
CALL DISP
MOV DL,':'
MOV AH,02H
INT 21H
SECOND:
MOV AL,DH ; Second is in DH AAM
MOV BX,AX
CALL DISP
MOV DL,' '
MOV AH,02H
INT 21H
MOV DL,'P'
CMP CH,2 ;To determine AM or PM JE PM
MOV DL,'A'
PM:MOV AH,02H
INT 21H
MOV DL,'M'
MOV AH,02H
INT 21H
MOV DL,','
MOV AH,02H
INT 21H
MOV DL,' '
MOV AH,02H
INT 21H
MOV AH,2AH ;To get system date
INT 21H
CMP AL,6 ;Day of the week is in AL (0-6) JE Sat
CMP AL,5
JE Fri
CMP AL,4
JE Thur
CMP AL,3
JE Wed
CMP AL,2
JE Tues
CMP AL,1
JE Mon
CMP AL,0
JE Sun
Sun:LEA DX,WEEK
JMP IFEND
Mon:LEA DX,WEEK+7
JMP IFEND
Tues:LEA DX,WEEK+14
JMP IFEND
Wed:LEA DX,WEEK+22
JMP IFEND
Thur:LEA DX,WEEK+32
JMP IFEND
Fri:LEA DX,WEEK+41
JMP IFEND
Sat: LEA DX,WEEK+48
JMP IFEND
IFEND:MOV AH,09H
INT 21H
MOV DL,','
MOV AH,02H
INT 21H
MOV DL,' '
MOV AH,02H
INT 21H
;Day Part
DAY:
MOV AH,2AH ; To get system date
INT 21H
MOV AL,DL ; Day is in DL
AAM
MOV BX,AX
CALL DISP
MOV DL,'/'
MOV AH,02H
INT 21H
MONTH:
MOV AL,DH ; Month is in DH
AAM
MOV BX,AX
CALL DISP
MOV DL,'/'
MOV AH,02H
INT 21H
YEAR:
ADD CX,0F830H ;To negate the effects of 16bit value
MOV AX,CX ; since AAM is applicable only for AL (YYYY -> YY) AAM
MOV BX,AX
CALL DISP
MOV AH,4CH ; To Terminate the Program
INT 21H
;Display Part
DISP PROC
MOV DL,BH ; BH Part
ADD DL,30H ; ASCII Adjustment
MOV AH,02H ; To print in DOS
INT 21H
MOV DL,BL ; BL Part
ADD DL,30H ; ASCII Adjustment
MOV AH,02H ; To print in DOS
INT 21H
RET
DISP ENDP ; End Disp Procedure
END START
【运行结果】
编译器masm编译结果和连接器连接结果如下图所示。

可执行文件运行结果如下:
从左至右依次为:时间(包含上下午的区分)、星期几和日期(日/月/年),满足题目要求。

相关文档
最新文档