Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .syntax unified
- .global main
- main:
- @ set up the arguments
- mov r0, 66 @ ass1 mark
- mov r1, 73 @ ass2 mark
- mov r2, 71 @ ass3 mark
- @ call the function
- bl calculate_grade
- @ go to the end loop
- b end
- end:
- b end
- calculate_grade:
- str lr, [sp, #-4]!
- bl calculate_total_mark
- bl grade_from_mark
- ldr lr, [sp], #4
- bx lr
- calculate_total_mark:
- @ do stuff with the arguments
- @ ...
- mov r3, 4
- mov r4, 2
- sdiv r0, r3
- sdiv r1, r3
- sdiv r2, r4
- @ put the result in r0
- add r0, r0, r1
- add r0, r0, r2
- @ go back to where the function was called from
- bx lr
- grade_from_mark:
- cmp r0, 50
- it le
- movle r0, 0xf
- it le
- bxle lr
- mov r1, 99
- mov r2, 10
- sub r0, r1, r0
- udiv r0, r2
- add r0, 0xa
- bx lr
- grade_from_mark_recursive:
- cmp r0, 50
- it le
- movle r0, 0xf
- it le
- bxle lr
- cmp r0, 50
- itt eq
- movle r0, 0xe
- bx
- cmp r0, 60
- it eq
- movle r0, 0xe
- cmp r0, 70
- it eq
- movle r0, 0xe
- cmp r0, 80
- it eq
- movle r0, 0xe
- cmp r0, 90
- it eq
- movle r0, 0xe
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement