diff options
Diffstat (limited to 'I_anno/Architettura_Elaboratori/vector_prod.asm')
-rw-r--r-- | I_anno/Architettura_Elaboratori/vector_prod.asm | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/I_anno/Architettura_Elaboratori/vector_prod.asm b/I_anno/Architettura_Elaboratori/vector_prod.asm deleted file mode 100644 index cf5e4ef..0000000 --- a/I_anno/Architettura_Elaboratori/vector_prod.asm +++ /dev/null @@ -1,103 +0,0 @@ -array1 dcd 1, 3, 4, 1 -array2 dcd 1, 0, 2, 0 -arrayn dcd 4 - - mov r0, #arrayn - ldr r0, [r0] ; r0 = lunghezza array - - mov r1, #array1 ; r1 = puntatore al primo array - mov r2, #array2 ; r2 = puntatore al secondo array - -loop - cmp r0, #0 - beq loop_end - - ldr r3, [r1] ; r3 = valore a cui punta r1 - ldr r4, [r2] ; r4 = valore a cui punta r2 - - cmp r3, #0 ; se r3 è 0, la moltiplicazione sarà 0 - beq r3_store - blt after_neg3 ; se r3 è negativo, cambia il filtro a 1 -jp_before4 - cmp r4, #0 ; se r4 è 0, la moltiplicazione sarà 0 - beq r4_store - blt after_neg4 ; se r4 è negativo, controlla se il filtro è già 1, in caso lo cambia -jp_after4 - cmp r3, r4 ; confronta r3 e r4 per fare la moltiplicazione con ciclo minore - bgt mul_r3 - ble mul_r4 - -loop_back - add r1, r1, #4 ; incrementa i puntatori e decrementa contatore - add r2, r2, #4 - sub r0, r0, #1 - mov r6, #0 - - b loop - -after_neg3 - mvn r3, r3 - add r3, r3, #1 - mov r6, #1 - b jp_before4 - -restart_r6 - mov r6, #0 - b jp_afte4 - -after_neg4 - mvn r4, r4 - add r4, r4, #1 - cmp r6, #1 - beq restart_r6 ; re inserisce il valore 0 perché fa prodotto di due negativi - - mov r6, #1 - b jp_after4 - -neg3 - mvn r3, r3 - add r3, r3, #1 - add r5, r5, r3 - b loop_back - -r3_store - cmp r6, #1 - beq neg3 - str r3, [r1] - add r5, r5, r3 - b loop_back - -neg4 - mvn r4, r4 - add r4, r4, #1 - str r4, [r1] - add r5, r5, r4 - b loop_back - -r4_store - cmp r6, #1 - beq neg4 - str r4, [r1] - add r5, r5, r4 - b loop_back - -mul_r3 - cmp r4, #1 - ble r3_store - - add r3, r3, r3 - - sub r4, r4, #1 - b mul_r3 - -mul_r4 - cmp r3, #1 - ble r4_store - - add r4, r4, r4 - - sub r3, r3, #1 - b mul_r4 - -loop_end - end |