Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Mecki Igel

Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
|
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 20.02.2006, 00:35 Titel: |
|
|
Hi Mecki,
schau doch mal auf freebasic.de selbst in der Befehlsreferenz nach..
Timer gibt immernoch die seit Mitternacht vergangenen Sekunden zurück
..aber das Chm-File zum Download ist größer geworden(317k)
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Mecki Igel

Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
|
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 20.02.2006, 12:09 Titel: |
|
|
@Mecki:
Jedenfalls ist die Chm-Datei auf dem neuesten Stand, das ist okay.
@psygate:
[Edit]
1: war gar nicht @psygate
2: ich war im falschen Thread..
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 20.02.2006, 18:20 Titel: |
|
|
Zitat: | geht das auch mit komma zahlen? |
ich seh direkt keine möglichkeit, hab aber eine Idee:
Freebasic soll den Code mit -r kompilieren, weil dann löscht er die ASM Datei nicht:
Code: | defsng a-c
input a
input b
c=a*b
? c |
Hier der passende Code auszug:
Code: | ...
fld dword ptr [_Bf]
fmul dword ptr [_Af]
fstp dword ptr [_Cf]
push 1
push dword ptr
... |
So einfach ist es wohl doch nicht.
(fmul seint ein Macro zusein, das ich aber leider nicht weiter verfolgen kann.
Eventuell hilft der Freebasic Quellcode) _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
 |
Eastler_dart

Anmeldungsdatum: 25.09.2005 Beiträge: 177 Wohnort: Baden-Würtemberg + Sachsen
|
Verfasst am: 20.02.2006, 21:04 Titel: |
|
|
da will ich dann doch einfach mal die Deffinition des MUL-Befehls hierher schreiben, = für reine Assembler-Programmierung auf x86-er Basis
MUL Quelle
(MULtiply unsigned - Vorzeichenlose Multiplikation)
veränderte Flags: OF SF ZF AF PF und CF
(dürfte für Freebasic unrelevant sein?)
MUL multipliziert den Quelloperanden mit dem AL-Register (Byte-Multiplikation) oder mit dem AX-Register bei einer Wort-Multiplikation.
Code: |
Multiplikand * Multiplikator = Ergebnis
AL (Byte) Quelloperand(Byte) AX(Wort)
AX(Wort) Quelloperand(Wort) DX:AX(Doppelwort)
|
Beispiele: Code: |
;Byte-Multiplikation
mov al,100 ;AL=100
mov bh,20 ;BH=20
mul bh ;BH=Byte ==> AX=AL*BH
;Byte- mit Wort-Multiplikation
xor ah,ah ;AH=0
mov al,Summe ;AL=Summe
mov bx,500 ; BX=500
mul bx ; BX=Wort ==> DX:AX = AX * BX
; DX=höherwertiger Teil des Ergebnisses
; AX=niederwertiger Teil des Ergebnisses
;Wort-Multiplikation
mov ax,300 ;AX=300
mul ax ;AX=Wort ===> DX:AX=AX*AX
; DX=höherwertiger Teil des Ergebnisses
; AX=niederwertiger Teil des Ergebnisses
|
Zeitbedarf: 75 Cpu-Takte bei MUL Reg (8-bit)
125 Cpu-Takte bei MUL Reg (16-bit)
Wie das nun ins FreeBasic zu übertragen ist, hab ich noch nicht probiert
hoffe es hilft
Eastler _________________ Kaum macht mans richtig, schon geht's |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 21.02.2006, 18:20 Titel: |
|
|
Zitat: | veränderte Flags: OF SF ZF AF PF und CF
(dürfte für Freebasic unrelevant sein?) |
Freebasic ermöglicht das einbinden von echten ASM Code in den Basic Code.
Wo dem her haben die Flags ihren Existenz Grund und sind sicher nicht "unrelevent". Sie sing genau so "wichtig" wie in reinem ASM.
Hier zum FB Code der Multiplikation:
Code: | dim a as byte
dim b as byte
dim c as byte
do
input a
input b
asm
mov al,[a]
mov bh,[b]
mul bh
mov [c], AX
end asm
? c
loop |
Anmerkung:
Dieser Code erreicht schon fast die Wahnsinns Grenze, Freebasic kann eine Multiplikation recht gut in Asembler umsetzen und PRINT und INPUT brauchen viel mehr Rechenzeit als die Multiplikation.
Allgemein staune ich jetzt, über die super ASM einbindung in FB, ich hab's mir schwere vorgestellt.  _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
 |
psygate
Anmeldungsdatum: 05.04.2005 Beiträge: 304 Wohnort: Wien und der Computer
|
Verfasst am: 21.02.2006, 22:13 Titel: |
|
|
Frage am rande, bin ich verrückt oder haut da echt was nicht hin?
mir gibt das programm bei 128*128 eine 0 zurück?! |
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 21.02.2006, 23:27 Titel: |
|
|
Hallo.
Hast du dir mal die dimensonierungen angeguckt?
Die datentypen sind BYTE, gehen also nur von -128 bis 127. Also kann man 128 gar nicht darin speichern, erst recht nicht 128*128
Hoffe, das ich mich nicht irre.
Michael _________________
Code: | #include "signatur.bi" |
|
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 22.02.2006, 11:56 Titel: |
|
|
Hi,
Multiplikation von Integerzahlen in Asm:
Code: | Dim As Integer A,B
Dim As LongInt C
Input A
Input B
asm
mov eax, [A] 'lade A nach eax
mov ebx, [B] 'lade B nach ebx
mul ebx ' eax * ebx
mov [C], eax 'Lo-Teilergebnis
mov [C+4], edx 'Hi-Teilergebnis
end asm
? C
sleep |
Das 'dword ptr' kann hier entfallen, da die Registerbezeichnungen auf eine 32Bit (dword) Aktion deutet.
Für die Multiplikation in der FPU gibt es einen eigenen Befehlssatz (erkennbar am f....).
Code: | Dim As Single A,B,C
Input A
Input B
asm
fld dword ptr [A] 'lade A in die FPU
fmul dword ptr [B] 'mul mit B
fstp dword ptr [C] 'speicher Ergebnis in C
end asm
? c
sleep |
Gruß
Volta _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 22.02.2006, 16:17 Titel: |
|
|
Klasse, das erspart mir die Suche.
volta hat Folgendes geschrieben: | ..Für die Multiplikation in der FPU gibt es einen eigenen Befehlssatz (erkennbar am f....).
Code: | Dim As Single A,B,C
Input A
Input B
asm
fld dword ptr [A] 'lade A in die FPU
fmul dword ptr [B] 'mul mit B
fstp dword ptr [C] 'speicher Ergebnis in C
end asm
? c
sleep |
| Gilt das auch für Code: | Dim As Double A, B, C | ?
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 22.02.2006, 16:34 Titel: |
|
|
jein,
double ist ein 64Bit Datentyp also 'qword ptr' verwenden:
Code: | Dim As Double A,B,C
Input A
Input B
asm
fld qword ptr [A]
fmul qword ptr [B]
fstp qword ptr [C]
end asm
? C
sleep |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 22.02.2006, 16:39 Titel: |
|
|
Ooops, das hätte schief gehen können..
Danke für die Antwort
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
psygate
Anmeldungsdatum: 05.04.2005 Beiträge: 304 Wohnort: Wien und der Computer
|
Verfasst am: 22.02.2006, 17:29 Titel: |
|
|
Also... mein kompliment an alle. Ihr habt mir sehr geholfen, nur noch eins:
Wie kann ich kommazahlen damit multiplizieren? |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 22.02.2006, 19:54 Titel: |
|
|
volta hat Folgendes geschrieben: | Code: | Dim As Single A,B,C
Input A
Input B
asm
fld dword ptr [A] 'lade A in die FPU
fmul dword ptr [B] 'mul mit B
fstp dword ptr [C] 'speicher Ergebnis in C
end asm
? c
sleep |
|
Siehe weiter oben.
Probiers einfach mal aus. _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
 |
|