.syntax unified
.global my_asm
.global my_asmAus
my_asm:
        movw r1,#0x4002
        mov r3,#256
        mul r1,r3
        mul r1,r3
        //mov.w r2,#0xA800
        //mul r2,r3
        //mul r2,r3
        //add r2,#0x0400
        //str r2,[r1,#0]

        //str r2,[r1,#0x18]
        cmp r0,#0
        B.Z Aus
        mov.w r2, #0x000020
        str r2,[r1,#0x14]
        bx lr
Aus:
        mov.w r2, #0x000000
        str r2,[r1,#0x14]
        //ite eq
        //streq r2,[r1,#0x1c]
        //strne r2,[r1,#0x18]
        bx lr
my_asmAus:
        movw r1,#0x4002
        mov r3,#256
        mul r1,r3
        mul r1,r3
        //mov.w r2,#0xA800
        //mul r2,r3
        //mul r2,r3
        //add r2,#0x0400
        //str r2,[r1,#0]
        mov.w r2, #0x000000
        str r2,[r1,#0x14]
        //cmp r0,#0
        //ite eq
        //streq r2,[r1,#0x1c]
        //strne r2,[r1,#0x18]
        bx lr
//
//ARMAssemblylanguagefunctiontosetLED1bittoavaluepassedfromC
//LED1getsvalue(passedfromCcompilerinR0)
//LED1isonGPIOport1bit18
//SeeChapter9intheLPC1768UserManual
//foralloftheGPIOregisterinfoandaddresses
//Pinnames.hhasthembedmodulespinportandbitconnections
//
//LoadGPIOPort1baseaddressinregisterR1
//LDRR1,=0x2009C020
//0x2009C020=GPIOport1baseaddress
//MovebitmaskinregisterR2forbit18only
//MOV.WR2,#0x040000//0x040000=1<<18all"0"switha"1"inbit18
//valuepassedfromCcompilercodeisinR0-comparetoa"0"
//CMPR0,#0//value==0?
//(If-Then-Else)onnexttwoinstructionsusingequalcondfromthezeroflag
//ITEEQ
//STOREifEQ-clearled1portbitusingGPIOFIOCLRregisterandmask
//STREQR2,[R1,#0x1C]//if==0,clearLED1bit
//STOREifNE-setled1portbitusingGPIOFIOSETregisterandmask
//STRNER2,[R1,#0x18]//if==1,setLED1bit
//ReturntoCusinglinkregister(BranchindirectusingLR-areturn)
//BXLR
//END
