CyberArmy University | Open Source Institute | CyberArmy Intelligence & Security | CyberArmy Privacy Watch Initiative

[Asm] Assembler Teil 1



    [Asm] Assembler Teil 1 [View] [Reply] [Top]
    Posted by Author Null Device On 2008-03-31 03:23:27
    View and vote on the article here: Assembler Teil 1


    Assembler Teil 1

    Category
    Asm
    Summary
    Assembler Teil 1
    Body
    Dieses Tutorial ist für Leute, die wie ich Assembler lernen wollen. Ich bin nicht besonders gut, da ich selbst noch am Lernen bin, aber ich werde mein Bestes geben.Als Erstes sollte man ein paar Assembler Grundlagen für unser erstes Programm wissen.

    Register:

    Es gibt 4 Hauptregister Typen (zum allgemeinen Gebrauch): ax, bx, cx und dx

    ax wird normalerweise für die Speicherbenutzung gebraucht (Addieren,Subtrahieren etc)

    bx wird normalerweise für Zeiger benutzt

    cx wird normalerweise für Schleifen benutzt

    dx wird normalerweise zum Speichern von Daten benutzt

    jedes Register kann in zwei Teile unterteilt werden,da jedes Register eine 4 stellige hexadezimal Zahl ist,wie zum Beispiel 2a5gh (das h am Ende bedeutet hexadezimal)

    wir haben also Dinge wie ah und al

    ah (h für high) und al(l für low) entsprechen dem oberen(high) und unteren(low) Teil des ax Registers

    wenn also ax 3c56h wäre,

    wäre ah 3ch und al 56h
    Durch derartiges Benutzen von Registern kann man Platz im Speicher sparen.

    (Hinweis: Das funktioniert auch für bx, cx und dx Register)
    Es gibt noch weitere Register,aber zu diesen kommen wir später.
    Wir werden auch Programmaufrufe(calls),Flags,Identifikatoren und mehr Register in späteren Lektionen behandeln. Unser erstes Programm demonstriert das simple "Hello World" Programm.
    ;Hello World Programm
    
    ;man kann das Semikolon benutzen um ein Kommentar zu machen
    .model small ;dies sagt dem Assembler,dass nicht viel Speicher benötigt wird
    
    .stack ;werden wir auch erst später behandeln
    
    .data ;hier werden wir unsere Daten speichern
    
    message db "Hello World!!","$"
    
    .code
    
    main proc ;Beginn des Prozesses main
    
    mov ax,seg message ;verschiebt den String in ein Register
    
    mov ds,ax ;verschiebt den String in ein Datensegment
    
    mov ax,09h ;ruft die print-to-screen(dt.:Auf den Bildschirm schreiben) Funktion auf
    
    lea dx,ax ;LEA load effective address (dt.:Lade reale Adresse)
    
    ;verschiebt die Daten in ds(mit ds Register)
    
    ;mit der Funktion an der Adresse in ax (welche 09h ist),
    
    ;und gibt im Wesentlichen den String auf den Bildschirm aus
    
    int 21h ;unterbricht das Programm,welches ermöglicht
    
    ;den String auf den Bildschirm auszugeben
    
    mov ah;4ch ;beachte das ah und das 4c, ax ist also 4c00h
    
    ;das ist die DOS Routine um DOS zu beenden
    
    int 21h ;erlaubt wiederum das Programm sich zu beenden
    
    main endp ;ende des Prozesses main
    
    end main ;ende des Programms und eine Mitteilung an den
    
    ;Assembler,wo es das Programm starten soll
    Verfasst von Apocolipse (13. März)

    This article was originally published by CyberArmy.net in the CyberArmy Library.



     


CyberArmy::Forum v0.6
Generated In 0.01686 seconds


About Us | Privacy Policy | Mission Statement | Help