Hier mal in Assembler, weniger als 3,3 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, 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
Zu multiplizierende Werte in temp und temp2 laden, das Ergebniss steht dann in r0 und r1.
Das Ergebniss könnte man dann auch gleich verarbeiten, nach erfolgter multiplikation kurze subroutine aufrufen und wieder zurückspringen.
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
Allerdings braucht das dann schon 9 Sekunden.
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
Lesezeichen