Hier mal in Assembler, weniger als 3,3 sekunden![]()
Zu multiplizierende Werte in temp und temp2 laden, das Ergebniss steht dann in r0 und r1.Code:.include "m32def.inc" .def temp = r16 .def temp2 = r17 .def temp3 = r18 .def counter1 = r20 .def counter2 = r21 .def counter3 = r22 init: ldi temp, 0xff ;Ausgänge schalten um das Ende mit out DDRB, temp ;einer LED mitzuteilen out PortB, temp ldi counter1, 128 ;24bit Zahl (=1000000) ldi counter2, 150 ldi counter3, 152 start: ldi temp, 5 ;Werte laden ldi temp2, 2 multiplikation: mul temp, temp2 ;multiplizieren dec counter1 ;Schleife abarbeiten brne multiplikation dec counter2 brne multiplikation dec counter3 brne multiplikation fertig: cbi PortB, 2 ;LED an um Ende zu singalisieren ende: rjmp ende
Das Ergebniss könnte man dann auch gleich verarbeiten, nach erfolgter multiplikation kurze subroutine aufrufen und wieder zurückspringen.
Allerdings braucht das dann schon 9 Sekunden.Code:.include "m32def.inc" .def temp = r16 .def temp2 = r17 .def temp3 = r18 .def counter1 = r20 .def counter2 = r21 .def counter3 = r22 init: ldi temp,high(RAMEND) ;Stack einrichten out SPH,temp ldi temp,low(RAMEND) out SPL,temp ldi temp, 0xff ;Ausgänge schalten um das Ende mit out DDRB, temp ;einer LED mitzuteilen out PortB, temp ldi counter1, 128 ;24bit Zahl (=1000000) ldi counter2, 150 ldi counter3, 152 start: ldi temp, 5 ;Werte laden ldi temp2, 2 multiplikation: mul temp, temp2 ;multiplizieren rcall subroutine ;Ergebniss auswerten ;schneller wäre es die subroutine gleich hier auszuführen dec counter1 ;Schleife abarbeiten brne multiplikation dec counter2 brne multiplikation dec counter3 brne multiplikation fertig: cbi PortB, 2 ;LED an um Ende zu singalisieren ende: rjmp ende ;=========================== subroutine: ;hier kann man etwas mit dem in r0 und r1 stehenden Ergebniss machen ldi temp, 4 ;neue Werte laden inc temp2 ret ;zurück zum rechnen
Wie weit wird denn das Ergebniss verarbeitet?
das sollte auf jeden fall auch in Assembler erfolgen, sonst werden aus den 3,3 Sekunden 3,3 Minuten![]()
Gruß,
Sven







Zitieren

Lesezeichen