ldr r0, status_byte
sub r1, r1, r1 or lsl r1, #0x20 (i don't know why you were using r0 which already has data in it, just subtract from itself.)
strb r0, [r1] (we have to change the byte at the offset, right?:p)
I don't know if you read my section in the ASM tut about using the LR and PC to return to a script after completion. That part is on me, I forgot to tell you. Since the routine did not know to return, it got stuck, tried to run the pointers as code and froze the game.