RosettaCodeData/Task/Variables/ARM-Assembly/variables.arm

60 lines
2.5 KiB
Plaintext

/* ARM assembly Raspberry PI */
/* program variable.s */
/************************************/
/* Constantes Définition */
/************************************/
.equ STDOUT, 1 @ Linux output console
.equ EXIT, 1 @ Linux syscall
.equ WRITE, 4 @ Linux syscall
/*********************************/
/* Initialized data */
/*********************************/
.data
szString: .asciz "String définition"
sArea1: .fill 11, 1, ' ' @ 11 spaces
@ or
sArea2: .space 11,' ' @ 11 spaces
cCharac: .byte '\n' @ character
cByte1: .byte 0b10101 @ 1 byte binary value
hHalfWord1: .hword 0xFF @ 2 bytes value hexa
.align 4
iInteger1: .int 123456 @ 4 bytes value decimal
iInteger3: .short 0500 @ 4 bytes value octal
iPointer1: .int 0x4000 @ 4 bytes value hexa
@ or
iPointer2: .word 0x4000 @ 4 bytes value hexa
iPointer3: .int 04000 @ 4 bytes value octal
TabInteger4: .int 5,4,3,2 @ Area of 4 integers = 4 * 4 = 16 bytes
iDoubleInt1: .quad 0xFFFFFFFFFFFFFFFF @ 8 bytes
dfFLOAT1: .double 0f-31415926535897932384626433832795028841971.693993751E-40 @ Float 8 bytes
sfFLOAT2: .float 0f-31415926535897932384626433832795028841971.693993751E-40 @ Float 4 bytes (or use .single)
/*********************************/
/* UnInitialized data */
/*********************************/
.bss
sBuffer: .skip 500 @ 500 bytes values zero
iInteger2: .skip 4 @ 4 bytes value zero
/*********************************/
/* code section */
/*********************************/
.text
.global main
main: @ entry of program
ldr r0,iAdriInteger2 @ load variable address
mov r1,#100
str r1,[r0] @ init variable iInteger2
100: @ standard end of the program
mov r0, #0 @ return code
mov r7, #EXIT @ request to exit program
svc #0 @ perform the system call
iAdriInteger2: .int iInteger2 @ variable address iInteger2