asm汇编源代码之CPU型号检测

提供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
相关推荐
水饺编程1 天前
第2章:Linux 基础,解压缩【.tar.gz】压缩包
linux·c语言·汇编
水饺编程2 天前
第2章:Linux 基础,exit 命令
linux·c语言·汇编
水饺编程2 天前
第2章:Linux 基础,删除用户
linux·c语言·汇编
水饺编程4 天前
第2章:Linux 基础,切换用户
linux·c语言·汇编
水饺编程5 天前
第2章:Linux 基础,在 root 中创建用户账号
linux·c语言·汇编·1024程序员节
一个风轻云淡5 天前
从 int $0x80 到 iret:用 gdb 把 getpid 走一遍
linux·c语言·开发语言·汇编
水饺编程6 天前
第2章:Linux 基础,切换到超级用户
linux·c语言·汇编
水饺编程7 天前
第2章:Linux 基础,重启命令
linux·c语言·汇编
en.en..8 天前
volatile 完整深度教程(C 代码 + 带注释 ARM 汇编 + 硬件中断原理 + 分步运行时序)
c语言·汇编·arm开发
水饺编程9 天前
第2章:Linux 基础,rm 命令
linux·c语言·汇编