亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cpuid.asm

?? 80386單片機
?? ASM
字號:
TITLE   CPUID
;v5.93  Toad Hall Tweak, 1 Jul 91
;       - Tightened up code a little, tabified.
;         I have *no* idea what he did to make the original
;         CPUID.EXE 6Kb long!  debug enabled?
;       - Rewritten to .COM format to reduce size further.
;       We *really* should be returning a magic number as ERRORLEVEL
;       so a batch file could process accordingly.
;       David Kirschbaum
;       kirschd@sesi.com

;v5.94  DD Tweak, 8 Jan 92, to return errorlevels
;       This version assembles with Eric Isaacson's A86
;       Fixed the problem with "period" not always being printed
;       Doug Dougherty, valley@gsbsun.uchicago.edu

CSEG    SEGMENT
        ASSUME  CS:CSEG,DS:CSEG,ES:CSEG

        org     100H                    ;.COM file

cpuid   proc    near
        jmp     start                   ;skip over data

exitcode        db      0               ;v5.94

fp_status       dw      0
id_mess         db      "CPUID v5.94 (Toad Hall, DD tweaks)"            ;v5.94
                db      13,10,13,10,"This system has a$"                ;v5.94
fp_8087         db      " and an 8087 math coprocessor$"
fp_80287        db      " and an i287tm math coprocessor$"
fp_80387        db      " and an i387tm math coprocessor$"
c8086           db      "n 8086/8088 microprocessor$"
c286            db      "n 80286 microprocessor$"
c386            db      " i386tm microprocessor$"
c486            db      " i486tm DX microprocessor or i487tm SX math coprocessor$"
c486nfp         db      " i486tm SX microprocessor$"
period          db      ".",13,10,"$"
present_86      db      0       ;v5.92
present_286     db      0       ;v5.92
present_386     db      0       ;v5.92
present_486     db      0       ;v5.92

cpuid   endp

;
; The purpose of this code is to allow the user the ability to identify the
; processor and coprocessor that is currently in the system.  The algorithm
; of the program is to first determine the processor id.
; When that is accomplished, the program continues to then identify whether
; a coprocessor exists in the system.  If a coprocessor or integrated
; coprocessor exists, the program will identify the coprocessor id.  If one
; does not exist, the program then terminates.
;
start   proc    near

        mov     dx,offset id_mess               ; print header message
        mov     ah,9h
        int     21h

;
;       8086 CPU check
;       Bits 12-15 are always set on the 8086 processor.
;
        mov     cx,0F000H               ;handy constant                 v5.93
        pushf                           ; save EFLAGS
        pop     bx                      ; store EFLAGS in BX
        mov     ax,0fffh                ; clear bits 12-15
        and     ax,bx                   ;       in EFLAGS
        push    ax                      ; store new EFLAGS value on stack
        popf                            ; replace current EFLAGS value
        pushf                           ; set new EFLAGS
        pop     ax                      ; store new EFLAGS in AX
        and     ax,cx   ;0f000h         ; if bits 12-15 are set,        v5.93
        cmp     ax,cx   ;0f000h         ; then CPU is an 8086/8088      v5.93
        mov     dx,offset c8086         ; store 8086/8088 message
        mov     present_86,1            ; turn on 8086/8088 flag
        mov     exitcode,1              ; Setup exitcode for 8086/8088  v5.94
        je      check_fpu               ; if CPU is 8086/8088, check for 8087

;
;       80286 CPU check
;       Bits 12-15 are always clear on the 80286 processor.
;

        or      bx,cx   ;0f000h         ; try to set bits 12-15         v5.93
        push    bx
        popf
        pushf
        pop     ax
        and     ax,cx   ;0f000h         ; if bits 12-15 are cleared     v5.93
        mov     dx,offset c286          ; then CPU is an 80286
        mov     present_86,0            ; turn off 8086/8088 flag
        mov     present_286,1           ; turn on 80286 flag
        mov     exitcode,2              ; Setup exitcode for 80286      v5.94
        jz      check_fpu               ; if CPU is 80286, check for 80287

;
; i386 CPU check
; The AC bit, bit #18, is a new bit introduced in the EFLAGS register on the
;  i486 DX CPU to generate alignment faults.  This bit can be set on the
;  i486 DX CPU, but not on the i386 CPU.


        mov     bx,sp                   ; save current stack pointer to align it
        and     sp,not 3                ; align stack to avoid AC fault
        db      66h
        pushf                           ; push original EFLAGS
        db      66h
        pop     ax                      ; get original EFLAGS
        db      66h
        mov     cx,ax                   ; save original EFLAGS
        db      66h                     ; xor EAX,40000h
        xor     ax,0                    ; flip AC bit in EFLAGS
        dw      4                       ; upper 16-bits of xor constant
        db      66h
        push    ax                      ; save for EFLAGS
        db      66h
        popf                            ; copy to EFLAGS
        db      66h
        pushf                           ; push EFLAGS
        db      66h
        pop     ax                      ; get new EFLAGS value
        db      66h
        xor     ax,cx                   ; if AC bit cannot be changed, CPU is
        mov     dx,offset c386          ; store i386 message
        mov     present_286,0           ; turn off 80286 flag
        mov     present_386,1           ; turn on i386 flag
        mov     exitcode,3              ; Setup exitcode for 80386      v5.94
        je      check_fpu               ; if CPU is i386, now check for
                                        ;       80287/80387 MCP

;
;       i486 DX CPU / i487 SX MCP and i486 SX CPU checking
;
        mov     dx,offset c486nfp       ; store 486NFP message
        mov     present_386,0           ; turn off i386 flag
        mov     present_486,1           ; turn on i486 flag
        mov     exitcode,4              ; Setup exitcode for 80486      v5.94

;
; Co-processor checking begins here for the 8086/80286/i386 CPUs.
; The algorithm is to determine whether or not the floating-point status
; and control words can be written to.  If they are not, no coprocessor exists.
; If the status and control words can be written to, the correct coprocessor
; is then determined depending on the processor id.  Coprocessor checks are
; first performed for an 8086, 80286 and a i486 DX CPU.  If the coprocessor id
; is still undetermined, the system must contain a i386 CPU.  The i386 CPU may
; work with either an 80287 or an 80387.  The infinity of the coprocessor must
; be checked to determine the correct coprocessor id.
;

check_fpu:                              ; check for 8087/80287/80387
        fninit                          ; reset FP status word
        mov     fp_status,5a5ah         ; initialize temp word to non-zero value
        fnstsw  fp_status               ; save FP status word
        mov     ax,fp_status            ; check FP status word
;v5.93  cmp     al,0
        or      al,al                   ; see if correct status with written v5.93
        jne     print_one               ; jump if not Valid, no NPX installed

        fnstcw  fp_status               ; save FP control word
        mov     ax,fp_status            ; check FP control word
        and     ax,103fh                ; see if selected parts looks OK
        cmp     ax,3fh                  ; check that ones and zeroes correctly
                                        ; read
        jne     msgterm                 ; not valid, no NPX installed   v5.93

        cmp     present_486,1           ; check if i486 flag is on
        jne     not_486                 ;nope, continue 386 checking    v5.93
                                        ;yep, display i486 msg          v5.93
         mov    dx,offset c486          ; store i486 message
         jmp    msgterm                 ;display i486 message, terminate v5.93

not_486:
        cmp     present_386,1           ; check if i386 flag is on
        jne     print_87_287            ; if i386 flag not on, check NPX for
                                        ;       8086/8088/80286
        mov     ah,9h                   ; print out i386 CPU ID first
        int     21h

;
;   80287/80387 check for the i386 CPU
;
        fld1                            ; must use default control from FNINIT
        fldz                            ; form infinity
        fdiv                            ; 8087/80287 says +inf = -inf
        fld     st                      ; form negative infinity
        fchs                            ; 80387 says +inf <> -inf
        fcompp                          ; see if they are the same
                                        ; and remove them
        fstsw   fp_status               ; look at status from FCOMPP
        mov     ax,fp_status
        mov     dx,offset fp_80287      ; store 80287 message
        sahf                            ; see if infinities matched
        jz      restore_EFLAGS          ; jump if 8087/80287 is present
         mov    dx,offset fp_80387      ; store 80387 message

restore_EFLAGS:
        mov     ah,9h                   ; print NPX message
        int     21h
        db      66h
        push    cx                      ; push ECX
        db      66h
        popf                            ; restore original EFLAGS register
        mov     sp,bx                   ; restore original stack pointer
        jmp     short exit

print_one:
        jmp     short msgterm           ;print out CPU ID with no NPX   v5.93

print_87_287:
        mov     ah,9h                   ; print out 8086/8088/80286 first
        int     21h
        cmp     present_86,1            ; if 8086/8088 flag is on
        mov     dx,offset fp_8087       ; store 8087 message
        je      print_fpu
        mov     dx,offset fp_80287      ; else CPU=80286, store 80287 message

print_fpu:
        or      exitcode,080h           ; High bit => NPX present       v5.94
        jmp     short msgterm           ;print out NPX                  v5.93

exit:
        mov     dx,offset period        ; print out a period to end message
msgterm:
        mov     ah,9h
        int     21h

        cmp     dx,offset period        ; print out a period to end message v5.94
        jne     exit                    ; (if we have not already done so)

        mov     ah,4ch                  ; terminate program
        mov     al,exitcode             ;v5.94
        int     21h
start   endp

CSEG    ENDS
        end     cpuid

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
寂寞少妇一区二区三区| 91精品国产综合久久精品 | 国产不卡视频在线播放| 午夜精品影院在线观看| 亚洲欧美偷拍另类a∨色屁股| 精品国产乱码久久久久久闺蜜| 777精品伊人久久久久大香线蕉| 日韩精品中文字幕在线不卡尤物| 精品一区二区三区视频在线观看| 亚洲婷婷综合久久一本伊一区| 国产色产综合色产在线视频 | 国产一区在线精品| 免费成人在线影院| 蜜臀av国产精品久久久久 | 国产欧美一区在线| 国产三级一区二区| 日韩精品国产精品| 国产一区二区三区精品欧美日韩一区二区三区 | 国产在线精品免费av| 欧美日韩国产一级片| 91精品国产麻豆| 亚洲一区二区精品3399| 石原莉奈一区二区三区在线观看| av中文一区二区三区| 精品国产乱码久久久久久浪潮| 99精品在线观看视频| 日韩欧美电影一二三| 亚洲欧美二区三区| 91在线高清观看| 91精品国产一区二区三区香蕉| 亚洲精品欧美激情| 精品亚洲成a人在线观看| 欧美乱妇15p| 国产精品午夜在线观看| 亚洲精品国久久99热| 97se亚洲国产综合自在线不卡| 国产精品免费视频一区| 成人深夜在线观看| 制服丝袜日韩国产| 五月天久久比比资源色| 欧美日韩精品一区二区三区四区 | 91视频一区二区三区| 国产精品不卡在线观看| 麻豆国产精品官网| 欧美成人午夜电影| 亚洲日本免费电影| 欧美三级电影网| 欧美高清在线精品一区| 日韩黄色一级片| 欧美一区三区四区| 国产一区二区三区香蕉 | 日韩一区中文字幕| 美女视频第一区二区三区免费观看网站| 欧美视频一区在线| 中文字幕亚洲精品在线观看 | 中文字幕人成不卡一区| 一本大道久久a久久精二百| 日韩一二三四区| 亚洲国产精品久久久久秋霞影院| 国产精品一区专区| 日韩视频一区二区三区 | 日韩欧美专区在线| 国产福利一区二区三区视频在线 | 色婷婷精品久久二区二区蜜臂av| 一区二区高清在线| 色综合天天综合给合国产| 久久久www免费人成精品| 久久超碰97中文字幕| 欧美一区二区三区视频在线观看| 精东粉嫩av免费一区二区三区| 国产精品看片你懂得| 欧美日韩aaaaaa| 大胆亚洲人体视频| 偷拍与自拍一区| 国产精品欧美久久久久无广告| 欧美性色黄大片手机版| 国产一区二区三区黄视频 | 午夜欧美电影在线观看| 久久先锋影音av鲁色资源| 久久99精品久久久久久| 亚洲欧洲美洲综合色网| 欧美一区二区精品在线| 一本久久a久久免费精品不卡| 蜜臀av一级做a爰片久久| 中文字幕一区在线观看视频| 欧美一级片在线看| 在线一区二区视频| 五月综合激情婷婷六月色窝| 国产农村妇女毛片精品久久麻豆| 9191久久久久久久久久久| 成人黄色小视频在线观看| 亚洲美女免费视频| 久久精品在这里| 日韩视频在线你懂得| 欧美日韩在线播| 97aⅴ精品视频一二三区| 国产99精品视频| 精品在线一区二区| 日韩电影免费一区| 久久精品欧美一区二区三区不卡| 欧美三级视频在线播放| 色噜噜夜夜夜综合网| 国产成人亚洲精品狼色在线| 精品一区二区免费看| 午夜伦欧美伦电影理论片| 一区二区久久久| 亚洲男帅同性gay1069| 国产精品激情偷乱一区二区∴| 欧美精品一区二区不卡| 日韩欧美在线综合网| 欧美日韩国产高清一区二区| 欧美在线制服丝袜| 极品少妇一区二区| 蜜桃免费网站一区二区三区| 日韩精品三区四区| 丝袜美腿亚洲一区| 日韩福利视频导航| 亚洲444eee在线观看| 国产欧美视频一区二区三区| 欧美精品一区二区在线播放| 精品国产免费视频| 国产欧美日韩在线看| 久久久久久久精| 国产欧美精品日韩区二区麻豆天美 | 国产视频不卡一区| 久久久久国产精品人| 中文字幕不卡在线播放| 国产精品天干天干在观线| 国产精品久久久久久久岛一牛影视| 欧美激情一区二区| 亚洲丝袜自拍清纯另类| 一级日本不卡的影视| 亚洲h动漫在线| 久久超碰97人人做人人爱| 国产精一区二区三区| 不卡欧美aaaaa| 日本国产一区二区| 91.麻豆视频| 久久影院视频免费| 国产揄拍国内精品对白| 久草精品在线观看| 成人黄色av网站在线| 欧美性猛交一区二区三区精品| 欧美丰满美乳xxx高潮www| 精品999在线播放| 中文字幕在线观看一区二区| 亚洲一区二区三区四区的| 蜜桃av一区二区在线观看| 国产成a人亚洲精| 欧美亚洲国产怡红院影院| 精品少妇一区二区三区视频免付费| 国产色产综合产在线视频| 亚洲综合偷拍欧美一区色| 麻豆精品国产91久久久久久| heyzo一本久久综合| 欧美高清激情brazzers| 日本一区二区三级电影在线观看| 成人免费小视频| 美女在线一区二区| 色素色在线综合| 欧美精品一区二区三区蜜桃视频| 亚洲少妇30p| 国产做a爰片久久毛片| 蜜桃视频第一区免费观看| av午夜精品一区二区三区| 日韩亚洲欧美高清| 亚洲精品videosex极品| 国产一区二区影院| 欧美精品粉嫩高潮一区二区| 中文字幕亚洲电影| 久88久久88久久久| 欧美精品自拍偷拍| 综合久久国产九一剧情麻豆| 国内精品国产三级国产a久久| 欧洲精品视频在线观看| 国产精品天干天干在线综合| 蜜臀精品久久久久久蜜臀| 日本黄色一区二区| 国产精品水嫩水嫩| 韩国女主播一区| 欧美一区二区三区视频免费播放 | 欧美精品1区2区| 亚洲美女免费在线| 成人黄色小视频| 欧美国产欧美综合| 国产乱淫av一区二区三区 | 欧美精品三级在线观看| 亚洲免费在线视频一区 二区| 国产成人亚洲精品青草天美 | 91麻豆精品91久久久久久清纯| 亚洲婷婷国产精品电影人久久| 国产酒店精品激情| 国产亚洲婷婷免费| 久久99精品久久久久久国产越南 | 日韩av一级电影| 欧美唯美清纯偷拍| 一区二区国产视频| 欧美性大战久久久久久久| 亚洲精品五月天| 在线观看视频一区二区欧美日韩|