Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 06.05.2005, 18:29 Titel: ASM<->QB und wie mache ich die ASM Progs? |
|
|
Hallo
Bin grad der so ziemliche Nullchecker da drin.
Ich dachte auch für ASM braucht man einen Compiler - find ich nicht.
Worin schreib ich die Progs (im Editor??)- wo gibts Tutorials?
Wie binde ich sie in QB ein?
Oder kann ich mir die irgendwo auch runterladen.
|
|
Nach oben |
|
|
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 06.05.2005, 19:27 Titel: |
|
|
Moin,
erstmal danke für die vielen tollen Smileys
Ich empfehle den NASM (ein kleines Commandline Tool)
www.icc-software.de/files/asm/nasm.zip
Die Progs schreibst du im Editor.
Viel Spaß mit Assembler Hat nämlich kein bisschen was mit QB zu tun
Für Tutorials gibts ne tolle Seite: www.google.de
Was willst du überhaupt mit ASM machen wenn man fragen darf ? _________________
|
|
Nach oben |
|
|
A.K.
Anmeldungsdatum: 02.05.2005 Beiträge: 467 Wohnort: HH
|
|
Nach oben |
|
|
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 06.05.2005, 20:31 Titel: |
|
|
AK ? Du im Forum ? _________________
|
|
Nach oben |
|
|
A.K.
Anmeldungsdatum: 02.05.2005 Beiträge: 467 Wohnort: HH
|
Verfasst am: 07.05.2005, 12:12 Titel: |
|
|
tja...
was muß, das muß.... |
|
Nach oben |
|
|
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 07.05.2005, 17:19 Titel: |
|
|
Schon klar das ASM nicht grad ist.
Werd dannn wohl des öfteren machen.
So die nächsten 10JAhre.
Ich will eigentlich nur Programme schneller machen.
Wenn sie grad ne Rechnung machen.
Ich denk mal normale Rechnung wie +,-,:,* werden in ASM nicht umbedingt meinen Kopf fordern.
Aber Tutorials: Wenn ich nach einem in google suche find ich z.B.
zehn Seiten text wie schwer das doch ist und wie ein PC aufgebaut ist..blabla. Ich muss nicht wissen wie viele Tranisistoren meine CPU hat um 5+2 auszurechnen. |
|
Nach oben |
|
|
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 07.05.2005, 17:33 Titel: |
|
|
Erstmal danke @A.K. die Seite kann ich gut gebrauchen.
so hab mir jetzt nasm runtergeladen und mir deine Hochspannungsseite angeguckt. Mal ehrlich wie oft stehen die die Haare zu Bergen?
Was mache ich den mit nasm.
Mal angenommen ich habe jetzt im Editor ein kleines prog geschrieben.
Was nun? Der zeigt mir nur die eine Hälft der Hilfe an - liegt halt am alten Windows - bei XP wär das jetzt kein prob aber so...
Und wie binde ich so was in QB ein?
Über SHELL oder wie? Und wenn wie gebe ich die Befehle?
Ich bin halt noch'n bisschen Nullcheckend. |
|
Nach oben |
|
|
A.K.
Anmeldungsdatum: 02.05.2005 Beiträge: 467 Wohnort: HH
|
Verfasst am: 07.05.2005, 18:09 Titel: |
|
|
Hi,
wenn du deinen fertigen Quellcode eingegeben hast, dann mußt du aus diesem Quellcode ein Maschinensprachenprogramm erstellen lassen.
Dazu bietet dir NASM auch irgendwo eine Option. (Ich glaube bei NASM sind das die BINARY-Dateien oder so ähnlich....hab nie mit gearbeitet).
Falls du DEBUG.EXE benutzen solltest, dann werden dort die Dateien auch direkt als Maschinencode abgespeichert. (.COM-Dateien).
Wichtig ist, das du auf keinen Fall eine EXE-Datei erstellst, denn dort gibts noch einen störenden Head den man nicht braucht.
Heißt im Grunde genommen das du eine Datei brauchst die reinen Assembler/Maschinencode enthält.
Wenn du diese Datei dann hast, dann kannst du den Inhalt dieser Datei in eine HEX-Zeichenkette umwandeln und sie erstmal in einer String-Variable in deinem QB-Programm speichern.
Damit hast du die Assemblerprogramme schonmal in deinem QB-Prog zum weiterverarbeiten.
Danach benötigst du noch eine Routine die den HEX-String in einen ASCII-String umwandelt und das ASM-Prog in einer weiteren QB-String-Variable ablegt.
Die zweite Stringvariable mit dem ASCII-ASM-Programm kannst du dann per CALL ABSOLUTE aufrufen und das ASM-Programm wird ausgeführt.
Die eben beschriebene Methode ist auch ausführlich in meinem Tutorial
beschrieben: http://www.iconsoft.de/?show=tutorial_asm
Eine andere Möglichkeit wäre das Aufrufen von externen Assembler-Programmen (.COM) über die Shell. Dies ist aber nicht unbedingt zu empfehlen da die SHELL dann noch extra Speicher reserviert.
Am besten mal mein Tut Wort für Wort durchlesen und das Beispiel-"Hello World"-Programm ausprobieren und den Rest. Dann hast du schonmal einen guten Einstiegspunkt zum weitermachen.
MFG A.K. _________________
http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU* |
|
Nach oben |
|
|
Exp-Soft
Anmeldungsdatum: 10.09.2004 Beiträge: 79
|
Verfasst am: 07.05.2005, 18:49 Titel: |
|
|
noop hat Folgendes geschrieben: | Schon klar das ASM nicht grad ist.
Wenn ich nach einem in google suche find ich z.B.
zehn Seiten text wie schwer das doch ist und wie ein PC aufgebaut ist..blabla. Ich muss nicht wissen wie viele Tranisistoren meine CPU hat um 5+2 auszurechnen. |
Hm, also wenn du schon sagt, das du nicht wissen musst wie eine CPU aufgebaut ist um in ASM zu Coden, denke ich solltest du ASM liegen lassen, ASM ist nähmlich zu mindestens 80 90 % reine theorie, da ASM selber auch kaum Befehle wie QB oder Pascal vorweisen kann, ist die Sache in ASM eine reine Bit schubserei, folglich, muss man wissen wie eine CPU aufgebaut ist, wiegroß ihr Aderessraum ist, was sie alles kann.
und um mal ehrlich zu sein auf den heutigen rechnern wie schnell kann da der geschwindigkeitszuwachs sein gegenüber einer anderen sprache? das würdest du nicht wirklich merken
ASM lohnt sich meist nur noch für die Treiber Programmierung, oder wenn man direkt auf die Hardware zugreifen will, oder halt wenn man extrem aufwändige rechenoperationen in einer gewissen zeit berechnet haben muss (alles natürlich im rahmen der CPU möglichkeit)
und wenn du nun immer noch ASM lernen willst, solltest du dir mal Englische Tutorials suchen, die sind meiner meinung nach nähmlich etwas besser als die Deutschen.
Aber der anfang beschäftigt sich immer mit dem Aufbau der CPU und dem Rechner.
http://www.robsite.de/tutorials.php?tut=assembly hier noch ein kleiner link zu ASM Tutorials |
|
Nach oben |
|
|
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 08.05.2005, 14:43 Titel: |
|
|
Erstmal danke für die Antworten.
Mal nen Beispiel:
Ich lasse eine Schleife durchlaufen - bis 100.000.
Das braucht eine Sekunde in QB(ich weiß so hat das jetzt keinen sinn aber egal).
Und in C++ (ich kann kein C++, hab nur den Befehl abgeguckt und ausprobiert.) komm ich deutlich unter eine Sekunde. ALso denk ich mir mal wenn man ASM nimmt, dass noch Hardwarenäher ist, dann geht's noch'n bisschen schneller.
Und außerdem will ich nicht alles ausreuzen was meine CPU kann. |
|
Nach oben |
|
|
Exp-Soft
Anmeldungsdatum: 10.09.2004 Beiträge: 79
|
Verfasst am: 08.05.2005, 15:47 Titel: |
|
|
Also wenns dir nur darum geht, lern gleich C da C auch noch relativ Hardware nah ist, wie gesagt ASM würd ich nur für extrem große Rechenoperationen oder Treiber Programmierung einsetzen
aber das muss letztendlich jeder selber wissen was er lernt, nur wenn du dich schon aufregst das jedes ASM tutorial erstmal mit der Groben Theorie einer CPU anfängt, solltest du es echt sein lassen, da du um die Theorie nicht herumkommst.
AUsserdem ist QB auch nicht die Schnellste Spreche, versuch doch mal FreeBasic oder kauf dir PowerBasic.
Greez Exp-Soft |
|
Nach oben |
|
|
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 09.05.2005, 18:32 Titel: |
|
|
Joa FreeBasic fang ich jetzt an. Rall aber noch nicht so ganz die Syntax.
Man muss sich halt in jede Sprache einarbeiten, auch wenn sie fast identisch zu einer ist, die man schon kann.
ASM werd ich auf kurz oder lang "lernen" (also so einfache sachen - auch mit großen datenmengen) wollen.
C++ joa - hab ich mir auch schon überlegt. Aber irgendwie gefallen mir diese ganzen {}/)(\... nicht. Etwas verwirrend. Aber mal sehen.
Kann man sagen um wieviel schneller C++ als QB in etwa ist?
Ich benutze wenn, denn GNU_Compiler. (Ich bin Freewarenarr/fan/freak;) ) |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 09.05.2005, 18:46 Titel: |
|
|
Zitat: | Aber irgendwie gefallen mir diese ganzen {}/)(\... nicht |
lool..dann vergiss ASM. Da gibts zwar keine Klammern, aber wenn dir selbst so simple Klammern zu kompliziert sind, wirst du an ASM keine Freude finden. Glaub mir.
Du hast dort keine Arrays, keine Schleifen, keine Variablen (nur eine Handvoll Speicherregister), keine IF-Abfragen usw.
Musst du alles selber machen. _________________
|
|
Nach oben |
|
|
ChemicalWarfare
Anmeldungsdatum: 15.09.2004 Beiträge: 152
|
Verfasst am: 09.05.2005, 20:21 Titel: |
|
|
Zitat: | Du hast dort keine Arrays, keine Schleifen, keine Variablen (nur eine Handvoll Speicherregister), keine IF-Abfragen usw. |
Von welchem Assembler sprichst du? Die, die ich kenne, haben alle Variablen. Und ich glaube, das es keinen Assembler gibt, der keine Variablen kennt. |
|
Nach oben |
|
|
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 09.05.2005, 20:30 Titel: |
|
|
Was meinst du mit Variablen ?
Klar, du kannst in den Speicher schreiben und bestimmte Adressen als Variable nehmen. Ich meinte eher Stringvariablen etc., dir stehen in ASM nur die absoluten Grundfunktionen zur Verfügung. Alles weitere setzt sich aus vielen kleinen Puzzleteilen zusammen.
Die "Variablen" sind nur Pointer auf bestimmte Adressen in einem vorher fest definierten Speicherbereich, die zum Speichern von Daten genutzt werden können.
Egal, probierts aus. Macht was ihr wollt _________________
Zuletzt bearbeitet von Paul am 09.05.2005, 20:33, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
A.K.
Anmeldungsdatum: 02.05.2005 Beiträge: 467 Wohnort: HH
|
Verfasst am: 09.05.2005, 20:30 Titel: |
|
|
Zitat: |
Du hast dort keine Arrays, keine Schleifen, keine Variablen (nur eine Handvoll Speicherregister), keine IF-Abfragen usw.
|
Uijuijui......
Schleifen: LOOP, REP, JMP....
Die Register sind Variablen...sie können variable Werte annehmen
IF-Abfragen: z.B.: JZ, JE, JA, JLE....etc......
Und die Arrays liefert QB ja schon mit, da brauch man nur noch "pointen"
MFG A.K. _________________
http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU* |
|
Nach oben |
|
|
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 09.05.2005, 20:40 Titel: |
|
|
Klar gibts die Grundbefehle, aber für 2 verschachtelte Schleifen müsste man z.B.
Code: |
mov cx, 10
schleife1:
push cx
mov cx, 5
schleife2:
mov al, "X"
int 29h
loop schleife2
pop cx
loop schleife1
mov ah, 4Ch
int 21h
|
schreiben.
Das entspricht
Code: |
FOR a = 1 TO 10
FOR b = 1 TO 5
PRINT "X";
NEXT b
NEXT a
END
|
Und dieser ASM Code ist noch wirklich simpel, je mehr dazu kommt, desto mehr Aufwand muss man betreiben. Naja ich will euch den Spaß nicht verderben, man muss sich halt etwas einarbeiten _________________
|
|
Nach oben |
|
|
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 10.05.2005, 16:13 Titel: |
|
|
Die Klammern verwirren mich halt noch ein bisschen. Aber das wird sich ja legen.
Zum COmpiler: Ich dachte von GNU gibts nur einen Freewarecompiler. Und den würde ich dann benutzen. |
|
Nach oben |
|
|
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 10.05.2005, 16:30 Titel: |
|
|
weiter oben im thread hab ich nen link zu NASM gemacht
kann ich nur empfehlen den compiler _________________
|
|
Nach oben |
|
|
|