assembly 如何将MIPS中双倍值与另一个值相加?

kpbwa7wx  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(136)

我是汇编语言的新手,我有一个任务无法解决。问题是(编写一个程序,要求用户输入两个整数A和B,然后显示计算表达式的结果:A + 2B - 5.),我曾尝试让用户输入一个值,然后让他输入另一个值,但结果会加倍,现在我想用(addiu)将这两个值与常数相加,但问题是当我进行汇编然后运行时,我插入所需的值,然后它给我随机数!我找不到我的代码有什么问题。请帮助
我代码:

.data 
str1: .asciiz "enter A value: "
str2: .asciiz "enter B value:"
str3: .asciiz "A+2B-5="

.globl main
.text
main:
  li $v0,4 
  la $a0,str1 
  syscall  

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

  li $v0,4 
  la $a0,str2 
  syscall  

  li $v0,5 
  syscall

  move $t1,$v0 
  add $t1,$t1,$t1  
  move $t1,$v0 

  syscall  

  add $t2,$t1,$t0
  move $t2,$v0 

  syscall

  li $v0,4 
  la $a0,str3 
  syscall

  addi $t3,$t2,-5
  syscall

  li $v0,1 
  syscall
iibxawm4

iibxawm41#

显然我保存了用户在错误寄存器中输入的值,我修复了这个问题,这是正确的编写代码:

.data
str1: .asciiz "enter A value: "
str2: .asciiz "enter B value:"
str3: .asciiz "A+2B-5="

.globl main
.text

main:
 li $v0,4 
  la $a0,str1  
  syscall
   
  li $v0,5  
  syscall 

  move $s0,$v0 

  li $v0,4 
  la $a0,str2 
  syscall

   li $v0,5 
  syscall 
  move $s1,$v0 

  add $s1,$s1,$s1 
  move $a0,$s1 
  
   add $s2,$s0,$s1 
  move $a0,$s2 #

  li $v0,4 
  la $a0,str3  
 syscall
  
  subi $s3,$s2,5 
   li $v0,1 
  move $a0,$s3
  syscall

相关问题