lc4-disassembler / obj_files_for_testing / dmem_fact_ec.asm
dmem_fact_ec.asm
Raw


    .CODE
    .ADDR x0000
MAIN
    CONST R2, #32
    HICONST R2, #64
    ADD R3, R2, #5
FOR_LOOP
    CMP R2, R3
    BRzp END_FOR_LOOP
    JSR SUB_FACTORIAL
    ADD R2, R2, #1
    JMP FOR_LOOP
END_FOR_LOOP
    JMP END

    .ADDR x0010

SUB_FACTORIAL
    LDR R0, R2, #0
    CMPI R0, #0
    BRnp END_IF1
    CONST R1, #1
    JMP END_SUB_FACTORIAL
END_IF1
    BRp END_IF2
    CONST R1, #511
    JMP END_SUB_FACTORIAL
END_IF2
    CMPI R0, #7
    BRnz END_IF3
    CONST R1, #511
    JMP END_SUB_FACTORIAL
END_IF3
    ADD R1, R0, #0
LOOP
    CMPI R0, #1
    BRnz END_SUB_FACTORIAL
    ADD R0, R0, #-1
    MUL R1, R1, R0
    JMP LOOP
END_SUB_FACTORIAL
    STR R1, R2, #0
    JMPR R7
END
NOP

    .DATA
    .ADDR x4020
VALUES
.FILL x0006
.FILL x0005
.FILL x0008
.FILL x000A
.FILL xFFFB