|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。
- C$ h1 J# l) Y运行环境:3 L3 T& N5 i; D+ M& F% y4 E" J5 t
masm 6.113 A0 [( x7 j! [0 d& A$ L3 v% j
tasm 5.0, J/ i& n& b* r" v3 i, }+ B
window xp2 U$ ]. b) q+ C; \8 J# F
在DOS下也试过了,结果相同。% u% t4 C8 F/ J% a# t
9 j+ J/ W0 Q6 h3 }# p! \8 O5 y& Z
正常运行,结果正确。4 b v; g; z3 y
( L: K4 h- W6 ]4 z/ T
0 I0 D9 x: h& p5 ]' y8 F4 h在cv中调试,结果错误。/ x+ z3 _3 s$ }
* Z& t3 H; s$ c) w; T
4 @; Y5 x; U. p; W9 e8 S- v$ k N退出cv后,显示的也错误。
; O( Z; G" p6 r5 W; T% t9 T3 |+ F$ y& `5 O5 n" ]8 _8 P# z8 u: R
( q' t; X6 d; f4 Z- _; U! X [4 N在td中,结果正确。
& B' G d7 ^( g. G$ j) v R. W6 ~: @% P: g% Z
9 x( v- j, E8 q8 e& B h
8 X) d& V3 c9 P还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么$ N b6 T( a: {0 l$ s1 G" W/ q
) c) l& j5 g( V' v( ?6 |( S
/ x/ i" Y/ o. D. S代码如下,请各位帮忙分析下,谢谢5 s( b; i4 b) }, L
$ }! b0 O3 ^' H5 u.model small: J* q6 K, j2 y( o! ?
.586
* y' S" E2 H; N+ G5 n: I8 \. R3 M.stack% I( e& d P( T0 P7 J2 H
.data1 x! Y+ R; I; |
cpu_str dd 4 dup (?)6 E: y: u7 ^& F( d" L9 e8 w
db '$') y5 Z5 v O1 g5 C& \
.code
( m p* H* g. q- N: X) T: g) }start:& T' O& h9 S6 t; H4 ^7 @
mov ax,@data. c0 b' G) q: W6 Y
mov ds,ax* x) J: V* l9 S2 c) H) U* y/ I0 |
mov es,ax
/ _# e; ^3 b/ A' L$ { M* Q4 I5 K/ n5 Q4 c% u
mov eax,80000002h% L" r% g- m3 [ ~' q
cpuid
, ^. V) o3 `+ [0 Z mov cpu_str,eax' O! b# Y! {' u$ H6 }- V1 A
lea dx,cpu_str; n* O+ M! M: b5 f
mov ah,09h
& r$ T' f% t! B1 J u1 J/ ? int 21h
6 ~ m- X6 z% W/ Z1 E% e* H mov ax,4c00h. p# @+ _4 T, n: `* J9 C
int 21h" W: j) N" Y7 S) q# o) S
end start |
|