2016-04-05 8 views
0

zu laden Ich habe versucht, den folgenden Code in winMIOS64 zu laden, aber es der Prozess ist fehlgeschlagen, weil es mir ein Fehler in Zeile 2, gab mir helfen könnte, das Problem und wenn es andere Anweisungen geändert werden sollte zu identifizieren ?? !!Wie MIPS-Code korrekt in winMIPS64

.data 
     m1:.asciiz "enter the total number of digits" 
     m2:.asciiz "enter total number of digits" 
     m3:.asciiz "entered number:" 
     m4:.asciiz "sum of product:" 
     m5:.asciiz "not an armstrong number" 
.text 
main: 
     addi.d $sp,$sp,-20 
     sd $ra,0($sp) 
     sd $a0,4($sp) 
     sd $a1,8($sp) 
     sd $a2,12($sp) 
     sd $a3,16($sp) 
     jal start 

start: ld $a0,0($sp) #restore a0 from stack 
     ld $a1,4($sp) 
     ld $a2,8($sp) 
     ld $a3,12($sp) 
     ld $ra,16($sp) 
     addi.d $sp,$sp,20 #restore stack pointer 
     jr $ra #return to calling routing 
     halt 

Im folgenden sind die Fehler in einem Dialog erschien während der Code nicht heruntergeladen hat:

1. ersten Dialog gesagt: Durchlauf 1 - Fehler auf der Leitung 2

2. zweiter Dialog gesagt: Fehler erkannt auf Durchlauf 1

+1

_ "es gab mir einen Fehler in Zeile 2 "_ Dann sollten Sie die genaue Fehlermeldung in Ihre Frage aufnehmen. – Michael

+0

dieses Programm nicht den Code in seine Umgebung laden, es gab mir diese Nachricht durch Dialog –

+0

Welche Botschaft? Sie müssen die Fehlermeldung wörtlich kopieren, da Sie nicht erwarten können, dass Benutzer ein Programm starten und es für Sie ausprobieren. –

Antwort

1

Der Fehler ist vermutlich falsch ausgerichtete Adresse.

Sie versuchen, ein Doppelwort in Zeile zu speichern 2:

sd $ra, 0($sp) 

Aber Sie sind eine Adresse nicht vorbei, das Doppelwort (ein Vielfaches von 8) ausgerichtet ist.

Weil Sie Doppelwörter speichern, sollten sie 8 Bytes auseinander jeder und Sie sollten für 5 Register statt nur 2040 Bytes in dem Stapel werden Zuweisung:

addi.d $sp, $sp, -40