assembly MIPS 仅使用 BEQ 评估差异

标签 assembly mips

您好,必须编写此循环代码:

for($6=10;$6!=0;$6--){ 
    $7=$6; 
}

但有一些条件。我只能使用BEQ并且必须假设每个寄存器的初始值是寄存器的编号。

如何仅使用 BEQ 评估该差异?

我做了这个

main:
    add   $6,$5,$5
    for:
        add     $7,$6,$0
        sub     $6,$6,$1
        beq     $6,for

但我陷入了验证。

最佳答案

  1. 将 $6 设置为 10。当您 只是要覆盖它吗?
  2. 输入循环并将 $7 设置为 $6。
  3. 如果 $6 等于 0,则递减 $6 并跳转到下一个标签,否则跳转到下一个标签 跳回到循环的开头。

代码:

li $6, 10
for:
    move $7, $6
    subi $6, $6, 1
    beq $6, $0, end
    j for
end:

关于 assembly MIPS 仅使用 BEQ 评估差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10570999/

相关文章:

assembly - MIPS - 获取数组值

c - 我如何为 MIPS 架构编译 nfsutils?

从内存地址复制字辅助(汇编)

c - 64 个寄存器或三个操作数指令在汇编级别哪个更有用?

c - 访问 C 文件中的汇编宏函数/指令

assembly - 使用 gdb 和 QEMU 调试引导加载程序/BIOS 时如何跳过中断调用?

java - Java字节码指令组合对操作数栈的影响

assembly - 获取FS :[0] in 32-bit protected mode/MSVC inline asm的线性地址

assembly - MIPS 存储字 (sw)

linux - control+c 无效