|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。
6 Y, w4 o1 Z2 Y" S. b3 U0 s9 p运行环境:! T7 U3 ^( H. B: v+ y# }
masm 6.11
" h& B& w/ n/ G6 ]tasm 5.0
; h) W' P2 F0 Swindow xp
5 \, s# h1 b5 n6 |8 _8 i; `在DOS下也试过了,结果相同。1 K3 W& Y7 b: V- k$ A% \
, m6 T5 }/ P! Y4 [9 ~
正常运行,结果正确。
! P. U4 J) c3 E
: X' ]8 F* I% ]4 }, }* \) @- x6 N3 K
在cv中调试,结果错误。
5 @5 h) u7 ^ o; @- h5 _$ o 0 e4 S# E- \+ V% G
) M" I2 s- s% p5 n E退出cv后,显示的也错误。
. }* S0 N& j* k# z
7 U5 k7 N6 Q: O Q9 u2 g( e0 I. i0 N( ^9 k1 Y# j
在td中,结果正确。% @/ Y1 h9 x0 w, j" Q4 u2 h0 G

# M: @0 s7 W% v0 L2 E: C; d! D; H* W
e" Q# E8 G. [
8 f3 L# l+ U N4 `# H# N还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么' L$ U2 D6 O& @1 q" G
2 V @$ v$ C* t, a2 X+ M: V, t2 A; z, Z5 T
代码如下,请各位帮忙分析下,谢谢
4 W* _( r: m9 W# k- ` a" k6 g/ @$ |5 x3 X Y; Q: k
.model small2 c- z5 D4 k/ J0 }0 z. w2 W( s
.586
) |# r8 j5 ~1 W ]0 I.stack% f% W4 |8 R: h# [% l' N: P4 T
.data& v( j- L4 n' V6 B2 e- @: @
cpu_str dd 4 dup (?)
9 h" v; u% s$ ^ db '$'5 Q& ~' K% a) a% a& v: g+ t
.code+ Z# l) H9 U' ]/ W# ~! ]
start:
* U0 o! l) N# c \ mov ax,@data
9 u, m# L( y% h( C8 @8 c mov ds,ax
. o- O1 K+ |3 g* p# X' X mov es,ax
& Y1 J! P2 _8 a4 b- u; k5 j 9 j9 k/ V7 S% ~2 l+ ]
mov eax,80000002h
' q4 w; X: Y/ R# x( V# J cpuid
. l! o$ J! p( h4 E* @ mov cpu_str,eax! U& G% G+ E3 h; x- T
lea dx,cpu_str
3 m& u. o% t I/ l+ O7 O7 D mov ah,09h" D- q5 p, J" ]9 x; p# w* m
int 21h! m$ e; H7 a8 ?) ?# f, k
mov ax,4c00h5 J1 V5 P# w f5 ~. ^9 H
int 21h1 ^: I4 R3 h: G$ B
end start |
|