Mips 我的汇编程序代码有以下错误:“";无效的程序计数器值:0x00000000 Go:执行因错误而终止; .data prompt2:.asciiz“请逐个输入元素:” prompt3:.asciiz“数组的顺序如下所示:” prompt4:.asciiz”--程序已完成运行--” str1:.asciiz“ 换行符:.asciiz“\n” .文本 附加$sp,$sp,-24 西南$ra,0($sp) sw$s4,4($sp) sw$a2,8($sp) sw$s3,12($sp) sw$s0,16($sp) sw$s2,20($sp) 主要内容: #从控制台读取n li$V05 系统调用 移动$a2$v0#tagghiir t0为a2(n) #分配动态内存 sll$a0$v0 2#sll执行$a0=$v0 x 2^2 li$v0 9#9是服务的系统代码(sbrk),其工作是 syscall#分配动态内存 将$a1$v0#t2堆的已保存地址#taghiir t2移动到a1 #保存以供打印 li$v0,4#$print#str的系统调用代码 la$a0,要打印的字符串的prompt2#$地址 系统调用 移动$t1$0 移动$t4,$a1 输入循环: bge$t1$a2出口1 #读入并存储int li$V05 系统调用 sw$v0($t4) addi$t1$t1 1 addi$t4$T44 li$v0,4#$print#str的系统调用代码 la$a0,要打印的字符串的换行符#$地址 系统调用 输入回路 出口1: 日航分拣 li$v0,4#$print#str的系统调用代码 la$a0,要打印的字符串的prompt3#$地址 系统调用 移动$t3,$0 移动$t4,$a1 输出循环: bge$t3$a2出口2 #inaro azoon yki副本krdm lw$t6,0($t4) 李$v0,1 移动$a0,$t6 系统调用 #读入并存储int addi$t3$t3 1 addi$t4$T44 blt$t4,$a1,逗号 #bne$t5,$0,逗号 逗号: li$v0,4#$print#str的系统调用代码 la$a0,要打印的字符串的str1#$地址 系统调用 输出回路 出口2: 李$v0,10 系统调用#用于完成程序 互换: 移动$a3,$a3 移动$a1,$s4 #移动$t5,$zero#这是c代码中的temp变量 move$t4,$a1#t4现在是堆的基址 sll$t6,$a3,2#s1是给定的k 添加$t6、$t4、$t6#堆地址+k*4 lw$t3,0($t6)#khoone k e堆 lw$t5,4($t6)#khoone k+1堆 sw$t5,0($t6) sw$t3,4($t6) jr$ra 排序: #移动$s0,$零#i=t0 移动堆的$s4、$a1#基址 附加$t5、$a2、-1#meghdare i 移动$s2,$零#这是标志 而: 附加$s2,$s2,1 移动$a3,$zero#j#Taghair s1为a3(哈曼j瓦克) forLoop: bge$a3、$t5、OUTOFLOP sll$t6,$a3,2#j 加上$t1、$t6、$a1#v+j lw$t7,0($t1)#t7=堆[j] lw$t8,4($t1)#t8=堆[j+1] blt$t7、$t8、outOfIf 移动$s4,$a1 移动$s3,$a3 日航互换 addi$s2,$s2,-1 如果: addi$a3,$a3,1#j++ 出口: addi$t5,$t5-1#i-- bgt$s2,$0,退出#如果a>=b中断 ble$t5,$0,退出#如果b=

Mips 我的汇编程序代码有以下错误:“";无效的程序计数器值:0x00000000 Go:执行因错误而终止; .data prompt2:.asciiz“请逐个输入元素:” prompt3:.asciiz“数组的顺序如下所示:” prompt4:.asciiz”--程序已完成运行--” str1:.asciiz“ 换行符:.asciiz“\n” .文本 附加$sp,$sp,-24 西南$ra,0($sp) sw$s4,4($sp) sw$a2,8($sp) sw$s3,12($sp) sw$s0,16($sp) sw$s2,20($sp) 主要内容: #从控制台读取n li$V05 系统调用 移动$a2$v0#tagghiir t0为a2(n) #分配动态内存 sll$a0$v0 2#sll执行$a0=$v0 x 2^2 li$v0 9#9是服务的系统代码(sbrk),其工作是 syscall#分配动态内存 将$a1$v0#t2堆的已保存地址#taghiir t2移动到a1 #保存以供打印 li$v0,4#$print#str的系统调用代码 la$a0,要打印的字符串的prompt2#$地址 系统调用 移动$t1$0 移动$t4,$a1 输入循环: bge$t1$a2出口1 #读入并存储int li$V05 系统调用 sw$v0($t4) addi$t1$t1 1 addi$t4$T44 li$v0,4#$print#str的系统调用代码 la$a0,要打印的字符串的换行符#$地址 系统调用 输入回路 出口1: 日航分拣 li$v0,4#$print#str的系统调用代码 la$a0,要打印的字符串的prompt3#$地址 系统调用 移动$t3,$0 移动$t4,$a1 输出循环: bge$t3$a2出口2 #inaro azoon yki副本krdm lw$t6,0($t4) 李$v0,1 移动$a0,$t6 系统调用 #读入并存储int addi$t3$t3 1 addi$t4$T44 blt$t4,$a1,逗号 #bne$t5,$0,逗号 逗号: li$v0,4#$print#str的系统调用代码 la$a0,要打印的字符串的str1#$地址 系统调用 输出回路 出口2: 李$v0,10 系统调用#用于完成程序 互换: 移动$a3,$a3 移动$a1,$s4 #移动$t5,$zero#这是c代码中的temp变量 move$t4,$a1#t4现在是堆的基址 sll$t6,$a3,2#s1是给定的k 添加$t6、$t4、$t6#堆地址+k*4 lw$t3,0($t6)#khoone k e堆 lw$t5,4($t6)#khoone k+1堆 sw$t5,0($t6) sw$t3,4($t6) jr$ra 排序: #移动$s0,$零#i=t0 移动堆的$s4、$a1#基址 附加$t5、$a2、-1#meghdare i 移动$s2,$零#这是标志 而: 附加$s2,$s2,1 移动$a3,$zero#j#Taghair s1为a3(哈曼j瓦克) forLoop: bge$a3、$t5、OUTOFLOP sll$t6,$a3,2#j 加上$t1、$t6、$a1#v+j lw$t7,0($t1)#t7=堆[j] lw$t8,4($t1)#t8=堆[j+1] blt$t7、$t8、outOfIf 移动$s4,$a1 移动$s3,$a3 日航互换 addi$s2,$s2,-1 如果: addi$a3,$a3,1#j++ 出口: addi$t5,$t5-1#i-- bgt$s2,$0,退出#如果a>=b中断 ble$t5,$0,退出#如果b=,mips,sql-server-mars,Mips,Sql Server Mars,我哪里出错了?在哪一行上出现此错误?您是否进行过任何调试以找出中间逻辑或计算出错的原因?此程序足够小,您可以在调试器中逐行检查。在每条指令之后,将您所拥有的与您所期望的进行比较。请特别注意jr指令,因为这些指令会导致程序计数器传输到计算地址。我对mips不太熟悉,但我做了调试,当它转到最后一行时,从堆栈的值变化到0,我猜它不会像我预期的那样返回到主。我不知道该怎么做,因为我更改了从堆栈加载单词的位置我再也没有得到任何结果。我已经修复了这个问题中的代码格式一次-这次你能修复它吗?我不能继续这样做。

我哪里出错了?

在哪一行上出现此错误?您是否进行过任何调试以找出中间逻辑或计算出错的原因?此程序足够小,您可以在调试器中逐行检查。在每条指令之后,将您所拥有的与您所期望的进行比较。请特别注意
jr
指令,因为这些指令会导致程序计数器传输到计算地址。我对mips不太熟悉,但我做了调试,当它转到最后一行时,从堆栈的值变化到0,我猜它不会像我预期的那样返回到主。我不知道该怎么做,因为我更改了从堆栈加载单词的位置我再也没有得到任何结果。我已经修复了这个问题中的代码格式一次-这次你能修复它吗?我不能继续这样做。在自己的行上使用三个反勾号,一个在代码的开头,一个在结尾。不要在没有使用预览窗口检查文章的地方发布任何内容首先,我不知道怎么做tbh D:为什么它会惹恼u bro?D;你在哪一行上出现这个错误?你做过任何调试来找出中间逻辑或计算出了什么问题吗?这个程序足够小,你可以在调试器中一行一行地通过它。在每一条指令之后,比较你所拥有的和你所期望的。请特别注意
jr
指令,因为这些指令可能会导致程序计数器转移到计算地址。我对mips不太熟悉,但我进行了调试,当它转到最后一行时,从堆栈的值变化到0,我猜,它不会像我预期的那样返回到main。。i dunno当我更改从堆栈加载单词的位置时,我不会再得到任何结果。我已经修复了此问题中的代码格式一次-这次你能修复它吗?我不能继续这样做。在自己的行上使用三个反勾号,一个在代码开头,一个在结尾。不要在未检查的地方发布任何内容我不知道怎么做tbh D:为什么它会惹恼你兄弟;
.data
    prompt2: .asciiz "please enter the elements one by one:"
    prompt3: .asciiz "the array is ordered as follows: "
    prompt4: .asciiz "-- Program is finished running --"
    str1: .asciiz ","
    newLine: .asciiz "\n"
.text

    addi $sp,$sp,-24
    sw $ra,0($sp)
    sw $s4,4($sp)
    sw $a2,8($sp)
    sw $s3,12($sp)
    sw $s0,16($sp)
    sw $s2,20($sp)
main:


    # read n from console
    li $v0 5
    syscall

    move $a2 $v0    #tagghiir t0 be a2 (n)

   # allocate dynamic memory
    sll $a0 $v0 2    # sll performs $a0 = $v0 x 2^2
    li $v0 9    #9 is the system code for service(sbrk) whoes work is        
    syscall     #to allocate dynamic memory


    move $a1 $v0 #t2 saved address of heap    #taghiir t2 to a1
  #saved for printing


    li $v0, 4       # $system call code for print_str
    la $a0, prompt2     # $address of string to print
    syscall  

    move $t1 $zero
    move $t4,$a1

    inputLoop:
        bge $t1 $a2 exit1

        # read in and store int
        li $v0 5
        syscall
        sw $v0 0($t4)

        addi $t1 $t1 1
        addi $t4 $t4 4

        li $v0, 4       # $system call code for print_str
        la $a0, newLine     # $address of string to print
        syscall

        j inputLoop

    exit1:

    jal sort
    li $v0, 4       # $system call code for print_str
    la $a0, prompt3     # $address of string to print
    syscall

    move $t3,$zero
    move $t4 ,$a1
    outputLoop:
        bge $t3 $a2 exit2

        #inaro azoon yki copy krdm
        lw $t6, 0($t4)

        li $v0, 1
        move $a0, $t6
        syscall
        # read in and store int
        addi $t3 $t3 1
        addi $t4 $t4 4
        blt $t4,$a1 ,comma
       # bne $t5,$zero,comma
        comma:
            li $v0, 4       # $system call code for print_str
            la $a0, str1     # $address of string to print
            syscall
        j outputLoop

    exit2:

    li $v0, 10
    syscall    #for finishing the program

swap:


    move  $a3,$a3
    move  $a1,$s4
   # move $t5,$zero # its for our temp variable in c code
    move $t4 ,$a1 #t4 is now the base address of heap
    sll $t6 , $a3,2 # s1 is the given k 
    add $t6,$t4,$t6 # heap address + k*4
    lw $t3,0($t6) #khoone k e heap
    lw $t5,4($t6) #khoone k+1 heap
    sw $t5,0($t6)
    sw $t3,4($t6)
    jr $ra 




sort:


  #  move $s0,$zero #i=t0
    move $s4,$a1 #base address of heap
    addi $t5,$a2,-1 # meghdare i

    move $s2,$zero #its the flag

    while:
        addi $s2,$s2,1
        move $a3,$zero #j   #taghiir s1 be a3 (haman j va k
        forLoop:

            bge $a3,$t5,outOfLoop
            sll $t6,$a3,2    #j  
            add $t1,$t6,$a1 #v+j
            lw $t7,0($t1) #t7=heap[j]
            lw $t8,4($t1) #t8=heap[j+1]
            blt $t7,$t8,outOfIf
            move $s4,$a1
            move $s3,$a3

            jal swap
            addi $s2,$s2,-1
        outOfIf:
        addi $a3,$a3,1   #j++
        outOfLoop:
        addi $t5,$t5-1 #i--
        bgt $s2,$zero,exit_outter   #if a>=b break
        ble $t5,$zero,exit_outter   #if b=< c break
        j while

     exit_outter:
     lw $ra,0($sp)
     lw $s4,4($sp)
     lw $a2,8($sp)
     lw $s3,12($sp)
     lw $s0,16($sp)
     lw $s2,20($sp)
     addi $sp,$sp,24
     jr $ra