尝试执行 non-instruction
attempt to execute non-instruction
我在 mips 汇编程序中有一些代码,我得到了标题中的内容。如您所见,我有 $li $v0, 10
和 syscall
那么有人知道它有什么问题吗?
.data
text0: .asciiz "Enter strng: \n"
buf0: .space 100
.text
.globl main
main:
la $a0, text0
li $v0, 4
syscall
la $a0, buf0
li $a1, 99
li $v0, 8
syscall
li $t0, 'a'
li $t1, 'z'
li $t2, 0x20
la $t3, buf0
loop_begin:
lb $t4, ($t3)
beq $t4, $zero, loop_end
blt $t4, $t0, increment_ptr
bgt $t4, $t1, increment_ptr
sub $t4, $t4, $t2
sb $t4, ($t3)
increment_ptr:
addi $t3, $t3, 1
b loop_begin
loop_end:
la $a0, buf0
li $v1, 4
syscall
li $v0, 10
syscall
我无法重现您的错误消息。也许您在 SPIM 中执行了重新初始化而没有重新加载程序集文件。
无论如何,您没有正确设置最终的 print_string
系统调用:
li $v1, 4 # <-- SHOULD BE $v0
syscall
如果您使用 SPIM 中的单步执行功能来调试您的代码,您可能会发现这一点,因此我建议您在未来的开发中利用它。
我在 mips 汇编程序中有一些代码,我得到了标题中的内容。如您所见,我有 $li $v0, 10
和 syscall
那么有人知道它有什么问题吗?
.data
text0: .asciiz "Enter strng: \n"
buf0: .space 100
.text
.globl main
main:
la $a0, text0
li $v0, 4
syscall
la $a0, buf0
li $a1, 99
li $v0, 8
syscall
li $t0, 'a'
li $t1, 'z'
li $t2, 0x20
la $t3, buf0
loop_begin:
lb $t4, ($t3)
beq $t4, $zero, loop_end
blt $t4, $t0, increment_ptr
bgt $t4, $t1, increment_ptr
sub $t4, $t4, $t2
sb $t4, ($t3)
increment_ptr:
addi $t3, $t3, 1
b loop_begin
loop_end:
la $a0, buf0
li $v1, 4
syscall
li $v0, 10
syscall
我无法重现您的错误消息。也许您在 SPIM 中执行了重新初始化而没有重新加载程序集文件。
无论如何,您没有正确设置最终的 print_string
系统调用:
li $v1, 4 # <-- SHOULD BE $v0
syscall
如果您使用 SPIM 中的单步执行功能来调试您的代码,您可能会发现这一点,因此我建议您在未来的开发中利用它。