lilbool's picture
Upload 212 files
497f2f3 verified
/* ARM assembly AARCH64 Raspberry PI 3B */
/* program 100doors64.s */
/*******************************************/
/* Constantes file */
/*******************************************/
/* for this file see task include a file in language AArch64 assembly*/
.include "../includeConstantesARM64.inc"
.equ NBDOORS, 100
/*********************************/
/* Initialized data */
/*********************************/
.data
sMessResult: .asciz "The door @ is open.\n"
/*********************************/
/* UnInitialized data */
/*********************************/
.bss
stTableDoors: .skip 8 * NBDOORS
sZoneConv: .skip 24
/*********************************/
/* code section */
/*********************************/
.text
.global main
main: // entry of program
// display first line
ldr x3,qAdrstTableDoors // table address
mov x5,1
1:
mov x4,x5
2: // begin loop
ldr x2,[x3,x4,lsl #3] // read doors index x4
cmp x2,#0
cset x2,eq
//moveq x2,#1 // if x2 = 0 1 -> x2
//movne x2,#0 // if x2 = 1 0 -> x2
str x2,[x3,x4,lsl #3] // store value of doors
add x4,x4,x5 // increment x4 with x5 value
cmp x4,NBDOORS // number of doors ?
ble 2b // no -> loop
add x5,x5,#1 // increment the increment !!
cmp x5,NBDOORS // number of doors ?
ble 1b // no -> loop
// loop display state doors
mov x4,#0
3:
ldr x2,[x3,x4,lsl #3] // read state doors x4 index
cmp x2,#0
beq 4f
mov x0,x4 // open -> display message
ldr x1,qAdrsZoneConv // display value index
bl conversion10 // call function
ldr x0,qAdrsMessResult
ldr x1,qAdrsZoneConv
bl strInsertAtCharInc // insert result at first @ character
bl affichageMess // display message
4:
add x4,x4,1
cmp x4,NBDOORS
ble 3b // loop
100: // standard end of the program
mov x0,0 // return code
mov x8,EXIT // request to exit program
svc 0 // perform the system call
qAdrstTableDoors: .quad stTableDoors
qAdrsMessResult: .quad sMessResult
qAdrsZoneConv: .quad sZoneConv
/***********************************************/
/* File Include fonctions */
/********************************************************/
/* for this file see task include a file in language AArch64 assembly */
.include "../includeARM64.inc"