64 lines
2.3 KiB
Text
64 lines
2.3 KiB
Text
/* ARM assembly AARCH64 Raspberry PI 3B */
|
|
/* program concatStr64.s */
|
|
|
|
/*******************************************/
|
|
/* Constantes file */
|
|
/*******************************************/
|
|
/* for this file see task include a file in language AArch64 assembly*/
|
|
.include "../includeConstantesARM64.inc"
|
|
/*******************************************/
|
|
/* Initialized data */
|
|
/*******************************************/
|
|
.data
|
|
szMessFinal: .asciz "The final string is \n"
|
|
|
|
szString: .asciz "Hello "
|
|
szString1: .asciz " the world. \n"
|
|
/*******************************************/
|
|
/* UnInitialized data */
|
|
/*******************************************/
|
|
.bss
|
|
szFinalString: .skip 255
|
|
/*******************************************/
|
|
/* code section */
|
|
/*******************************************/
|
|
.text
|
|
.global main
|
|
main:
|
|
// load string
|
|
ldr x1,qAdrszString
|
|
ldr x2,qAdrszFinalString
|
|
mov x4,0
|
|
1:
|
|
ldrb w0,[x1,x4] // load byte of string
|
|
strb w0,[x2,x4]
|
|
cmp x0,0 // compar with zero ?
|
|
add x3,x4,1
|
|
csel x4,x3,x4,ne // if x0 <> 0 x4 = x4 +1 sinon x4
|
|
bne 1b
|
|
ldr x1,qAdrszString1
|
|
mov x3,0
|
|
2:
|
|
ldrb w0,[x1,x3] // load byte of string 1
|
|
strb w0,[x2,x4]
|
|
cmp x0,0 // compar with zero ?
|
|
add x5,x4,1
|
|
csel x4,x5,x4,ne
|
|
add x5,x3,1
|
|
csel x3,x5,x3,ne
|
|
bne 2b
|
|
mov x0,x2 // display final string
|
|
bl affichageMess
|
|
100: // standard end of the program */
|
|
mov x0,0 // return code
|
|
mov x8,EXIT // request to exit program
|
|
svc 0 // perform the system call
|
|
qAdrszString: .quad szString
|
|
qAdrszString1: .quad szString1
|
|
qAdrszFinalString: .quad szFinalString
|
|
qAdrszMessFinal: .quad szMessFinal
|
|
/********************************************************/
|
|
/* File Include fonctions */
|
|
/********************************************************/
|
|
/* for this file see task include a file in language AArch64 assembly */
|
|
.include "../includeARM64.inc"
|