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

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

[复制链接]
发表于 2008-3-10 20:14:22 | 显示全部楼层 |阅读模式
下面是我用C写的读CPU信息的一小段代码,中间加入了32位读CPU信息的CPUID汇编指令,在windows下是没问题的,可是我是要编译出来在DOS下运行的,运行不了,我汇编可以说是白纸,我想请教下:有什么办法可以将32位指令改成16位的吗??或者是定义什么伪指令来执行?听说是实模式与保护模式的一种切换,可是我真的一点都不懂。。。虚心请教!# ^5 A: [, S/ ?& L) [8 _
或者我另知道可以通过SMBIOS来读取CPU信息,现在SMBIOS都2。7了吧,但是我在读SMBIOS中CPU部分的信息时,验证CORE的CPU不知道怎么识别不了,请指教啊!+ _2 u  o9 L0 B0 U( n8 F
另如果要全部代码,可以提供。: j* h! X& N5 C0 g

  q+ J, D) J, O7 s: _" B+ Z#include <stdio.h>
( a. |. y0 e: C% v3 Q#include "stdlib.h"
0 a9 X* |3 D3 I+ H& p! n
: k7 l% c5 j8 ^4 U1 ]main()/ e8 s9 `7 r1 |3 f0 d9 w; S- m' _
{" G3 Z; g; _; Q1 M3 ?
unsigned long DBase;
. {+ y# _# V" l& k* Nchar cA[13];
* M' H, [5 M, D9 T_asm
  `5 B  ^! ]: ]- \3 d  l5 ^  {
0 D' q/ F5 H6 {1 G8 W1 F. w    mov eax, 09 r. X1 `% r+ i+ `" V! ]2 l
    cpuid
9 S" d7 q9 A5 D& ]+ k    mov DBase      ,eax
  a1 K/ ~) y& y    mov dword ptr cA    ,ebx* t) @1 h+ j9 W2 U2 q
    mov dword ptr cA+4  ,edx # W- i6 J4 J% h7 [+ A  j$ N
    mov dword ptr cA+8  ,ecx 9 v; z* e  U2 e2 V4 ?$ b. A
  }* X- B. j" D2 m( }, z- K
  cA[12] = '\0';
( [9 ]& T: w8 X& S  printf( "CPU factory:  %s\n", cA );. b2 X0 _; H5 N/ m# @, W
  system("pause");5 e# V: E  Z& O, C$ \( R
}
发表于 2008-3-11 09:05:45 | 显示全部楼层
可以用DOS下的C编译器编译成16位的程序。) E; J. F4 b! D* r! i: ?+ ~) J& {/ q
这应该跟保护模式和实模式的转换没有关系。
回复

使用道具 举报

 楼主| 发表于 2008-3-11 09:21:30 | 显示全部楼层
原帖由 kelvinklee 于 2008-3-11 09:05 发表 ( u  Y' T& y/ i( t2 k* T- I* `' z3 E
可以用DOS下的C编译器编译成16位的程序。
+ ~9 ]- c; B0 Z+ V7 ]这应该跟保护模式和实模式的转换没有关系。

# N# M# K9 c7 G9 n$ L8 d4 w$ [+ l/ ^8 ]* E# g. F. n$ Q( r* U
DOS下的C编译器你的意思是指DJGPP吗?可是我下载了还不会用。。。请教是不是要在纯DOS下才能用呢?
回复

使用道具 举报

发表于 2008-3-11 09:32:57 | 显示全部楼层
1、你的编译器是哪家的,编译参数是什么?/ ~/ l( s2 |2 _* Z
2、你运行不了的所发生的现象是什么?
" s9 A- i' ?& C/ ^0 g( z- D$ \$ [) f! M3、你是怎么读SMBIOS信息的,你知道SMBIOS信息是怎么生成的吗?
回复

使用道具 举报

 楼主| 发表于 2008-3-12 13:00:55 | 显示全部楼层
多谢两位,我搞定了6 _7 X. F- ^3 n' C; X: I5 r
我不是读SMBIOS信息的,读SMBIOS信息我以前已经完成了,我现在是利用CPUID指令直接读CPU信息。
" |% `1 G6 _1 U8 S% o我用的是DJGPP内嵌汇编的方法,需要用DJGPP的编译器来编译。这样就可以在DOS下运行生成的执行文件。0 @. {" i0 g4 c% g! e" ?
有需要代码的可以说。。
回复

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-21 21:56 , Processed in 0.787152 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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