2016-05-04 121 views
-1

我想在LC3中製作一個程序,要求用戶輸入一個字符串並將繼續打印出來。我的程序只能打印出用戶輸入字符串的第一個字母。例如,我輸入「你好」,它只會打印出「H」。有沒有辦法來解決這個問題?謝謝程序將只打印用戶輸入的字符串的第一個字母

.orig x3000 
Lea r1, storeString 

Lea r0, EnterText 
puts 

LOOP 
getc 

str r0, r1, 0 
add r1, r0, -10 
brz OUTSIDE 

out 
brnzp LOOP 

OUTSIDE 

Lea r0, UserEnter 
puts 

Lea r0, storeString 
puts 

Halt 
EnterText .stringz "\nPlease enter a text: " 
UserEnter .stringz "\nThe text you have typed is: " 
storeString .BLKW 99 

.end 

回答

0

學習使用您的調試器。在行檢查結束時,您正在覆蓋r1(這是您的指針),實際上您應該將其遞增1,以便指向下一個字符的位置。你很幸運,這不僅僅是炸燬。

這樣的事情應該更好的工作:

LOOP 
getc 

str r0, r1, 0 
add r1, r1, 1 ; next character 
add r0, r0, -10 ; just subtract in place 
brz OUTSIDE 

out 
brnzp LOOP 
相關問題