1
我有一個MIPS程序集中的程序,它應該在我的消息中交換一個字符。Mips程序不打印任何東西
如果字符是'a',它會被字符'b'交換。
所以我有:「霍拉」,它必須打印「hollb」。
有我有什麼:
.data
string: .asciiz "holla"
a: .ascii "a"
a1: .ascii "b"
tam: .word 5
.text
main:
lw $t6, tam #string length
lb $t1, string($t0) #read bit by bit
lb $s0, a #save in register the char that we want to search
lb $s1, a1 #save in register the char that we want to replace
beq $t0, $t6, done
beq $t1, $s0, continua #if the char of (bit by bit) its like the char of chars, swap it
bne $t1, $s0, store #if not, saves
continua:
sb $s1, string($t0) #do the swap
addi $t0, $t0, 1 #+1 in the index
j main
store:
sb $t1, string($t0) #saves
addi $t0, $t0, 1 #+1 in the index
j main
done:
li $v0, 4
li $v0, 10
syscall
但代碼犯規打印我在火星什麼。
爲什麼_would_它會打印任何東西?您執行的唯一系統調用是10(即'退出')。另外,你正在假設你可能不應該做的'$ t0'的初始值。在使用它們的值之前初始化所有寄存器。 – Michael