2013-11-06 2 views
-1

Я просто пытаюсь напечатать это «a» на экране, но, сначала нажав на стек, чтобы я мог проверить, выполнялся ли я при нажатии на стек или нет, кажется, что я не мог потому что он печатает странный характер каждый раз. Что не так?Cant push to stack, mips

.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 

ответ

-1

Я помещаю свое решение после того, как пробовал все, что я сделал, чтобы заставить его работать. Тем не менее, не знаю, почему это работает, но что бы оно ни делало.

.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 
+0

Вы не можете вычесть немедленное действие, поэтому ваш код изначально не работал. Он не выделял место в стеке. – Matt