0
看來我對MIPS的理解讓我失望了。MIPS調試幫助
我需要做的是創建一個程序,從終端反轉字符串輸入,使用堆棧,但不使用$ sp。有沒有人知道MIPS?
註冊使用
T0 - theString地址開始
T1 - 堆棧地址開始
T2 - 溫度爲檢索出的
T3 - 計數器T0
T4 - 計數器堆棧
T5 - 換行
T6 - 長度
.data
theString: .space 42
newLine: .asciiz "\n"
stack: .space 42
.globl main
.text
主要:
li $v0, 8 # Set to read string
la $a0, theString
li $a1, 42 # Set size of string
syscall # Read string from terminal
la $t0, theString # Prepare t0 with theString
la $t1, stack # Prepare t1 with stack
la $t5, newLine
addi $t3, $t0, 0
addi $t4, $t1, 42
j push
推:
addi $t3, $t3, 1
addi $t4, $t4, -1
lb $t2, ($t3)
beq $t2, $t5, epush
sb $t2, ($t4)
j push
epush:
sub $t6, $t3, $t0
addi $t6, $t6, -1
addi $t3, $t0, 0
addi $t4, $t1, 0
j pop
流行:
addi $t3, $t3, 1
addi $t4, $t4, 1
lb $t2, ($t4)
beq $t2, $t5, epop
sb $t2, ($t3)
j pop
EPOP:
addi $t3, $t3, 1
sb $t5, ($t3)
li $v0, 4 # Set to print string
la $a0, theString # Set var to syscall output register
syscall # Print string
li $v0, 10 # Set to end program
syscall # End Program
例如,這只是一個無限循環。 (對不起評論,我只是把我的頭髮撕在這裏)
現在,我認爲問題是與換行符相關的某個地方,但我不知道在哪裏?
啊,那我該如何比較實際換行值和$ t5的值呢? – 2010-10-28 17:48:16
我不知道這是否會起作用,但可以從'$ t5'和'$ t2'嘗試'lb'到另外兩個臨時寄存器中並對它們進行比較。 – xxpor 2010-10-28 17:52:38
謝謝。它現在出現在循環中,但只是打印原始字符串? – 2010-10-28 18:10:07