|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。
* P+ b m. {2 C运行环境:
$ v! ?+ k9 S% U/ }masm 6.110 C0 k5 y. y. G8 l" q: J- R% W9 _
tasm 5.0
2 r$ L m5 C; k! @2 k8 d; zwindow xp
5 E3 H; E% [. H% J5 Q) H' u在DOS下也试过了,结果相同。 s! x1 e% i. A, b* f: g3 z& w' \
' _9 F5 J+ H( H j& J6 `' q
正常运行,结果正确。
. ~( W. G2 x% V, h+ c( c5 g
* q4 _7 O$ ]0 H- ]0 R3 o. m4 [$ t0 K, }0 H4 B
在cv中调试,结果错误。
- x7 d+ `! E+ ^- E2 c9 C # I& M. T# N- a' M) B8 H6 T7 W
) [% y; x; o' H& F退出cv后,显示的也错误。 ]+ T* H- Y% ~% z/ E) K
E& w' u6 l% x. [$ \
( |* U0 U* w/ {
在td中,结果正确。
- i1 P# J+ Z! }3 }9 q1 ]0 z+ O5 W5 \ ' i- r; b# m; ^$ P
4 _6 L( _) M1 i) ^$ i. O
8 U+ m) K' l) c- D, v+ D! P, d
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
1 H% @& M V& i5 q: t! d) V- P. \+ T( c* I4 p7 M/ w% Z) U+ f1 J
3 Y9 q! A0 }3 a. n
代码如下,请各位帮忙分析下,谢谢7 W& [ s0 Q H) X* ^' c% A1 Y3 b
5 l N! d$ D) g% F" j4 \.model small' L: Q+ e. G0 r' @$ t* r9 w
.586
4 U6 }! Z1 `& [' W$ H# `6 B4 A.stack6 E5 V/ d, [$ }5 V
.data
" z u* s0 |: J4 ]% v; Qcpu_str dd 4 dup (?)$ o& q* Y5 |$ \) j; n& X+ E. O/ K
db '$': n. |& D8 i8 G. l' z) n
.code
7 J& ?5 p; f3 O2 x8 Wstart:
. E0 f% @) f- O: t mov ax,@data
) i" r8 M, W8 L# e+ x: V mov ds,ax& I* r4 m7 `. |/ _, @9 r4 I4 e! W
mov es,ax7 I, r# Q8 i$ y; G
4 @% V! [: f1 a mov eax,80000002h
. J G# p- z+ o4 W cpuid1 U; @& Y6 ^3 r! I$ n( V, R8 w
mov cpu_str,eax9 \% _% e/ R- ]+ Y/ s
lea dx,cpu_str1 U1 u7 k' b3 X7 } |
mov ah,09h
* U& |7 k) ?9 v9 o, @+ Q int 21h2 J( I4 I, Q2 S. _5 `; _+ A# e
mov ax,4c00h) t, y5 W9 c. {* H, O" M& _
int 21h ]- y6 _/ Y }- S5 ~
end start |
|