home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 05 / einsteig / listing1.asm < prev    next >
Assembly Source File  |  1990-01-30  |  2KB  |  76 lines

  1. TITLE Listing1.asm
  2. ;* Programm beschreibt die Abfrage des Gerätetyps und zeigt
  3. ;* die Arbeitsweise des OUTS-Befehls.  Im Beispiel wird ein
  4. ;* Byte direkt an den Tastaturprozessor (8042) geschickt.
  5. ;* Dabei löst 0FEh -> 254 dezimal einen RESET aus.
  6.  
  7. Ausgabe MACRO Text
  8.      mov ax, CS
  9.      mov DS, ax
  10.      mov ah, 09
  11.      mov dx, offset CS:Text
  12.      int 21h
  13. ENDM 
  14.  
  15. ;----------------------------------------------------------
  16.  
  17. .model small
  18. .stack
  19. .code
  20.  
  21. ID_Byte   DB '?'
  22. XT_Text   DB 'Programm läuft nur mit 80286/386/486 Rechnern'
  23.           DB ' im erweiterten Real Mode!', 13, 10, '$'
  24. Daten     DB 254 
  25.  
  26. ;------------------ Unterprogramme -------------------------
  27.  
  28. who_am_i proc
  29.      push ax
  30.      push bx                            
  31.      mov ax,0F000h                      ;Offset ID-Byte
  32.      mov ES,ax
  33.      mov bl, ES:0FFFEh
  34.      mov CS:ID_Byte,bl
  35.      pop bx
  36.      pop ax
  37.      ret     
  38. who_am_i endp
  39.  
  40. ;------------------ Hauptprogramm --------------------------
  41. .8086                         ;Real-Mode
  42.  
  43. Start: 
  44.      call who_am_i
  45.      mov al, CS:ID_Byte
  46.      cmp al, 0FFh             ;PC 8086 ?
  47.      je kein_AT 
  48.      cmp al, 0FEh             ;PC/XT ?
  49.      je kein_AT
  50.      cmp al, 0FBh             ;256/640 KB System ?
  51.      je kein_AT
  52.      jmp Real_Mode
  53. kein_AT:
  54.      Ausgabe XT_Text
  55.      jmp Ende
  56.  
  57. ;--- ab hier kann im erweiterten Real Mode gearbeitet werden     
  58.  
  59. Real_Mode:
  60. .286          
  61.  
  62.      cld                      ;clear Direction Flag
  63.      mov ax,SEG Daten         ;Segmentadresse Daten
  64.      mov ds,ax                
  65.      mov si,OFFSET Daten      ;Offsetadresse Daten
  66.      mov dx,64h               ;Portadresse (Tastatur)
  67.      mov cx,1                 ;Zählervar, 1 Byte übertragen
  68.      REP outsb                ;cx mal jeweils ein Byte
  69.                               ;an die Portadresse, wenn
  70.                               ;Wortgröße dann outsw
  71.                               ;si wird autom. erhöht
  72.      hlt                      ;hier ist Schluß,erwarte RESET     
  73. Ende:
  74.      mov ah,4Ch               ;zurück zu DOS
  75.      int 21h            
  76. end Start