Assembler - welches programm ist schneller?

============
Programm 1

CPU 8085
ORG 00h

LXI SP, 6400h
LXI H, 0204h
CALL ZAEHL

ZAEHL: PUSH H
PUSH PSW

Me1: DCR L ;erst LowByte dekrementieren
JNZ Me1
DCR H ;LowByte gleich null dann HighByte dekrementieren
JZ LastRun ;wenn HighByte 0 dann noch ein durchlauf mit L dekrementieren
MVI L, 0FFh ;HigByte um 1 reduziert dann LowByte voll setzen
JMP Me1 ;LowByte wieder dekrementieren

LastRun:MVI L, 0FFh ;wenn HighByte gleich 0 noch ein letztes mal LowByte dekrementieren
Me2: DCR L ;LowByte ein letztes mal dekrementieren
JNZ Me2

POP PSW
POP H
RET

==================================================
Programm 2

CPU 8085
ORG 00h

LXI SP, 6400h
LXI H, 0204h
CALL ZAEHL

ZAEHL: PUSH H
PUSH PSW

Me1: DCX H ;Zweibyte dekrement
CMP H ;Vergleiche HighByte mit Null
JNZ Me1 ;Nicht Null dekrementiere weiter
CMP L ;Vergleiche LowByte mit Null
JNZ Me1 ;Nicht Null kerementiere weiter

POP PSW
POP H
RET

keine Ahnung…
aber es kommt auf die CPU an.

Jeder Befehl brauch eine bestimmte Anzahl von tackten.

Die kann man addieren.

Jetzt muss man nur noch wissen wie viele Takte welcher Befehl auf diesem Rechner braucht.

Hilft das? - wahrscheinlich nicht - aber Gruß aus Ludwigshafen

Hallo,

Für den konkreten Prozessor müste ich das natürlich auch im Datenblatt nachlesen, aber die Erfahrung lehrt, daß CoMPare-Befehle immer relativ langsam sind (setzt eigentlich DCX nicht schon die Flags passend?) - ich würde also die erste Version bevorzugen.

Cu Rene

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]