Data update
This commit is contained in:
parent
07c7092a52
commit
61b93a2cd1
313 changed files with 6160 additions and 346 deletions
144
Task/Filter/ARM-Assembly/filter.arm
Normal file
144
Task/Filter/ARM-Assembly/filter.arm
Normal file
|
|
@ -0,0 +1,144 @@
|
|||
/* ARM assembly Raspberry PI */
|
||||
/* program filterdes.s */
|
||||
|
||||
/************************************/
|
||||
/* Constantes */
|
||||
/************************************/
|
||||
/* for constantes see task include a file in arm assembly */
|
||||
.include "../constantes.inc"
|
||||
|
||||
/************************************/
|
||||
/* Initialized data */
|
||||
/************************************/
|
||||
.data
|
||||
szMessResult: .asciz "Start array : "
|
||||
szMessResultFil: .asciz "Filter array : "
|
||||
szMessResultdest: .asciz "Same array : "
|
||||
szMessStart: .asciz "Program 32 bits start.\n"
|
||||
szCarriageReturn: .asciz "\n"
|
||||
.align 4
|
||||
arrayNumber: .int 1,2,3,4,5,6,7,8,9,10
|
||||
.equ LGARRAY, (. - arrayNumber) / 4
|
||||
/************************************/
|
||||
/* UnInitialized data */
|
||||
/************************************/
|
||||
.bss
|
||||
.align 4
|
||||
arrayNumberFil: .skip 4 * LGARRAY @ result array
|
||||
sZoneConv: .skip 24
|
||||
/************************************/
|
||||
/* code section */
|
||||
/************************************/
|
||||
.text
|
||||
.global main
|
||||
main:
|
||||
ldr r0,iAdrszMessStart @ display start message
|
||||
bl affichageMess
|
||||
ldr r0,iAdrszMessResult @ display message
|
||||
bl affichageMess
|
||||
ldr r5,iAdrarrayNumber @ start array address
|
||||
mov r4,#0 @ index
|
||||
|
||||
1:
|
||||
ldr r0,[r5,r4,lsl #2] @ load a value
|
||||
ldr r1,iAdrsZoneConv
|
||||
bl conversion10 @ décimal conversion
|
||||
add r1,r1,r0 @ compute address end number
|
||||
add r1,#2 @ add two characters
|
||||
mov r0,#0 @ for limit the size of display number
|
||||
strb r0,[r1] @ to store a final zero
|
||||
ldr r0,iAdrsZoneConv
|
||||
bl affichageMess @ display value
|
||||
add r4,r4,#1 @ increment index
|
||||
cmp r4,#LGARRAY @ end array ?
|
||||
blt 1b @ no -> loop
|
||||
ldr r0,iAdrszCarriageReturn
|
||||
bl affichageMess
|
||||
|
||||
ldr r6,iAdrarrayNumberFil @ adrress result array
|
||||
mov r4,#0 @ index
|
||||
mov r3,#0 @ index result
|
||||
2:
|
||||
ldr r0,[r5,r4,lsl #2] @ load a value
|
||||
tst r0,#1 @ odd ?
|
||||
streq r0,[r6,r3,lsl #2] @ no -> store in result array
|
||||
addeq r3,r3,#1 @ and increment result index
|
||||
add r4,r4,#1 @ increment array index
|
||||
cmp r4,#LGARRAY @ end ?
|
||||
blt 2b @ no -> loop
|
||||
|
||||
ldr r0,iAdrszMessResultFil
|
||||
bl affichageMess
|
||||
mov r4,#0 @ init index
|
||||
|
||||
3: @ display filter result array
|
||||
ldr r0,[r6,r4,lsl #2]
|
||||
ldr r1,iAdrsZoneConv
|
||||
bl conversion10
|
||||
add r1,r1,r0
|
||||
add r1,#2
|
||||
mov r0,#0
|
||||
strb r0,[r1]
|
||||
ldr r0,iAdrsZoneConv
|
||||
bl affichageMess
|
||||
add r4,r4,#1
|
||||
cmp r4,r3
|
||||
blt 3b
|
||||
ldr r0,iAdrszCarriageReturn
|
||||
bl affichageMess
|
||||
|
||||
@ array destruction
|
||||
mov r4,#0 @ index
|
||||
mov r3,#0 @ index result
|
||||
4:
|
||||
ldr r0,[r5,r4,lsl #2] @ load a value
|
||||
tst r0,#1 @ even ?
|
||||
bne 6f
|
||||
cmp r3,r4 @ index = no store
|
||||
beq 5f
|
||||
str r0,[r5,r3,lsl #2] @ store in free item on same array
|
||||
5:
|
||||
add r3,r3,#1 @ and increment result index
|
||||
6:
|
||||
add r4,r4,#1 @ increment array index
|
||||
cmp r4,#LGARRAY @ end ?
|
||||
blt 4b @ no -> loop
|
||||
|
||||
ldr r0,iAdrszMessResultdest
|
||||
bl affichageMess
|
||||
mov r4,#0 @ init index
|
||||
|
||||
7: @ display array
|
||||
ldr r0,[r5,r4,lsl #2]
|
||||
ldr r1,iAdrsZoneConv
|
||||
bl conversion10
|
||||
add r1,r1,r0
|
||||
add r1,#2
|
||||
mov r0,#0
|
||||
strb r0,[r1]
|
||||
ldr r0,iAdrsZoneConv
|
||||
bl affichageMess
|
||||
add r4,r4,#1
|
||||
cmp r4,r3
|
||||
blt 7b
|
||||
ldr r0,iAdrszCarriageReturn
|
||||
bl affichageMess
|
||||
|
||||
|
||||
100: @ standard end of the program
|
||||
mov r0, #0 @ return code
|
||||
mov r7, #EXIT @ request to exit program
|
||||
svc 0 @ perform the system call
|
||||
iAdrszCarriageReturn: .int szCarriageReturn
|
||||
iAdrszMessStart: .int szMessStart
|
||||
iAdrarrayNumber: .int arrayNumber
|
||||
iAdrszMessResult: .int szMessResult
|
||||
iAdrarrayNumberFil: .int arrayNumberFil
|
||||
iAdrszMessResultFil: .int szMessResultFil
|
||||
iAdrszMessResultdest: .int szMessResultdest
|
||||
iAdrsZoneConv: .int sZoneConv
|
||||
/***************************************************/
|
||||
/* ROUTINES INCLUDE */
|
||||
/***************************************************/
|
||||
/* for this file see task include a file in language ARM assembly*/
|
||||
.include "../affichage.inc"
|
||||
Loading…
Add table
Add a link
Reference in a new issue