Assemblerprogramm anpassen
Sie werden angewiesen, ein vorhandenes Assemblerprogramm anzupassen:
Das Programm soll nach Eingabe eines Buchstabens rückwärts alle Buchstaben bis zum 'a' ausgeben.
Beispiel:
Nach Eingabe eines k wird
kjihgfedcba
ausgegeben.
(Geübte Programmierer verändern das Programm zusätzlich so, dass Zeichen aufwärts bis zum 'z' ausgegeben werden.
klmnopqrstuvwxyz)
Die Aufgabe kann nur gelöst werden, wenn das folgende Programm verstanden wurde. Unten wird eine typische Vorgehensweise hierfür vorgeschlagen.
Programmcode
org 100h
start: mov dx, txt1
mov ah, 9h
int 21h
mov ah, 1h
int 21h
cmp al, 57
ja error
cmp al, 49
jb error
count: sub al, 1
mov dl, al
mov ah, 02h
int 21h
cmp al, 48
ja count
ende: mov al, 0h
mov ah, 4Ch
int 21h
error: mov dx, txt2
mov ah, 9h
int 21h
jmp start
section .data
txt1: db 'Zahl von 1-9 eingeben:', 13, 10, '$'
txt2: db 13, 10, 'Fehler: Zahl ist nicht zwischen 1-9!', 13,10,'$'
Vorgehensweise
Assemblieren Sie das Programm und führen Sie es aus!
-
Beschreiben Sie die Ausgabe des Programms!
-
Wie verhält sich das Programm bei fehlerhaften Eingaben?
-
Was leisten die folgenden Assemblerbefehle?
cmp
ja
jb
jmp
-
Was leistet der MSDOS-Funktionsaufruf INT 21 mit den Codes
01h
02h
-
Kommentieren Sie den Quellcode!
-
Zeichnen Sie den Programmablaufplan PAP des Programms?
Benutzen Sie dabei das Programm PAP-Designer.