Nachdem ich mit C und Python nicht zurecht kam,
versuch ich Assembler zu lernen, klappt aber nicht.
Einen Buch entsprechend hab ich folgendes eingegeben:
DATEN SEGMENT
Meldung db "Hoffentlich ist Assembler nicht zu schwer."
db "$"
DATEN ENDS
CODE Segment
ASSUME CS:CODE,DS:DATEN
Anfang: mov ax,DATEN
mov ds,ax
mov dx,offset Meldung
mov ah,9
int 21h
Und das sagt gcc :
as1.a: Assembler messages:
as1.a:1: Error: junk `Assembler-Programm' after expression
as1.a:1: Error: suffix or operands invalid for `das'
as1.a:2: Error: no such instruction: `daten SEGMENT'
as1.a:3: Error: no such instruction: `meldung db "Hoffentlich ist Assembler nicht zu schwer."'
as1.a:4: Error: no such instruction: `db "$"'
as1.a:6: Error: no such instruction: `daten ENDS'
as1.a:7: Error: no such instruction: `code Segment'
as1.a:8: Error: no such instruction: `assume CS:CODE,DS:DATEN'
as1.a:9: Error: too many memory references for `mov'
as1.a:10: Error: too many memory references for `mov'
as1.a:11: Error: too many memory references for `mov'
as1.a:12: Error: too many memory references for `mov'
as1.a:13: Error: junk `h' after expression
as1.a:13: Error: suffix or operands invalid for `int'
Ist das Buch oder der Compiler fehlerhaft?
Ich will es halt mit Assembler noch versuchen,
wenn das,wo nach es aussieht, auch nicht klappt,
verschrotte ich den PC und such mir ein anderes
Hobby.Ich versuch jetzt seit Jahren irgend wie
mit den Kisten klar zu kommen.
Ich komm mit keiner Sprache zurecht
-
- prolinux-forum-admin
- Posts: 1444
- Joined: 26. Jun 2004 21:18
- Contact:
Unter Linux wird der Interupt Nr. 80 aufgerufen, um an den Kernel zu übergeben. Das was du geschrieben hast ist ein DOS-Programm. Sofern du keinen uralten 16-Bit-Rechner hast, heißen die Register nicht ax, bx... sondern eax, ebx...(e für extended).int 21h
Der gcc verwendet voreingestellt das Programm "as" zum assemblieren. "as" verlangt die AT&T-Syntax. Deine Schreibweise ist die der Intel-Syntax. Um Code aus der Intel-Syntax zu übersetzen, kannst du das Programm "nasm" verwenden.Und das sagt gcc :
Intel-Syntax (hallo.asm):
Code: Select all
; Kommentare stehen hinter einem Semikolon
section .text
global _start
msg db 'Hallo welt.',0x0A
len equ $ - msg
_start:
mov eax,4
mov ebx,1
mov ecx,msg
mov edx,len
int 0x80
mov eax,1
int 0x80
nasm -f elf hallo.asm
Objektdatei hallo.o linken:
ld hallo.o -o hallo
AT&T-Syntax (hallo.s):
Code: Select all
# Kommentare stehen hinter einer Raute
.data
msg: .ascii "Hallo Welt.\n"
lmsg: .long .-msg
.text
_start:
.global _start
movl $4,%eax
movl $1,%ebx
leal msg,%ecx
movl lmsg,%edx
int $0x80
movl $1,%eax
int $0x80
gcc -c hallo.s
Programm linken:
ld hallo.o -o hallo
Eine Liste der Nummern der Systemaufrufe steht in der Datei "/usr/include/asm-i386/unistd.h". Mit deutschsprachigen Anleitungen sieht es eng aus. Eine sehr gute: http://www.fh-frankfurt.de/~dumbach/manuskripte/. asmanu_9.pdf heißt sie. Die Datei gdi_w01_v2.pdf ist genauso interessant (gdi = Grundlagen der Informatik).
MfG, Klopskuchen
When all else fails, read the instructions .
Programmieren lernt man vermutlich immer aus Spaß...
Was möchtest du denn überhaupt erreichen? Wenn dir C zu unverständlich war ist Assembler eine ganz schlechte Wahl. Irgendwelche Beispiele aus Büchern übernehmen bringt dich auf keinen Fall weiter.
Janka
Was möchtest du denn überhaupt erreichen? Wenn dir C zu unverständlich war ist Assembler eine ganz schlechte Wahl. Irgendwelche Beispiele aus Büchern übernehmen bringt dich auf keinen Fall weiter.
Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
Ich mag die Schreie.
-
- prolinux-forum-admin
- Posts: 1444
- Joined: 26. Jun 2004 21:18
- Contact:
@Janka
Ich wette er sucht die Brücke zwischen dem Abstrakten des Rechners und der Physik. Eine konkrete Vorstellung was da vor sich geht. Da ist asm doch gar nicht schlecht, da er sich zwangsläufig mit CPU, Speichermanagement(im physikal. Sinne) usw. befassen muß.
MfG, Klopskuchen
Ich wette er sucht die Brücke zwischen dem Abstrakten des Rechners und der Physik. Eine konkrete Vorstellung was da vor sich geht. Da ist asm doch gar nicht schlecht, da er sich zwangsläufig mit CPU, Speichermanagement(im physikal. Sinne) usw. befassen muß.
MfG, Klopskuchen
When all else fails, read the instructions .
Danke
Danke, ich hab mir die PDF Dateien über Assembler und auch über C
abgespeichert und ich lass natürlich den PC leben
Ich werd manchmal etwas depressiev, wenn so gar nichts klappt,
hat sicher was mit den enormen Problemen zu tun, die ich am Anfang
mit PCs hatte.
C klappt so weit schon, aber letztendlich hab ich aus keinen Buch
was lernen können, was nicht auch ein cleveres bash-scipt kann.
Jetzt muss ich in C erst mal umlernen, weil ich einen Controller
programmieren will, wo halt ganz andere Bibliotheken gebraucht
werden. Eigentlich hätte ich das, laut Lehrplan, in meiner Ausbildung
zum Energieelektroniker lernen müssen, wie so Vieles,war aber nichts.
Mit Assembler komm ich im 64kB-Speicher natürlich weiter, muss nur
natürlich andere Befehle lernen, denke aber,dass ich trotzdem mit
Programmieren für den PC erst mal besser lerne und das will ich
ja auch können, die extremen Möglichkeiten und überhaupt die
direckt am Prozessor arbeitende Sprache, faszinieren mich sehr.
Wenn ich vortgeschrittener bin, stürm ich die Berufsschule,
installier auf alle Rechner das bessere System und zeig den
Lehrern, wie man das richtig macht
abgespeichert und ich lass natürlich den PC leben
Ich werd manchmal etwas depressiev, wenn so gar nichts klappt,
hat sicher was mit den enormen Problemen zu tun, die ich am Anfang
mit PCs hatte.
C klappt so weit schon, aber letztendlich hab ich aus keinen Buch
was lernen können, was nicht auch ein cleveres bash-scipt kann.
Jetzt muss ich in C erst mal umlernen, weil ich einen Controller
programmieren will, wo halt ganz andere Bibliotheken gebraucht
werden. Eigentlich hätte ich das, laut Lehrplan, in meiner Ausbildung
zum Energieelektroniker lernen müssen, wie so Vieles,war aber nichts.
Mit Assembler komm ich im 64kB-Speicher natürlich weiter, muss nur
natürlich andere Befehle lernen, denke aber,dass ich trotzdem mit
Programmieren für den PC erst mal besser lerne und das will ich
ja auch können, die extremen Möglichkeiten und überhaupt die
direckt am Prozessor arbeitende Sprache, faszinieren mich sehr.
Wenn ich vortgeschrittener bin, stürm ich die Berufsschule,
installier auf alle Rechner das bessere System und zeig den
Lehrern, wie man das richtig macht
die haben wir am liebsten!
die admins lieben so leute wie dich.
es reicht nicht mehr nur ein paar neue treiber zu installieren, weil der admin hat ja keine ahnung. also kommt der sohn mal vorbei weil der ist ja ein computerfreak, der kann das besser.Wenn ich vortgeschrittener bin, stürm ich die Berufsschule,
installier auf alle Rechner das bessere System und zeig den
Lehrern, wie man das richtig macht
die admins lieben so leute wie dich.