00111100000000010001000000000001
00110100001001000000000000000000
00100100000000100000000000000100
00000000000000000000000000001100
00100100000000100000000000001010
00000000000000000000000000001100
鑑於此機器代碼,我需要獲取第一行(32)個字符,以便我可以將其轉換回MIPS指令。我無法弄清楚如何獲得第一行代碼並將其存儲到寄存器中。有沒有人有任何想法如何獲得第一行,並在接下來的行?我被給了一個暗示來嘗試使用sll或srl指令,但是當我這樣做時,我沒有看到代碼中的任何更改。如何從MIPS中的字符串獲取指定數量的字符?
#File to be read from
file: .asciiz "bincode1.txt"
#place to store contents of file
buffer: .space 1024
.text
#Open the file
li $v0, 13 #system call to open the file
la $a0, file #load address of the file and store in a0
li $a1, 0 #a1 is reserved for a line in the text file
li $a2, 0
syscall #opens the file
move $s0, $v0 #save file descriptor
#Read the file
li $v0, 14 #system call to read from the file
move $a0, $s0 #put the file name into a0
la $a1, buffer #address of the buffer to read
li $a2, 1024
syscall
#Close the file
li $v0, 16 #system call to close the file
move $a0, $s0 #file name to close
syscall
#print contents of buffer to verify it copied correctly
li $v0, 4
la $a0, buffer
syscall
#la $t1, buffer
srl $t2, $a0, 32
li $v0, 4
la $a1, ($t2)
syscall
文件bincode1.txt包含前面的6行機器碼。如果我嘗試將其移動32位,我會得到一個錯誤,而且我知道這是不正確的,但我不確定從這裏開始做什麼。任何的意見都將會有幫助。
在我的代碼上,我忘了複製第一行上面的.data部分。那也應該在那裏。 – Jonathan
你可以編輯你的問題來解決它,尋找標籤下的「編輯」。只是在**回答之後不要更改代碼/問題**,那麼只需在其他段落中添加任何勘誤或更多信息,那麼答案仍然與原始問題相關。在你得到任何答案之前:儘可能多地改進你的問題。它看起來很合理,但你仍然可以添加信息你使用什麼環境(什麼彙編程序,調試程序,命令行編譯可執行文件的外觀),並確保具有相同環境的任何人都可以複製/粘貼+運行到相同的問題。 – Ped7g