Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
94
Task/FizzBuzz/AArch64-Assembly/fizzbuzz.aarch64
Normal file
94
Task/FizzBuzz/AArch64-Assembly/fizzbuzz.aarch64
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
/* ARM assembly AARCH64 Raspberry PI 3B */
|
||||
/* program FizzBuzz64.s */
|
||||
|
||||
/*******************************************/
|
||||
/* Constantes file */
|
||||
/*******************************************/
|
||||
/* for this file see task include a file in language AArch64 assembly*/
|
||||
.include "../includeConstantesARM64.inc"
|
||||
|
||||
/*******************************************/
|
||||
/* Initialized data */
|
||||
/*******************************************/
|
||||
.data
|
||||
szMessFizz: .asciz "Fizz\n"
|
||||
szMessBuzz: .asciz "Buzz\n"
|
||||
szMessFizzBuzz: .asciz "FizzBuzz\n"
|
||||
szMessNumber: .asciz "Number : @ "
|
||||
szCarriageReturn: .asciz "\n"
|
||||
|
||||
/*******************************************/
|
||||
/* UnInitialized data */
|
||||
/*******************************************/
|
||||
.bss
|
||||
sZoneConv: .skip 24
|
||||
/*******************************************/
|
||||
/* code section */
|
||||
/*******************************************/
|
||||
.text
|
||||
.global main
|
||||
main: // entry of program
|
||||
mov x10,3 // divisor 3
|
||||
mov x11,5 // divisor 5
|
||||
mov x12,15 // divisor 15
|
||||
mov x13,1 // indice
|
||||
1: // loop begin
|
||||
udiv x14,x13,x12 // multiple 15
|
||||
msub x15,x14,x12,x13 // remainder
|
||||
cbnz x15,2f // zero ?
|
||||
mov x0,x13
|
||||
ldr x1,qAdrszMessFizzBuzz
|
||||
bl displayResult
|
||||
b 4f
|
||||
2: // multiple 3
|
||||
udiv x14,x13,x10
|
||||
msub x15,x14,x10,x13 // remainder
|
||||
cbnz x15,3f // zero ?
|
||||
mov x0,x13
|
||||
ldr x1,qAdrszMessFizz
|
||||
bl displayResult
|
||||
b 4f
|
||||
3: // multiple 5
|
||||
udiv x14,x13,x11
|
||||
msub x15,x14,x11,x13 // remainder
|
||||
cbnz x15,4f // zero ?
|
||||
mov x0,x13
|
||||
ldr x1,qAdrszMessBuzz
|
||||
bl displayResult
|
||||
4:
|
||||
add x13,x13,1 // increment indice
|
||||
cmp x13,100 // maxi ?
|
||||
ble 1b
|
||||
|
||||
100: // standard end of the program
|
||||
mov x8,EXIT // request to exit program
|
||||
svc 0 // perform the system call
|
||||
qAdrszMessFizzBuzz: .quad szMessFizzBuzz
|
||||
qAdrszMessFizz: .quad szMessFizz
|
||||
qAdrszMessBuzz: .quad szMessBuzz
|
||||
/******************************************************************/
|
||||
/* Display résult */
|
||||
/******************************************************************/
|
||||
/* x0 contains the number*/
|
||||
/* x1 contains display string address */
|
||||
displayResult:
|
||||
stp x2,lr,[sp,-16]! // save registers
|
||||
mov x2,x1
|
||||
ldr x1,qAdrsZoneConv // conversion number
|
||||
bl conversion10S // decimal conversion
|
||||
ldr x0,qAdrszMessNumber
|
||||
ldr x1,qAdrsZoneConv
|
||||
bl strInsertAtCharInc // insert result at @ character
|
||||
bl affichageMess // display message final
|
||||
mov x0,x2
|
||||
bl affichageMess
|
||||
|
||||
ldp x2,lr,[sp],16 // restaur 2 registers
|
||||
ret // return to address lr x30
|
||||
qAdrsZoneConv: .quad sZoneConv
|
||||
qAdrszMessNumber: .quad szMessNumber
|
||||
/********************************************************/
|
||||
/* File Include fonctions */
|
||||
/********************************************************/
|
||||
/* for this file see task include a file in language AArch64 assembly */
|
||||
.include "../includeARM64.inc"
|
||||
Loading…
Add table
Add a link
Reference in a new issue