3a_asm: FIX: disc erwartet kein register
[calu.git] / 2_isa / src / umul.s
1 .text
2 ; r1 = a
3 ; r2 = b
4 unsignedmul:
5         ldis r0, 0     ; return reg init
6         ldis r3, 0     ; counter initialisieren
7         mov r4, r2
8         andx r2, 1         ; test ob gerade oder ungerade
9         addidnz r3, r3, 1  ; falls ungerade counter+1
10         adddnz r0, r0, r1  ; und c=c+a;
11 loop:
12         cmp r4, r3          ; compare counter == b
13         addidnz r3, r3, 2   ; counter+2
14         adddnz r0, r0, r1   ; c=c+a;
15         adddnz r0, r0, r1   ; c=c+a;
16         brnz+ loop    ; jump fals noch noch nicht fertig
17         ret