Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
05.11.2001, 20:37
Mazze



Hallo!
Ich will Assembler lernen, bzw. mein Wissen verbessern!
Ich hab da mal so ein Tutorial durchgemacht und der Typ will, dass ich eine lib einbinde!
OK...also als erstes: welchen Compiler sollte ich nehmen?
Da gibt es wohl nur 3 Auswahlmöglichkeiten: MASM, TASM, NASM
Ich hab MASM und TASM....welcher besser ist kann ich aber schlecht sagen!

Die Anweisung sieht so aus:
include stdlib.a
includelib stdlib.lib

Ich hab dann noch Umgebungsvariablen gesetzt. Und zwar in der autoexec.bat:
set include = c:\stdlib\include
set lib = c:\stdlib\lib

Wenn ich kompilieren will findet er die lib trotzdem nicht!

Achja: Mein Tut: http://webster.cs.ucr.edu/indexIE.html
Welches Buch würdet ihr mir empfehlen?

thx
Matze

--

BattleTech-MOD:
http://bthl.unitedgaming.net/

zum Seitenanfang zum Seitenende Profil || Suche
001
06.11.2001, 00:22
Kriz



Ähm
Was zum Henker soll das mit stdlib.lib? Die MASM (M$) und TASM (Borland) Compiler sind eh auf MS-DOS ausgelegt und imho gibt es für Assembler keine Libraries, weil Assembler die letzte Stufe vor dem reinen Maschinencode darstellt. Das einzige, was TASM/MASM produzieren, sind EXE's und OBJ's.

Guter Mann, wenn du Assembler lernen willst (was nie verkehrt ist), dann rate ich dir zu einem netten, kleinen Einsteigerbuch (was ich auch besitze aus FH Zeiten noch):

Programmiersprache Assembler - Eine strukturierte Einführung
Reiner Backer
rororo - Rowohlt Taschenbuch Verlag
ISBN: 3-499-19249-7
18.90 DM

Cu

EDIT

Was du mit stdlib meinst, bezieht sich auf HLA und HLA ist kein reines, performantes Assembler... Und bevor ich HLA lernen würde, gehe ich gleich auf C++.

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)


Dieser Beitrag wurde am 06.11.2001 um 00:26 von Kriz bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
06.11.2001, 07:07
Tron



jo, das buch hab ich auch, hab ich mir schon vor ewigkeiten gekauft
da war ich noch zu klein und dumm, um zu rallen was man mit Asm alles anstellen kann
ich hoffe das buch gibt's noch (orginalausgabe 1993)

da hab ich so tolle dinge programmiert wie wurzelziehen mit fixpunkt-zahlen
einlesen der zahl (parameter): 50 zeilen
wurzel ziehen: 10 zeilen
ausgeben der wurzel: 60 zeilen
da sieht man mal was am laengsten dauert: die kommunikation mit dem benutzer (:

kleine aufgabe an den geneigten leser:
warum stuerzt dieses programm nicht ab sondern beendet normal? (com-datei)

org 100
MOV AX, 0c3c3h
PUSH AX
JMP 103

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
003
06.11.2001, 15:04
Prefect



Quellcode:
0100   B8 C3 C3    MOV AX, 0xC3C3
0103   50          PUSH AX
0104   EB FD       JMP 103

In einem COM-Programm ist AFAIK CS=SS, und zu Programmstart ist SP=FFFE, wobei auf dem Stack das Word 0 gepusht ist, und an CS:0 befindet sich eine exit()-Sequenz. Wenn ich alles richtig im Kopf behalten habe.

Wenn dem so ist füllt dieses Programm den Stack also mit lauter 0xC3s auf, solange bis der Code bei CS:0104 überschrieben wird. Dann wird die Anweisung mit Opcode 0xC3 ausgeführt, und das ist RETN.

Also springt das Programm zu CS:C3C3, aber auch dort befindet sich wieder RETN. Also führt das Programm so lange RETN aus, bis der Stack wieder bei SP=FFFE ist. Dann springt das Programm nach CS:0 und führt die exit()-Sequenz aus.

Allerdings, wie gesagt, nur wenn ich mich richtig erinnere :)

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.


Dieser Beitrag wurde am 06.11.2001 um 15:09 von Prefect bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
004
06.11.2001, 15:43
Tron



Prefect, du hast's drauf
das was in den anderen thread ueber dich steht scheint wohl tatsaechlich untertrieben zu sein (;

ein kleine anmerkung: mit dem exit() meinst du bestimmt int 20h (CD 20)

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
005
06.11.2001, 19:43
Mazze



Ohhh...da schreiben ja richtig berühmte Leute in meinen Thread =)

Ich hab auch nie vor gehabt HLA zu lernen, das kam mir etwas suspekt vor!
Ich hab gehört, dass das Online-Buch das ich da genommen hab eigentlich das beste sein soll....aber wenn ihr was anders sagt, alles klor!

Jepp, die Originalausgabe gibts noch. Bei Amazon 20 DM. Ziemlich billig!
Dann werd ich mir das wohl zulegen!

Aber die Frage welcher Compiler besser ist habt ihr mir immer noch nicht beantwortet!

--

BattleTech-MOD:
http://bthl.unitedgaming.net/

zum Seitenanfang zum Seitenende Profil || Suche
006
07.11.2001, 00:09
Kriz



Ei, ob du MASM oder TASM benutzt, ist gehüpft wie gesprungen. NASM hört sich an wie Linux, keine Ahnung.

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
007
07.11.2001, 16:47
Prefect



NASM ist der Beste :)
Der läuft übrigens AFAIK auch auf Windows, aber wer will schon auf Windows programmieren.

Bei der exit()-Sequenz war ich mir übrigens nicht mehr ganz sicher. Es gibt doch noch eine Unterfunktion von int21 (0x4c oder so um den dreh rum) um ein Programm zu beenden. Aber das war vielleicht nur für EXE-Programme oder so. Wie gesagt, ich hab mich schon lange nicht mehr damit beschäftigt :)

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
008
17.11.2001, 18:19
Archangel



*threadhervorkram*

also, ich hab mir das buch jetzt auch mal gekauft, finds auch bis jetzt ganz gut, aber:

ich brauche MASM oder TASM, da die in dem buch gedruckten sources die MASM syntax benutzen, also kann ich da mit NASM nix anfangen.

ich hatte mir mal MASM runtergeladen, allerdings find ich da im bin\ verzeichnis keine masm.exe!

wenn ich nun das prog qeditor.exe im masm32\ dir starte, dann den source in das textfeld schreibe, und dann auf Project -> Assemble ASM File gehe, erscheint die Meldung:

E:\masm32\asm1.asm(11) : error A2004: symbol type conflict

zeile 11 enthält:
mov ax, DATEN

und außerdem noch eine warnung:
E:\masm32\asm1.asm(26) : warning A4023: with /coff switch, leading underscore required for start address : Anfang
Zeile 26 enthält:
END Anfang

also, kann mir irgendwer helfen, bzw. mir nen DL-Link zu TASM geben oder einen zu MASM, von dem er weiß, das er korrekt funzt?

(btw sind MASM und TASM eigentlich freeware?)

danke
-- Archangel

--

Mar 01 01:10:13 <voice> jo
Mar 01 01:10:40 <voice> bis dann ^^
Mar 01 01:11:20 <Archangel> jo
**** ENDING LOGGING AT Tue Mar 1 01:58:13 2005


Dieser Beitrag wurde am 17.11.2001 um 18:19 von Archangel bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
009
17.11.2001, 19:42
Mazze



MASM schon TASM nicht!
Bei MASM musst halt suchen. Habs auch schon gefunden, aber weiß die Adresse nicht mehr!
Mit deinen Fehlern kann ich leider nichts anfangen =(

--

BattleTech-MOD:
http://bthl.unitedgaming.net/

zum Seitenanfang zum Seitenende Profil || Suche
010
19.11.2001, 16:44
Archangel



hmm, inwieweit unterscheidet sich denn die NASM von der MASM syntax?

--

Mar 01 01:10:13 <voice> jo
Mar 01 01:10:40 <voice> bis dann ^^
Mar 01 01:11:20 <Archangel> jo
**** ENDING LOGGING AT Tue Mar 1 01:58:13 2005

zum Seitenanfang zum Seitenende Profil || Suche