home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 01 / assem / listing1.asm next >
Encoding:
Assembly Source File  |  1989-11-01  |  2.9 KB  |  73 lines

  1. A 100
  2. ;* ---------------------------------------------------------
  3. ;*  File: LISTING1.ASM
  4. ;*  Funktion: Demonstration des CALL NEAR Befehls. Unter-
  5. ;*            programm zur Zeichenausgabe wird aufgerufen.
  6. ;* ---------------------------------------------------------
  7. ;*  Assembliere ab Adresse 100H - Beginn des Hauptprogramms
  8. ;*
  9. ;*  Start:  Aufruf der Ausgaberoutine per direktem CALL
  10. ;* ---------------------------------------------------------
  11.          MOV  DL,31       ;*  1 laden
  12.          CALL NEAR 200    ;*  Ausgaberoutine rufen
  13. ;* ---------------------------------------------------------
  14. ;*  Aufruf der Ausgaberoutine per indirektem CALL
  15. ;*  über den Inhalt des Registers AX
  16. ;* ---------------------------------------------------------
  17.          MOV  DL,32       ;*  2 laden
  18.          MOV  AX,200      ;*  Adresse Unterprogramm
  19.          CALL NEAR AX     ;*  Ausgaberoutine rufen
  20. ;* ---------------------------------------------------------
  21. ;*  Aufruf der Ausgaberoutine per indirektem CALL
  22. ;*  über den Inhalt der Speicherzelle DS:150
  23. ;*  In einer COM-Datei ist DS - CS - SS - ES !!!
  24. ;* ---------------------------------------------------------
  25.          MOV  AX,200      ;*  init Speicherstelle
  26.          MOV  [150],AX    ;*  mit dem Sprungziel
  27.          MOV  DL,33       ;*  3 laden
  28.          CALL NEAR [150]  ;*  Ausgaberoutine rufen
  29. ;* ---------------------------------------------------------
  30. ;*  Aufruf der Ausgaberoutine per indirektem CALL
  31. ;*  über den Inhalt der durch BX adressierten Zelle
  32. ;* ---------------------------------------------------------
  33.          MOV  DL,34       ;*  4 laden
  34.          MOV  AX,200      ;*  Adresse Unterprogramm
  35.          MOV  [150],AX    ;*  initialisieren
  36.          MOV  BX,150      ;*  lese Zeiger
  37.          CALL NEAR [BX]   ;*  Ausgaberoutine rufen
  38. ;* ---------------------------------------------------------
  39. ;*  Rückkehr zu MS-DOS
  40. ;* ---------------------------------------------------------
  41.          MOV  AX,4C00     ;*  DOS-Code "Exit"
  42.          INT 21           ;*  Terminiere Programm
  43. ;*
  44. ;*  hier muß eine Leerzeile kommen
  45.  
  46. A 200
  47. ;* ---------------------------------------------------------
  48. ;*  Unterprogramm Output
  49. ;*  Die Routine gibt das in DL übergebene ASCII-Zeichen
  50. ;*  auf dem Bildschirm aus und hängt die Nachricht:
  51. ;*  " . Aufruf der Routine<CR/LF>"   an.
  52. ;* ---------------------------------------------------------
  53. ;*  Output:
  54.          MOV  AH,02       ;*  DOS-Code "Write Char"
  55.          INT 21           ;*  ASCII-Zeichen ausgeben
  56.          MOV  DX,20C      ;*  lade Stringadresse
  57.          MOV  AH,09       ;*  DOS-Code "Write String"
  58.          INT 21           ;*  String ausgeben
  59.          RET              ;*  Ende Unterprogramm
  60. ;* ------------------------------------------------
  61. ;*  Datenbereich mit dem Textstring
  62. ;* ------------------------------------------------
  63. ;*
  64. DB ". Aufruf der Routine",0D,0A,"$"
  65. ;*
  66. ;*  Steueranweisungen für DEBUG
  67.  
  68. N DEMO1.COM
  69. R CX
  70. 250
  71. W
  72. Q
  73.