找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 8654|回复: 5

好论坛啊!请教问题,南狼大哥帮忙啊!

[复制链接]
发表于 2008-3-10 20:14:22 | 显示全部楼层 |阅读模式
下面是我用C写的读CPU信息的一小段代码,中间加入了32位读CPU信息的CPUID汇编指令,在windows下是没问题的,可是我是要编译出来在DOS下运行的,运行不了,我汇编可以说是白纸,我想请教下:有什么办法可以将32位指令改成16位的吗??或者是定义什么伪指令来执行?听说是实模式与保护模式的一种切换,可是我真的一点都不懂。。。虚心请教!8 n" r4 h6 n/ N- r; M4 K
或者我另知道可以通过SMBIOS来读取CPU信息,现在SMBIOS都2。7了吧,但是我在读SMBIOS中CPU部分的信息时,验证CORE的CPU不知道怎么识别不了,请指教啊!& ]1 D* G) H& T8 Y( ]
另如果要全部代码,可以提供。4 Z- ~. B( [# ?+ K$ k
1 r% W, r+ A$ l
#include <stdio.h>* p1 q& a" W; u, B+ ?
#include "stdlib.h"
7 z2 _2 X. @0 ?) {6 o- M+ b; I7 ^& B" D# D' Z# n
main()
$ V0 V, ?5 f) H; Y{- p1 A0 M. B* C& l
unsigned long DBase;& F6 q9 G! g  j+ J6 v
char cA[13];
" [  O# M! ]5 T, i+ Y/ ^, a_asm( C; v4 a# |4 ^* G9 ?9 U) A
  {
$ H. D8 Q9 Y. W' r% z    mov eax, 0! t1 z% x7 v. J; a4 G! ]# q
    cpuid
& E9 n6 T! z0 o5 h2 N! t: F% Q    mov DBase      ,eax, F# {1 l* P3 ~6 X* i9 s; c, U- k$ u% \
    mov dword ptr cA    ,ebx, B  }6 \& `' \, w7 o! v* v
    mov dword ptr cA+4  ,edx 2 a4 n$ s5 i" c! N) r  s; F
    mov dword ptr cA+8  ,ecx
4 b9 T8 L/ Q( f3 B# M  }
+ N  K1 Q% K2 C1 c1 ~9 r$ {/ g  cA[12] = '\0';
+ }; E. D" w6 N/ O! ?  V" L  printf( "CPU factory:  %s\n", cA );
# G2 i, ]; k0 _4 C6 l8 V; [  system("pause");
1 ]% g, m% D3 b# N. b9 @5 d  G6 M) X  E}
发表于 2008-3-11 09:05:45 | 显示全部楼层
可以用DOS下的C编译器编译成16位的程序。$ `( h' l% Z+ I+ F
这应该跟保护模式和实模式的转换没有关系。
回复

使用道具 举报

 楼主| 发表于 2008-3-11 09:21:30 | 显示全部楼层
原帖由 kelvinklee 于 2008-3-11 09:05 发表
8 g* e2 w0 S7 i0 ~) o$ `' a可以用DOS下的C编译器编译成16位的程序。
* `9 y1 O8 M. Q# ?' \这应该跟保护模式和实模式的转换没有关系。
3 U+ @0 l+ A8 O0 f& \' ?- y3 c: Y9 o
  H5 K8 q$ A" p3 x
DOS下的C编译器你的意思是指DJGPP吗?可是我下载了还不会用。。。请教是不是要在纯DOS下才能用呢?
回复

使用道具 举报

发表于 2008-3-11 09:32:57 | 显示全部楼层
1、你的编译器是哪家的,编译参数是什么?
/ ~' v. f2 j8 a8 ]2、你运行不了的所发生的现象是什么?* d' d/ A: N3 E: P/ U1 W' i
3、你是怎么读SMBIOS信息的,你知道SMBIOS信息是怎么生成的吗?
回复

使用道具 举报

 楼主| 发表于 2008-3-12 13:00:55 | 显示全部楼层
多谢两位,我搞定了5 [5 P7 q. N) s1 D$ F
我不是读SMBIOS信息的,读SMBIOS信息我以前已经完成了,我现在是利用CPUID指令直接读CPU信息。$ [$ d6 e, c  v, [  b. C4 W& J
我用的是DJGPP内嵌汇编的方法,需要用DJGPP的编译器来编译。这样就可以在DOS下运行生成的执行文件。
3 u) r. u8 k& B; f5 o有需要代码的可以说。。
回复

使用道具 举报

发表于 2008-5-29 16:20:25 | 显示全部楼层
LZ有DJGPP的使用文档么?我曾经也载了一个,可是不会用。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

Archiver|手机版|小黑屋|计匠网

GMT+8, 2024-6-3 05:01 , Processed in 0.033960 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表