10

非常に単純に思えますが、$v0 レジスタを上書きしているため、プログラムがコンパイルされないのではないでしょうか? 前もって感謝します

更新:気にしないで、合計を印刷するためのシステムコールを作成したときに注文が間違っていました...誰かが参照を必要とする場合に備えて修正されました。

.data
prompt1: .asciiz "\n\n Enter the first integer please:"
prompt2: .asciiz "Enter the second integer please:"
result: .asciiz "The result is:"

.text

main:

    #t0-to hold first integer
    #t1-to hold second integer
    #t2- used to hold the sum of t$1 and t$2

        #first number

    li $v0, 4 #syscall to print string
        la $a0, prompt1  #address of string to print
        syscall

        li $v0, 5 #syscall to read an integer
        syscall
        move $t0, $v0  #move the number to read into $t0

    #second number
    li $v0, 4
    la $a0, prompt2
    syscall

    li $v0,5        
        syscall
    move $t1,$v0

        add $t2, $t1, $t0 #compute the sum

    #print out sum of $t2
    li $v0, 4       # load syscall print int into $v0
    move $a0, $t2   #move the number to print into $a0
    li, $v0,1
    la, $a0, result
    syscall


Done:

    li $v0, 10    #syscall to exit
        syscall
4

3 に答える 3

6
.data
prompt1: .asciiz "\n\n Enter the first integer please:"
prompt2: .asciiz "Enter the second integer please:"
result: .asciiz "The result is:"

              .text
main:
    #t0-to hold first integer
    #t1-to hold second integer
    #t2- used to hold the sum of t$1 and t$2
        #first number
        li $v0, 4 #syscall to print string
        la $a0, prompt1  #address of string to print
        syscall
#
        li $v0, 5 #syscall to read an integer
        syscall
        move $t0, $v0  #move the number to read into $t0
    #second number
    li $v0, 4
    la $a0, prompt2
    syscall
#
    li $v0,5        
    syscall
    move $t1,$v0
#
    #print out sum of $t2
    li $v0, 4
    la $a0, result
    syscall
#
    add $a0, $t1, $t0 #compute the sum
    li $v0, 1
    syscall
#
    li $v0, 10
    syscall
于 2015-04-04T16:54:47.610 に答える
0

実際、あなたはこのセクションを台無しにしました:

#print out sum of $t2 li $v0, 4 # load syscall print int into $v0 move $a0, $t2 #move the number to print into $a0 li, $v0,1 la, $a0, result syscall

行ごとにやってみましょう:
li $v0, 4 #You are ready to indicate that you want to print string
la $a0, result #you have loaded the address of string now
syscall # Now you will see: "The result is:

数字を印刷してみましょう
li $v0, 1
move $a0, $t2
syscall

脚注: syscall を使用することを示すたびに、最初にそのコマンドを完了する必要があります。たとえば、何かを印刷したい場合は、そのセットのシステムコールを完了してから、整数の印刷に進む必要があります。

例: このようなものを印刷したいとしましょう。番号 : 1

MIPS コードは次のようになります。
.data prompt: .asciiz "Number : " .text main: #Now lets read a number li $v0, 5 syscall # -> note syscall is done for each instruction #Lets complete printing first li $v0, 4 la $a0, prompt syscall

#私たちは今、$t0 にその番号を持ってい
li $v0, 1 la $a0, prompt syscall
ます。印刷されるもの。#入力した番号またはプロンプトのアドレス #ここで何を変更する必要がありますか?

于 2016-02-28T02:09:20.873 に答える
0
.text
main:
    #print the msg1
    li $v0 4
    la $a0 msg1
    syscall 

    #read the num 1
    li $v0 5
    syscall

    sw $v0 a1

    #print the msg2
    li $v0 4
    la $a0 msg2
    syscall 

    #read the Num 2
    li $v0 5
    syscall

    sw $v0 a2

    #print the msg3
    li $v0 4
    la $a0 msg3
    syscall 

    lw $t0 a1
    lw $t1 a2


    li $v0 1
    add $a0 $t0 $t1
    syscall  
.data
    msg1: .asciiz "Enter the first number :"
    msg2: .asciiz "Enter the second number :"
    a1 : .word 0
    a2 : .word 0
    msg3: .asciiz  "The sum is = "
于 2016-04-18T17:57:50.640 に答える