;********************* MULTIPLIKATION *************************************************** ; ; 32Bit Multiplikation ; result.64 = arg1.32 * arg2.32 mul32_64u: push r2 push r4 push r5 push r6 push r7 push r8 push r9 push r10 push r11 push r12 push r13 push r14 push r15 push r16 push r17 push r18 push r19 push r20 push r21 push r22 push r23 lds r16,arg1+7 lds r17,arg1+6 lds r18,arg1+5 lds r19,arg1+4 ; Arg1 lds r20,arg1+3 lds r21,arg1+2 lds r22,arg1+1 lds r23,arg1+0 ; Arg2 sub r2,r2 ; Null mul r16,r20 ; A0*B0 movw r5:r4,r1:r0 mul r17,r21 ; A1*B1 movw r7:r6,r1:r0 mul r18,r22 ; A2*B2 movw r9:r8,r1:r0 mul r19,r23 ; A3*B3 movw r11:r10,r1:r0 mul r18,r23 ; A3*B2 movw r15:r14,r1:r0 mul r17,r22 ; A2*B1 movw r13:r12,r1:r0 mul r16,r21 ; A1*B0 add r5, r0 adc r6, r1 adc r7, r12 adc r8, r13 adc r9, r14 adc r10,r15 adc r11,r2 mul r19,r22 ; A2*B3 movw r15:r14,r1:r0 mul r18,r21 ; A1*B2 movw r13:r12,r1:r0 mul r17,r20 ; A0*B1 add r5, r0 adc r6, r1 adc r7, r12 adc r8, r13 adc r9, r14 adc r10,r15 adc r11,r2 mul r17,r23 ; A3*B1 movw r13:r12,r1:r0 mul r16,r22 ; A2*B0 add r6, r0 adc r7, r1 adc r8, r12 adc r9, r13 adc r10,r2 adc r11,r2 mul r19,r21 ; A1*B3 movw r13:r12,r1:r0 mul r18,r20 ; A0*B2 add r6, r0 adc r7, r1 adc r8, r12 adc r9, r13 adc r10,r2 adc r11,r2 mul r16,r23 ; A3*B0 movw r13:r12,r1:r0 mul r19,r20 ; A0*B3 add r7, r0 adc r8, r1 adc r9, r2 adc r10,r2 adc r11,r2 add r7, r12 adc r8, r13 adc r9, r2 adc r10,r2 adc r11,r2 sts arg1+15,r4 sts arg1+14,r5 sts arg1+13,r6 sts arg1+12,r7 sts arg1+11,r8 sts arg1+10,r9 sts arg1+9 ,r10 sts arg1+8 ,r11 pop r23 pop r22 pop r21 pop r20 pop r19 pop r18 pop r17 pop r16 pop r15 pop r14 pop r13 pop r12 pop r11 pop r10 pop r9 pop r8 pop r7 pop r6 pop r5 pop r4 pop r2 ret