1

我正在编写一个 LC3 程序,该程序在程序之后递增存储在内存中的三字母单词的每个字母。“a”变成“d”,“n”变成“q”,“z”变成“c”,等等。

我将其用作LC3 Assembly的参考

到目前为止,这是我的代码

.orig x3000
ADD R1, R1, #3 
LEA R2, STRING  
HALT
STRING  .STRINGZ "anz"    
.END

在此处输入图像描述

我能够从我的参考资料中弄清楚如何在 LC3 中声明一个字符串。但是,有没有人如何进行实际的增量或有任何参考资料可以用来弄清楚如何做?

4

1 回答 1

3

使用while循环,我能够让它增加字符串的每个字符,直到找到一个空值。我没有将它编码为循环返回(z 变为 c),但这应该让你开始。

;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
于 2015-05-01T05:31:40.033 回答