Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Assembler » Hieroghlyphen und Text

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
06.07.2005, 20:21 Uhr
~Walter32
Gast


Hi,

In meinem kleinen Programm, was eigentlich einen primitiven Text ausgeben soll, hab ich ein kleines Problem, wenn ich die fertige EXE Datei starte erhalte ich haufenweise Hieroghlyphen und irgendwo dazwischen ist der eigentlich Text zu sehen.

ich bin noch Anfänger in Assembler, und lese zurzeit dieses Turorial: http://andremueller.gmxhome.de/toc.html unteranderem teste ich das "Hello World" Programm, wo solch ein objektiver Fehler eintritt. Hier mein Code:


Assembler:

TITLE Das erste Programm
IDEAL
MODEL SMALL
STACK 100
DATASEG
  nString db 'das erste programm'
CODESEG
start:
   STARTUPCODE
     mov ah, 009h
     mov dx, OFFSET nString
     int 21h
   EXITCODE
END start




Vielen Dank im vorraus

Tschüss, Walter
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.07.2005, 20:26 Uhr
CDW



Dollarzeichen - am ende des Strings, der ausgegebn werden soll... den hast Du vergessen
also 'das erste Programm $'
$ ist nämlich eine kennzeichnung dass der String zu ende ist - sonst bekommst Du haufenweise Speicher ausgegeben (bis irgendwo zufällig auf ein $ gestoßen wird)
--
EB FE
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.07.2005, 20:35 Uhr
~Walter32
Gast


Prima, und vielen Dank!

Eine frage hätt ich noch, wieso schreibt er in den Programm eine 9 in den ALU?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.07.2005, 21:57 Uhr
Bruder Leif
dances with systems
(Operator)


Das Programm ruft den Interrupt 021h auf, das ist die DOS-API für Programme. Alle DOS-Funktionen werden über diesen Interrupt angesteuert. Und da man der Routine irgendwie mitteilen muss, WAS sie denn jetzt bitteschön machen soll, übergibt man ihr in AH einen Code für den gewünschten Befehl. Nummer 9 steht für "Gib den Text aus, der an der in DS:DX angegebenen Adresse anfängt und mit einem $ endet". 04Ch steht für "Beende das Programm und gib als Errorlevel den Wert in AL zurück", könnte mir vorstellen, dass EXITCODE zu etwas derartigem expandiert wird:

Code:
mov ax, 04C00h
int 021h


--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.

Dieser Post wurde am 06.07.2005 um 21:57 Uhr von Bruder Leif editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.07.2005, 22:07 Uhr
~Walter32
Gast


ahhh! - Perfekt, Super Forum! - Danke!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
06.07.2005, 22:08 Uhr
~Walter32
Gast


gibts da eigentlich eine übersicht mit diesen Hex-Codes als Befehl?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
07.07.2005, 09:02 Uhr
Tommix



Hallo,
gibt es: Ralf Brown's Interrupt List und dort dann z.B. int 21.

- Tommix

Dieser Post wurde am 07.07.2005 um 09:04 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
07.07.2005, 12:16 Uhr
~Walter32
Gast


Dankeschön
 
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: