home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / das_buch / asemblr / asm / ist_386.asm < prev    next >
Encoding:
Assembly Source File  |  1993-06-05  |  2.1 KB  |  73 lines

  1. ; --------------------------------------------------------
  2. ; Programm IST_386.ASM
  3. ; Autor: Sven Letzel
  4. ; Datum: 16.04.1993
  5.  
  6. ; Test auf 80386-CPU oder höher
  7. ; --------------------------------------------------------
  8.  
  9. MODEL small
  10.  
  11. .STACK 100H
  12.  
  13. .DATA
  14.  Meld1  DB  'Auf Ihrem System arbeitet $'
  15.  Meld2  DB  'eine 80386-CPU oder höher.',10,13,'$'
  16.  
  17. .CODE
  18.  
  19. Test386   PROC
  20.  
  21.           PUSHF            ; Flagregister sichern
  22.  
  23.           XOR   AX, AX
  24.           PUSH  AX         ; Null auf den Stack
  25.           POPF             ; und in Flagregister
  26.           PUSHF            ; Flaggen auf den Stack
  27.           POP   AX         ; und wieder zurück
  28.           AND   AH, 0F0H   ; Bits 12-15 maskieren
  29.           CMP   AH, 0F0H   ; sind alle Bits 1 dann 8086
  30.           JZ    @Kein386
  31.  
  32.           MOV   AX, 7000H  ; Bits 12-14 sind 1
  33.           PUSH  AX         ; auf den Stack
  34.           POPF             ; dann ins Flagregister
  35.           PUSHF            ; Flagregister auf den Stack
  36.           POP   AX         ; zurück nach AX
  37.           AND   AH, 70H    ; Bits 12-14 maskieren
  38.           JZ    @Kein386   ; alle drei Bits Null -> 80286
  39.  
  40.           POPF             ; Flaggen restaurieren
  41.           CLC              ; Carry-Flag löschen
  42.           RET
  43. @Kein386:
  44.           POPF             ; Flaggen restaurieren
  45.           STC              ; Carry-Flag setzen
  46.           RET
  47. Test386   ENDP
  48.  
  49. Main      PROC  FAR
  50.           MOV   AX, SEG @DATA
  51.           MOV   DS, AX     ; Datensegment laden
  52.           LEA   DX, Meld1  ; ersten Teil der Meldung
  53.           MOV   AH, 09
  54.           INT   21H        ; und ausgeben
  55.  
  56.           CALL  Test386    ; Test aufrufen
  57.           JNZ   @Ist386
  58.  
  59.           MOV   DL, 'k'    ; wenn keiner dann ein 'k' ausgeben
  60.           MOV   AH, 02     ; aus "eine" wird "keine"
  61.           INT   21H
  62.  
  63. @Ist386:
  64.           LEA   DX, Meld2  ; zweiten Teil der Meldung
  65.           MOV   AH, 09H
  66.           INT   21H        ; und ausgeben
  67.  
  68.           MOV   AH, 4CH
  69.           INT   21H        ; Programmende
  70. Main      ENDP
  71.  
  72. END       Main             ; Programmausführung mit MAIN beginnen
  73.