如何递增字符串中LC3信? [英] How to increment a letter in string in lc3?
问题描述
我写递增方案下列存储在存储器中的三个字母的单词的每个字母的LC3程序。 'a'变为'D','N'变成'Q','Z'变成'C'等。
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' becomes 'c', etc.
我用这作为 LC3大会的参考
下面是我的code到目前为止
Here is my code so far
.orig x3000
ADD R1, R1, #3
LEA R2, STRING
HALT
STRING .STRINGZ "anz"
.END
我能弄清楚如何从我的参考声明字符的字符串LC3。但是没有人该怎么做实际的增量还是有,我可以用它来计算出如何做到这一点的任何引用?
I was able to figure out how to declare a string of characters in LC3 from my reference. However does anyone how to do the actual incrementation or have any references that I could use to figure out how to do it?
推荐答案
使用while循环,我能得到直至空值发现它增加绳子的字符。我没code它环回左右(Z成为C),但这应该让你开始。
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
这篇关于如何递增字符串中LC3信?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!