ndr-nkc.de ndr-nbc.de
  
Startseite
News
 
NDR-NKC
Geräte Z80
Geräte 68000
Geräte 8088
 
Z80 Section
Baugruppen
ROM's
Software
68000 Section
Baugruppen
ROM's
PASCAL/S
Software
8088 Section
Baugruppen
Downloads
 
Bussysteme
Stromversorgung
Input / Output
Grafikkarten
Speicherkarten
Massenspeicher
Weitere Baugruppen
 
Projekte
 
Dokumentation
Datenblätter
Glossar
Portraits
Links

Impressum

 

Optimierungstechniken Assembler

Auf dieser Seite zeige ich einige Techniken zur Optimierung der Assemblerprogrammierung für den Z80 Prozessor. Optimierungen gegenüber der Standardprogrammierung ergeben sich entweder im Umfang des vom Assembler erzeugten Codes und / oder der Geschwindigkeit der Ausführung des Codes. Wenn in den Tabellen keine Hinweise angegeben sind ist der Ersatzcode absolut kompatibel mit Ausnahme der Ausführungszeit und der Codegröße.

Zuweisungen und Manipulationen

Einsatzzweck Standardcode Optimierter Code Vorteil Hinweise & Nachteil
Löschen des Akkumulators LD A,0 XOR A 1 Byte
3 Takte
Der Inhalt der Flags wird geändert
Löschen des Akkumulators LD A,0 SUB A 1 Byte
3 Takte
Der Inhalt der Flags wird geändert
Laden von Doppelregistern LD B,$55
LD C,$AA
LD BC,$55AA 1 Byte
4 Takte
kann auch auf die Registerpaare DE und HL angewendet werden
Belegen einer Speicherzelle LD A,$55
LD (HL),A
LD (HL),$55 1 Byte
4 Takte
A wird nicht mit dem Wert belegt
Inkrementieren / Dekrementieren einer Speicherzelle LD A,(adresse)
INC A
LD (adresse),A
LD HL,adresse
INC (HL)
LD A,(HL)
2 Byte
2 Takte
Benötigt zusätzlich das HL Register. LD A,(HL) kann entfallen wenn der Wert nicht benötigt wird.


Logik und Vergleiche

Einsatzzweck Standardcode Optimierter Code Vorteil Hinweise & Nachteil
Akkumulator auf 0 testen CP 0 OR A 1 Byte
3 Takte
Akkumulator auf 1 testen CP 1 DEC A 1 Byte
3 Takte
Achtung: Verändert den Inhalt von A
Akkumulator invertieren XOR $FF CPL 1 Byte
3 Takte
Akkumulator Bit 0 testen AND 1
CP 1
JR Z,label
AND 1
JR NZ,label
2 Byte
7 Takte


Programmablauf

Einsatzzweck Standardcode Optimierter Code Vorteil Hinweise & Nachteil
Unterprogrammaufruf vor Return Befehl CALL label
RET
JP label 1 Byte
17 Takte
Schleifen DEC B
JR NZ,label
DJNZ label 1 Byte
3 Takte
Kommt häufig vor wenn 8080 Programme auf Z80 übersetzt werden