减去两个用户输入数字,移动并显示结果

时间:2017-05-13 07:51:37

标签: mips32

我是MIPS的新手,我使用的是MARS。我无法正确行动,当我执行它时,给了我一些坚果数字。以下是我到目前为止所提供的任何帮助。

.data

   message1: .asciiz "Enter the any number to subtract :"
   message2: .asciiz "\nEnter the any number to subtract :"
   n1 :      .word 0
   n2 :      .word 0
   message3: .asciiz  "\nThe subtraction of the two numbers is "

.text 
main:   
li $v0 4        #print out message1
la $a0 message1
syscall

li $v0 5        #read message1 as number1
syscall

sw $v0 n1       #store number

li $v0 4        #print out message2
la $a0 message2
syscall

li $v0 5        #read message2 as number2
syscall

sw $v0 n2       #store number

li $v0 4
la $a0 message3
syscall

lw $t0 n1
lw $t1 n2

sub $t0, $v0, $v0   #   t0 = number1 s1 - number2 s2

li $v0, 1       #   print integer
move $t0, $a0       #   move t0 to a0 

syscall         #   run

1 个答案:

答案 0 :(得分:0)

你的代码在这里做得很好sub $t0, $v0, $v0。当你减去时,你应该将结果放在参数寄存器$a0中,然后你可以使用move将该结果放入返回寄存器$v0用于打印。

按照以下方式更改它们。

sub $t2, $t0, $t1   #   t2 = t0 - t1
move $a0, $t2       #   copy t2 to a0
li $v0, 1           #   print integer
syscall             #   

进行此减法的另一种方法是,您根本不需要.wordlw。如下

        .data

        message1: .asciiz "Enter the any number to subtract :"
        message2: .asciiz "\nEnter the any number to subtract :"
        message3: .asciiz "\nThe subtraction of the two numbers is "

        .text
        main:
            li $v0 4        #print out message1
            la $a0 message1
            syscall

            li $v0 5        #read message1 as number1
            syscall
            move $t0,$v0    # set $t0 to the content of $v0

            li $v0 4        #print out message2
            la $a0 message2
            syscall

            li $v0 5        #read message2 as number2
            syscall

            move $t1,$v0
            li $v0 4
            la $a0 message3
            syscall

            sub $a0, $t0, $t1   #   t0 = number1 t1 = number2

            li $v0, 1       #   print integer
            syscall         #   run
相关问题