| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen   | 
	
	
	
		| Autor | 
		Nachricht | 
	
	
		arduno
 
 
  Anmeldungsdatum: 12.05.2011 Beiträge: 252
 
  | 
		
			
				 Verfasst am: 13.01.2014, 16:19    Titel: Float-ASM | 
				     | 
			 
			
				
  | 
			 
			
				Hallo, guten Tag.
 
Wie kann ich bitte dieses umsetzen damit es läuft mit Freebasic?
 
 
Danke.
 
Gruss
 
 
 	  | Code: | 	 		  
 
Asm 
 
 .data
 
  v0      dq 13.5
 
  g       dq 9.81
 
  einhalb dq 0.5
 
  t       dq 1.3
 
  Hoehe   dq ?
 
  
 
.code  
 
  finit
 
  fld t             ' t in st(0)
 
  fst st(1)         ' Kopie nach st(1)
 
  fmul g            ' st(0)=g*t
 
  fmul einhalb      ' st(0)=0.5*g*t
 
  fsubr v0          ' st(0)=v0 - 0.5*g*t
 
  fmulp st(1),st(0) ' st(1)=st(1)*st(0), pop
 
  fstp Hoehe        ' zurueckschreiben
 
End Asm
 
 | 	 
  | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		Elor
 
 
  Anmeldungsdatum: 12.07.2013 Beiträge: 205 Wohnort: Konstanz
  | 
		
			
				 Verfasst am: 13.01.2014, 18:29    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Hallo,
 
 
versuch mal die Variablen ausserhalb des ASM-Blocks zu definieren. Ausserdem muessen die Variablen geklammert werden und es ist auch der entsprechende Pointer-Type anzugeben, also fuer Double = qword, Single dword usw.
 
 
Beispiel:
 
 	  | Code: | 	 		  
 
Dim As Double t= 1.3, v0= 13.5, g= 9.81, einhalb= 0.5, Hoehe
 
Asm
 
'.data
 
  'v0      dq 13.5
 
  'g       dq 9.81
 
  'einhalb dq 0.5
 
  't       dd 1.3
 
  'Hoehe   dq ?
 
 
 
'.code
 
  finit
 
  fld qword Ptr [t]             ' t in st(0)
 
  fst st(1)         ' Kopie nach st(1)
 
  fmul qword Ptr [g]            ' st(0)=g*t
 
  fmul qword Ptr [einhalb]      ' st(0)=0.5*g*t
 
  fsubr qword Ptr [v0]          ' st(0)=v0 - 0.5*g*t
 
  fmulp st(1),st(0) ' st(1)=st(1)*st(0), pop
 
  fstp qword Ptr [Hoehe]        ' zurueckschreiben
 
End Asm
 
 | 	 
  | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		arduno
 
 
  Anmeldungsdatum: 12.05.2011 Beiträge: 252
 
  | 
		
			
				 Verfasst am: 14.01.2014, 14:50    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				jup, danke.
 
So funktioniert es.
 
 
Ich dachte man konnte MASM-Konform übernehmen.
 
 
Gruss | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		micha
 
 
  Anmeldungsdatum: 09.12.2005 Beiträge: 72
 
  | 
		
			
				 Verfasst am: 15.01.2014, 02:21    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Code: | 	 		  Asm
 
 .intel_syntax noprefix 
 
 .data
 
  v0:      .float 13.5
 
  g:       .float  9.81
 
  einhalb: .float  0.5
 
  t:       .float  1.3
 
  Hoehe:   .float  0.0
 
  
 
  .text
 
  fld   dword ptr [t]       ' t in st(0)
 
  fst   st(1)               ' Kopie nach st(1)
 
  fmul  dword ptr [g]       ' st(0)=g*t
 
  fmul  dword ptr [einhalb] ' st(0)=0.5*g*t
 
  fsubr dword ptr [v0]      ' st(0)=v0 - 0.5*g*t
 
  fmulp st(1),st(0)         ' st(1)=st(1)*st(0), pop
 
  fstp  dword ptr [Hoehe]   ' zurueckschreiben
 
End Asm | 	 
  | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		 |