Ein paar Newbie Fragen :-)



  • Hi,
    ich habe erst mit Assembler angefangen, und check das irgendwie nicht ganz, wie das abläuft. Ich bin jetzt bei meiner ersten Hello World Anwendung und peil da was nicht 🙂
    Hier der Code:

    DATA SEGMENT WORD 'DATA'
    Msg DB 13,10,'Hallo, Welt!',13,10,'$'
    DATA ENDS
    CODE SEGMENT WORD 'CODE'
    ASSUME CS:CODE, DS:DATA
    Start: 
    mov ax,DATA
    mov ds,ax
    mov dx,OFFSET Msg
    mov ah,009h
    int 021h
    mov ah,04Ch
    int 021h
    CODE ENDS
    END Start
    

    Dieser Code schreibt Hello World in die Konsole und "pieps", jetzt meine Frage: Welcher Befehl ist für das schreiben verantwortlich und welcher Befehl "piepts"?
    Und woher komen diese Zahlen?
    mov ah,009h
    int 021h
    mov ah,04Ch
    int 021h

    Ich hoffe mir kann einer helfen, ich bin totaler Newbie
    Daniel



  • hi!

    also piepen kann diese anwendung schon mal nicht, da müsstest du folgendes schreiben

    mov ah,2
    mov dl,7
    int 21h

    ansonsten sind die folgenden anweisungen dazu da:

    ; daten-segment "aufmachen" hier kannst du 64K daten lagern
    DATA SEGMENT WORD 'DATA'
    ; variable "Msg" "vereinbaren"
    Msg DB 13,10,'Hallo, Welt!',13,10,'$'
    ; daten-segment "schließen"
    DATA ENDS
    ; code segment "aufmachen"
    CODE SEGMENT WORD 'CODE'
    ; dem segment-register CS die adresse vom code-segment zuweisen
    ASSUME CS:CODE, DS:DATA
    ; start-label
    Start:
    ; adresse vom daten-segment ins daten-segment-register DS kopieren
    mov ax,DATA
    mov ds,ax
    ; die offset-adresse von deinem Text (also Msg) nach Dx
    mov dx,OFFSET Msg
    ; 09h ist die funktionsnummer des int 21h zum ausgeben von text
    mov ah,009h
    ; und schließlich den DOS-Interrupt aufrufen
    int 021h
    ; funktionsnummer zum beenden vom programm
    mov ah,04Ch
    ; und los...
    int 021h
    ; code-segment "zumachen"
    CODE ENDS
    ; ende vom program
    END Start

    cu todo


Anmelden zum Antworten