啦啦啦拉拉裤 2021-10-26 22:57 采纳率: 69.1%
浏览 39
已结题

C语言问题,编写一个将C语言 变成 MIPS 汇编程序

望各位帮忙看看,现在就想要答案,蟹蟹各位潜水专家,感谢解答,感谢回答,感谢解答。编写一个 MIPS 汇编程序,相当于这个 C 程序:在原有的基础上完成这个程序。我需要答案,我想要的是直接把代码告诉我

// Read numbers into an array until a negative number is entered
// then print the numbers in reverse order

#include <stdio.h>

int numbers[1000];

int main(void) {
    int i = 0;
    while (i < 1000) {
        int x;
        scanf("%d", &x);
        if (x < 0) {
            break;
        } else {
            numbers[i] = x;
        }
        i++;
    }

    while (i > 0) {
        i--;
        printf("%d\n", numbers[i]);
    }
}

# Read numbers into an array until a negative number is entered
# then print the numbers in reverse order

# i in register $t0
# registers $t1, $t2 & $t3 used to hold temporary results

main:
    li   $t0, 0          # i = 0
loop0:
    bge  $t0, 1000, end0 # while (i < 1000) {

    li   $v0, 5          #   scanf("%d", &numbers[i]);
    syscall              #

    mul  $t1, $t0, 4     #   calculate &numbers[i]
    la   $t2, numbers    #
    add  $t3, $t1, $t2   #
    sw   $v0, ($t3)      #   store entered number in array

    addi $t0, $t0, 1     #   i++;
    j    loop0           # }
end0:


    li   $v0, 0          # return 0
    jr   $ra              #

.data
numbers:
    .space 4000

  • 写回答

2条回答 默认 最新

  • 关注

    代码示例如下

    # Read numbers into an array until a negative number is entered
    # then print the numbers in reverse order
    # i in register $t0
    # registers $t1, $t2 & $t3 used to hold temporary results
    main:
        li   $t0, 0          # i = 0
    loop0:
        bge  $t0, 1000, output # while (i < 1000) {
        li   $v0, 5          #   scanf("%d", &numbers[i]);
        syscall              #
        bltz $v0,output
        mul  $t1, $t0, 4     #   calculate &numbers[i]
        la   $t2, numbers    #
        add  $t3, $t1, $t2   #
        sw   $v0, ($t3)      #   store entered number in array
        addi $t0, $t0, 1     #   i++;
        j    loop0           # }
        
    output:
       beqz $t0,end0
       subi $t0,$t0,1
        mul  $t1, $t0, 4     #   calculate &numbers[i]
        la   $t2, numbers    #
        add  $t3, $t1, $t2   #
        lw   $a0, ($t3)      #   store entered number in array
        li $v0,1
        syscall
        li   $a0, '\n'      #   printf("%c", '\n');
        li   $v0, 11
        syscall
    
       j output
    end0:
     
        li   $v0, 0          # return 0
        jr   $ra              #
    .data
    numbers:
        .space 4000
     
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月4日
  • 已采纳回答 10月27日
  • 创建了问题 10月26日

悬赏问题

  • ¥15 爬取1-112页所有帖子的标题但是12页后要登录后才能 我使用selenium模拟登录 账号密码输入后 会报错 不知道怎么弄了
  • ¥30 关于用python写支付宝扫码付异步通知收不到的问题
  • ¥50 vue组件中无法正确接收并处理axios请求
  • ¥15 隐藏系统界面pdf的打印、下载按钮
  • ¥15 MATLAB联合adams仿真卡死如何解决(代码模型无问题)
  • ¥15 基于pso参数优化的LightGBM分类模型
  • ¥15 安装Paddleocr时报错无法解决
  • ¥15 python中transformers可以正常下载,但是没有办法使用pipeline
  • ¥50 分布式追踪trace异常问题
  • ¥15 人在外地出差,速帮一点点