|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。
0 p X+ x9 J/ k5 l6 M5 Y! A3 Z8 i运行环境:/ C$ @8 K9 m% y( ~; G/ `
masm 6.11
! q \& C3 b0 n+ Rtasm 5.07 g& i. w$ h/ x
window xp
0 \8 g; k. @4 R! q; M9 }/ X在DOS下也试过了,结果相同。
y6 m! q9 m% _. }, L' {5 W: ^4 D H6 V& J: U% ?8 A* B
正常运行,结果正确。1 z- t. W5 W6 K( W
7 w2 x+ s' j7 ?: ~) Z( ~, T3 `6 ^% i" D8 l, B4 e/ r8 U
在cv中调试,结果错误。
1 ^9 o" I: E% h6 S- Q; i1 c( r
. F7 ~6 J: r' N G5 p" f4 o
1 D' C( m5 p! h: ~3 Y退出cv后,显示的也错误。
' r ~# E$ I) e% G+ \! W7 k8 N2 _; |+ |! E
5 g- w: N! X) @, w2 r* l- L在td中,结果正确。
" H; J8 J3 x- {- Z& g5 }, q* G5 U. |
0 ?5 q" C+ T4 l. F7 i$ w i3 l" y% K# |8 F9 F1 d
5 C$ z# w6 [. T( s& ^3 {. u6 j3 k
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么+ W: C0 Y7 R! n5 q0 d( C
6 m2 p4 x# _6 B% R$ S
0 i8 n% V& L0 B代码如下,请各位帮忙分析下,谢谢' C k( N/ P) q9 u
* H) D9 J4 v3 |7 c.model small
8 H- p( H# h8 C& ~3 @! Y$ ^' u.586# z9 z1 W3 g) \9 C& P9 {
.stack' I8 q# H# S9 y* a. `) |) m: G( d1 d
.data# Z. F% N( V; H3 T4 ^/ k& S* L3 ]
cpu_str dd 4 dup (?)! I: a% ?: L) C F) d6 z( n2 j) B
db '$'# D: N% [# b" O! g5 G( e' d
.code* z' M% w' T# |9 \7 P5 K" k( p1 K
start:
- w- W$ |% l0 R. W! L1 d mov ax,@data
0 j P3 F6 h3 ^5 J: G% J8 u mov ds,ax
3 P' i' W+ d, F5 [* \ mov es,ax
3 e/ l, Y) v% j4 \; ]0 @
- z2 V- y; k9 W a# V mov eax,80000002h
0 M. t& {- X+ A1 J+ K0 c cpuid$ z0 X4 z: A5 o
mov cpu_str,eax8 N4 {- v9 f( @- `; F" o5 [
lea dx,cpu_str
) O( n) n3 h: [' j9 X) ~$ _1 C mov ah,09h
0 y; ^3 r/ n6 E int 21h
x3 R, i. k, j5 s- p f mov ax,4c00h
0 v. `" ]' Q, Z2 f4 Q6 E int 21h
8 d6 j0 j* y8 iend start |
|