2012-10-24 14 views
5

Ho uno strano problema con un file di assembly. Ogni volta che carico questo file in PCSpim, mi dà un errore di sintassi alla riga 23. Ho esaminato diversi riferimenti e chiesto aiuto a diversi compagni di classe, e nessuno sembra capire cosa c'è che non va.Errore di sintassi nell'assembly MIPS

.globl main 

.data 
test1:  .word 92 
test2:  .word 81 
finalExam: .word 90 
a:   .ascii "Enter value A:\n" 
b:   .ascii "Enter value B:\n" 
grade:  .word 0 
result: .word 0 
#More data... 

.text 
#Program calculates a final grade based off of two midterms and a final. Midterms are 
#weighted 30% and the final is weighted 40%. Grade is out of 1000. 
final: 
li $t4, 3 #PCSpim complains here. 
li $t5, 4 
la $t0, test1 
lw $t1, ($t0) 
mult $t1, $t4 
mflo $t1 
la $t0, test2 
lw $t2, ($t0) 
mult $t2, $t4 
mflo $t2 
la $t0, finalExam 
lw $t3, ($t0) 
mult $t3, $t5 
mflo $t3 
add $t4, $t1, $t2 
add $t4, $t4, $t3 
la $t0, grade 
sw $t4, ($t0) 
#Print result to console 
li $v0, 1 
move $a0, $t4 
syscall 
jr $ra 

#Program continues... 
+0

Qual è l'errore di sintassi e quale riga è la riga 23? – Musa

+0

La riga 23 è l'inizio della sezione di testo (li $ t4, 3), e non specifica quale sia l'errore di sintassi, che è la più grande fonte della mia confusione. –

+0

Giusto per chiarire, Pseudo-ops, Bare Machine sono abilitati e I/O mappati sono disabilitati. –

risposta

1

Ok, ho capito, c'erano due problemi in questa situazione. Innanzitutto, Bare Machine avrebbe dovuto essere disabilitato e un altro problema si è verificato quando ho usato "b" come etichetta, perché b è anche usato come opcode.

Grazie per aver controllato!