/* ARM assembly Raspberry PI */ /* program strcase.s */ /************************************/ /* Constantes */ /************************************/ /* for this file see task include a file in language ARM assembly*/ .include "../constantes.inc" /************************************/ /* Initialized data */ /************************************/ .data szMessResult: .asciz "Result: \n" szString: .asciz "alphaBETA" szCarriageReturn: .asciz "\n" szMessStart: .asciz "Program 32 bits start.\n" /************************************/ /* UnInitialized data */ /************************************/ .bss sBuffer: .skip 80 sBuffer1: .skip 80 /************************************/ /* code section */ /************************************/ .text .global main main: @ entry of program ldr r0,iAdrszMessStart bl affichageMess ldr r1,iAdrszString ldr r3,iAdrsBuffer ldr r4,iAdrsBuffer1 mov r6,#0b100000 @ 1 -> bit 5 mov r2,#0 1: ldrb r0,[r1,r2] @ load byte of string mov r5,r0 cmp r0,#'A' @ select alpha characters lower or upper blt 3f cmp r0,#'z' bgt 3f cmp r0,#'Z' ble 2f cmp r0,#'a' bge 2f b 3f 2: orr r0,r0,r6 @ converion in lower case (1 -> bit 5) bic r5,r0,r6 @ converion in upper case (0 -> bit 5) 3: strb r0,[r3,r2] @ store lower character strb r5,[r4,r2] @ store upper character cmp r0,#0 @ end string ? add r2,r2,#1 @ increment index character bne 1b @ loop ldr r0,iAdrszMessResult bl affichageMess ldr r0,iAdrsBuffer bl affichageMess ldr r0,iAdrszCarriageReturn bl affichageMess ldr r0,iAdrsBuffer1 bl affichageMess ldr r0,iAdrszCarriageReturn bl affichageMess 100: @ standard end of the program mov r0, #0 @ return code mov r7, #EXIT @ request to exit program swi 0 @ perform the system call iAdrszString: .int szString iAdrsBuffer: .int sBuffer iAdrsBuffer1: .int sBuffer1 iAdrszMessResult: .int szMessResult iAdrszCarriageReturn: .int szCarriageReturn iAdrszMessStart: .int szMessStart /***************************************************/ /* ROUTINES INCLUDE */ /***************************************************/ /* for this file see task include a file in language ARM assembly*/ .include "../affichage.inc"