簡體   English   中英

在 MIPS 中加載和存儲值的問題

[英]Issue with loading and storing values in MIPS

我試圖讓用戶輸入 3 次,將它們加在一起,然后打印出來。 但是我想學習如何使用 .data 段並且想知道我哪里出錯了? 我得到輸入值,然后當我 go 打印結果時,我得到一些巨大的數字而不是 15...

#Name: LoadStore.asm
#Author: Logan Patterson
#Date: 02-12-2021
#Purpose: Ask the uses for numbers and store them

.data
    val1: .word 
    val2: .word
    val3: .word
    results: .word
    prompt: .asciiz "Please Enter the first number"
    prompt2: .asciiz "Please enter the second number"
    prompt3: .asciiz "Please enter the third number"
    result: .asciiz "The result is: "
    
    
.text
main:
    li $v0, 4 #To issue a print string call
    la $a0, prompt  #Load the prompt to print
    syscall
    
    li $v0, 5   #To issue a sycall to read int
    syscall
    sw $v0, val1    #Move value into val1
    
    li $v0, 4 #To issue a print string call
    la $a0, prompt2 #Load the prompt to print
    syscall
    
    li $v0, 5   #To issue a sycall to read int
    syscall
    sw $v0, val2    #Move value into val2
    
    li $v0, 4 #To issue a print string call
    la $a0, prompt3 #Load the prompt to print
    syscall
    
    li $v0, 5   #To issue a sycall to read int
    syscall
    sw $v0, val3    #Move value into val3
    
    lw $s0, val1
    lw $s1, val2
    lw $s2, val3
    
    add $s3, $s0, $s1
    add $s3, $s3, $s2
    sw $s3, results
    
    li $v0, 4
    la $a0, result
    syscall
    
    li $v0, 1
    la $a0, results
    syscall
    
    li $v0, 10
    syscall
    
    

我已經修改了代碼。 它運行得非常好。

.data
    val1:   .word  0
    val2:   .word  0
    val3:   .word  0
    results:    .word  0
    prompt:     .asciiz "Please Enter the first number: "
    prompt2:    .asciiz "Please enter the second number: "
    prompt3:    .asciiz "Please enter the third number: "
    resultValue:    .asciiz "The result is: "
    
    
.text
main:
    li $v0, 4           #To issue a print string call
    la $a0, prompt      #Load the prompt to print
    syscall
    
    li $v0, 5           #To issue a sycall to read int
    syscall
    sw $v0, val1        #Move value into val1
    
    li $v0, 4       #To issue a print string call
    la $a0, prompt2     #Load the prompt to print
    syscall
    
    li $v0, 5        #To issue a sycall to read int
    syscall
    sw $v0, val2     #Move value into val2
    
    li $v0, 4       #To issue a print string call
    la $a0, prompt3     #Load the prompt to print
    syscall
    
    li $v0, 5   #To issue a sycall to read int
    syscall
    sw $v0, val3    #Move value into val3
    
    lw $s0, val1
    lw $s1, val2
    lw $s2, val3

    li $v0, 4
    la $a0, resultValue
    syscall
    
    add $s3, $s0, $s1
    add $s3, $s3, $s2
    sw $s3, results
   
    li $v0, 1
    lw $a0, results
    syscall
    
    li $v0, 10
    syscall

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM