June 2018 Update
This commit is contained in:
parent
ba8067c3b7
commit
22f33d4004
5278 changed files with 84726 additions and 14379 deletions
119
Task/FizzBuzz/ARM-Assembly/fizzbuzz.arm
Normal file
119
Task/FizzBuzz/ARM-Assembly/fizzbuzz.arm
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
/ * linux GAS */
|
||||
|
||||
.global _start
|
||||
|
||||
.data
|
||||
|
||||
Fizz: .ascii "Fizz\n"
|
||||
Buzz: .ascii "Buzz\n"
|
||||
FizzAndBuzz: .ascii "FizzBuzz\n"
|
||||
|
||||
numstr_buffer: .skip 3
|
||||
newLine: .ascii "\n"
|
||||
|
||||
.text
|
||||
|
||||
_start:
|
||||
|
||||
bl FizzBuzz
|
||||
|
||||
mov r7, #1
|
||||
mov r0, #0
|
||||
svc #0
|
||||
|
||||
FizzBuzz:
|
||||
|
||||
push {lr}
|
||||
mov r9, #100
|
||||
|
||||
fizzbuzz_loop:
|
||||
|
||||
mov r0, r9
|
||||
mov r1, #15
|
||||
bl divide
|
||||
cmp r1, #0
|
||||
ldreq r1, =FizzAndBuzz
|
||||
moveq r2, #9
|
||||
beq fizzbuzz_print
|
||||
|
||||
mov r0, r9
|
||||
mov r1, #3
|
||||
bl divide
|
||||
cmp r1, #0
|
||||
ldreq r1, =Fizz
|
||||
moveq r2, #5
|
||||
beq fizzbuzz_print
|
||||
|
||||
mov r0, r9
|
||||
mov r1, #5
|
||||
bl divide
|
||||
cmp r1, #0
|
||||
ldreq r1, =Buzz
|
||||
moveq r2, #5
|
||||
beq fizzbuzz_print
|
||||
|
||||
mov r0, r9
|
||||
bl make_num
|
||||
mov r2, r1
|
||||
mov r1, r0
|
||||
|
||||
fizzbuzz_print:
|
||||
|
||||
mov r0, #1
|
||||
mov r7, #4
|
||||
svc #0
|
||||
|
||||
sub r9, #1
|
||||
cmp r9, #0
|
||||
|
||||
bgt fizzbuzz_loop
|
||||
|
||||
pop {lr}
|
||||
mov pc, lr
|
||||
|
||||
make_num:
|
||||
|
||||
push {lr}
|
||||
ldr r4, =numstr_buffer
|
||||
mov r5, #4
|
||||
mov r6, #1
|
||||
|
||||
mov r1, #100
|
||||
bl divide
|
||||
|
||||
cmp r0, #0
|
||||
subeq r5, #1
|
||||
movne r6, #0
|
||||
|
||||
add r0, #48
|
||||
strb r0, [r4, #0]
|
||||
|
||||
mov r0, r1
|
||||
mov r1, #10
|
||||
bl divide
|
||||
|
||||
cmp r0, #0
|
||||
movne r6, #0
|
||||
cmp r6, #1
|
||||
subeq r5, #1
|
||||
|
||||
add r0, #48
|
||||
strb r0, [r4, #1]
|
||||
|
||||
add r1, #48
|
||||
strb r1, [r4, #2]
|
||||
|
||||
mov r2, #4
|
||||
sub r0, r2, r5
|
||||
add r0, r4, r0
|
||||
mov r1, r5
|
||||
|
||||
pop {lr}
|
||||
mov pc, lr
|
||||
|
||||
divide:
|
||||
udiv r2, r0, r1
|
||||
mul r3, r1, r2
|
||||
sub r1, r0, r3
|
||||
mov r0, r2
|
||||
mov pc, lr
|
||||
Loading…
Add table
Add a link
Reference in a new issue