|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。+ k+ T/ A% l. G4 ~8 ?
运行环境:7 m/ n4 A9 S& G! G
masm 6.11
# ]' K; e9 r, wtasm 5.0
! U4 J! Y5 D( c) t2 wwindow xp h9 \4 L1 h4 k6 I, k% V1 f
在DOS下也试过了,结果相同。
( D& D3 x6 M5 c$ e+ H6 [- J4 I$ t) A
& d- b! L& e5 L p% u! @正常运行,结果正确。+ M6 M h7 ~* Y% u) a; i' v _; M
- w, g/ o( J y, s0 S7 f. V) Q/ F
+ r) V6 W1 \/ b4 L7 I5 t3 [9 |在cv中调试,结果错误。
- d6 Z+ g a- }. e( b & L4 R, T0 ]0 ?/ P
. [6 H# {0 S( g& v退出cv后,显示的也错误。6 l: G4 [9 I2 e8 {6 \

' N) r/ Y% R; o/ [1 g
7 X3 \9 j: S6 H" H9 w8 _8 ~在td中,结果正确。
/ P3 o- J$ \! P 7 s* ^; ~, h% Q6 t% C
7 U% P/ i( ^: w& B. G2 ~
. u t4 t: J- K( f/ t5 k: N l还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
# e! t6 f) i/ \- I8 T: R
+ g6 t1 ]1 a$ t# K: l* n: D: ^9 c' z
代码如下,请各位帮忙分析下,谢谢2 N. Q5 g$ E( R$ g: V" W* i. {
; C; G/ Q- s) b. k0 v Z/ m
.model small
8 N0 m8 z6 X4 I: N+ x2 o6 O9 ].586
: ~0 [/ H: C7 {# p3 B.stack) ~4 G* o8 C }! ?7 }
.data
U" v; G5 Q( X( Jcpu_str dd 4 dup (?)
, w: I. _# E, Y p" v. X* I db '$'+ Y6 L$ s0 M. y/ [
.code- |$ v0 u0 b$ w
start:
4 u. Z) \% i, j# |3 C mov ax,@data' [0 K4 F/ B8 h/ m; Y3 r& g4 D! q
mov ds,ax
3 R* H! X3 p8 s mov es,ax
# s' G& K+ h8 D8 O2 {9 H
" ?4 \9 P2 X D4 @! T mov eax,80000002h( |- j( S/ [# I( A1 v6 C
cpuid
) o& [' N2 R3 ^# ?2 K$ H mov cpu_str,eax
1 e1 M0 n6 T: n lea dx,cpu_str% r- }# S. h7 G; v+ F) L4 m+ l
mov ah,09h& A7 f8 t# d( s; b5 {! U8 n& b2 q J% X
int 21h, n2 W: J( P4 H. \" K8 `4 N
mov ax,4c00h0 u) V( m$ g4 _# c6 m5 g5 M3 s
int 21h2 I5 |% \) H! ]( Q z' x* o
end start |
|