|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。1 F7 f3 X+ i/ Y: F
运行环境:+ h/ ]( B6 \+ p9 Q' p0 A
masm 6.11* n' s& k& p1 I$ q
tasm 5.0
. G. @" ]: O# Z1 f2 |+ j7 Rwindow xp" u3 [/ f4 a% v4 `$ f! X( d
在DOS下也试过了,结果相同。
8 W* `6 S; J" F W; O
, x$ c: a. \. c1 M2 K7 Y; E- m正常运行,结果正确。& T6 ]/ n; m8 ]( ^
, d1 S; h2 m. ^9 @. }2 ^! c- d
: H2 J. ^3 n" S8 X+ |; s3 Y/ c
在cv中调试,结果错误。
; i0 O$ h0 e7 w' O 7 A. l ^( N* K; `& `9 q
$ h' e# Z% @9 M7 v% m% _ ]* m U w退出cv后,显示的也错误。3 v5 C9 ^, D4 q& c

) S2 _1 N' n3 f0 p; u0 P" T* k5 j3 A, p. F
在td中,结果正确。
' M0 u, A0 B. p+ _2 C3 a * b- O$ y8 w w' B
! B3 t8 A4 `6 s+ B( P( V0 F6 f8 ]
* M* N! s8 l, p. @$ @
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么3 S! {, B8 @1 T1 w
: U1 ^+ b6 ? O$ L2 J6 u
# Y8 j5 J+ v6 M. r9 r- \$ l
代码如下,请各位帮忙分析下,谢谢2 M$ V' F& Q+ d3 u
5 F& V |/ B& @1 e.model small# [+ A2 U m# B
.586
7 v2 `. }( O: X V$ G" f.stack9 r& y. \0 N- F$ W, z4 T1 K
.data4 A. S$ K4 [' Q* P9 L
cpu_str dd 4 dup (?)
2 r/ l4 J6 x9 M( h" V/ r db '$'
$ u5 B6 M4 V* [.code- ]4 b" H [1 x% O! A
start:
& H: ^, }7 U1 n0 P9 b { mov ax,@data! V# Z% o- }, N5 n3 H6 n
mov ds,ax
! L+ O$ U- b/ W( I# n& n mov es,ax5 f& K# w0 Y. \- Z
P& O) Z% Z1 D0 P# a5 E+ e9 G mov eax,80000002h
% x. V; S5 ^; J; g2 V cpuid
0 t( R1 `5 j d6 \8 { mov cpu_str,eax
c# X8 y( d5 m1 m lea dx,cpu_str
3 X9 b) I7 l" S3 `2 F% l: M mov ah,09h
# R" v. ~6 ]% L" l9 l int 21h
/ D8 f6 c/ K, u mov ax,4c00h
- H8 m" {' c. O& H3 d4 I& `8 m int 21h
% B B$ z7 ?9 C+ O, Pend start |
|