|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Dusky_Joe
Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 22.01.2005, 20:23 Titel: Assembler in QLB/LIB compilern |
|
|
Hi!
Ich hab vor kurzem mit SVGA angefangen und hab in QB inzwischen ein paar ganz brauchbare Subs geschrieben, die Drawing Primitives eben.
Aber: Ihr werdet es euch denken können, die QB-Version ist zum gähnen langsam.
Naja, nicht umsonst sind die meisten guten LIBs in Assembler geschrieben. Das wollte ich jetzt auch versuchen. Aber es hat nicht geklappt. Die OBJ-Datei wird noch ganz normal erstellt (auch nicht immer, meistens liegt irgendwo noch ein Fehler...).
Wenn ich dann aber LIB und LINK einsetzen will, wird der Vorgang entweder mit einer Fehlermeldung abgebrochen, oder zumindest taucht eine Warung auf, dass ein Fehler aufgetreten ist. Und QB weigert sich dann, die QLB zu laden, weil sie eben fehlerhaft ist.
Ich verwende den Turbo Assembler Version 4.1 (TASM), weil mir der von verschiedenen Seiten empfohlen wurde.
Habe ich vllt einfach nur einen BATCH-Command vergessen, oder wo liegt der Fehler?
Danke für euere Hilfe! _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 22.01.2005, 20:46 Titel: |
|
|
QLB -> Fertige Library.
Link verknüpft nur Lib mit Lib, nicht QLB, oder? _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
Dusky_Joe
Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 23.01.2005, 19:38 Titel: |
|
|
Naja, mit LIB bekommt man eben LIBs und LINK kann EXEs und QLBs erstellen.
Hab inzwischen (dank der Monster FAQ) selber rausgefunden, was ich falsch gemacht hab. Vor allem lags daran, dass ich nie angegeben hab, mit welcher LIB LINK arbeiten soll, und so is jedes mal so a... unvollständige QLB rausgekommen. Mit der konnte QB natürlich nix anfangen.
Aber jetzt steh ich vor dem nächsten Problemen.
Ich hab mir jetzt Eine ASM erstellt, die zwar Modiwechsel möglich macht, die ASM-Version von SvgaPset macht mir noch probleme.
Genauer, der DIV-Befehl.
Der Code sieht ungefähr so aus:
Code: |
...
;ofs ist das Offset.
;Es entsteht durch:
;ofs = y * Breite + x
;und kann über 64k liegen.
;Deswegen wird in grn die Bank bestimmt.
;das 64k-fache von grn wird dann von ofs abgezogen, so dass
;es das Offset auf der Bank angibt.
MOV grn, ofs
DIV grn, 0FFFFh
MUL grn, 0FFFFh
SUB ofs, grn
DIV grn, 0FFFFh
...
|
Beim assemblern kommt dann immer die Fehlermeldung "extra characters on line"
Außerdem stört mich en bisschen, dass ich zuerst dividieren, dann multiplizieren, und dann wieder dividieren muss. Gibt es vllt so etwas wie den QB-Befehl MOD auch in ASM?
Danke für euere Hilfe! _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
|
Quark48
Anmeldungsdatum: 16.10.2004 Beiträge: 559 Wohnort: Saltendorf a.d. Naab bzw. Teublitz i.d. Oberpfalz / Bayern
|
Verfasst am: 14.02.2005, 23:14 Titel: |
|
|
Hallo!
Ein besonderer Vorschlag meinerseits:
Man kann Bibliotheken auch komplett in Assembler mit TASM (Turbo-Assembler von Borland) schreiben. Und dann wird das einfach als Bibliothek gelinkt, und fertig
MfG das Spangengesicht _________________ Grüßle, Stefan
***
Wenn ein Programm auf nem alten Rechner gut läuft, dann läuft´s auf nem neuen erst recht!
Ich habe/hatte keine feste Spange und auch keine Schwester. Der Rest stimmt. Es tut mir leid... :-/ |
|
Nach oben |
|
|
Quark48
Anmeldungsdatum: 16.10.2004 Beiträge: 559 Wohnort: Saltendorf a.d. Naab bzw. Teublitz i.d. Oberpfalz / Bayern
|
Verfasst am: 14.02.2005, 23:16 Titel: |
|
|
Hallo nocheinmal
extra characters on line - Extra Zeichen auf der Zeile -> ich denke, dass du da zuviel hingeschrieben hast
Und ich glaube sher, dass es einen MOD-Befehl unter Assembler nur dann gibt, wenn man ihn selber schreibt
MfG das Spangengesicht _________________ Grüßle, Stefan
***
Wenn ein Programm auf nem alten Rechner gut läuft, dann läuft´s auf nem neuen erst recht!
Ich habe/hatte keine feste Spange und auch keine Schwester. Der Rest stimmt. Es tut mir leid... :-/ |
|
Nach oben |
|
|
Dusky_Joe
Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 15.02.2005, 18:30 Titel: |
|
|
Tja, inzwischen hab ich das ganze einigermaßen hinbekommen => die SvgaPset-Sub is online *g*
Zu ner Bibliothek wollt ichs ja sowiso linken, steht ja im thread! Oder hast du mit Bib ne DLL gemeint?
Dann wüsst ich aber nicht, wie die einzbinden wäre... naja egal.
Mein Fehler war, dass ich beim DIV-Befehl geacht hab, dass der mit jedem Register funzt. geht aber nur mitm ax, entsprechend braucht er auch nur einen parameter.
und das mit dem mod-befehl: erledigt div auch:
div mit 16-bit-werten:
MOV AX, Wert1
MOV BX, Wert2
DIV BX
=> AX = Quotient (in QB wäre das so was wie INT(AX/BX) bzw AX\BX)
=> DX = Rest.
Bei 8-bit is es ähnlich, nur dass dann AH und AL statt AX und DX benutzt werden.
Trotzdem danke!
(Anmerkung: ich hab das projekt inzwischen stillgelegt. freeBASIC is besser!) _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
|
Quark48
Anmeldungsdatum: 16.10.2004 Beiträge: 559 Wohnort: Saltendorf a.d. Naab bzw. Teublitz i.d. Oberpfalz / Bayern
|
Verfasst am: 15.02.2005, 18:32 Titel: |
|
|
Hallo!
Also die MUL und DIV-Befehle funktionieren nur mit 16-Bit-Registern, also mit AX, BX, CX und DX...
MfG Quark48 - nur echt mit fester Zahnspange _________________ Grüßle, Stefan
***
Wenn ein Programm auf nem alten Rechner gut läuft, dann läuft´s auf nem neuen erst recht!
Ich habe/hatte keine feste Spange und auch keine Schwester. Der Rest stimmt. Es tut mir leid... :-/ |
|
Nach oben |
|
|
Dusky_Joe
Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 15.02.2005, 18:41 Titel: |
|
|
MUL und DIV gehen nur mit 16bit-registern, die werte können aber auch 8-bit sein.
hab mir eine asm-referenz runtergeladen, und ausprobiert.
naja egal *g* _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|