PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bedeutung von MVI, LXI?


silver
20.02.2005, 18:11
Hi, ich bräuchte unbedingt ein paar Infos über folgende Befehle und wie man sie anwendet.

MVI B,FF (Das Register B bekommt den Wert FFh, soweit korrekt?
LXI D 21 <-- Was mache ich hier? D bekommt den Wert 21h?

System ist ein 8085 (nein, ich hab mich nicht verschrieben ;)) von Midicom. Gibts da nicht eine kleine und feine Anleitung dazu?

MfG,
Silver


Nutah
12.03.2005, 13:16
MVI is ein MOVE befehl ( hier steht genaueres : http://skywy.ch/ASM/IBM/MVI/index.html )

Leider habe ich nichts genaues zu LXI gefunden denke aber das es ein LOAD befehl ist. Sry für diese vagen aussagen :)


Nutah

mmx
20.05.2005, 15:36
Also MVI bedeutet das du einen Wert in ein bestimmtes register schreibst

(MVI A, FF)

LXI H, ISR

ISR: ....

Speichert die Adresse von ISR in in das HL Register (LXI benutz immer 2 Register = 8 bit)

hier mal ein Beispiel mit dem Interrupt 7.5

;********************************
;* *
;* Init 7.5 *
;* *
;********************************



.ORG 0E000h
MAIN: MVI A, 0C3h ;0C3 = befehl für jmp
STA 0FC9Eh ;STA Speichert Akku nach FC9E - RST 7.5 springe nach FC9Eh (wenn der Interrupt ausgeführt wird)
LXI H, ISR ;Adresse von ISR in Register HL speichern
SHLD 0FC9Fh ;Register HL auf FC9E und FAC0 speichern
MVI A, 00011011b ;7.5 Maske
SIM ;Setze Interrupt maske
MVI A, 00 ;Wert 00 in den Akku schreiben
STA 0F800h ;löschen des inhaltes der Sekunde durch überschreiben mit Akku
STA 0F801h ;löschen des inhaltes der Minute durch überschreiben mit Akku
STA 0F802h ;löschen des inhaltes der Stunde durch überschreiben mit Akku
EI ;Generelle Freigabe
RET ;Zurück zum...



;****************************************
;* *
;* Frequenzteiler für 1 Sek *
;* *
;****************************************
ISR:
MVI A, 00100101b ; MASKE für Zähler 0 in Akku speichern
OUT 0B3H ; Akku auf das Steuerwort Register ausgeben
MVI A, 20H ; 2000 Dez in den Akku schreiben
OUT 0B0H ; Akku in den Zähler 0 schreiben(Fequenzteiler = 2000)
MVI A, 01100101b ; MASKE für Zähler1 in Akku speichern
OUT 0B3H ; Akku auf das Steuerwort Register ausgeben
MVI A, 10H ; 1000 Dez in den Akku schreiben
OUT 0B1H ; Akku in den Zähler 1 schreiben(Fequenzteiler = 1000)
RET ; zurück ins Hauptprogramm
.END