Ok, so there's just me and maybe that guy in Russia. I'm determined to write something in ASM that works if it kills me. Even if it's just to flash a LED or send a character. Almost everything I've picked up so far comes from reading the list file. After poking a CRLF and fudging the RCC to quell the errors here's what AS thinks you want to do:
08000008 <_start>:
8000008: e59f0038 ldr r0, [pc, #56] ; 8000048 <delay+0xc>
800000c: e5901000 ldr r1, [r0]
8000010: e3811004 orr r1, r1, #4
8000014: e5801000 str r1, [r0]
8000018: e1a00000 nop ; (mov r0, r0)
0800001c <initf>:
800001c: e3a01401 mov r1, #16777216 ; 0x1000000
8000020: e59f0024 ldr r0, [pc, #36] ; 800004c <delay+0x10>
8000024: e5801000 str r1, [r0]
8000028: e3a02040 mov r2, #64 ; 0x40
0800002c <loop>:
800002c: e590100c ldr r1, [r0, #12]
8000030: e0211002 eor r1, r1, r2
8000034: e580100c str r1, [r0, #12]
8000038: e3a01501 mov r1, #4194304 ; 0x400000
0800003c <delay>:
800003c: e2511001 subs r1, r1, #1
8000040: 1afffffd bne 800003c <delay>
8000044: eafffff8 b 800002c <loop>
8000048: 00001234 andeq r1, r0, r4, lsr r2
800004c: 40010800 andmi r0, r1, r0, lsl #16
I'll admit it don't make a lot of sense to me ATM. Particularly those load stores. My own version to flash an LED isn't quite there yet either. I'm beginning to think it may actually take me more than 3 instructions to do it but we shall see.
ps. What does the "=" mean in your operands? I see it appends data to the binary but why?
It's also surprising you abandoned the ".thumb" directive. Was that intentional?