|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。2 p0 S {: T$ p- M% a
运行环境:
1 K/ H8 H# O6 h) F6 j0 bmasm 6.11
! F) ?" P4 N" V& rtasm 5.09 k' K) O3 V t0 H( Q
window xp
) ^& q" t( i0 e; m w( B/ r ~在DOS下也试过了,结果相同。' g' W% b! c% }9 F2 e8 @4 c2 B: |
; I* V! K5 K2 [
正常运行,结果正确。/ u/ z d7 y1 }1 P3 {( h

9 ]( e4 }# g- P7 d
: A8 \+ }7 E* B3 y! f9 i& h在cv中调试,结果错误。2 [5 @; f: N) b: f
; P& [& H. B* E
9 k( Q& `- E" V; X+ _/ k; p7 X2 W
退出cv后,显示的也错误。
; r. D$ M+ i% W ~ , i( |, |, c% ^5 s% x, c+ L
% D% n& Y* A% L/ U5 b2 E在td中,结果正确。
1 n0 h4 I7 t& [
+ p1 ]5 N# g' B" Z2 ~* i5 U& l+ h" [3 r
" |8 T* [1 d' X* V) q. f4 c, E还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
3 x6 p) z& \% I) M/ t, d* s+ j. E/ U5 r4 _& W1 l6 }" U
. t7 O! J3 U, p5 w) K8 o S代码如下,请各位帮忙分析下,谢谢
8 |1 j, m3 R) M7 Y1 O0 ?& N0 t: J. ~: t; Z
.model small
* [1 ~3 {! }, z5 X.586
2 k# ~& A3 A9 H k7 i+ P/ T% g.stack
' |- E& T9 Y( a.data
5 Q# h" F0 I4 T$ scpu_str dd 4 dup (?)
; z5 ? x( X6 j, l" I, W1 [: Q& Y# | db '$'
7 M' }' Z0 s7 H4 N.code
# _" y6 E& R' istart:
0 m" x5 L a- P- Z mov ax,@data7 @4 m8 p& U% ]+ q
mov ds,ax
- x6 l: u; U% A& ?+ @ mov es,ax- \5 l# N) ^9 V' x7 K( r: o+ ~& y( f6 w
0 c5 x( x5 O7 ~0 J
mov eax,80000002h
7 }! r" C% A- P- I" W cpuid
' [3 b* ~8 l1 b1 @ mov cpu_str,eax
! z- l0 { j. p9 ^4 B lea dx,cpu_str
q4 l& G3 t0 \ mov ah,09h
8 v9 {, t# j2 o! h! b/ ]& F2 o int 21h5 L/ n6 T, J" p8 r7 U* j
mov ax,4c00h
8 l' p1 _ K+ | int 21h
% F* H5 N. d; Cend start |
|