erste schritte mit asm...?
-
Original erstellt von Hammer:
**also ich habe kein plan welcher compiler gut is und welcher überhaupt unter win2k lauft...wäre nett wenn mir jemand einen link geben könnte für einen guten compiler für win2k..
ausserdem:welchen unterschied macht es , wenn ich einen anderen asm compiler nehme ?
ich dachte asm is voll standardisiert... hat mich etwas gewundert!
**Weitgehend Standardisiert ist die Syntax der Befehle, wobei es hier zwei Varianten gibt, Intel-Syntax und AT&T-Syntax, beim x86-Assembler ist erstere weiter verbreitet. Das Problem mit TASM ist, dass es ihn nicht kostenlos ghibt, das Problem gibts bem MASM und NASM nicht. Den MASM gibts z.B. unter www.movsd.com und NASM unter nasm.sf.net. Die Unterschieden zwischen den dreien liegen in sogenannten Metainstruktionen, also befehle die nicht in Befehle übersetzt werden, sondern Anweisungen an den Assembler selber geben. PS: Es heißt bei Assemblerprogrammen Assembler und nicht Compiler
**
dann hät ich ne 2te frage:
ich möchte ein programm schreiben, dass einen text wie "hallo welt" ausgibt und ich es unabhängig vom os starten kann, also ich knalls auf diskette boote neu per diskette, dann kommt anstatt windows "hallo welt", wie geht sowas ??
**Nun, wenn ichs richtig verstanden habe, redest du da von eine bootfähigen Diskette die sowas ausgibt. Dazu muss man ein 16-Bit-Assembler-Programm schrieben, was für die Ausgabeentweder das BIOS benutzt oder gleich selber mit der Hardware redet. Sofern du gerade mti SAM anfängst, würde ich von Bootsektoren etc. erstmal die Finger lassen.
**
ausserdem , ist asm os anghängig ? ich dachte das prob hat man nur mit c oder anderen hochsprachen ...
weil im tut steht dass er zum ausgeben von text ein unterprogramm von windows nutzt...
**ASM ist gerade OS-Abhängig, vielmehr als Hochsprachen.
**
hmm es müsste dann eigentlich auch so einen lowlevel befehl für text ausgabe geben, weil sobald ich den rechner einschalte kommt ja auch schon text, unabhängig von irgendeinem os
**Ja, man kann das BIOS aufrufen (solange der Prozessor noch im 16-bit-Modus ist) oder direkt ganz low-level mit der Grafikkarte kommunizieren. Schrieben ist da recht einfach, man muss die Zeichen nur in bestimmten Positionen in den Speicher legen, den Rest machtd ie Grafikkarte. Aber unter modernen Systemen wie Linux und Windows wird der Zugang zu solch niedrigem Level verwehrt (zu Recht) um die Systemintegrität zu behalten. Daher muss man dann immer OS-Spezifische Routinen aufrufen um z.B. etwas auszugeben.
-
hmm, also ich hab mir jetz nasm runtergeladen...
nur ich hab ein prob, ich weiss jetz nich wie ich folgenden code für nasm
compatibel mach bzw umcoden sollDATEN SEGMENT
MELDUNG DB "Hallo Welt !","$"
DATEN ENDSSTAPEL SEGMENT BYTE STACK
DW 128 DUP (?)
STAPEL ENDSCODE SEGMENT
ASSUME CS:CODE,DS:DATEN,ES:NOTHING,SS:STAPEL
START: MOV AX, DATEN
MOV DS, AX
MOV DX, OFFSET MELDUNG
MOV AH, 9H
INT 21H
MOV AH, 4CH
INT 21HCODE ENDS
END STARTwie oben schon gepostet ...
aber kein plan wie und was da anders gemacht werden soll, weil mein
nasm bringt da fast in jeder zeile n errormfg haMMer
-
Für NASM sieht das ungefähr so aus:
[BITS 16] [ORG 0x7C00] jmp start nop start: cli ;Interrupts deaktivieren mov ax, 0x9000 ;Stackadresse in ax schieben mov ss, ax ;Stack festlegen mov sp, 0 ;Stackpointer auf 0 sti mov si, hello call putstr putstr: lodsb or al, al jz short putstrd mov ah, 0x0E mov bx, 0x0007 int 0x10 jmp putstr putstrd: retn hello db "Hallo Welt!", 10, 13, 0 times 510-($-$$) db 0 dw 0xAA55
-
WAAAAAAAHHH!!!!!!!!!
das ist ja grad mal das doppelte!
kann das sein dass du gar kein unterprogramm vom os aufgerufen hast, um den
string auszugeben, wie INT 21h ?[ Dieser Beitrag wurde am 04.04.2003 um 18:32 Uhr von Hammer editiert. ]
-
sieht so aus als gäbe es da gewaltig unterschiede ...
welches wäre denn für einen asm noob am besten geeignet ?
-
NASM scheint der verbreitetste zu sein. Ich finde TASM für den Anfang nicht schlecht, aber das ist alles Gewohnheit. Wer Assembler verwendet, muss hart sein wie Butter.
-
also ich hab nasm 0.98 und er bringt errors in zeile 1, 2, 8, 18
wo gibts tuts in dem alles mit dem nasm erklärt wird ?
-
also ich hab jetz TASM32 gefunden, funktioniert...
hab schon mein erstes prog getestet, echt cool...
hab schon
int 10h probiert und den modus auf 13 gestellt ! genialweiss jemand wie man mit C den Grafikkartenmodus auf 13 stellen kann ?
oder geht das überhaupt ?
naja notfalls kann man ja inline asm code im c programm implementieren ..mfg haMMer
-
Wo hast Du TASM32 gefunden?
-
http://xxxxxxxxxx/~devon/down/asemblery/tasm.zip
[ Dieser Beitrag wurde am 05.04.2003 um 09:36 Uhr von Loggy editiert. ]
-
Bevors der nächste versucht...
TASM ist nicht kostenlos zu erhalten und deswegen sind Links auf einen Download hier illegal und werden wegeditiert
-
s/hier //
Klingt ja sonst fast so, als wäre der Link woanders legal...
-
@Hammer
du könntest es in c ganz einfach mit inline asm machen
-
Fast überall wird NASM verwendet, daher sollte man sich gleich mit dieser Syntax anfreunden, da man leichter Codefragmente dieses Assemblers findet.
-
xxxxxxxxxxxx
[ Dieser Beitrag wurde am 07.04.2003 um 15:50 Uhr von Loggy editiert. ]