diff options
Diffstat (limited to '1_anno/Architettura_Elaboratori')
-rw-r--r-- | 1_anno/Architettura_Elaboratori/biggest.asm | 31 | ||||
-rw-r--r-- | 1_anno/Architettura_Elaboratori/counter_numbers.asm | 33 | ||||
-rw-r--r-- | 1_anno/Architettura_Elaboratori/division.asm | 23 | ||||
-rw-r--r-- | 1_anno/Architettura_Elaboratori/find_elem.asm | 34 | ||||
-rw-r--r-- | 1_anno/Architettura_Elaboratori/lowest.asm | 31 | ||||
-rw-r--r-- | 1_anno/Architettura_Elaboratori/multiply.asm | 21 | ||||
-rw-r--r-- | 1_anno/Architettura_Elaboratori/num_of_1s.asm | 20 | ||||
-rw-r--r-- | 1_anno/Architettura_Elaboratori/odd_even_numbers.asm | 36 | ||||
-rw-r--r-- | 1_anno/Architettura_Elaboratori/subsequence_less_than_5.asm | 30 | ||||
-rw-r--r-- | 1_anno/Architettura_Elaboratori/sum_n_nums.asm | 23 | ||||
-rw-r--r-- | 1_anno/Architettura_Elaboratori/vector_prod.asm | 103 |
11 files changed, 0 insertions, 385 deletions
diff --git a/1_anno/Architettura_Elaboratori/biggest.asm b/1_anno/Architettura_Elaboratori/biggest.asm deleted file mode 100644 index a604350..0000000 --- a/1_anno/Architettura_Elaboratori/biggest.asm +++ /dev/null @@ -1,31 +0,0 @@ -array dcd 3, 6, 10, 55, -1, 120, 10, -2, 0, 0, 13 -arr_n dcd 12 - - mov r0, #arr_n - ldr r1, [r0] ; r1 = grandezza dell'array - - mov r0, #array ; r0 = array[0] - ldr r3, [r0] ; r3 = numero maggiore - -loop - cmp r1, #0 - beq loop_end - - ldr r2, [r0] - - cmp r2, r3 - bgt assign_gt - - add r0, r0, #4 - -loop_back - sub r1, r1, #1 - - b loop - -assign_gt - mov r3, r2 - b loop_back - -loop_end - end diff --git a/1_anno/Architettura_Elaboratori/counter_numbers.asm b/1_anno/Architettura_Elaboratori/counter_numbers.asm deleted file mode 100644 index e48f1e3..0000000 --- a/1_anno/Architettura_Elaboratori/counter_numbers.asm +++ /dev/null @@ -1,33 +0,0 @@ -array dcd 1, 24, 0, 12, 24, 2, 24, 24 -arr_n dcd 8 -elem dcd 24 - - mov r0, #arr_n - ldr r1, [r0] ; r1 = lunghezza array - - mov r0, #elem - ldr r2, [r0] ; r2 = elemento da controllare - - mov r0, #array - mov r4, #0 ; r4 = contatore delle occorrenze - -loop - cmp r1, #0 - beq loop_end - - ldr r3, [r0] ; r3 = valore in cui punta r0 - cmp r3, r2 - beq found - -loop_back - add r0, r0, #4 ; r0 punta alla nuova word - sub r1, r1, #1 - - b loop - -found - add r4, r4, #1 - b loop_back - -loop_end - end diff --git a/1_anno/Architettura_Elaboratori/division.asm b/1_anno/Architettura_Elaboratori/division.asm deleted file mode 100644 index 6b9f80a..0000000 --- a/1_anno/Architettura_Elaboratori/division.asm +++ /dev/null @@ -1,23 +0,0 @@ -op_a dcd 42 -op_b dcd 6 - - mov r0, #op_a - ldr r1, [r0] - - mov r0, #op_b - ldr r2, [r0] - - mov r0, #0 - -loop - cmp r1, r2 - blt loop_end - - sub r1, r1, r2 - add r0, r0, #1 - - b loop - -loop_end - - end diff --git a/1_anno/Architettura_Elaboratori/find_elem.asm b/1_anno/Architettura_Elaboratori/find_elem.asm deleted file mode 100644 index db7dc35..0000000 --- a/1_anno/Architettura_Elaboratori/find_elem.asm +++ /dev/null @@ -1,34 +0,0 @@ -array dcd 1, 3, 2, 4, 0 -arr_n dcd 5 -elem dcd 3 - - mov r0, #arr_n - ldr r1, [r0] ; r1 <- lunghezza array - - mov r0, #elem - ldr r2, [r0] ; r2 <- elemento da cercare - - mov r0, #array ; r0 <- puntatore al primo elemento dell'array - -loop - cmp r1, #0 - beq loop_end - - ldr r3, [r0] - - cmp r3, r2 - beq found - - add r0, r0, #4 - sub r1, r1, #1 - - - b loop - -found - mov r4, #0 ; r4 = 1, quindi trovato - end - -loop_end - mov r4, #1 ; r4 = 0, quindi non trovto - end diff --git a/1_anno/Architettura_Elaboratori/lowest.asm b/1_anno/Architettura_Elaboratori/lowest.asm deleted file mode 100644 index 3dccb4a..0000000 --- a/1_anno/Architettura_Elaboratori/lowest.asm +++ /dev/null @@ -1,31 +0,0 @@ -array dcd 3, 6, 10, 55, -1, 120, 10, -2, 0, 0, 13 -arr_n dcd 12 - - mov r0, #arr_n - ldr r1, [r0] ; r1 = grandezza dell'array - - mov r0, #array ; r0 = array[0] - ldr r3, [r0] ; r3 = numero maggiore - -loop - cmp r1, #0 - beq loop_end - - ldr r2, [r0] - - cmp r2, r3 - blt assign_lt - - add r0, r0, #4 - -loop_back - sub r1, r1, #1 - - b loop - -assign_lt - mov r3, r2 - b loop_back - -loop_end - end diff --git a/1_anno/Architettura_Elaboratori/multiply.asm b/1_anno/Architettura_Elaboratori/multiply.asm deleted file mode 100644 index 1635a6d..0000000 --- a/1_anno/Architettura_Elaboratori/multiply.asm +++ /dev/null @@ -1,21 +0,0 @@ -op_1 dcd 4 -op_2 dcd 10 - - mov r0, #op_1 - ldr r1, [r0] - - mov r0, #op_2 - ldr r2, [r0] - - mov r0, #0 - -loop - cmp r2, #0 - beq loop_end - - add r0, r0, r1 - sub r2, r2, #1 - b loop - -loop_end - end diff --git a/1_anno/Architettura_Elaboratori/num_of_1s.asm b/1_anno/Architettura_Elaboratori/num_of_1s.asm deleted file mode 100644 index ffbd4f4..0000000 --- a/1_anno/Architettura_Elaboratori/num_of_1s.asm +++ /dev/null @@ -1,20 +0,0 @@ -num dcd 27 ; 0b11011 - - mov r0, #num - ldr r0, [r0] - mov r2, r0 - - mov r1, #32 - -loop - and r4, r2, #1 - cmp r4, #1 - bne itszero - add r3, r3, #1 -itszero - lsr r2, r2, #1 - sub r1, r1, #1 - cmp r1, #0 - bne loop - - end diff --git a/1_anno/Architettura_Elaboratori/odd_even_numbers.asm b/1_anno/Architettura_Elaboratori/odd_even_numbers.asm deleted file mode 100644 index 996fd62..0000000 --- a/1_anno/Architettura_Elaboratori/odd_even_numbers.asm +++ /dev/null @@ -1,36 +0,0 @@ -arr_n dcd 8 -array dcd 1, 2, 4, 6, -5, 8, 7, 3 -s_arr dcd 0 - - mov r0, #arr_n - ldr r0, [r0] - mov r1, r0 - - mov r4, #1 ; 0 = even, 1 = odd - mov r6, #0 ; number of elements on new sequence - - mov r2, #s_arr - - mov r1, #array - -loop - cmp r0, #0 - beq end_program - ldr r3, [r1], #4 - mov r5, r3 - - and r5, r3, #1 - cmp r5, r4 ; check if element stored in r3 is odd or even - beq data_store -subn_loop - sub r0, r0, #1 - b loop - -data_store - str r3, [r2], #4 - add r6, r6, #1 - b subn_loop - -end_program - str r6, [r2] - end diff --git a/1_anno/Architettura_Elaboratori/subsequence_less_than_5.asm b/1_anno/Architettura_Elaboratori/subsequence_less_than_5.asm deleted file mode 100644 index 3c266d5..0000000 --- a/1_anno/Architettura_Elaboratori/subsequence_less_than_5.asm +++ /dev/null @@ -1,30 +0,0 @@ -arr_n dcd 6 -array dcd 3, 6, 7, 2, 9, 0 -s_arr dcd 1 - - mov r0, #arr_n - ldr r0, [r0] - mov r1, r0 - - mov r2, #s_arr - mov r1, #array - mov r4, #0 ; number of elements on new sequence - -loop - cmp r0, #0 - beq end_program - ldr r3, [r1], #4 - cmp r3, #5 ; number to compare - blt data_store -subn_loop - sub r0, r0, #1 - b loop - -data_store - str r3, [r2], #4 - add r4, r4, #1 - b subn_loop - -end_program - str r4, [r2] - end diff --git a/1_anno/Architettura_Elaboratori/sum_n_nums.asm b/1_anno/Architettura_Elaboratori/sum_n_nums.asm deleted file mode 100644 index 0efcedc..0000000 --- a/1_anno/Architettura_Elaboratori/sum_n_nums.asm +++ /dev/null @@ -1,23 +0,0 @@ -arr_1 dcd 3, 2, 1, 5 -a_len dcd 4 - - mov r0, #a_len - ldr r1, [r0] ; valore N, grandezza array - - mov r0, #arr_1 ; puntatore dell'array - ldr r2, [r0] ; primo valore dell'array - mov r3, #0 - -loop - cmp r1, #0 - beq loop_end - - add r3, r3, r2 - add r0, r0, #4 ; incrementa di un byte il puntatore dell'array - ldr r2, [r0] - - sub r1, r1, #1 - b loop - -loop_end - end diff --git a/1_anno/Architettura_Elaboratori/vector_prod.asm b/1_anno/Architettura_Elaboratori/vector_prod.asm deleted file mode 100644 index cf5e4ef..0000000 --- a/1_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 |