|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。
; Z* {+ h3 w" T0 H( Z运行环境:; a% J9 W) L# }
masm 6.11 Z; X! \- E: b
tasm 5.0+ q% @& f% r: v8 Y7 F. J. B
window xp/ E2 D, M; k& D/ F
在DOS下也试过了,结果相同。
& q$ w4 }1 W% d- L7 x; O3 m7 j6 {0 D8 g/ v& [) ]$ r. G" C
正常运行,结果正确。1 _" o l% P, ?- d6 Q" R1 b
X* _. Q% X* |5 f! a) k( C$ J5 X
在cv中调试,结果错误。
7 s& p+ v% _/ ?$ C- M
5 U- Q1 Y' b2 _9 p+ ]. @6 H) p& f5 H6 J8 S
退出cv后,显示的也错误。" v! U4 N! m1 i2 E& {# x8 r/ n
! C- O7 P2 h( |+ K; e- i
) y* L! u0 ^8 K) v在td中,结果正确。
; I+ U0 E0 I! f2 T: H. ?3 D$ r+ ~$ O) U8 }( H3 d" x
8 G; i9 `& G' f4 p3 ^! k* {/ N
3 ]2 t& ?, b. g. G" }0 \1 @还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么: f2 p6 ^2 n5 d# K9 U a
, ^: l/ q" q- o3 b* c' ~+ p3 L6 V! k" `. E" [7 r3 ^3 ^: H
代码如下,请各位帮忙分析下,谢谢0 [' o, A. J1 f9 M; d/ t
) t6 h9 |+ o7 o$ s& N) t/ b B4 O.model small
0 R; r' {) D3 N4 H7 S6 X& G.586" }" |' V3 e& h% U) n
.stack
5 f! u' Z9 Z8 N8 Z$ h k c.data% g' F2 y" |2 t; g2 q3 F; g
cpu_str dd 4 dup (?)6 z! A5 U; u6 K% {: j
db '$'7 u5 U: t# D) O/ x7 j. ~
.code
+ [9 k' h7 ~) I- A% e8 @start:
: Y5 }' V" _! H2 L mov ax,@data- a1 z& z' X& i( ]: Y% q6 Z9 p
mov ds,ax
( b/ g; t% [1 b1 I3 l J mov es,ax% ~. z# I' G1 }7 _
3 N6 Z& ^$ P/ w( ~% _ \1 ` E' X
mov eax,80000002h5 y% ?+ G: ?+ E" w. j! ^
cpuid- P6 x# n/ }$ A; j8 f9 [1 x
mov cpu_str,eax
8 e4 b6 M' @& R! w: l1 W5 T) G lea dx,cpu_str
; l$ r" g Z* b' f% i mov ah,09h
3 z' U2 y; x3 t0 g8 d+ p1 r5 ?. A$ { int 21h g/ ~0 [+ d4 ?
mov ax,4c00h3 ]+ p* r( _% d
int 21h* h \& O% C# G- q
end start |
|