汇编 MIPS:打印已输入的数字
Assembly MIPS: Print a number that have been entered
我是装配新手,遇到了一些困难。
我正在使用 MARS 4.5,我想尝试编写一个代码,它可以从键盘获取一个整数,然后立即打印出来。
.data
number: .word
.text
.globl main
main:
li $v0, 5
syscall
move $v0, $a0
li $v0, 1
la $a0, ($v0)
syscall
li $v0, 10
syscall
但是当我 运行 这个时,它 returns 值 1 不管输入是什么。
问题似乎出在 "la $a0, ($v0)" 命令上。
虽然我将保存输入数字的 $v0 寄存器的地址加载到用于打印整数的标准寄存器,但它可以工作。
我该如何解决这个问题?
你走在正确的轨道上。正如@Jester 所解释的,您需要删除加载地址命令并更正您的 move
操作数。
.data
number: .word
.text
.globl main
main:
li $v0, 5 #Read integer to $v0
syscall
move $a0, $v0 #Move integer to $a0
li $v0, 1 #Print integer from $a0
syscall
li $v0, 10 #Exit
syscall
我是装配新手,遇到了一些困难。
我正在使用 MARS 4.5,我想尝试编写一个代码,它可以从键盘获取一个整数,然后立即打印出来。
.data
number: .word
.text
.globl main
main:
li $v0, 5
syscall
move $v0, $a0
li $v0, 1
la $a0, ($v0)
syscall
li $v0, 10
syscall
但是当我 运行 这个时,它 returns 值 1 不管输入是什么。
问题似乎出在 "la $a0, ($v0)" 命令上。
虽然我将保存输入数字的 $v0 寄存器的地址加载到用于打印整数的标准寄存器,但它可以工作。
我该如何解决这个问题?
你走在正确的轨道上。正如@Jester 所解释的,您需要删除加载地址命令并更正您的 move
操作数。
.data
number: .word
.text
.globl main
main:
li $v0, 5 #Read integer to $v0
syscall
move $a0, $v0 #Move integer to $a0
li $v0, 1 #Print integer from $a0
syscall
li $v0, 10 #Exit
syscall