1. Assemblieren Sie das Programm und führen Sie es aus!

C:\>nasm count.asm -f bin -o count.com

C:\>count

2. Beschreiben Sie die Ausgabe des Programms!


Das Programm zählt rückwärts die eingegebenen einstellige Zahl bis auf 0 herunter.


3. Wie verhält sich das Programm bei fehlerhaften Eingaben?


Wenn das eingegebene Zeichen keines zwischen 0 und 1 wird die gleiche Fehlermeldung ausgegeben und das Programm von vorne gestartet:

Zahl von 1-9 eingeben:
0
Fehler: Zahl ist nicht zwischen 1-9!
Zahl von 1-9 eingeben:
#
Fehler: Zahl ist nicht zwischen 1-9!
Zahl von 1-9 eingeben:
76543210

4. Was leisten die folgenden Assemblerbefehle?

  1. cmp

    Entspricht einer Subtraktion (sub), ohne dass einer der beiden Operanten verändert wird. Flags werden gesetzt!

  2. ja

    jump on above, Operand 1 > Operand 2


  3. jb

    jump if below, Operand 1 < Operand 2


  4. jmp

    jump, unbedingter Sprung



5. Was leistet der MSDOS-Funktionsaufruf INT 21 mit den Codes

  1. 01h

    Zeichen wird nach AL eingelesen


  2. 02h

    Zeichen wird auf der Standardausgabe ausgeben


6. Kommentieren Sie den Quellcode!


org 100h  ;Programmstart bei Adresse 0100h

start: mov dx, txt1 ;Eingabeaufforderung ausgeben        mov ah, 9h        int 021h        mov ah, 01h  ;Einzelnes Zeichen von der Tastatur lesen        int 021h        cmp al, 57   ;Zeichen mit 57d ’9’ vergleichen (compare)        ja error     ;Ergebnis > 9,jump if above nach error        cmp al, 49   ;Zeichen mit 49d ’1’ vergleichen        jb error     ;Ergebnis < 1,jump if below nach error

count: sub al, 1    ;von al eins subtrahieren (dekrementieren)
       mov dl, al   ;einzelnes Zeichen ausgeben

      
mov ah, 02h
       int 21h
       cmp al, 48   ;Vergleich mit ’0’
       ja count     ;wenn ’0’ noch nicht erreicht, Sprung -> count

ende:  mov al, 0    ;Rückkehr zum Betriebssystem
      
mov ah, 4Ch 
       int 21h

error: mov dx, txt2 ;Fehlerausgabe
      
mov ah, 9h
       int 21h

       jmp start    ;Sprung (jump)

       section .data    ;Datenbereich
txt1:  db 'Zahl von 1-9 eingeben:', 13, 10, '$'
txt2: db 13, 10, 'Fehler: Zahl ist nicht zwischen 1-9!', 13,10,'$'

7. Zeichnen Sie den Programmablaufplan PAP des Programms?

Benutzen Sie dabei das Programm PAP-Designer.

PAP des Countdown - Programms


Last modified: Friday, 1 November 2019, 10:42 AM