MIPS program is Not working Error: Symbol exit not found in the table

MIPS program is Not working Error: Symbol exit not found in the table

.text
main:

检查用户输入的第二个值是否小于零,如果是则退出程序

blez $t1, exit

接受用户的第一个输入

la,$a0,InputValone
li,$v0,4
syscall

li,$v0,5
move $t0,$v0
syscall

接受用户的第二个输入

la,$a0,InputValTwo
li $v0,4
syscall

li $v0,5
move $v0,$t1
syscall

将两个输入相乘

mul $t2,$t1,$t0
move $t3,$t0

loop:
    beq $t2,$t3, endloop    #if $t2==$t3, end the program
    add $t3,$t3,$t0     #else $t3=$t3+$t0

    b loop

    la      $a0,OutputValue
    li      $v0,4
    syscall

    move    $a0,$t3
    li      $v0,1
    syscall


    endloop:
.data
    InputValone: .asciiz "Enter Your First Value : "
    InputValTwo: .asciiz "Enter Your Second Value : "
    OutputValue: .asciiz "Output is : "
 endloop:
 .data

你真的不想这样做吗??

使用像 blez $t1, exitbeq $t2,$t3, endloop 这样的跳转指令跳转到一个标签。

显然缺少 exit: 标签。

endloop: 标签后面的指令未定义:

普通编译器(对于真正的 MIPS CPUs,而不是 MIPS 仿真器)会在代码部分的最后一条指令和 .data 部分之间插入一些虚拟字节 - 就像那样:

endloop:
  .word some_dummy_data
  .word some_dummy_data
  .word some_dummy_data
  .word some_dummy_data
  .word some_dummy_data
  ...
.data

CPU 会将这些字节解释为指令并执行它们...

您必须添加 exit: 标签和 ll have to add code after theendloop:` 标签:

exit:
endloop:
    li      $v0,<value that exits the program>
    syscall

不了解你的模拟器,我无法告诉你 v0 退出程序的正确值。对于 Linux/MIPS,v0=4001 的值将是合适的...