Dein Programm könnte etwas kompakter so beschrieben werden:
1 | Warten:
|
2 | Mov R0, # 4
|
3 | M1: Mov R1, # 255
|
4 | M2: Mov R2, # 255
|
5 | M3: djnz R2,M3
|
6 | djnz R1,M2
|
7 | djnz R0,M1
|
dann ergibt sich die Anzahl der Schleifendurchläufe an M3 zu 4*255*255.
Aber diese Berechnung ist noch das allerkleinste Problem, das du hast.
Schlimmer sieht es da aus:
> Marke 1:
Labels dürfen keine Leerzeichen enthalten.
> Warten : Mov Ro, # 4 ;Lade Register R0 mit 4 Bit
Ro abcdef...klmn o pqr...xyz.
> Marke 1: Mov R1, # 255 ;Lade Register R1 mit 255 Bit
> Marke 2: Mov R2, # 255 ;Lade Register R2 mit 255 Bit
In R0..2 passen immer nur 8 Bit.
> Dec R2 ;Vom Inhalt des Registers R2 wird 1 abgezogen
> Mov A,R2 ;Lade Akkumulator mit Inhalt von Register R2
> JNZ Marke 3 ;Springe zu Marke 3 wenn Akkumulator ungl. 0
Dafür gibt es den Befehl djnz (decrement and jump if not zero).
> Jnz Marke 2 ;Springe zu Marke 2 wenn Akkumulator ungl. 0
> Dec R1 ;Vom Inhalt des Registers R1 wird 1 abgezogen
> Mov A,R1 ;Lade Akkumulator mit Inhalt von Register R1
> JNZ Marke 2 ;Springe zu Marke 2 wenn Akkumulator ungl. 0
Da wird 2 mal an die Marke 2 gesprungen, das ist so sicher nicht
beabsichtigt.
>T1, T2, T3 und T4
tauchen im Code nirgends auf.
Spare dir die ganzen Kommentare. Das was da steht, steht vorne im Code
schon wesentlich kompakter und leserlicher... ;-)
EDIT: Schade, zweiter...