ubuntuusers.de

X86 - Assembler-programm?

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

derMani

Avatar von derMani

Anmeldungsdatum:
24. Januar 2007

Beiträge: Zähle...

Wohnort: Papenburg

Moinsen!

Für Uni-Aufgaben benötige ich ein Tool zum Assemblerprogrammieren unter Linux (für 8086-Programme).
Kann mir jemand eins empfehlen, oder gibt es schon Bordmittel mit denen ich assemblerbefehle abschicken kann?

Wäre sehr dankbar, wenn ihr einen guten tipp geben könntet ☺

Gruß
Mani

Adna_rim Team-Icon

Anmeldungsdatum:
8. November 2006

Beiträge: 2521

Ich kann dir nasm empfehlen, ist auch in den Paketquellen von Ubuntu und ein sehr guter ASM-Compiler. Als IDE kannst du eigentlich alles benutzen. Schau dir mal Scite an.

greets

derMani

(Themenstarter)
Avatar von derMani

Anmeldungsdatum:
24. Januar 2007

Beiträge: 260

Wohnort: Papenburg

achso, dann einfach

nasm <dateiname>

oder wie? ☺

Adna_rim Team-Icon

Anmeldungsdatum:
8. November 2006

Beiträge: 2521

Nein, ein Assembler-Compiler erzeugt eine Object-Datei welche du mit einem Linker erst zu einer binary machen musst.

Wenn du zum Beispiel dieses HelloWorld-Programm nimmst:

section	.text
    global _start		

_start:				

	mov	edx,len	
	mov	ecx,msg	
	mov	ebx,1	
	mov	eax,4	
	int	0x80	

	mov	eax,1	
	int	0x80	

section	.data

msg	db	'Hello, world!',0xa	
len	equ	$ - msg		

und in der Datei hello.asm abspeicherst, muss du zuerst mit nasm eine Objekt-Datei erzeugen:

nasm -f elf hello.asm


und danach aus der Objekt-Datei mit

ld -s -o hello hello.o


eine ausführbare Binary-Datei. Jetzt kannst du das Programm starten mit:

./hello

Hier mal noch ein paar Links:
http://docs.cs.up.ac.za/programming/asm/derick_tut/
http://home.comcast.net/~fbkotler/nasmdoc0.html
http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html

greets

derMani

(Themenstarter)
Avatar von derMani

Anmeldungsdatum:
24. Januar 2007

Beiträge: 260

Wohnort: Papenburg

Yeah danke 😀 das sieht schon brauchbar aus, aber wenn ich das richtig verstanden habe, kann ich da aber nicht mehr "richtiges" reines altes 8086 MS-Dos Assembler einbringen?

Adna_rim Team-Icon

Anmeldungsdatum:
8. November 2006

Beiträge: 2521

Du weisst aber schon was Assembler ist oder?

Du kannst ein altes MS-Dos Assembler Programm nicht unter Vista laufen lassen und auch nicht unter Linux oder Solaris ☺ Die mnemonics sind die gleichen und die Art des Programmierens genauso, doch die Art wie du die Betriebssystem-Funktionen ansprichst ist natürlich bei jedem anders. Unter Linux füllst du die Register wie du sie brauchst und rufst dann mit int x80 den Kernel damit er einen Sycall ausführt. Das Assembler-Programm läuft dann auf allen 32bit i386 Architekturen, die die gleichen Syscalls an der gleichen Stelle exportieren. Also kurz gesagt ein Assembler Programm unter Linux läuft nur unter Linux, eines unter Windows, nur unter Windows.

greets

derMani

(Themenstarter)
Avatar von derMani

Anmeldungsdatum:
24. Januar 2007

Beiträge: 260

Wohnort: Papenburg

Das ist mir sehr wohl klar ☺

Ich hatte mich nur sehr unpräzise ausgedrückt, sorry bin etwas im lernstress ... hab die regel erst denken, dann posten etwas umgangen 😉

Mir ist schon klar, dass nicht ohne Weiteres alte MS-Dos programme unter linux zu laufen zu bringen sind ...

Also nochmal 😀

Ich suchte eigentlich einen 8086 emulator, auf dem ich MS-DOS Assemblerbefehle abfeuern kann ☺
Glaube ich habe gerade die Lösung gefunden

Habe die Dosbox angeschmissen und dort den TASM von Borland auf den code gejagt. Das funktioniert. ... glaube das ist das was ich im Moment noch für meine Unisachen brauche ☺

Trotzdem danke für deine Hilfe ☺

Gibt es noch andere Möglichkeiten eine alte DOS-Umgebung zu emulieren, so dass man altes DOS-ASsembler üben kann?

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4668

Wohnort: Berlin

Es gibt kein "DOS-Assembler". Was Du meinst ist x86-Assembler, das Systemroutinen von (MS-)DOS aufruft. Gibt's einen Grund warum Du Dich noch mit so alten Kamellen herum schlagen willst!?

Es gibt ein Buch zum Programmieren lernen mit Assembler unter Linux: Programming from the Ground Up. Unter dem Link kann man eine kostenlose PDF-Version herunter laden.

Antworten |