2016-10-17 5 views
1

Я новичок на собрании, и у меня с этим возникают определенные трудности.Сборка MIPS: напечатайте номер, который был введен

Я использую 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 

, но когда я запустил это, он возвращает значение 1, независимо от того, что такое вход.

Проблема, похоже, в команде «la $ a0, ($ v0)».

Хотя я загрузил адрес регистра $ v0, который содержит номер входа в стандартный регистр для печати целых чисел, он может работать.

Как я могу это решить?

+0

Регистры не имеют адресов, а функция целых чисел печати в любом случае требует значения, а не адреса. Поэтому просто удалите эту строку, и она должна работать. – Jester

+0

Удалив команду адрес загрузки, она возвращает 0 – Coursal

+0

Вы также получили обратные операнды 'move'. – Jester

ответ

0

Вы на правильном пути. Как пояснил @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