|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。
4 }# O2 F1 \0 Y1 Q. m8 ?. Q运行环境:
! Q3 M* g \4 U' Umasm 6.11* u' W$ G, L0 y8 R% ]: J
tasm 5.0) z, u0 Z Y) L! j3 u' D# o
window xp
- W; o& O% ^2 W$ | A" _: P在DOS下也试过了,结果相同。
+ Q8 N3 | d: m4 K7 o; _+ v# f$ H0 t/ u
5 r1 M' `4 ?7 I# N! b: z正常运行,结果正确。
% f( F7 e K: P
. `. h- h" D9 l/ M* {2 E+ ?2 U% j7 ]: a! |+ O" m; G% d& l( L
在cv中调试,结果错误。
5 ], K# S; m. Q& v, v 5 J" |' L8 @9 d- i: I) c) x
9 L0 z' n0 ~: f+ d+ `6 J- z
退出cv后,显示的也错误。
8 F* F7 [0 V+ I7 n& Q2 i1 Q; w
) S2 ]# d3 n- c, F8 m" _. T* P9 y/ v) }
在td中,结果正确。
+ b% [5 k& s$ W: V
6 L$ V# m6 k7 \" {7 G( ~- ?# f$ o" Q3 M i' G% _# p7 b8 X& I& D
6 ^. n8 A3 ?; K: P9 L9 H# m/ R9 ^
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么/ E, S1 P3 A: x7 k
$ O8 n b- N q- V" B f1 K, F. w2 |/ H1 d
代码如下,请各位帮忙分析下,谢谢, ^+ F/ \$ }( `4 r
+ w: h& X) D0 A- t" x& \
.model small
, M9 p3 X+ W" z3 b.586
9 ?1 W' M5 m" x, O9 L. D& a- ]: z.stack
' e) i! Y5 @( ?/ z2 `5 T.data! Q7 S3 z$ M3 g0 s& ~
cpu_str dd 4 dup (?)
5 k( W8 @" z4 i [$ D1 y db '$'
( L) K7 h) L7 n; {% P4 t. o, `8 M4 Z.code9 w2 ?6 T, @ u% K0 O, l; V! I' ?
start:$ X% M& c/ [* b0 G( v3 d
mov ax,@data
# b4 x! @& x" b2 O g! S6 _% u/ K mov ds,ax
9 Q C( q* X/ Z. v* G( W- }( a mov es,ax
" i2 k r3 Q5 \8 a& e M- Y , q# V! {, b2 }0 g- g/ Y* Y& R
mov eax,80000002h
: R; ~' Y# ?* P) C cpuid
; l5 u) V E3 m mov cpu_str,eax9 Q6 ~1 P) ]6 z5 T) ~
lea dx,cpu_str( A* M$ e" e; x1 e* K' m$ o! `
mov ah,09h$ ~ `7 K# ^8 n; g o
int 21h8 ^2 f- g$ C; Y5 X
mov ax,4c00h
4 G' B" W* P4 ]/ x X* w int 21h
! @& \" D6 A) q: uend start |
|