DLX Assembler

T

The_S

Hallo,

ich muss mich aktuell fürs Studium mit DLX (verwende WinDLX) rumärgern, habe hierzu ein paar Fragen und hoffe, dass sich hier jemand findet, der sich damit auskennt und mir helfen kann :D :

1.) Was hat es genau mit dem .align auf sich? Es wird verwendet, um den Abstand zum nächsten Datensatz zu spezifizieren ... ok. Aber für was benötige ich das überhaupt? Es kann mir doch eigentlich relativ egal sein, wo und in welchem Abstand der nächste Datensatz beginnt?

2.) Eine Aufgabe aus meinem Skript lautete:

Über die Eingabeaufforderung sollen zunächst zwei Integerzahlen eingelesen
werden. Schreiben Sie ein Programm welches das Produkt der beiden Zahlen berechnet, wobei das Ergebnis ins Gleitkommazahlen-Format umgewandelt werden soll.

Meine Lösung hierzu lautet:

Code:
		.data
Prompt1: 		.asciiz 		"Enter first number:"
				.align 			4
Prompt2: 		.asciiz 		"Enter second number:"
				.align 			4
PrintFt: 		.asciiz 		"%d * %d = %g"
				.align 			6
PrintPar: 		.word 			PrintFt 
Int1: 			.space 			4
Int2:			.space 			4
PrintRes: 		.space			4

		.text
		.global main
main:
				addi 			r1,r0,Prompt1 
				jal 			InputUnsigned
				sw 				Int1,r1
				add 			r2,r0,r1
				
				addi 			r1,r0,Prompt2
				jal				InputUnsigned
				sw 				Int2,r1
				
				mult 			r3,r1,r2
				movi2fp			f2,r3
				cvti2f			f2,f2
				sf				PrintRes,f2
				addi 			r14,r0,PrintPar
				trap 			5
				
				trap 			0

Es wird der richtige Wert in das Register F2 geschrieben, aber auf der Ausgabebox wird "0" als Ergebnis ausgegeben. Wo liegt mein Fehler? Konvertiere ich stattdessen das Ergebnis in eine Fließkommazahl mit doppelter Genauigkeit (steht so in der Musterlösung), ersetze also cvti2f durch cvti2d und sf PrintRes,f2 durch sd PrintRes,f2 (Zeile 27 und 28) funktioniert das Programm. Mir ist nur nicht so klar warum meine Version nicht funktioniert.

Auch ist mir nicht klar, warum bei der Musterlösung nicht das Register d2 (für doppelte Genauigkeit) sondern weiterhin f2 (für einfache Genauigkeit) verwendet wird!?

Wäre super, wenn mir jemand helfen könnte :)

Grüße
 

Neue Beiträge

Zurück