|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。
% T9 l6 d0 s2 I: s" P% Q. s1 i运行环境:: e9 V7 u/ z9 o' D3 ~/ G( j1 g
masm 6.11
. B0 l6 v1 Y( u1 Utasm 5.06 D. p ~, K' c: {5 d/ i" ~7 _, }
window xp+ p$ l( f" b" i- p8 P0 A
在DOS下也试过了,结果相同。
6 s# R% ], C R, F; \1 d
+ \, }* Y8 w9 l0 L; J正常运行,结果正确。
& ^# v/ u% _) K & Z0 d( Y8 `$ W. L( w1 ~
' O4 \' n& T/ f1 }
在cv中调试,结果错误。
2 [6 x3 r/ l& u! }) V + @7 Z5 l% f3 R5 p
7 |6 L: ~% H) M5 a4 B$ ^* m* j( G退出cv后,显示的也错误。
$ C( D; }9 Y" `. M$ Z& _/ Q) k ' u! O: b2 G4 h" D: M g8 M
W4 c( N+ e7 s$ n在td中,结果正确。* X& R r# R& r3 ^

# K5 l* c) Z% C" Q
! y1 C' ]* N3 P2 N: X7 P
6 c) ^: A$ v" Q1 d还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么' ^! j3 T0 Q: S/ p
5 s- R, x; l) d8 [& C7 L2 b& n5 ~) W
2 D' n6 t: w9 X6 g B4 V代码如下,请各位帮忙分析下,谢谢6 t( D; S5 ^, v
' R" K8 j: W4 R d8 q, @.model small
5 s$ Q$ Z- v, x1 _.5863 i+ n' d& x* J% Z5 G+ m
.stack9 G; u9 @& X R2 j$ @" L
.data
% t3 ]+ f5 Z L" Z4 i; y* Ecpu_str dd 4 dup (?)
M( ]. a, }4 a# z& \ db '$'
+ ?% G+ W8 K7 w: T.code
" C% G- z6 ?7 K. r6 o" R$ vstart:
4 u* O8 v6 }+ I, } mov ax,@data+ c3 T8 L) t- Y* a' ^4 t8 ?$ E4 x
mov ds,ax( I0 k" D6 W |0 [ F8 d6 }' t) H
mov es,ax1 w5 S; U7 G" j
1 j* Y/ p* F1 Q# E
mov eax,80000002h
; y' C( Q, N9 d+ x cpuid
1 `: ~1 }# @5 B2 r% P$ g1 J/ t7 B0 v mov cpu_str,eax
$ G8 W8 e* N! ]) n3 d lea dx,cpu_str& U, x) @0 h8 N4 D y- i9 {) x
mov ah,09h
6 b1 j d, `, M5 |) ^ int 21h" A) n4 }! q3 E- M
mov ax,4c00h
$ K) s+ T4 ~- k' _& ?) j- ] int 21h
P. Y' ]; a" C6 C" send start |
|