1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Problem mit Assembler-Programm

Discussion in 'Programmieren' started by Sue84, Dec 26, 2004.

Thread Status:
Not open for further replies.
  1. Sue84

    Sue84 ROM

    Hallo!

    Ich habe ein Problem mit meinem Programm.

    Folgende Aufgabe hatte ich zu realisieren:

    Es ist ein Assemblerprogramm zu schreiben,das folgenden
    Bildschirminhalt ausgibt:

    Mein zweites Assemblerprogramm
    Bitte ändern: drit
    Mein drittes Assemblerprogramm
    Geänderte Buchstaben: 4

    Nach Ausgabe der Zeile "Mein zweites Assemblerprogramm"
    ist der Benutzer aufzufordern, seine Änderungen einzugeben.
    Dazu geben Sie bitte die Zeichenfolge "drit" ein, die vom
    Programm an die Stelle "zwei" zu schreiben ist. Danach ist
    der neue Text und die Anzahl der geänderten Zeichen auszu-
    geben. Die Eingabe ist mittels einer Schleife zu realisieren.

    Mein Programm gibt aber dies aus:

    Mein zweites Assemblerprogramm
    Bitte ändern: dritMein drit
    tes Assemblerprogramm
    Geänderte Buchstaben:

    Hier mein Code:
    Code:
    .MODEL SMALL
    	 .STACK 100h
    	 .DATA
    String1 DB "Mein zweites Assemblerprogramm", 10, 13, "$"
    String2 DB "Bitte ändern: $"
    String3 DB "Mein $"
    String4 DB " tes Assemblerprogramm", 10, 13, "$"
    String5 DB "Geänderte Buchstaben: $"
    Text	DB 4 DUP (?) ; 4 Bytes reservieren
    		 DB 10, 13, "$" ; Zeilenumbruch nach Eingabe
     
    	 .CODE
    Start: mov ax, @data
    	 mov ds, ax
    	 mov dx, OFFSET String1			 ; Ausgabe 1. und 2. Zeile
    	 mov ah, 9
    	 int 21h
    	 mov dx, OFFSET String2
    	 mov ah, 9
    	 int 21h
    	 mov ah, 1
    	 mov bx, OFFSET Text				 ; lädt Adresse von Text nach BX
    	 mov cx, 4
    schleife_eingabe:						 ; Benutzereingabe mit Schleife
    	 int 21h
    	 mov [bx], al
    	 inc bx
    	 dec cx
    	 jnz schleife_eingabe
    
    int 21h
           mov [bx], al
           inc bx
           dec cx
           jnz schleife_eingabe
    
           mov dx, OFFSET String3               ; Ausgabe 3. Zeile
           mov ah, 9
           int 21h
           mov dx, OFFSET Text
           mov ah, 9
           int 21h
           mov dx, OFFSET String4
           mov ah, 9
           int 21h
           mov dx, OFFSET String5               ; Ausgabe 4. Zeile
           mov ah, 9
           int 21h
    
           mov dx, bx                         ; Anzahl der Buchstaben in bx zur Anzeige bringen
           mov ah, 9
           int 21h
    
           mov ah, 4Ch
           int 21h
           END Start
    Nach "Geänderte Buchstaben" wird noch nichts ausgegeben.
    Wo liegt der Fehler?

    Über jede Antwort wäre ich sehr dankbar!


    MfG Sue
     
  2. Sumo

    Sumo Kbyte

    Du hast wohl den Source falsch gepostet. Der 1. Absatz nach dem eingerückten Teil nach int 21h ergibt für mich keinen Sinn. Eigentlich müsstest du dich in einer Schleife verrennen und haufenweise Bytes überschreiben.
    Nach der Eingabe der Buchstaben wechselst du nicht in die nächste Zeile. Stattdessen aber hier:
    Mein drit
    tes A...
    kommt durch
    Text DB 4 DUP (?) ; 4 Bytes reservieren
    DB 10, 13, "$" ; Zeilenumbruch nach Eingabe <--- die Zeile hier
    Der Text geht bis zum $ also machst du einen Zeilenumbruch an einer Stelle wo keiner hin gehört.

    Geänderte Buchstaben:
    mov dx, bx ; Anzahl der Buchstaben in bx zur Anzeige bringen
    mov ah, 9
    int 21h
    Ich hab keine Ahnung was in bx steht. Denke ich mir den einen int 21h Teil weg, so hab ich steh ich noch im String "Text". Um den String "4" auszugeben musst du die Zahl 4 in einen String umrechnen und die Speicheradresse des Strings an dx übergeben.
     
Thread Status:
Not open for further replies.

Share This Page