|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。
; @5 T0 O; h" D- |$ M运行环境:1 S: ?& E$ C" [! U {
masm 6.11& B% V# @" p: T9 D* {
tasm 5.0
) x& T Q; ?. Q/ S+ k3 u9 q) Rwindow xp; z6 N4 U; g4 ~- C9 \- x% @$ c: K
在DOS下也试过了,结果相同。
# {1 T7 l( K. q0 t! S* `
& j6 o" y: A/ ]' [! a正常运行,结果正确。
0 U" W/ e/ b2 w! V# U& ]* }' G' B : [( s8 O8 s9 j
3 o( a0 t; a+ m8 f3 F
在cv中调试,结果错误。# |8 M1 ]" F: K# {5 i, `2 ]# h( T
; {4 {) G% c' v' R9 y, `
: U$ A& [' m& ~
退出cv后,显示的也错误。( j; T0 C+ t- F5 W3 q% d9 D

3 k' e8 g, X9 y, S
) R6 R$ w) ^& c \4 z在td中,结果正确。
7 N2 R; Y+ u, R8 D p+ M, i+ {1 x1 p$ c. c- g+ m; Z9 d
1 T/ B; v$ i5 t ~/ |; D
8 [5 e Y9 \; i7 }# U0 k
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么: `! P, ?" b! }, G: J
6 t: J& }" q5 a, j* F4 ` d8 t
) O* [' A8 M' s代码如下,请各位帮忙分析下,谢谢0 ?2 S$ D6 Q; a& T
% l. d1 {4 ]. S* \6 e, \: \
.model small( I$ l& X( G1 F- y/ \$ k
.586 t6 P0 E$ ]1 X! Z
.stack
* r* _/ V3 w, d! r4 y9 j, t.data
, k# L& @8 h, i% k% U" B- A+ ycpu_str dd 4 dup (?)
( T& z0 w* v. R% T+ X db '$'
L4 ?& x8 E$ z7 Z" u.code- [$ Q0 {& h1 f' u( ?
start:. ]+ Q) W: [3 c7 p
mov ax,@data
4 d2 N; q5 K6 Y5 q, c mov ds,ax
# r" `3 e' V) T mov es,ax
' a6 o1 q) g) e4 V. Q& f/ E1 d9 {$ b
, ?$ Q8 V9 B% e; c9 U mov eax,80000002h# v& ^; N& A7 R& p7 M
cpuid
1 n! C% F7 s" b3 M- U. w2 J mov cpu_str,eax7 d( P: l& c$ B/ y5 t
lea dx,cpu_str7 z( \" l; I. `. w% }1 U; s
mov ah,09h
J; l0 C9 G; L% G8 N int 21h
# L! S% i6 r+ B( f8 c mov ax,4c00h
5 |. f" i8 y/ y int 21h
/ }8 b" S0 |2 t: C) u) O. hend start |
|