|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。
$ D8 `; p" m4 v% S) X+ f( w- d运行环境:; H* N: u2 H) o+ [1 e
masm 6.11
$ n* M- i! `/ i3 mtasm 5.0: I4 B7 T/ l* Z8 e- {4 Z
window xp5 I( g* s2 Y& K
在DOS下也试过了,结果相同。0 O) j/ d* v, _8 m
. \) X; w7 @! r8 |7 A+ t7 b4 w3 I正常运行,结果正确。
9 l# K$ `- t3 ~ $ f: q% W* ~9 e! {/ V
& e6 \7 s, c+ c% T在cv中调试,结果错误。
* u* B3 o; H/ T* ~5 b: W# H; A ' r" z `+ c' U7 i' w2 j
- i- \- S( e% p+ E9 c+ Z退出cv后,显示的也错误。
1 A' E1 |5 h o% m( W, \
" F7 `# r/ {- Q4 H- f, Q1 N0 o' \8 `
4 H/ B$ o6 `/ Y! k在td中,结果正确。
" L; ^% `& @* a5 ? a/ P, b4 k ; c9 W8 O5 f+ ^; r* M
3 s- r: o9 g' D4 w9 L5 `& a1 | o8 V8 w. J; o2 e3 L
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
3 L! o5 E- }4 {. A1 j' u1 P' f4 ]% `/ n. k
: U- C7 I Q0 N代码如下,请各位帮忙分析下,谢谢8 ^- F8 z8 e/ A- n( i6 D/ z* I* o; X
+ e. J) B& E5 c) U- p2 q) ]
.model small
9 O: G/ G9 `( o2 K: T: _$ A9 c.586& [ c$ V# E( [6 p" R) r5 ^
.stack
- b: @5 h) r3 l7 ^1 Z" L.data
. a8 }/ J8 X" _ I8 F8 xcpu_str dd 4 dup (?)
# b0 F4 @% d7 J1 u db '$'' w* e9 b7 h( E* W1 N/ \6 W2 |) F
.code
1 W, J G f) t' [start:
+ a( u% c; L7 o( ^6 _3 \1 C mov ax,@data
$ u$ D, j4 _# B mov ds,ax/ O+ `- p6 N$ b, v& E o
mov es,ax
* E/ P3 V1 z+ j& ~ ' K0 C* i* c$ S) {6 A
mov eax,80000002h
. N; T5 { X8 s$ l1 ~4 ~ cpuid
" |! Q- s1 q- A% x) P7 v* _ mov cpu_str,eax) w: M/ Y( ?* ^ r
lea dx,cpu_str# S9 H5 U: A8 T
mov ah,09h
' s' g6 ^4 q: i: H int 21h
2 E. r* z( i/ B; [3 G4 h) E' q. X mov ax,4c00h
6 q6 G b# R3 `/ ? int 21h2 m2 y2 X4 p+ B- s( ^2 w
end start |
|