|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。: c5 R* C3 I( x. f- j# M2 f* _
运行环境:, [2 L: Y; X* x
masm 6.113 y: G4 ^8 m7 H+ ?$ \6 Q5 k! O& a! U
tasm 5.0$ ^, z3 j5 L& d; D" }9 g5 g" R
window xp
' ^# X8 c* I* Y9 u% \0 k' K在DOS下也试过了,结果相同。" ~% @/ i2 |. x2 n
$ F ?' d9 r% [5 t2 Y* U7 q/ a' h
正常运行,结果正确。) ?0 o" E* h- I) e! Y4 K u

' k8 [: l" X4 w- M5 v% x0 E5 a; {2 U% B7 k( W5 K$ d
在cv中调试,结果错误。$ x/ X# k' a) g! i' V R
" ~) u5 n4 P: O+ v- j
, u% k( V6 e6 C7 Q% X
退出cv后,显示的也错误。
' S+ [/ M, x$ t, B3 E8 `2 T; } : d- B: n9 {0 O/ b3 _3 Q
& c( ~* L* h1 W在td中,结果正确。) s( a! v- M: P; C j) i K# ]

6 L8 A8 h; l6 c( U& L0 I; B
4 {1 G' y1 T4 N$ R- J3 r& v
2 ]- S T. ]% ~0 F还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么5 I6 U1 j; a/ f# a& _
9 P' ]+ g# `5 A6 ]* a {8 O" ~8 @
4 L* A+ y$ W+ o) m代码如下,请各位帮忙分析下,谢谢
+ I1 w! q- u4 ], ], z& L' P7 P" f! |: x6 D+ ?- W; Q
.model small0 B# t+ d/ i3 P3 X4 d1 t6 H( N, n
.586" E* d8 f1 _8 V
.stack; l. m' r& X# p* I( O
.data
0 ^/ Y) {9 y4 c/ {# Bcpu_str dd 4 dup (?)
! e0 |, f6 ]5 ?( ^- H db '$'+ `' j" H1 V6 a7 p9 N0 N
.code) m* L; x0 ^0 a# i8 O
start:* H! s, j" H0 E# k' J, W
mov ax,@data& \& }5 j7 E" j
mov ds,ax
; g3 ]6 M# e: }: |. K [5 J* w mov es,ax3 `# ~2 S: Y. V; G% V+ w9 P, K l, W
! D6 o0 a0 l1 H) Q
mov eax,80000002h# k- O$ V' f( N2 [' }' E) G$ h% P
cpuid
* d, K4 h3 `+ L$ b0 \ mov cpu_str,eax2 S: w$ s: f7 g- i6 W M" b) F
lea dx,cpu_str T8 F" o! _, M) t; B
mov ah,09h/ m7 {0 }1 I( ?" I- q
int 21h
+ c6 ^8 g8 e5 V# s2 {* o mov ax,4c00h2 ~- z# r! z2 L1 x9 F y4 X
int 21h
" _! A4 u5 @/ W$ o m Z8 S( S- d8 yend start |
|