Printing 无法推到堆栈,mips

Printing 无法推到堆栈,mips,printing,stack,mips,Printing,Stack,Mips,我只是想把这个“a”打印到屏幕上,但通过先按一下堆栈,这样我就可以检查我是否完成了按一下堆栈,似乎我做不到,因为它每次都打印一个奇怪的字符。怎么了 .data char: .word 'a' .text .globl main main: la $t0, char sub $sp, $sp, 4 #allocate byte for stack sb $t0, 0($sp) #push to stack la $t1, 0($sp) #I wasn

我只是想把这个“a”打印到屏幕上,但通过先按一下堆栈,这样我就可以检查我是否完成了按一下堆栈,似乎我做不到,因为它每次都打印一个奇怪的字符。怎么了

.data
char: .word 'a'
.text
.globl main
main:
la $t0, char
sub $sp, $sp, 4       #allocate byte for stack
sb $t0, 0($sp)          #push to stack
la $t1, 0($sp)          #I wasnt able to print the top of the stack directly so I tried this


li $v0, 11
la $a0, 0($t1)          #It isnt working anyway.. Prints É
syscall

add $sp, $sp, 4
jr $ra

我在尝试了我所做的每一件事之后才提出我的解决方案。仍然不知道为什么这一个有效,但是,不管它做什么

.data
char: .word 'a'
.text
.globl main
main:
la $t0, char
addi $sp, $sp, -4       #allocate byte for stack
sw $t0, 0($sp)          #push to stack
lw $t1, 0($sp)          #load from stack



li $v0, 4
la $a0, 0($t1)          #It now puts 'a'
syscall

add $sp, $sp, 4
jr $ra

您不能减去一个立即数,这就是为什么您的代码最初不能工作的原因。它没有在堆栈上分配空间。