|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。8 \2 h& `3 X& m$ j: T1 i5 l
运行环境:' }4 h; @; ~1 L: @8 r! [
masm 6.11
2 n7 ^' o: C# R* d3 ptasm 5.0
~5 ~$ e+ [% c8 ]window xp
; c0 @( i8 G3 h: [) d. o在DOS下也试过了,结果相同。6 S1 q5 q% C. V
3 O& ^; x7 ?" V9 F正常运行,结果正确。
6 ]+ V0 X( U9 O3 V
# ~9 I8 W! V3 S% S
[+ H+ ^/ I9 B& d9 w! e在cv中调试,结果错误。
% r% Q7 s: P; ~/ o + n! x* \3 i+ r' x4 `5 D) \
& `* w4 p9 m: f% S/ t9 U7 O
退出cv后,显示的也错误。2 L E. y7 i0 \$ {' g- O' m% d

) m6 w5 r5 L- ?+ j
, M- G$ k. p, {" M; N& Y在td中,结果正确。0 X' n: h. E% i

& v) ^' b$ y1 [% }/ c1 I o' e: K: y- [; N" w6 Q* M
% G# g9 A2 z# }3 b
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
, e. r: r! _: }& v1 @
# q- N5 o0 `' e' r3 s6 t
- C2 B) ]0 D* X4 ] z1 a) S) X代码如下,请各位帮忙分析下,谢谢( s4 i Z+ m/ d2 o M: O( C- B
" a a- d' T* A3 }3 q5 c6 \. {- e- o
.model small: \2 A- C% d$ D/ w' F
.5860 ]1 r) k* z4 u2 x
.stack5 ^& M) N, r2 r8 [0 H
.data3 R3 t' N2 r E
cpu_str dd 4 dup (?)6 T' m- H2 f- }. I
db '$'
" c& v- ?* E) F, C! \" m.code
W& q7 G# p! M5 m. rstart:* R7 k: m Z/ u2 ~
mov ax,@data6 f" |5 h9 X) d" X8 s: s" a* C6 n
mov ds,ax
" i' v0 C* r5 g2 X4 d) S/ c# ]; J mov es,ax& L' O' u% f& N7 @/ d/ A
, t; V4 g; \: x
mov eax,80000002h8 t+ c% q# D( O+ y1 v5 S, @
cpuid
5 O& h0 P0 b& @ mov cpu_str,eax
) l$ [1 h( A6 r: O* X/ r2 T lea dx,cpu_str2 g5 k/ h# m9 ^0 C, `
mov ah,09h
* f0 y0 E* P S! c/ v! ^$ Z$ Y int 21h
9 L2 |; R" Z- `" ?6 Q0 a7 P" U# y mov ax,4c00h$ l1 N/ G8 o. }- E- g, z4 \) y
int 21h
1 W, u' |' o5 m1 v" X% Xend start |
|