Hallo ihr liebsten ePvP-Menschen,
ich wollte fragen ob einer von euch mir hier helfen kann?
Gegeben ist folgende Aufgabe und ich habe einfach keine Ahnung wie ich das umsetzen sollte...
"Schreiben Sie ein Assemblerprogramm, das zuerst einen Integer n einliest, dann n Integerzahlen
a1, . . . , an einliest, auf den Stack schreibt und in umgekehrter Reihenfolge wieder ausgibt. Dokumentieren
Sie Ihr Programm kurz und prägnant.
Achtung: Der Stackpointer $sp soll immer auf die letzte belegte Speicherzelle des Stacks zeigen!"
Wäre zutiefst dankbar, sollte hier jemand helfen können!
Also mir ist klar das ich im txt segment schonmal die eingabeaufforderungen habe und die über die passenden syscalls laden muss.. dann einen array erstelle mit der länge der ersten eingegeben zahl und ihn dann selber mit zahlen füllen muss... nach jeder ausgabe muss irgendwie der stack um eins verringert werden damit der pointer auf die letzte speicherzelle des arrays zeigt, wobei über den print syscall vorher der letzte wert ausgegeben wird wobei ich eine schleife brauche bis beq 0 ( glaube ich?) also bis das array eben 0 werte enthält..
aber holy ****.. wie setz ich das in mips um?
Ich habs mal probiert. Ist leider schon 2 Semester her, dass ich das machen musste.
Dieser Code kompiliert zwar, macht aber noch nicht ganz das was du haben willst. Hatte keine Lust da jetzt noch Fehler zu suchen... Fertiger Code wär ja aber auch langweilig
Code:
.text
.global main
main:
li $v0, 5 # syscall 5 - Eingabe einer Ganzzahl, Rückgabewert in $v0
syscall
move $t0, $v0 # Rueckgabewert nach $t0 verschieben (Zaehler fuer inputLoop)
move $t1, $v0 # Rueckgabewert nach $t1 verschieben (Zaehler fuer outputLoop)
inputLoop:
beq $t0, $0, outputLoop
li $v0, 5 # syscall 5 - Eingabe einer Ganzzahl, Rückgabewert in $v0
syscall
addi $sp, $sp, -4 # Stack-Platz reservieren
move $sp, $v0 # Eingelesenen Integer auf Stack schieben
subi $t0, $t0, 1 # Zaehler dekrementieren
j inputLoop
outputLoop:
beq $t1, $0, end
li $v0, 1 # syscall 1 - Ausgabe einer Ganzzahl
move $a0, $sp # Zahl in $a0 (Parameter für syscall)
syscall
addi $sp, $sp, 4 # Stack-Platz wieder freigeben
subi $t1, $t1, 1 # Zaehler dekrementieren
j outputLoop
end:
li $2, 10 # Programmende
syscall
Okay, weil du es nicht hinkriegst hab ich es dann mal für dich korrigiert:
Mein Fehler war, dass man Sachen natürlich mit sw(store word) auf den Stack schreibt, weil im $sp Register ja eine Speichergeschrieben steht. Ausgelesen werden müssen die Werte folglich auch mit lw(load word). Außerdem war an einer Stelle $v0 und $t0 vertauscht glaube ich...
Code:
.text
.global main
main:
li $v0, 5 # syscall 5 - Eingabe einer Ganzzahl, Rückgabewert in $v0
syscall
move $t0, $v0 # Rueckgabewert nach $t0 verschieben (Zaehler fuer inputLoop)
move $t1, $v0 # Rueckgabewert nach $t1 verschieben (Zaehler fuer outputLoop)
inputLoop:
beq $t0, $0, outputLoop
li $v0, 5 # syscall 5 - Eingabe einer Ganzzahl, Rückgabewert in $v0
syscall
subi $sp, $sp, 4 # Stack-Platz reservieren
sw $v0, 0($sp) # Eingelesenen Integer auf Stack schieben
subi $t0, $t0, 1 # Zaehler dekrementieren
j inputLoop
outputLoop:
beq $t1, $0, end
li $v0, 1 # syscall 1 - Ausgabe einer Ganzzahl
lw $a0, 0($sp) # Zahl in $a0 (Parameter für syscall)
syscall
addi $sp, $sp, 4 # Stack-Platz wieder freigeben
subi $t1, $t1, 1 # Zaehler dekrementieren
j outputLoop
end:
li $2, 10 # Programmende
syscall
Kann wer Helfen ? 09/30/2012 - Combat Arms - 5 Replies Hey wenn ich Combat Arms lädt es ganz normal und bevor das mit ID und PW kommt kommt so eine meldung hab Ca schon 2 mal neu Installiert aber immer noch das gleiche
http://s14.directupload.net/images/120929/pzg4kxm y.jpg
kann wer mir pls helfen[ Bitte Helfen!] 11/01/2010 - Metin2 Private Server - 1 Replies kann wer mir helfen habe ne frage weißt wer ob man von megaload was raus nehmen kann was man hohgeladen hat?
kann wer mir pls helfen[ Bitte Helfen!] 04/01/2010 - WoW Private Server - 2 Replies hi
ich suche ein kostenlosen download für World of Warcraft: Wrath of the Lich King Expansion (das Blaue) könnte jemand mir vill. eine link geben weil bei rising-gods muss man da allles einzelnt downloaden und das dauert zu lange
gebe viele thx nach nachfrage
bitte um link :handsdown: :handsdown: :handsdown: :handsdown: :handsdown: :handsdown: :handsdown: :handsdown: :handsdown: :handsdown: :handsdown: :handsdown: :handsdown: :handsdown:
hab´s gefunden Danke!! bitte thread...
kann mir wer Helfen?? 10/05/2009 - Metin2 Private Server - 1 Replies Also ich hattte einen 1 Klick Server aber der ist iw gecrasht und jetzt bekomme ich den nichtmehr hin kann mir wer per TW helfenß