DMA

DMA Speicher-Speicher-Transfer

Entwerfen Sie ein Programm, das mit Hilfe eines DMA-Controllers einen schnellen Speicher-Speicher-Transfer im Blockbetrieb realisiert . Ab der RAM-Adresse 1500h (Speicherbereich A) ist ein Block von 100h Zeichen nach der Adresse 1700h (Anfangsadresse Speicherbereich B) zu transportieren.

vor dem Programmstart:
Füllen Sie mit Hilfe der Monitorkommandos Speicherbereich A mit dem gleichen Zeichen. Füllen Sie Speicherbereich B mit einem anderen Zeichen.

nach dem Programmstart:
Kontrollieren Sie, ob jetzt der gesamte Speicherbereich B mit dem Zeichen des Speicherbereichs A überschrieben wurde. Ist das der Fall, war der Transfer korrekt.

eine mögliche Initialisierungsreihenfolge könnte so aussehen:

  • Software-Reset (Register 8Dh)
  • Befehlsregister; Speicher-Speicher-Transfer, DMA-Steuerung freigeben (Register 88h)
  • Betriebsart Kanal 0, Quellspeicher lesen, Blockbetrieb, Quellspeicheradresse inkrementieren (Reg. 8Bh)
  • Betriebsart Kanal 1, Zielspeicher schreiben, Blockbetrieb, Zielspeicheradresse inkrement. (Reg. 8Bh)
  • Adresse des Quellpuffers an Kanal 0 ausgeben (Reg. 80h)
  • Zählerbyte an Kanal 0 ausgeben (Reg. 81h)
  • Adresse des Zielpuffers an Kanal 1 ausgeben (Reg. 82h)
  • Zählerbyte an Kanal 1 ausgeben (Reg. 83h)
  • DMA-Anforderung für Kanal 0 (Reg. 89h)
keyboard_arrow_up