2015-05-01 2 views
1

Я пишу программу LC3, которая увеличивает каждую букву трехбуквенного слова, хранящегося в памяти после программы. «А» становится «d», «п» становится «Q», «г» становится «с» и т.д.Как увеличить букву в строке в lc3?

Я использую это как LC3 Assembly ссылку

Вот мой код до сих пор

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

enter image description here

Я был в состоянии понять, как объявить строку символов в LC3 из моей ссылки. Однако кто-нибудь может сделать фактическое увеличение или иметь какие-либо ссылки, которые я мог бы использовать, чтобы выяснить, как это сделать?

+0

Существует много информации, там, например, на https://www.cs.auckland.ac.nz/courses/compsci210s2c/tutorials/ и вы должны изучить некоторые примеры, а не просить кого-то для написания кода. –

+0

Можете ли вы взглянуть на это? http://stackoverflow.com/questions/30005154/what-does-stripping-off-the-ascii-template-mean На этот раз я прочитал соответствующую документацию – committedandroider

ответ

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 
+0

Начните с LC3edit для сохранения и сборки кода. После открытия симулятора LC3 и загрузки собранного кода. Оттуда вы можете нажать кнопку запуска кода, чтобы узнать, что делает ваша программа. –

+0

Образец кода, который я вам дал, не распечатывается в окне консоли, вам нужно будет его закодировать. Если вы хотите увидеть изменения, внесенные в строку, вы просто перейдете в ячейку памяти STRING после запуска программы , –

+0

Вы на правильном пути, но SEXT - это процесс, который LC3 делает с переданной ему информацией. SEXT называется расширением знака, поскольку он принимает короткие значения, такие как 001011100, и расширяет его до 0000000001011100. Он имеет мало общего с командой LEA, хранящей ячейку памяти STRING в R2. –

Смежные вопросы