myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

Assembler FPU Stack Problem

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 18.06.12, 12:19   #1
essenm
Anfänger
 
Registriert seit: Dec 2011
Beiträge: 1
Bedankt: 0
essenm ist noch neu hier! | 0 Respekt Punkte
Standard Assembler FPU Stack Problem

Moin,

folgender Quellcode akzeptiert keine Variablen auf dem FPU Stack und MASM meckert rum, wenn ich Register auf den FPU Stack schreibe.

Der Code-Abschnitt berechnet PI nach der Formel PI = 4 * ( 1+Vorzeichen * Bruch) über die FPU.
Code:
[...].DATA

N EQU 1000
Summe DW 1 
Vorzeichen DW 1
i DW 2
Minus DW -1
Bruch DW 0
zwei DW 2
temp DW ?

.CODE

;Berechnung von PI
Rechnung PROC
		push Bx
		mov bx,N
pi:
		
		cmp i,Bx
		ja Ende
		FWAIT
		FILD Vorzeichen
		FIlD Minus
		FMUL
		FISTP temp
		
		mov dx,temp
		mov Vorzeichen,dx
		FWAIT
		
		FILD i
		FILD zwei
		FMUL
		FISTP temp
		
		mov dx,temp
		mov bruch,dx
		FWAIT
		
		FLD1
		FILD Bruch
		FSUB
		FLD1
		FDIV
		FILD Vorzeichen
		FMUL
		FILD Summe
		FADD
		FISTP temp
		
		mov dx,temp
		mov Summe,dx
		
		inc i
jmp pi
[...]
Es befindet sich alles in der selben Datei und beim ersten FMUL wird schon bestätigt, dass der Stack leer und eine Ungültige Operation - vermutlich wegen multiplizieren von zwei leeren Stackelementen - durchgeführt wird. Die Variable temp verwende ich so, dass ich beim umlagern Stichprobenartig nachschauen kann via Codeview, was sich nach den Operationen in der jeweiligen Variable befindet. Laut Codeview werden die Variablen initialisiert, aber anscheinend können sie nicht auf den FPU Stack gepusht werden.

EDIT: Der Fehler, weshalb die Variablen keine Werte annahmen ist behoben, jedoch hat nicht den zugewiesenen Wert 2, sondern fängt bei 128D an und geht somit nicht in die Schleife pi. Summe wird ebenfalls nicht mit 1 initialisiert, sondern bekommt den Wert 301D. Zu beiden Werten konnte ich nichts finden. Sind das Fehlercodes? Wenn ja, was bedeuten sie? Wenn nein, wie umgehe ich die Falschinitialisierung?
essenm ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:51 Uhr.


Sitemap

().