如何在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 Assembly 参考
这是我目前的代码
.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 循环,我能够让它递增字符串的每个字符,直到找到空值.我没有编码它来循环(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屋!