home *** CD-ROM | disk | FTP | other *** search
- A 100
- ;* ---------------------------------------------------------
- ;* File: LISTING1.ASM
- ;* Funktion: Demonstration des CALL NEAR Befehls. Unter-
- ;* programm zur Zeichenausgabe wird aufgerufen.
- ;* ---------------------------------------------------------
- ;* Assembliere ab Adresse 100H - Beginn des Hauptprogramms
- ;*
- ;* Start: Aufruf der Ausgaberoutine per direktem CALL
- ;* ---------------------------------------------------------
- MOV DL,31 ;* 1 laden
- CALL NEAR 200 ;* Ausgaberoutine rufen
- ;* ---------------------------------------------------------
- ;* Aufruf der Ausgaberoutine per indirektem CALL
- ;* über den Inhalt des Registers AX
- ;* ---------------------------------------------------------
- MOV DL,32 ;* 2 laden
- MOV AX,200 ;* Adresse Unterprogramm
- CALL NEAR AX ;* Ausgaberoutine rufen
- ;* ---------------------------------------------------------
- ;* Aufruf der Ausgaberoutine per indirektem CALL
- ;* über den Inhalt der Speicherzelle DS:150
- ;* In einer COM-Datei ist DS - CS - SS - ES !!!
- ;* ---------------------------------------------------------
- MOV AX,200 ;* init Speicherstelle
- MOV [150],AX ;* mit dem Sprungziel
- MOV DL,33 ;* 3 laden
- CALL NEAR [150] ;* Ausgaberoutine rufen
- ;* ---------------------------------------------------------
- ;* Aufruf der Ausgaberoutine per indirektem CALL
- ;* über den Inhalt der durch BX adressierten Zelle
- ;* ---------------------------------------------------------
- MOV DL,34 ;* 4 laden
- MOV AX,200 ;* Adresse Unterprogramm
- MOV [150],AX ;* initialisieren
- MOV BX,150 ;* lese Zeiger
- CALL NEAR [BX] ;* Ausgaberoutine rufen
- ;* ---------------------------------------------------------
- ;* Rückkehr zu MS-DOS
- ;* ---------------------------------------------------------
- MOV AX,4C00 ;* DOS-Code "Exit"
- INT 21 ;* Terminiere Programm
- ;*
- ;* hier muß eine Leerzeile kommen
-
- A 200
- ;* ---------------------------------------------------------
- ;* Unterprogramm Output
- ;* Die Routine gibt das in DL übergebene ASCII-Zeichen
- ;* auf dem Bildschirm aus und hängt die Nachricht:
- ;* " . Aufruf der Routine<CR/LF>" an.
- ;* ---------------------------------------------------------
- ;* Output:
- MOV AH,02 ;* DOS-Code "Write Char"
- INT 21 ;* ASCII-Zeichen ausgeben
- MOV DX,20C ;* lade Stringadresse
- MOV AH,09 ;* DOS-Code "Write String"
- INT 21 ;* String ausgeben
- RET ;* Ende Unterprogramm
- ;* ------------------------------------------------
- ;* Datenbereich mit dem Textstring
- ;* ------------------------------------------------
- ;*
- DB ". Aufruf der Routine",0D,0A,"$"
- ;*
- ;* Steueranweisungen für DEBUG
-
- N DEMO1.COM
- R CX
- 250
- W
- Q