|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。 R, F3 n, U `# [
运行环境:
& Q! K& R" b: b! `masm 6.11
( V8 v2 q# n9 m1 g q2 Btasm 5.0
7 U& _( B4 z& N& Iwindow xp
* W* c9 @7 M6 v J7 r; @: F/ n在DOS下也试过了,结果相同。
$ p3 {4 r/ D) T8 d' b, F" y9 ]9 W7 q$ k# z
正常运行,结果正确。) T! W$ ^: `* N A
1 t7 `0 z. E3 a( G7 L- h2 i s
) ]8 P" ^# ~/ E7 a2 O9 t在cv中调试,结果错误。
0 f3 \2 b& S# p
% ~4 c3 M. r. _. s+ Q! A$ c. G1 X1 S, s! y5 H
退出cv后,显示的也错误。" Q8 S& E a8 P& e3 J8 j0 g
$ t7 m n2 c, [5 I2 @4 `3 g
; R8 q- U( a& }$ K, b在td中,结果正确。$ ?/ `! E0 ^2 z1 O

2 h& h# N; Z9 C; j* A
: k& \* V2 e- v- ~/ H4 z) Z' L! O& \( b, F. U# ]6 T5 p8 f
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么. m% I) o6 Q R+ l; Z
* N" h e' v. O1 ]) J4 [, \" I" h4 A5 g' s
代码如下,请各位帮忙分析下,谢谢
; {* b/ q5 m8 q0 O4 f
& P; R' ]% o# q3 j.model small
, `3 }2 M+ f& r: G.586
* l9 D; [; R) m+ z.stack
3 x2 ]* Y1 Q Y5 V4 B" y.data( d+ z% E5 g" s
cpu_str dd 4 dup (?)
' w& {! ^( m. q( j7 Y# D) l db '$'" r+ @+ u9 O" D3 n0 G' x w% ^
.code# i( ?3 |, ^* N# e r
start:& c0 ]0 J5 X: [" K
mov ax,@data
% c+ |1 s, V, D: c+ g+ W mov ds,ax I2 K# ?$ ^9 ]+ x
mov es,ax4 n4 n- N0 y( N. Y% T- X. D* A
' J3 w( h8 a- ]2 R/ u+ i mov eax,80000002h
4 B' H7 D; B" \, B- A) l& }: W cpuid
# q7 X- I6 t/ J# m) R mov cpu_str,eax
2 r7 @+ P: b* ]9 \: R& M lea dx,cpu_str
9 r: {5 n' f% v4 F+ H mov ah,09h1 m+ [8 B9 }7 w! x* K9 t/ R
int 21h: d* b& o6 h: k' ^: s
mov ax,4c00h$ `* O! z* w+ S
int 21h
5 F3 f7 s4 w- h" f8 _end start |
|