Hallo,
ich verstehe den Assembler Code hier nicht. Komme leider von der C
Richtung und wollte nun mal etwas tiefer in die Materie einsteigen.
Problem macht mir konkret der Befehl brne nach den zwei compares.
Für das Null flag im sreg ist doch der erste compare völlig unerheblich,
oder? Warum ist der dann trozdem da. Fragen über Fragen...
1 | reset: clr r0
|
2 | out SREG, r0 ; Clear interrupts and flags
|
3 |
|
4 | ; Set up stack
|
5 | ldi2 ZL, ZH, RAMEND
|
6 | out SPH, ZH
|
7 | out SPL, ZL
|
8 | ; Clear RAM and all registers
|
9 | clear_loop: st -Z, r0
|
10 | cpi ZL, SRAM_START
|
11 | cpc ZH, r0
|
12 | brne clear_loop1
|
13 | ldi ZL, 30 ; Start clearing registers
|
14 | clear_loop1: cp ZL, r0
|
15 | cpc ZH, r0
|
16 | brne clear_loop ; Leaves with all registers (r0 through ZH) at 0
|