How to increment a letter in string in lc3?

前端 未结 1 1280
粉色の甜心
粉色の甜心 2020-12-12 04:28

I am writing an LC3 program that increments each letter of a three-letter word stored in memory following the program. \'a\' becomes \'d\', \'n\' becomes \'q\', \'z\' becom

相关标签:
1条回答
  • 2020-12-12 05:07

    Using a while loop, I was able to get it to increment each char of the string until a null value is found. I didn't code it to loop back around (z becoming c) but this should get you started.

    ;tells simulator where to put my code in memory(starting location). PC is set to thsi address at start up
    .orig x3000
    
    MAIN
        AND R1, R1, #0      ; clear our loop counter
    
        WHILE_LOOP
            LEA R2, STRING      ; load the memory location of the first char into R1
            ADD R2, R2, R1      ; Add our counter to str memory location. R2 = mem[R1 + R2]
            LDR R3, R2, #0      ; Loads the value stored in the memory location of R2
            BRz END_WHILE       ; If there is no char then exit loop
    
            ADD R3, R3, #3      ; change the char 
            STR R3, R2, #0      ; store the value in R3 back to the location in R2
            ADD R1, R1, #1      ; add one to our loop counter
            BR WHILE_LOOP       ; jump to the top of our loop
        END_WHILE
    
        HALT
    
    ; Stored Data
    STRING      .STRINGZ "anz"    
    
    .END
    
    0 讨论(0)
提交回复
热议问题