Übung Assembler 1 - Aufgabe 5

Entwickle zunächst ein möglichst allgemein verwendbares Unterprogramm zum Ausgeben einer 16-Bit ganzen Zahl ohne Vorzeichen in einem Zahlensystem zwischen der Basis 2 und 36 über die Standardausgabe. Die Parameterübergabe erfolgt per DX- und AX-Register; das DX-Register enthält die auszugebende Zahl, und das AX-Register die Zahlensystemsbasis.

Anschließend soll jenes Unterprogramm von einem Programm (EXE-Format) aufgerufen werden, welches fortlaufend Zeichen über die Standardeingabe einliest und wie folgt reagiert :

Jedes gültige Eingabezeichen führt zu einer Zahlenausgabe (ergänzt jeweils um die dezimale Ausgabe der Zahlensystemsbasis). Begonnen wird mit der Zahl Null im Dezimalsystem. Die Behandlung eines Überlaufs der auszugebenden Zahl ist nicht gefordert.

Um einen Eindruck vom Programmablauf zu erhalten könnt Ihr hier eine Demo nebst Eingabedaten und berechneten Ausgabedaten herunterladen.

Übung Assembler 1 - Aufgabe 6

Entwickle ein EXE-Programm, welches wiederholt jeweils ein Zeichen ohne Echo von der Standardeingabe einliest, dessen Position in der Zeichentabelle QUELL sucht, und anschließend die Zahl an derselben Position in der Worttabelle ZIEL als Dezimalzahl über die Standardausgabe ausgibt. Sollte das eingegebene Zeichen nicht in QUELL enthalten sein, wird statt einer Zahl ein Fragezeichen über die Standardausgabe ausgegeben. Die Verarbeitung endet durch Eingabe des ESC-Zeichens (ASCII-Code: 1Bh). Der Code zur Ausgabe der Dezimalzahl über die Standardausgabe soll in einem separaten Modul (Quellcode) angeordnet sein. Zur Lösung dieser Aufgabe gilt die Verwendung des nachfolgenden Programmgerüstes als verbindlich.
EXTRN DEZOUT:FAR

CSEG  SEGMENT
      ASSUME CS:CSEG,DS:DSEG

MAIN  PROC
      MOV  AX,DSEG
      MOV  DS,AX
      ...
ENDE: MOV  AX,4C00h
      INT  21h
MAIN  ENDP

      ...

CSEG  ENDS

DSEG  SEGMENT
QUELL DB "ACBEDGFIHKJMLONQPSRUTWVYXZ"
ZIEL  DW 41,43,42,45,44,47,46,49,48,
         52,51,54,53,56,55,58,57,61,
         59,63,62,65,64,67,66,68
DSEG  ENDS

SSEG  SEGMENT STACK
      DW 128 DUP (?)
SSEG  ENDS

      END MAIN

Liebe angehende Technische Informatikassistenten des 3. Semesters :

Dies ist die letzte Übung Assembler 1 dieses Semesters.
Für die nun folgende Klausurperiode wünscht das PTL-Team viel Erfolg.
Das Fach Assembler 1 findet im 4. Semester seine Fortsetzung in den Fächern
Assembler 2 (Dirk Ahrens) und Microcontroller (Bernd Albrecht und Rene Bodaine).

Stand: 03.01.2006 (Birger Wolter)