Wochentag eines Datums ermitteln

Zur Demonstration der »überdurchschnittlichen Intelligenz« eines PCs muß häufig ein Programm zur Ermittlung des Wochentages eines Kalenderddatums herhalten. WASIST.DEB zeigt den Wochentag zu einem Datum zwischen 1980 und 1999 an. Das Programm wandelt das als Parameter übergebene Datum vom ASCII-Format in das interne Datumsformat, um anschließend das Systemdatum auf diesen Wert zu setzen. Beim Auslesen des neugesetzten Systemdatums, erhält WASIST den entsprechenden Wochentag. Danach kann die Routine das Systemdatum wieder auf den alten Wert setzen und das Ergebnis anzeigen. Achten Sie bitte genauestens auf die richtige Anzahl der Leerzeichen bei der Auflistung der Wochentage im hinteren Teil des Listings. Vorsichtshalber haben wir Sie durch das Zeichen » ^ « ersetzt.

Name: WASIST.DEB
Funktion: Zeigt den Wochentag eines Datums an.
Übersetzung: DEBUG <WASIST.DEB
Prüfsumme: 61FC
Anwendung: WASIST T.M.JT = Tag (1 … 31) M = Monat (1 … 12)

J = Jahr (80 … 99)

Einschränkungen: ./.
A
CLD                 ;100
MOV AH,2A           ;101
INT 21              ;103
PUSH CX             ;105
PUSH DX             ;106
MOV SI,82           ;107
CALL 149            ;10A
MOV DL,AH           ;10D
CALL 149            ;10F
MOV DH,AH           ;112
CALL 149            ;114
MOV CX,76C          ;117
ADD CL,AH           ;11A
MOV AH,2B           ;11C
INT 21              ;11E
CMP AL,0            ;120
MOV SI,1A0          ;122
JNZ 13C             ;125
CMP By[80],2        ;127
JB 13C              ;12C
MOV AH,2A           ;12E
INT 21              ;130
MUL By[155]         ;132
MOV SI,AX           ;136
ADD SI,156          ;138
POP DX              ;13C
POP CX              ;13D
MOV AH,2B           ;13E
INT 21              ;140
MOV AH,9            ;142
MOV DX,SI           ;144
INT 21              ;146
RET                 ;148
XOR AX,AX           ;149
AAD                 ;14B
MOV AH,AL           ;14D
LODSB               ;14F
SUB AL,30           ;150
JNB 14B             ;152
RET                 ;154
DB B,"Sonntag$^^^Montag"
DB "$^^^^Dienstag$^^Mit"
DB "twoch$^^Donnerstag$"
DB "Freitag$^^^Samstag$"
DB "Ungültiges^Datum$"

RCX
B1
NWDATE.COM
W
Q

Quelle: 200 Utilities für PC-/MS-DOS von Gerhard Schild und Thomas Jannot