home *** CD-ROM | disk | FTP | other *** search
- ; --------------------------------------------------------
- ; Programm IST_386.ASM
- ; Autor: Sven Letzel
- ; Datum: 16.04.1993
-
- ; Test auf 80386-CPU oder höher
- ; --------------------------------------------------------
-
- MODEL small
-
- .STACK 100H
-
- .DATA
- Meld1 DB 'Auf Ihrem System arbeitet $'
- Meld2 DB 'eine 80386-CPU oder höher.',10,13,'$'
-
- .CODE
-
- Test386 PROC
-
- PUSHF ; Flagregister sichern
-
- XOR AX, AX
- PUSH AX ; Null auf den Stack
- POPF ; und in Flagregister
- PUSHF ; Flaggen auf den Stack
- POP AX ; und wieder zurück
- AND AH, 0F0H ; Bits 12-15 maskieren
- CMP AH, 0F0H ; sind alle Bits 1 dann 8086
- JZ @Kein386
-
- MOV AX, 7000H ; Bits 12-14 sind 1
- PUSH AX ; auf den Stack
- POPF ; dann ins Flagregister
- PUSHF ; Flagregister auf den Stack
- POP AX ; zurück nach AX
- AND AH, 70H ; Bits 12-14 maskieren
- JZ @Kein386 ; alle drei Bits Null -> 80286
-
- POPF ; Flaggen restaurieren
- CLC ; Carry-Flag löschen
- RET
- @Kein386:
- POPF ; Flaggen restaurieren
- STC ; Carry-Flag setzen
- RET
- Test386 ENDP
-
- Main PROC FAR
- MOV AX, SEG @DATA
- MOV DS, AX ; Datensegment laden
- LEA DX, Meld1 ; ersten Teil der Meldung
- MOV AH, 09
- INT 21H ; und ausgeben
-
- CALL Test386 ; Test aufrufen
- JNZ @Ist386
-
- MOV DL, 'k' ; wenn keiner dann ein 'k' ausgeben
- MOV AH, 02 ; aus "eine" wird "keine"
- INT 21H
-
- @Ist386:
- LEA DX, Meld2 ; zweiten Teil der Meldung
- MOV AH, 09H
- INT 21H ; und ausgeben
-
- MOV AH, 4CH
- INT 21H ; Programmende
- Main ENDP
-
- END Main ; Programmausführung mit MAIN beginnen
-