提供1个子程序:
1. CPU型号检测 CPUTYPE
无输入参数,返回值AX指示CPU类型(报歉,当时最新CPU型号只有80486)
函数的返回值详细描述如下
|-----------------------------------------------------------------------------------|
| CPUTYPE PROC FAR ;OUT: AX=01, 8086; AX=02, 80286; AX=03, 80386; AX=04, 80486 UP; |
; more source code at http://www.ahjoe.com/source/srcdown.asp
PUBLIC CPUTYPE
CODE SEGMENT
ASSUME CS:CODE
CPUTYPE PROC FAR
;OUT: AX=01, 8086; AX=02, 80286; AX=03, 80386; AX=04, 80486 UP;
PUSH BX
PUSHF
POP AX
MOV BX, AX
AND AX, 0FFFH ; CLEAR b15-b12
PUSH AX
POPF
PUSHF
POP AX
AND AH, 0F0H
JNZ IS8086
MOV AX, BX
OR AX, 0F000H ; SET b15-b12
PUSH AX
POPF
PUSHF
POP AX
AND AH, 0F0H
JZ IS80286
MOV BX, SP
AND SP, NOT 3
DB 66H
PUSHF
DB 66H
POP AX
DB 66H
OR AX, 0
DW 4
DB 66H
PUSH AX
DB 66H
POPF
DB 66H
PUSHF
DB 66H
POP AX
DB 66H
TEST AX, 0
DW 4
JZ IS80386
JMP IS80486
IS8086:
MOV AX, 01
POP BX
RETF
IS80286:
MOV AX, 02
POP BX
RETF
IS80386:
MOV AX, 03
MOV SP, BX
POP BX
RETF
IS80486:
DB 66H
AND AX, NOT 0
DW NOT 4
DB 66H
PUSH AX
DB 66H
POPF
MOV AX, 04
MOV SP, BX
POP BX
RETF
CPUTYPE ENDP
CODE ENDS
END CPUTYPE