|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。
1 `7 c L& ?" z; I0 v8 W) ?, T运行环境:5 s* f2 A1 t9 c, b4 m& Q! ]
masm 6.11+ K/ u, r( p$ F2 x1 {5 L
tasm 5.0
3 i! t' F0 m3 ]+ T: j; Pwindow xp
) B# W; D4 Z: g; G5 [; L在DOS下也试过了,结果相同。9 p* W, f' r6 ?: ~: Q
/ L8 G7 B# y' S: _) v0 }
正常运行,结果正确。
0 Q) p3 _& V, ^" }; V1 X$ ~ s
% h K6 K, b1 V$ F. D! {) M3 d: a# P0 n3 I) Z
在cv中调试,结果错误。7 x* p* e9 J5 l7 q; f& X

. s f0 s! e [* ~5 s5 ]
! v% G, y; l; t1 d9 u: m退出cv后,显示的也错误。
$ E! c6 d' s! F$ U" ?
. h. p' d/ H; b
% c& F/ l: E6 t5 q+ j& J( }在td中,结果正确。
9 K6 s0 x' q) k U: C , t! M5 J1 A2 J1 |4 g0 c
4 P) u! n% @: ]5 t1 A. V# T3 B* s) [2 Y6 o/ X1 W8 i. M
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
. n3 R" W! ]+ ^, z/ G
1 ~6 `; a2 D7 t/ m) n( v; R$ `
. [! a& w/ P' M5 L! j7 W0 r0 |代码如下,请各位帮忙分析下,谢谢, h7 |3 W* Z! p" l9 _, D
0 K0 Y4 I( e+ @1 d.model small: E( f4 M/ [3 g! [+ b: \
.586% z3 x( V! h4 B1 J' b& P) X
.stack
8 m. U" z/ Y1 p6 _( j9 d.data
# A* o- B, h F' e' \" |4 Fcpu_str dd 4 dup (?)) ?4 G4 A% o. K! `2 c! ?
db '$': l* s- A# P) U) n& W$ B$ \1 z! x
.code
5 O& l! Z% W6 g5 ~) C) Ystart:
) u& U+ E& A; A% y5 e( C mov ax,@data
: @0 p# ~3 K, O' e& k mov ds,ax
$ j0 @6 o# y6 Q& U4 g1 @+ J mov es,ax
1 M8 V1 j0 S% r! U, j( ?/ C! _ : G+ ?% R+ O! X9 i- m
mov eax,80000002h
0 c9 I) j) d% m- x cpuid+ S2 |4 V2 D- S P4 r8 U0 q
mov cpu_str,eax
( R9 a4 @: Q* \$ U+ y2 m lea dx,cpu_str2 M+ N% i/ N7 P" Q
mov ah,09h( Y5 c0 d1 O% B' ^
int 21h9 ^1 x- M2 w7 a) w1 b
mov ax,4c00h' W* S# R' q, p' I- S
int 21h
' X. `& ?. i, [* K/ i! Cend start |
|