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)