|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。
; ?* e* X( b6 n8 a5 v# J: K运行环境:
/ Z8 `& i' A% H2 E4 n( Imasm 6.11$ u; ~0 B7 T5 U
tasm 5.0+ O. K w! \3 J, b; }2 f, A7 f
window xp
& l& K+ o; r/ m$ _8 e/ w3 p: y在DOS下也试过了,结果相同。, o0 p3 ~3 A) k0 U& M' X6 {
* A: f' s, K6 w6 y6 V8 z正常运行,结果正确。* ?$ }* O: b I" H
# w2 O/ z/ m# k, f
/ u* a5 h' V8 R- C在cv中调试,结果错误。
2 [$ {4 q b, U* j2 X v/ {6 B3 g2 h$ p7 u2 M& c
8 A/ {0 M; X2 e& W* Y5 w
退出cv后,显示的也错误。8 c& g |- ]6 [" e, _. P2 X5 y$ Q6 u
3 Q" Q! |" [/ m$ e) l8 n) ^
! W, t( X8 w9 F# I% o
在td中,结果正确。( c4 p- p _" A2 y1 K
5 n' Y& u; W- ]) y
: _+ v3 j/ o# D+ m8 f
+ d) ~( e& |, x5 P2 @6 j1 u, \还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
g8 R' p; f3 K# [3 X
" f; `+ C2 s2 p8 e5 e- @$ g5 ]& m, }. r3 v
代码如下,请各位帮忙分析下,谢谢
4 K9 F4 ]: f& w8 k/ N, m& T: j: w9 ~& j! A m2 W
.model small
+ H, l' Q( J5 u' q& c+ w6 c O.586
3 F" }6 E. G* y6 ?.stack
( l' h1 B# o2 x0 [7 W.data
! z9 v2 R5 C0 I+ l9 C& {# |' Mcpu_str dd 4 dup (?)3 X9 o9 C* d2 L3 z
db '$'* S0 p. P4 M) c, r" q' _
.code
' J6 j+ ~' b1 u9 \start:
* W7 m8 A0 d. n6 \4 t" V mov ax,@data
( K4 U+ j/ ~* S0 ]+ \ mov ds,ax
9 P. n3 O1 M7 u M! }0 I mov es,ax6 {0 Z" ]' R) q* D' i: r" B) u/ }
+ h. K& j ~/ K) s5 _- C% R, E2 J
mov eax,80000002h
1 k! y: t8 l% L( i4 w cpuid* ^: s6 L. z' h' z
mov cpu_str,eax
9 E- M; ?: m1 b4 S' A. _5 C: W4 x lea dx,cpu_str
, Q' d% ?: \; [! @3 j+ U mov ah,09h k4 w; @5 y) J. W* z2 ?2 u
int 21h; V; |4 ^$ I# h4 K' j
mov ax,4c00h
' g9 M; z' x, w! g int 21h
8 I8 c6 A9 c b% Q$ T0 H8 Qend start |
|