|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。5 d( P2 H8 S7 |
运行环境:
, j$ b$ k a2 @8 c. [" T3 kmasm 6.11
5 p$ G) V$ d; @+ w7 |tasm 5.0
: P/ x! J- V5 ^# t2 p4 l+ c+ Hwindow xp
; v9 {# ]) f3 [, [: p& ]" D在DOS下也试过了,结果相同。* r- H. x: m' k& M3 k
3 Y6 y$ l6 V2 l! D# `正常运行,结果正确。3 w9 g( t4 S2 V: S9 {, o0 Y
: D& k& _ X( R8 E9 o. t( x! h
- h* }: K2 } o8 o+ w7 t3 A9 P
在cv中调试,结果错误。- a9 k2 c. w9 ]% | |+ ?% }
5 ^6 q" e* W9 @" F/ B
# R3 A3 c7 c6 |3 ]退出cv后,显示的也错误。' t f4 x& ^5 }' T! P% z5 G2 }

& _0 V8 a: j4 g0 I& L4 P
: T4 `* U5 o$ b4 I/ }: e在td中,结果正确。
- _5 l3 L+ q" G& Q2 ?5 W' \) t " m3 d% A" ]7 Y. ~+ h) }6 Q
1 E* [( N9 a" g' q" t" e
. G b2 T/ \5 `% P. _还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么/ M6 r* g$ k1 p$ s1 j
! _% t* i7 V V: z7 v4 Q
^0 y2 m9 E' o$ ^" ^0 v6 o代码如下,请各位帮忙分析下,谢谢6 ?; O0 Y6 f1 L! j" t5 u3 V
N5 H( `+ ~4 Y. b' j Z
.model small, O, L5 s R6 [9 k w) A
.586* q0 e# A& R+ E/ i$ V$ _& g
.stack) V: t+ Y/ Q4 L8 w0 |/ \
.data) y9 e; w/ J5 H9 v# Q
cpu_str dd 4 dup (?)- Z: m: I8 x' D- G" A: Y& ~
db '$'
# v0 `6 D7 Q7 \* l! V' ]+ F1 R.code
- \' ]: F4 g5 J, ~# p6 ystart:+ n" K; G) l) K2 ~% a
mov ax,@data; g2 ?0 ?2 o# f6 ~, m
mov ds,ax
8 j; Z$ z8 t+ H# q7 `/ P2 D7 j. @% s1 _ mov es,ax
8 v' r8 z, p* m6 m2 x" B
4 V- ]2 Q' ^0 I7 v mov eax,80000002h: o- D* W% U1 H
cpuid
! b# H6 C# }5 ?0 W2 m mov cpu_str,eax3 }+ G7 C$ }! q, ^, f" _9 v
lea dx,cpu_str0 J( ?& u+ C- m% N) T: m
mov ah,09h
& d( Q0 w; R. J$ \ int 21h: R5 }8 M" q9 D6 b* n; G3 d v
mov ax,4c00h
& h, b; w* g% T9 |1 g int 21h$ z9 s) g3 y1 X9 j
end start |
|