在 MIPS 中加载和存储值的问题
Issue with loading and storing values in MIPS
我正在尝试获取用户输入 3 次,将它们加在一起,然后打印出来。但是我想学习如何使用 .data 段并且想知道我哪里出错了?我得到了输入值,然后当我去打印结果时,我得到了一些巨大的数字而不是 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
我正在尝试获取用户输入 3 次,将它们加在一起,然后打印出来。但是我想学习如何使用 .data 段并且想知道我哪里出错了?我得到了输入值,然后当我去打印结果时,我得到了一些巨大的数字而不是 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