2013-11-02 90 views
0

在彙編中,有沒有辦法將用戶的輸入作爲字符串存儲到.asciiz而不是.word中?程序集:如何將字符串存儲在.asciiz中?

我知道sw和lw,但是如何用.asciiz做到這一點?

感謝

UPDATE:

,我不得不刪除我的代碼段,因爲它是一個分配一個完整的程序。

正如你看到的,這是我試圖使應用程序,當程序讀取存儲在userInput我不能執行選項processImage用戶名,但我用myInput2已具有的名字我我想讀的圖像文件,processImage將工作得很好。

+0

請發佈您已經嘗試過的解決方案。 –

+0

你能否再次檢查,我已經更新了我的答案。 – Sobiaholic

+0

您需要爲輸入分配一些空間。看我的答案中的例子。 – Jester

回答

0

swlw是運行時指令,而.asciiz是編譯時彙編指令。 如果需要,您可以使用.asciiz爲用戶輸入分配空間,但仍需要在運行時填充空間,例如通過讀取循環中的字符並使用sb或使用read string或使用read string或類似系統調用(如果有。

.asciiz只是語法上的糖,可以更容易地存儲字符串,它相當於指定一堆字節,只是您不必手動計算出值。 .asciiz "a".byte 97, 0相同。

更新

li $a1, 6  # length 
    la $a0, str1 # buffer 
    li $v0, 8  # read string call number 
    syscall 

.data 
str1: .byte 0, 0, 0, 0, 0, 0 
str2: .word 0, 0, 0 
str3: .space 6 
.comm str4, 6 
str5: .asciiz "12345" 

上面str1通過str5被除了str5所有等同的未初始化爲全零。您可以使用la $a0行中的任何一行。

+0

我會在我回到家時嘗試這個,所以您所說的是我無法將從用戶收到的字符串一個.asciiz?相反,我必須把它放進去。拜特?我的問題在於我想稍後加載文件名。我知道使用的唯一方法是la $ a0,filename。但是這不適用於.word – Sobiaholic

+0

您也可以將它放在'.asciiz'中,'la'可以與標籤一起工作,它並不關心用於指定數據的指令(如果有的話)。 – Jester

+0

你能否再次檢查我的問題,我已經更新了。它有我正在嘗試執行的程序代碼,請閱讀下面的代碼,您將瞭解我的問題。 – Sobiaholic

相關問題