|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。: t8 H) ^# o) u$ }5 X8 w
运行环境:
. T' @9 |, _+ g1 S$ e4 B7 L8 w7 E1 Ymasm 6.11% |6 ~* y. J/ I# r; H
tasm 5.0
Y) c2 J7 q' K awindow xp
6 P) ~6 |7 E* b, F E在DOS下也试过了,结果相同。
; O+ ]6 b. `# K' P& o
0 [$ X! u5 [ F, i" s正常运行,结果正确。9 S0 k) O: P6 `( e) s( a8 R

5 ~- f5 D0 Q. W+ {2 I% P- C# X5 Q; l. e
在cv中调试,结果错误。- Y) q$ E% a: m" N, \

* x8 [4 a& u* v/ ~0 I
9 J, _$ _: Z" d退出cv后,显示的也错误。
2 E9 O0 ]0 e. t . A& ?; d% o/ Z
@, r9 U* U3 q在td中,结果正确。+ e& M8 b6 h% b4 y X. h$ V+ W
& a1 }! L, s6 C5 b: e
1 b( z9 s6 w0 X$ r4 N5 N# k; R* L5 ~7 |& D" q! g: H; ?* C
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么$ W) |- ^4 o# Y
2 R; W) P5 p/ U+ a5 Q8 a5 }% `& Q2 g7 c5 B6 Q
代码如下,请各位帮忙分析下,谢谢
5 J0 d& [2 w( ^+ E* _5 Q! L
2 E: N4 Q8 e4 Z% F' K7 k: \3 @8 S.model small6 ?5 J: l8 b0 L5 b* M0 J
.586
$ i! W" X4 L1 j g: k.stack- L/ G2 }6 L/ Q3 A
.data- r m) J/ }% A& f" v' w8 M% V
cpu_str dd 4 dup (?)
) V; T4 K+ v$ O8 V db '$'
4 @- U4 @, k2 r/ C.code# R& N% ^' L" M( z1 ^* l2 V
start: \( u: m S! Z% V# d4 ^
mov ax,@data
+ z; Q `" V- u; ]4 P/ F mov ds,ax
- r" ~+ z) O4 _8 Y, P+ @; L4 m mov es,ax
3 K% h$ {% }6 S( u# H
% C* L7 f1 ^. v9 x3 x; M, y mov eax,80000002h
1 v" u8 W; E. w( M/ | cpuid& }& H6 E6 Q/ g' z% h
mov cpu_str,eax& S( X. Z3 h l3 S) H4 }
lea dx,cpu_str
! v6 H: n+ `8 O% U7 z mov ah,09h5 D7 i3 W* l9 [& K
int 21h& i3 d, V$ s% x5 g
mov ax,4c00h
- ]' y' v; A& K' h7 M int 21h. b8 r, ]; U6 N) x1 Z7 w
end start |
|