Probleme mit erstem programm.



  • Hallo,

    ich bin totaler assemblerneuling und ich habe gerade das erste Programm
    aus dem Buch abgeschrieben (MASM). Ich weiß zwar was es macht jedoch
    verstehe ich den Kommentar dazu nicht.

    Ich entschuldige mich für meine Anfängerfragen gleich im voraus aber
    ich hoffe jemand möchte mir zu helfen.

    Meine Fragen stehen in Klammern unter der betreffenden Zeile:

    ;*********************************************************
    ;* Aufgabe 1 - Einlesen einer Taste und Anzeige auf *
    ; dem Bildschirm mit definierter Rückkehr *
    ; ins Betriebssystem. *
    ;* PrgName: Prog1.asm *
    ;*********************************************************

    .MODEL SMALL
    .CODE
    mov ah,08h ; liest Tastatur - bringt...
    (Bringt eingegebenes Zeichen nach AH, das verstehe ich noch)

    int 21h ; Zeichencode nach al
    (Wieso AL ich dachte AH? eigenartig)

    mov dl,al
    (Warum nicht gleich am Anfang nach DL)

    mov ah,02h ; bringt Zeichen aus Register...
    (Warum jetzt wieder AH?)

    int 21h ; dl zur Anzeige
    (Wurde es nicht gerade nach AH verschoben?)

    mov ah,4ch ; definierte Rückkehr
    int 21h ; zum Betriebssystem
    end

    Könnte mir jemand eine wirklich detailierte und gute Einführung zu den
    Themen Register und Segment:Offset empfehlen?

    Vielen Dank im voraus für alles!

    nette Grüße,
    ps



  • es gibt asm-tags

    ;*********************************************************
    ;* Aufgabe 1 - Einlesen einer Taste und Anzeige auf      *
    ;              dem Bildschirm mit definierter Rückkehr   *
    ;              ins Betriebssystem.                       *
    ;* PrgName: Prog1.asm                                    *
    ;*********************************************************
    
    .MODEL SMALL
    .CODE
    		mov ah,08h  ; liest Tastatur - bringt...
                      (Bringt eingegebenes Zeichen nach AH, das verstehe ich noch) 
    
    		int 21h	    ; Zeichencode nach al               <--- hier wird ein dos-interrupt benutzt, nämlich der 21.
                    ;  (Wieso AL ich dachte AH? eigenartig)              der erwartet parameter in ah.
                    ;                                                    interrupotfunktion 08h ließt ein Zeichen nach al
                    ;                                                    http://www.i8086.de/dos-int-21h/dos-int-21h.html
    
    		mov dl,al
                    ;  (Warum nicht gleich am Anfang nach DL)
    
    		mov ah,02h  ; bringt Zeichen aus Register...
                    ;   (Warum jetzt wieder AH?)
    
    		int 21h     ; dl zur Anzeige                       <--- hier wird ein dos-interrupt benutzt, wieder der 21.
                    ;  (Wurde es nicht gerade nach AH verschoben?)          der erwartet parameter in ah.
                    ;                                                       interrupotfunktion 02h schreibt das zeichen aus dl auf die console
                    ;                                                       http://www.i8086.de/dos-int-21h/dos-int-21h.html
    
    		mov ah,4ch  ; definierte Rückkehr
    		int 21h     ; zum Betriebssystem                   <--- hier wird ein dos-interrupt benutzt, wieder der 21.
                    ;                                                       der erwartet parameter in ah.
                    ;                                                       interrupotfunktion 4ch heißt Programm beenden
    		end
    

    aber ob es heut zu tage sinn macht assembler für dos zu lernen?



  • Das ist nicht wirklich relevant, der OP will eine umfangreiche und gute Einführung zu Registern und der Adressierung bei 16Bit.
    Hierzu kann ich ihm dieses Tutorial empfehlen, das darauf gut eingeht:
    http://www.wirthi.at/w/Assembler-Tutorial_Kapitel_1

    Man sollte es unter dem Vorbehalt lesen, dass inzwischen 32Bit und Protected Mode (anstatt Real Mode) standard sind.
    Will man sich jedoch wirklich mit 16Bit auseinandersetzen, so dürfte dieses Tutorial eigentlich für die Fragen des OP lange reichen.



  • Vielen Dank für eure Antworten.

    ps


Anmelden zum Antworten