3a_asm/2_isa: fixed our examples
[calu.git] / 2_isa / src / umul.s
index 1b31acba34d5afcca8c87b0e886a9a8fd5dede7e..37e04d515938461ac114eac8803bafa694e075d0 100644 (file)
@@ -1,23 +1,14 @@
-int unsignedmul(int a,int b){
-       int i,c=0;      
-       for(i=0;i<b;i++){
-               c=c+a;
-       }       
-       return c;
-}
-
-
-
-
-.unsignedmul:
-       ldis r3, 0 // counter initialisieren
-       andx r2, 1 // test ob gerade oder ungerade
-       addinz r3, 1     # su // fals ungerade counter+1
-       addnz r0, r0, r1 # su // und c=c+a;
-.loop:
-       cmp r2, r3 // compare counter == b
-       addinz r3, 2     # su // counter+2
-       addnz r0, r0, r1 # su // c=c+a;
-       addnz r0, r0, r1 # su // c=c+a;
-       branchnz+ .loop   # su // jump fals noch noch nicht fertig
+.text
+
+unsignedmul:
+       ldis r3, 0         ; counter initialisieren
+       andx r2, 1         ; test ob gerade oder ungerade
+       addidnz r3, r3, 1      ; fals ungerade counter+1
+       adddnz r0, r0, r1  ; und c=c+a;
+loop:
+       cmp r2, r3          ; compare counter == b
+       addidnz r3, r3, 2       ; counter+2
+       adddnz r0, r0, r1   ; c=c+a;
+       adddnz r0, r0, r1   ; c=c+a;
+       brnz+ loop    ; jump fals noch noch nicht fertig
        ret