Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Assembler » Hello World

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 < [ 2 ]
000
16.12.2003, 17:26 Uhr
erpelqueen
Entlein


Hi, wie sieht denn eigentlich der code für ein einfaches Kosnolenproggie, das Hello World ausgibt?
Achja, brauch ich ein extra compiler(oder übersetzer)dafür,, oder geht das mit dem VisualStudio?(ich hb enterprise)
thx
--
TSchöööööööö ,
How dy How, Ranger Joe
--------------------------------------
www.erpelstore.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.12.2003, 18:27 Uhr
~Alfred
Gast


In jedem Buch, wo Assembler gelehrt wird, habe ich dieses Programm als erstes gesehen. Es gibt sicherrlich auch genug Quellen im Internet dazu.
Wenn es dir ganz wichtig ist, dann schreibe ich es von mir aus aus meinem Buch ab.

mfg

Alfred
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.12.2003, 18:49 Uhr
erpelqueen
Entlein


naja, ich denke, wen andere hier nach so einem code suchen, ist es besser, wenn er auch hier im Forum steht, oder?
(also is meine Meinung...)
thx
--
TSchöööööööö ,
How dy How, Ranger Joe
--------------------------------------
www.erpelstore.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.12.2003, 20:57 Uhr
Hans
Library Walker
(Operator)


Hi,

wenn Du einen Borlandcompiler hast, kannst Du ihn auf der Kommandozeile mit der Option -S aufrufen. Dann erzeugt er Dir ein Assemblerlisting von Deinem Programm. Im Falle von "Hello World!"

C++:
#include <stdio.h>

int main()
{
      printf("Hallo, World\n");
}

sieht das z.B. so aus:

Code:
    .386p
    ifdef ??version
    if    ??version GT 500H
    .mmx
    endif
    endif
    model flat
    ifndef    ??version
    ?debug    macro
    endm
    endif
    ?debug    S "hw0.c"
    ?debug    T "hw0.c"
_TEXT    segment dword public use32 'CODE'
_TEXT    ends
_DATA    segment dword public use32 'DATA'
_DATA    ends
_BSS    segment dword public use32 'BSS'
_BSS    ends
DGROUP    group    _BSS,_DATA
_TEXT    segment dword public use32 'CODE'
_main    proc    near
?live1@0:
   ;    
   ;    int main()
   ;    
    push      ebp
    mov       ebp,esp
   ;    
   ;    {
   ;       printf("Hallo, World\n");
   ;    
@1:
    push      offset s@
    call      _printf
    pop       ecx
   ;    
   ;    
   ;       return 0;
   ;    
    xor       eax,eax
   ;    
   ;    }
   ;    
@3:
@2:
    pop       ebp
    ret
_main    endp
_TEXT    ends
_DATA    segment dword public use32 'DATA'
s@    label    byte
    ;    s@+0:
    db    "Hallo, World",10,0
    align    4
_DATA    ends
_TEXT    segment dword public use32 'CODE'
_TEXT    ends
    public    _main
extrn   _printf:near
    ?debug    D "d: \borland\CommandLine\INCLUDE\_nfile.h" 10303 10240
    ?debug    D "d: \borland\CommandLine\INCLUDE\_null.h" 10303 10240
    ?debug    D "d: \borland\CommandLine\INCLUDE\_defs.h" 10303 10240
    ?debug    D "d: \borland\CommandLine\INCLUDE\_stddef.h" 10303 10240
    ?debug    D "d: \borland\CommandLine\INCLUDE\stdio.h" 10303 10240
    ?debug    D "hw0.c" 12176 42779
    end



Alles klar?

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 16.12.2003 um 20:58 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.12.2003, 21:06 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

Probier mal folgendes: Starte in der DOS-Box das Programm DEBUG und gib folgendes ein:


Code:
a 100
mov ah,9
mov dx,10b
int 21
mov ah,4c
int 21
db "Hello, world!",0a,0d,"$"
(Leerzeile)
n hellow.com
r cx
1b
w
q



Dann gibts eine neue Datei HELLOW.COM, die startest du einfach mal...
--
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
16.12.2003, 21:47 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


krass, das geht ja echt
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
17.12.2003, 18:44 Uhr
erpelqueen
Entlein


hey, fett
thx
--
TSchöööööööö ,
How dy How, Ranger Joe
--------------------------------------
www.erpelstore.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
17.12.2003, 21:19 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


nur wäre nun noch ganz gut wenn da nun noch dabei steht was der befehl überhaupt macht
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
17.12.2003, 22:07 Uhr
Hans
Library Walker
(Operator)


Hey, das ist ja irre!
Ich hab mich zwar auch mal mit DEBUG beschäftigt, hab's aber auch schnell wieder aufgegeben...
Ist aber echt cool! - Nur, wie Flo schon meinte, eine Erklärung wäre vielleicht ganz gut. Ich kann mir nur zusammen reimen, das da sehr wahrscheinlich die Funktion 9 des int 21 aufgerufen wird, die den Text ausgibt. Der zweite Aufruf vom int 21 wird dann wohl der Rücksprung ins BS sein, also das Programm beenden. Aber in wie weit ich da richtig liege ??? - Keine Ahnung. Und was den Rest angeht: ebenfalls keine Ahnung.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 17.12.2003 um 22:08 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
17.12.2003, 22:44 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

OK OK, hier ein bißchen Doku:


Code:
a 100        # Hallo DEBUG, wir möchten ab Adresse 100h assemblieren (warum, s.u.)
mov ah,9     # Funktion 9 = Text ausgeben (Textende markiert durch $)
mov dx,10b   # Offset des Textes im Speicher
int 21       # Funktion aufrufen
mov ah,4c    # Funktion 4ch = Programm beenden
int 21       # Funktion aufrufen
db "Hello, world!",0a,0d,"$" # Und das ist der auszugebende Text
(Leerzeile)  # Assemblierung beenden
n hellow.com # Dateiname für W (s.u.)
r cx         # Register CX ändern (s.u.)
1b           # neuer Wert für CX
w            # Datei schreiben, Anzahl der zu schreibenden Bytes in CX
q            # DEBUG beenden



Adresse 100h gilt grundsätzlich für COM-Programme, EXE-Files sehen im Speicher anders aus. Das Programm ist genaugenommen für DOS geschrieben, funzt aber auch unter den neueren Windoofs wg. Kompatibilitäts-Rattenschwanz. Ich schau mal, ob ich was neueres auftreiben kann...
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.

Dieser Post wurde am 17.12.2003 um 22:45 Uhr von Bruder Leif editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: