Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

Assembler Uhrzeit Datum und Wochentag





Frage

Wer kann mir helfen in Assembler (Compiler: a86) den Wochentag auszugeben. Datum und Uhrzeit klappt schon ohne Probleme nur der Wochentag fehlt. Danke im Voraus Sunland

Antwort 1 von semi

Du kannst es von der Echtzeituhr abfragen.
Folgende Informationen stehen drin an den entsprechenden Positionen:

00h: Aktuelle Sekunde
01h: Alarmsekunde
02h: Aktuelle Minute
03h: Alarmminute
04h: Aktuelle Stunde
05h: Alarmstunde
06h: Tag der Woche (Sonntag=1, Montag=2 usw.)
07h: Tage des Monats
08h: Monat
09h: Jahr
0Ah: Statusregister A der Uhr
0Bh: Statusregister B der Uhr
0Ch: Statusregister C der Uhr
0Dh: Statusregister D der Uhr
32h: Jahrhundert (19 oder 20)

Aufruf über die Ports 70h und 71h


mov al, 6h // offset von "Tag der Woche"
out 70h, al // An Port 70h ausgeben
in al, 71h // Inhalt der Speicherzelle holen


Die Namen der Wochentage kannst Du als eine Liste definieren

TEXT DB 'So',00
     DB 'Mo',00
     DB 'Di',00
     DB 'Mi',00
     usw.

Gruß,
Michael

Antwort 2 von Sunland

Hi Semi
Vielen dank schonmal für den Code...
aber könntest du mir vielleicht den kompletten code angeben. Krieg das irgendwie nicht hin.

cu and big thx

race

Antwort 3 von semi

Hallo,

ich werde heute abends mal nachschauen. Ich habe momentan keinen Assembler zur Hand. Außerdem habe ich keine Ahnung, wie die Programmstruktur bei as86 aussieht.

Gruß,
Michael

Antwort 4 von Sunland

Danke, ist nett

falls es dir hilft hier gibt es den a86
als freeware
http://www.eji.com/a86.zip

Antwort 5 von semi

Das ist 'ne Weile her, wo ich an Interrupts rumgefummelt habe aber das folgende Programm sollte laufen

  JMP START
WEEKDAYS:
     DB 'SoMoDiMiDoFrSa'
START:
  MOV AL,6h   ; Offset von "Tag der Woche"
  OUT 70h,AL  ; An Port 70h ausgeben
  IN  AL,71h  ; Inhalt der Speicherzelle holen
  DEC AL      ; 1=So hat aber offset 0
  
  MOV CX,2    ; 2 Zeichen pro Wochentagnamen
  MUL CX      ; Offset berechnen 
  
  MOV DX,WEEKDAYS ; Startoffset des Strings
  ADD DX,AX   ; Offset des akt. Wochentages dazuaddieren
  MOV CX,2    ; wir geben zwei Zeichen aus
  MOV BX,1    ; an stdout
  MOV AH,040  ; Fkt. write
  INT 33      ; und ausgeben
 
  MOV AL,0    ; raus
  MOV AH,4CH
  INT 21h

Gruß,
Michael

Antwort 6 von Sunland

Jup Danke
klapp perfekt

Danke für die Mühen

cu

sunland

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: