diff options
author | Santo Cariotti <dcariotti24@gmail.com> | 2020-05-10 18:02:05 +0200 |
---|---|---|
committer | Santo Cariotti <dcariotti24@gmail.com> | 2020-05-10 18:02:05 +0200 |
commit | 4527eda2f32a3d200b03aee03ea108aa49262589 (patch) | |
tree | e1e61ddc7880efaa46bdaaf8a01397033cffabfb /I_anno/Architettura_Elaboratori/odd_even_numbers.asm | |
parent | f3f1bd47f8af2c5c445d2201792d82dd02b24c9b (diff) |
feat: add ram manipulation exercises
Diffstat (limited to 'I_anno/Architettura_Elaboratori/odd_even_numbers.asm')
-rw-r--r-- | I_anno/Architettura_Elaboratori/odd_even_numbers.asm | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/I_anno/Architettura_Elaboratori/odd_even_numbers.asm b/I_anno/Architettura_Elaboratori/odd_even_numbers.asm new file mode 100644 index 0000000..996fd62 --- /dev/null +++ b/I_anno/Architettura_Elaboratori/odd_even_numbers.asm @@ -0,0 +1,36 @@ +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 |