Linguagem de Montagem do BRAÇO uART0 Input Output, O que estou fazendo de errado.

Escreva duas (2) sub-rotinas da linguagem assembly ARM, chamadas output_char e read_char. Essas sub-rotinas permitirão ao usuário inserir um caractere e exibi-lo no PuTTy via UART. Todas as entradas do usuário devem ser repetidas no visor

Tentei escrever o código, mas não funcionou.

U0LSR EQU 0x14          
register EQU 0xE000C000


    STMFD SP!,{lr}  

read_character
    LDR r0, =0xE000C014
    LDRB r1, [r0]
    BIC r1, r1, #0xFFFFFFFE
    CMP r1, #0
    BEQ read_character
    LDR r6, =register
    LDR r2, [r6]



output_character
    LDR r0, =0xE000C014
    LDRB r1, [r0]
    BIC  r1, r1, #0xFFFFFFEF
    MOV r1, r1, LSR #1
    CMP r1, #0
    BEQ output_character
    LDR r6, =register
    STR r2, [r6]

    LDMFD sp!, {lr}
    BX lr

questionAnswers(1)

yourAnswerToTheQuestion