Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Assembler » Anfängerproblem...

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.04.2007, 12:49 Uhr
~KennMichNichtAus
Gast


Seas,
ich habe mich heute an Assembler ran gewagt.
Dazu habe ich mir ein Tutorial heruntergeladen, das erste Beispiel mit der .com Datei funktionierte einwandfrei, doch als dann beim 2. Beispiel .exe Dateien durchgenommen wurden, stieß ich auf ein Problem!

Es war folgender Code gegeben:


Code:
MODEL SMALL           ;Kleinstes EXE-Speichermodell
DATA SEGMENT          ;Beginn Data-Seg
ASSUME DS:DATA        ;DS zeigt auf Data-Seg
text DB "ASM rulez!$";Variable text
DATA ENDS             ;Ende Data-Seg
CODE SEGMENT          ;Beginn Code-Seg
ASSUME CS:CODE        ;CS zeigt auf Code-Seg
MOV AX,SEG DATA      ;Data-Seg initialisieren
MOV DS,AX            ;
MOV AX,0900h         ;Funkt. 9
MOV DX,OFFSET text   ;Offset -> DX
INT 21h              ;String ausgeben
MOV AX,4C00h         ;Funkt. 4Ch, Exit-Code 0
INT 21h              ;DOS-Exit
CODE ENDS             ;Ende Code-Seg
END                   ;Ende des Proggys



Der Angabe nach sollte ich es mit diesen befehlen durch den Compiler schicken:
TASM /T/L progname

Das hat noch ohne Fehlermeldung funktioniert, doch als die Datei, mit folgenden Befehl, durch den Linker musste:
TLINK progname
Bekam ich diese Fehlermeldung: FATAL ERROR: No program entry point

Kann mir jemand sagen was ich falsch mache?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.04.2007, 13:20 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

Definier einen Label Start: als Beginn des Programms, und mach aus der letzten Zeile "END Start". Dann sollte das funktionieren...
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.04.2007, 13:36 Uhr
~KennMichNichtAus
Gast


Habe das gemacht was du gesagt hast, mein Code sieht jetzt so aus:


Code:
MODEL SMALL           ;Kleinstes EXE-Speichermodell
start:
DATA SEGMENT          ;Beginn Data-Seg
ASSUME DS:DATA        ;DS zeigt auf Data-Seg
text DB "ASM rulez!$";Variable text
DATA ENDS             ;Ende Data-Seg
CODE SEGMENT          ;Beginn Code-Seg
ASSUME CS:CODE        ;CS zeigt auf Code-Seg
MOV AX,SEG DATA      ;Data-Seg initialisieren
MOV DS,AX            ;
MOV AX,0900h         ;Funkt. 9
MOV DX,OFFSET text   ;Offset -> DX
INT 21h              ;String ausgeben
MOV AX,4C00h         ;Funkt. 4Ch, Exit-Code 0
INT 21h              ;DOS-Exit
CODE ENDS             ;Ende Code-Seg
END start                  ;Ende des Proggys



Dann gibt mir aber der Linker folgendes aus:
Warning: No Stack

Habe ich das startlabel vl. in der falschen Zeile gesetzt?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.04.2007, 13:41 Uhr
~KennMichNichtAus
Gast


Sry, ich habe die falsche Datei verwendet!
In welcher Zeile soll ich das startlabel anbringen?

Bei dem Code vom letzten Post, gibt mir der TASM eine Fehlermeldung aus:
Undifent Symbol: START
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.04.2007, 18:02 Uhr
Bruder Leif
dances with systems
(Operator)



Code:
MODEL SMALL           ;Kleinstes EXE-Speichermodell
DATA SEGMENT          ;Beginn Data-Seg
ASSUME DS:DATA        ;DS zeigt auf Data-Seg
text DB "ASM rulez!$";Variable text
DATA ENDS             ;Ende Data-Seg
CODE SEGMENT          ;Beginn Code-Seg
ASSUME CS:CODE        ;CS zeigt auf Code-Seg
Start:
MOV AX,SEG DATA      ;Data-Seg initialisieren
MOV DS,AX            ;
MOV AX,0900h         ;Funkt. 9
MOV DX,OFFSET text   ;Offset -> DX
INT 21h              ;String ausgeben
MOV AX,4C00h         ;Funkt. 4Ch, Exit-Code 0
INT 21h              ;DOS-Exit
CODE ENDS             ;Ende Code-Seg
END Start                   ;Ende des Proggys


--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
10.04.2007, 13:06 Uhr
~KennMichNichtAus
Gast


Danke, hat funktioniert!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
08.11.2008, 15:11 Uhr
waseh



Hallo
kann mi jemand bei dieser Aufgabe helfen?

Aufgabe 2: Pseudo–Assembler

Der Ausdruck
x = 7;
if (x < y)
y = y - x
else
y = x;

soll mit Hilfe der folgenden Assemblerbefehle umgesetzt werden:
LOAD x Lade den Inhalt von x in den Akkumulator
STORE x Speichere den Inhalt des Akkumulators nach x
ADD x Addiere x zum Inhalt des Akkumulators
SUB x Subtrahiere x vom Inhalt des Akkumulators
JMPNEG x Springe zur Marke x, wenn der Inhalt des Akkumulators <0
HALT Stoppt das Programm
Zu dem Code soll auch die entsprechende Speicherbelegung angegeben werden,
d.h. die konkreten Speicherzellen.

Wisst ihr wie das geht?

Muss das Montag abgeben und es wird zensiert
also bitte hilft mir
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
10.11.2008, 07:39 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

1. Wir sind kein Hausaufgabenservice. Ohne auch nur die geringste Eigeninitiative (Ansatz!) zu zeigen, wird Dir hier keiner helfen.
2. Mach bitte einen neuen Thread auf, wenn ein neues Thema zu besprechen ist. Das hier war eineinhalb Jahre alt!
3. Daher ->
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Assembler ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: