冰楓論壇

 找回密碼
 立即註冊
搜索
查看: 415|回覆: 0
打印 上一主題 下一主題

[心得] DOS能執行CPUID指令

[複製鏈接]

13

主題

0

好友

26

積分

新手上路

Rank: 1

UID
460236
帖子
23
主題
13
精華
0
積分
26
楓幣
866
威望
25
存款
0
贊助金額
0
推廣
0
GP
14
閱讀權限
10
性別
保密
在線時間
22 小時
註冊時間
2024-10-12
最後登入
2024-12-22
跳轉到指定樓層
1
發表於 2024-10-15 09:28:52 |只看該作者 |倒序瀏覽
CPUID是MASM 6.x新增的指令,它能提共CPU的種類,但在DOS真實模式下無法執行
,不過這似乎是ML.EXE限制的,還是可以利用填充CPUID的機械碼在DOS系統中執
行。原始程式CPUID.ASM內容如下:

.MODEL        TINY
.486    ;可以使用40486指令集,因為EAX、EBX等暫存器要80386以後的CPU
        ;才有
mycpuid MACRO
        DB        0fh,0a2h;CPUID的機械碼
ENDM
CODE        SEGMENT USE16   ;USE16指定16位元定址模式
ASSUME        cs:CODE,ds:CODE
ORG        100h
start:        jmp        short begin
string        DB        12 DUP (?),"$"
begin:        mov        eax,0
        mycpuid
        mov        DWORD PTR string,ebx    ;EBX=756e6547h=uneG
        mov        DWORD PTR string[4],edx ;EDX=49656e69h=Ieni
        mov        DWORD PTR string[8],ecx ;ECX=6c65746eh=letn
        mov        dx,OFFSET string
        mov        ah,9
        int        21h
        int        20h
CODE        ENDS
END        start

EBX內的數值是高位元寫在左邊,但存放於string字串須放在低位址,所以寫成
數值看起來很奇怪,但寫成字串就不會了,小端序排列就是如此,沒辦法。底
下是執行過程:

DOS_CPUID.png (16.28 KB, 下載次數: 0)

DOS_CPUID.png

收藏收藏0 推0 噓0


把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1鑰匙
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
高級模式
B Color Image Link Quote Code Smilies |上傳

廣告刊登意見回饋關於我們管群招募本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-12-22 21:40

回頂部