【问题标题】:How to add or subtract two numbers using their specific funtion in mips? [closed]如何在 mips 中使用它们的特定功能来添加或减去两个数字? [关闭]
【发布时间】:2021-03-27 21:30:26
【问题描述】:

您好,我是 mips 编程新手,只是想知道 mips 上使用什么函数来加减两个数字。如果可能,只需要代码。

【问题讨论】:

    标签: assembly mips


    【解决方案1】:
    .data
      x: .word 30
      y: .word 24
    
      sum: .word 0
      subt: .word 0
    
      promptAdd: .asciiz "The sum of X and Y is : "
      promptSub: .asciiz "\nThe difference of X and Y is : "
    
    .text
    .globl main
    .ent main
    
    main:
    
    lw $a0, x
    lw $a1, y
    
    jal Addition
    sw $v0, sum
    
    jal Subtraction
    sw $v0, subt
    
    la $a0, promptAdd
    li $v0, 4
    syscall
    
    lw $a0, sum
    li $v0, 1
    syscall
    
    la $a0, promptSub
    li $v0, 4
    syscall
    
    lw $a0, subt
    li $v0, 1
    syscall
    
    li $v0, 10
    syscall
    
    .end main
    
    .globl Addition
    .ent Addition
    
    Addition:
    
    li $v0, 0
    
    add $v0, $a0, $a1
    
    jr $ra
    
    .end Addition
    
    .globl Subtraction
    .ent Subtraction
    
    Subtraction:
    
    li $v0, 0
    
    sub $v0, $a0, $a1
    
    jr $ra
    
    .end Subtraction
    

    【讨论】:

    • 这比它需要的长很多,例如当您可以将值保存在寄存器中时加载和存储(如$t0$t1)。此外,在使用 addsub 写入 v0 之前,您不需要 li $v0, 0 - 目标操作数是只写的,并且已经可以覆盖之前的任何内容。
    • 汇编代码应该有解释,即要与之比较的伪/C代码,cmets,寄存器中变量的描述。帮助 OP 理解而不是简单地做功课。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多