Bis ganz, ganz neu!!!!
-
Hi!
Ich habe seit ca. 4 Wochen Assembler in der Schule. Mich interessiert das Fach wirklich, aber bis jetzt haben wir noch nichts richtiges gemacht, mit dem ich was anfangen könnte zu programmieren.
Also zum Anfang. Ich brauch ja einen Compiler. Kann mir da jemand einen empfehlen???
Kann ich dann einfach losschreiben, oder brauch ich noch was???
Ach und was muss ich genau alles wissen über meinen Prozessor, damit ich anfangen kann? Auf was muss ich beim programmieren von Assembler achten??
Bin Neuling auf diesem Gebiet, sorry wenn die Fragen blöd sind.
Gruß Friggel
-
FriggelTest schrieb:
Also zum Anfang. Ich brauch ja einen Compiler. Kann mir da jemand einen empfehlen???
Genauer, du brauchst einen _Assembler_, Compiler sind für Hochsprachen wie C. Da gibts sehr verbreitet TASM, MASM und NASM. Der TASM kostet noch immer was, MASM/NASM sind kostenlos, den MASM gibts z.B. im Pack unter http://www.movsd.com/ den NASM unter nasm.sf.net. Im zweifelsfall solltest du das benutzen was ihr auch in der Schule benutzt.
Kann ich dann einfach losschreiben, oder brauch ich noch was???
Ansich gehts dann los, nen Editor kann man immer gebrauchen
Ach und was muss ich genau alles wissen über meinen Prozessor, damit ich anfangen kann? Auf was muss ich beim programmieren von Assembler achten??
Naja, man muss wissen was für Register es gibt und wie man sie benutzt. Weiter welche Befehle es gibt. Ansonsten ist natürlich immernoch das umgebende Betriebssystem wichtig, damit man weiß, wie man Sachen überhuapt ausgibt etc.
-
Danke für den ersten Einblick, ich muss mir dann wohl erstmal den ganze Aufbau der Register etc. anschauen, bevor ich da irgendwas machen kann. Wo bekomme ich denn die Infos über das Betriebssystem her???? Wie man was ausgibt etc.
Gruß Friggel
-
DA mussu schon sagen, welches Betriebssystem du hast..
-
Für DOS gibt es Ralf Browns Interrupt List. Sollte auf jeden Fall in der FAQ stehen. Unter Windows rufst du WinAPI Funktionen auf, die halt von den entsprechenden DLLs exportiert werden. Also da ist ganz klar die MSDN angesagt (msdn.microsoft.com). Linux ... ja, keine Ahnung.
-
FriggelTest schrieb:
ich muss mir dann wohl erstmal den ganze Aufbau der Register etc. anschauen, bevor ich da irgendwas machen kann.
Hm, was habt ihr denn 4 Wochen lang in der Schule gemacht?
Wo bekomme ich denn die Infos über das Betriebssystem her???? Wie man was ausgibt etc.
Das komtm ganz aufs Betriebssystem an. Wenn du unter DOS bist, ist eine gute Doku über int10h und int21h nicht verkehrt, unter Windows eine WinAPI-Doc und unter Linux eine Dokumentation der Syscalls, z.B. unter linuxassembly.org
-
Ok danke für die Infos. In der Schule haben wir kaum was gemacht. Ich habe Assembler nur alle 2 Wochen.
Kann mit jemand ein Beispiel geben für das deklarieren einer einfachen Variablen mit nem String als Wert?
Gruß Friggel
-
TASM (und wohl auch MASM soweit ich weiß):
<bezeichner> <typ> [<initialisierung>]Beispiel für einen String:
mystring DB "hello phucking world"
DB heißt declare byte (oder define byte?), hier wird sozusagen ein char[] angelegt um es mit C zu beschreiben.
-
Danke!!
Sorry wenn ich alles durcheinander Frage, aber ich will mich besser auskennen. Hab mir jetzt 2 Bücher aus der Bücherei ausgeliehen.
Was ist genau mit INT 21h gemeint??? Was wird dadurch genau bewirkt???
gruß Friggel
-
Wird dieser Code funktionieren???
MOV AH, 08h
INT 21hMOV DL, AL
MOV AH, 05h
INT 21hgeht das in einer .com Datei???
-
Ja und ja.
-
Hi!
Ich hab den oben gezeigten Code jetzt nochmal in einer .com Datei getestet, aber das funktioniert bei mir nicht.
Ich muss doch einfach nur das von oben in eine Textdatei schreiben oder??? Oder muss da noch was dazu????
Gruß Friggel
-
Du musst noch die Segmente, den Codeanfang etc. festlegen.
Wie das genau auszusehen hat, haengt vom Assembler ab, den du verwendest.
Einfach nur dieses Codestueck in Textdatei packen langt leider noch nicht.
-
Ok es hängt vom Assembler ab, aber ich benutze mit einer .com Datei doch gar keinen Assembler oder????
Was für einen Assembler kannst du mir denn empfehlen??? TASM??
Kannst du mir für einen bestimmten Assemler mal ein Beispiel für den Codeanfang und Segmente zeigen???
Gruß Friggel
-
FriggelTest schrieb:
Ok es hängt vom Assembler ab, aber ich benutze mit einer .com Datei doch gar keinen Assembler oder????
Wolltest du dein Programm per Hand in Maschinencodes uebertragen?
FriggelTest schrieb:
Was für einen Assembler kannst du mir denn empfehlen??? TASM??
Mal abgesehen davon, dass es keine Freeware ist: Erraten.
Ansonsten NASM.Zum Abschluss auch gleich noch ein Beispielcode (NASM) fuer eine "Hallo Welt"-com-Datei.
;assembliert mit NASM.EXE -fbin -o[Pfad]test.com [Pfad]test.asm BITS 16 ;16bit code section .text ;codeteil org 100h ;.com-Dateien fangen immer bei Offs 100h an mov dx,TestText ;offset vom Text in dx mov ah,09h int 21h ;string ausgeben mov ax,4C00h int 21h ;Programm beenden section .data ;datenteil TestText db "Hallo Welt.",0Ah,0Dh,24h ;...
-
Achso, ich muss also eine .com Datei auch assemblieren.
Ich werd das ganze noch testen, ob ich das dann hinbekomme, hatte leider noch keine Zeit.
Aber sehr vielen Dank für deine Hilfe. Hast mir wirklich gut weitergeholfen.
Danke!!!!Gru0 Friggel
-
Nobuo T schrieb:
Mal abgesehen davon, dass es keine Freeware ist...
Es is zwar keine Freeware, aber FreewareZ. Da kannste danach suchen: ***.astalavista.box.sk <- @admins: das braucht ihr nicht zu löschen. Die Domain kann man ja so nicht benutzen!!!
-
wareZ sind boese und gemein!