|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。; n8 c8 Q$ U, C$ b! M/ _& K1 J
运行环境:
$ ^) K; A3 L$ R8 U% |0 e+ pmasm 6.11
; E( Q" \# r( a& j% o& stasm 5.04 W' b; f& S# y1 |+ x2 C2 P
window xp( x4 L. t7 A H4 @* v! \
在DOS下也试过了,结果相同。
2 M2 d, a8 p# b+ `
+ u0 m. k0 ^3 F正常运行,结果正确。
2 I* ~' v4 f, y) ^
+ E* \' ]7 P! k( h# [# @- Y7 ~1 p* t+ U; h, F0 r
在cv中调试,结果错误。' L7 F8 K8 P/ D* Q' x+ j& A4 h

; ?5 E/ H: `2 V; m) T* b/ ^3 e d! R$ d
退出cv后,显示的也错误。% D' O8 c3 H& I

4 x* g3 p8 V+ i2 `9 K) s1 T1 ~# z U0 j0 f; T, _$ _; @2 K
在td中,结果正确。9 e6 ?+ J) E5 s" r

( w) J) S& U) e7 h
8 Q. m! m2 a& Z6 ?
. T; p, h8 S! h7 D- M U还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
# l6 m" Y3 h. o; G& Y! z; h% C O, H! T9 A
0 k6 S. y# g+ g5 x* o代码如下,请各位帮忙分析下,谢谢3 s+ R* {- ~( k' ^8 ?
2 [7 k t* k1 M m N5 x! ], O
.model small Z+ n( v2 `# c, D4 v- R
.586
1 G* s8 b' r+ V.stack
/ f. B6 T' U1 X- u0 k9 I J.data5 f) R! p) g7 s1 H
cpu_str dd 4 dup (?)5 [/ ?9 A0 E7 q! W9 \9 K+ y
db '$'
- M$ \( J/ Z% D# `2 l6 J.code2 q, X+ r" A3 ?: v4 c
start:1 _4 i2 o! i3 f0 W
mov ax,@data! Z, r' z# |! a4 ?( X" k$ w
mov ds,ax
/ C$ L- r7 Z+ C. s, ^ mov es,ax! F. t8 \6 I6 _
, G% L. O2 E1 Q) t* T6 ]" [ mov eax,80000002h
5 ~% k8 {% Y! e" Z! g2 T cpuid
8 Q3 k( O: u5 u mov cpu_str,eax
z" p1 b# Y# r9 i lea dx,cpu_str# c# \4 i' T1 Y6 G, k! w$ y
mov ah,09h
8 T, b( c* `# c7 h& x int 21h. E" B- Z0 _% \/ g5 ] X( N
mov ax,4c00h
& n4 q" Q; e4 @3 f+ n int 21h* B+ D% u0 U O$ k; Q5 Y; B, V
end start |
|