HÁÐÉÓÁÌ ÐpÏÇpÁÍÍÕ, ÐpÉ×ÏÖÕ ÔÅËÓÔ (÷ÙÞÉÓÌÑÅÔ ÄÅÎØ ÎÅÄÅÌÉ ÐÏ ÄÁÔÅ ÏÔ 1.01.2000 ÄÏ 31.12.2099, DATE - 1..31, MONTH - 1..12, YEAR - 0..99 - × BCD-ÆÏpÍÁÔÅ):
DAYFORDATE push YEAR push MONTH push DATE mov a,YEAR call BCD_CONV mov YEAR,a mov a,MONTH call BCD_CONV mov MONTH,a mov a,DATE call BCD_CONV mov DATE,a dec MONTH mov a,YEAR ;365=16Dh mov b,#6dh mul ab mov BUFDAY+1,a ;low mov a,b add a,YEAR mov BUFDAY,a ;high mov a,YEAR mov b,#4 div ab add a,BUFDAY+1 mov BUFDAY+1,a ;Y*365+int(Y/4) call add_c mov a,MONTH cjne a,#2,DAYFORDATE_1 DAYFORDATE_1 jnc DAYFORDATE_2 mov a,b jnz DAYFORDATE_2 mov a,BUFDAY+1 clr c subb a,#1 mov BUFDAY+1,a jnc DAYFORDATE_2 dec BUFDAY DAYFORDATE_2 mov a,MONTH mov b,#29 mul ab add a,BUFDAY+1 mov BUFDAY+1,a call add_c mov a,b add a,BUFDAY mov BUFDAY,a ;Y*365+Y/4+M*29 mov a,MONTH mov DPTR,#POPRMONTH movc a,@a+dptr add a,BUFDAY+1 mov BUFDAY+1,a call add_c mov a,DATE add a,BUFDAY+1 mov BUFDAY+1,a call add_c call DIVIDE mov a,R5 ;× R5 - ÏÓÔÁÔÏË ÏÔ ÄÅÌÅÎÉÑ BUFDAY,BUFDAY+1 ÎÁ 7 jnz DAYFORDATE_3 mov a,#7 DAYFORDATE_3 dec a jnz DAYFORDATE_4 mov a,#7 DAYFORDATE_4 mov DAY,a pop DATE pop MONTH pop YEAR ret add_c mov a,BUFDAY addc a,#0 mov BUFDAY,a ;high ret POPRMONTH db 00,02,01,03,04,06,07,09,11,12,14,15
PS. ñ - å×ÇÅÎÉÊ ôpÅÓËÕÎÏ×.