|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。 X' S0 [7 }) L0 L) a3 d1 f
运行环境:
$ W7 Q. V4 g# W1 C% H0 y$ @masm 6.11
5 U& D: N' B2 E9 e8 M+ utasm 5.0
S8 W4 G" t! k: C) B1 R% O uwindow xp2 _2 O$ W! h& Q( C3 P* U
在DOS下也试过了,结果相同。 A5 I+ `1 F$ }* E# k! S; f
$ l- K. d+ p, s" y正常运行,结果正确。
2 U! |" C6 }, k+ D! ` 6 @* t" t8 ^$ V2 ?/ T
/ k$ C& ^4 G4 B4 Y3 h3 e. _9 H在cv中调试,结果错误。
7 W* T5 O) K$ r
& V, t' t6 E5 d! u3 X1 `8 h$ S2 G6 P& Z3 H: Y! e+ D
退出cv后,显示的也错误。7 I2 b7 u9 i; d8 G

9 R8 Z' o' p/ }2 M' R
' D& z0 |9 p, c/ X U在td中,结果正确。
% `( U; `! ]3 [1 s1 ~
3 k& u( L, B9 m3 H, h. h2 Y! ~! a$ g V+ q" H3 J
+ H, P. z7 i ?还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
' y6 D7 P8 c, L, R# D
5 O. P9 ^' x4 H% J0 v
5 E) o& g4 n: Z/ ^# S+ q$ ?. G代码如下,请各位帮忙分析下,谢谢4 ]4 O* L& Q/ q- x
) X' ^! H3 z5 k# |1 g0 E! H z" S.model small
" C; H5 J5 S! L" S; p5 v.586& w; u9 Z6 F d; {/ h# @
.stack' ]0 |" y$ u v* g
.data g3 i! J& ?/ b$ k* _
cpu_str dd 4 dup (?)1 H, D% Q; l8 Z4 M/ o. I
db '$'
0 C4 y. U( J3 r3 \4 y4 g.code
- p0 w( O G/ a: i+ B$ r9 Fstart:% z$ E {, p# O5 G. @& Q
mov ax,@data
: v4 p5 _1 w Z# y0 @, | mov ds,ax
- g6 y9 i3 ?, b3 L8 j9 k, e mov es,ax+ s v; Q, j, s2 b- v0 G# v
2 E$ i d" J. F mov eax,80000002h1 _0 H: p# W6 X" d+ _
cpuid& q9 W/ D+ R5 S1 m% J
mov cpu_str,eax( S3 V8 r9 S# y; o, I" K
lea dx,cpu_str+ y' t* @/ h1 l0 s
mov ah,09h
* m( V3 A+ W/ v8 ?9 H" ~ int 21h
! d2 j( J, {3 k& n& @ mov ax,4c00h( h# G* Q% B: h) R
int 21h
9 o4 f8 E0 T- A+ e% I+ a/ uend start |
|