|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。
% D, {+ c7 _: n- U7 b) j运行环境:' |! K4 v, o9 g4 m+ l3 A' E u
masm 6.11% z4 Q% _ J0 \* m
tasm 5.0
, i! L0 o5 e+ i, D, Wwindow xp% P% B6 [: c e# V& C
在DOS下也试过了,结果相同。
% C4 D) S& K' t6 |+ q1 F9 h9 [# o7 u4 z* T/ M. Z
正常运行,结果正确。
5 n1 Q% n- J3 A) L " ]9 F5 X% u3 W: ~$ n. X
9 w: X: [! }. \( Y* {5 _) `+ ~在cv中调试,结果错误。
9 I) Z, m7 a7 f( a5 @% f* Y: Q3 B
: U, c- o: R7 j, q- y2 M8 e
: o; K% P3 k7 p7 {9 Q& F; |8 E退出cv后,显示的也错误。
( S: l) @5 m% f. n* t4 t
% [& p# }# u* N/ r5 n! h4 R4 {4 A. @! t7 O
在td中,结果正确。
( \% w+ {7 I7 l* U" F& F ( y. y4 P, r' r u: L" \3 c
8 W! V i, ^; B# L
1 i9 N6 M% e8 p" V- ~: H: \* g
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么8 ?' h. X8 Y. n0 A* E
$ P8 l" w7 A* p2 S8 @: D2 h' ~
4 Q5 [; n2 w2 \* a1 N
代码如下,请各位帮忙分析下,谢谢
$ q: ?6 Y4 F3 m7 N- l& W/ w( I
: [ g' t; J8 E. x) r3 o: K& [! O7 B.model small
$ U8 J/ M7 d. ^* z4 } Z! @.586' C# W3 B% m {9 \5 _. c* P! v
.stack5 j" \1 `3 H$ R. |! f7 J
.data# P5 o8 w+ }" ]3 G9 _+ z" q
cpu_str dd 4 dup (?)# D l3 O! }" C8 |- t+ m
db '$'
/ V% P4 e# Z: ~- D! t.code
) S4 e5 K2 e- Z/ O+ Y! rstart:* |7 `/ w) `- n2 a% }7 e4 ]
mov ax,@data" V6 s y' e( C+ x6 t8 L
mov ds,ax
" x3 e3 ^$ J8 i mov es,ax$ f; S7 t$ K/ T8 G" a# B8 |
8 b5 c0 h( Y G
mov eax,80000002h6 c+ b% G- L3 y+ i9 a3 A0 C
cpuid% r1 O6 c% A0 @/ l1 J, b
mov cpu_str,eax
5 Z' w( D+ e+ w9 d4 O4 y T lea dx,cpu_str
9 i2 q: [% y j* s; n mov ah,09h
+ o: m" N( E3 Q$ c int 21h3 [9 P. ]% X0 l" k4 g# R: Y, \0 T
mov ax,4c00h( ~7 Z- T `: g" _/ \* o w
int 21h7 c; u% j! W, ?
end start |
|