|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。8 c* H. t7 V) d! n/ ]8 G8 ~0 L
运行环境:
. d# I0 Q( D0 P# D& T" W/ Amasm 6.115 ?; ~8 ` t# j. y9 J' x! I& D
tasm 5.0
/ c* s+ U% q7 q+ Mwindow xp
& @( v( y1 E/ a在DOS下也试过了,结果相同。( Z: h8 F/ ^ U8 {4 C
, {/ G8 J3 y2 W5 j6 ~' |3 [1 t8 o正常运行,结果正确。
7 V3 Q* \/ G& n) V9 t u) U
# A% ~0 n- n/ U3 K; W$ b& Y& N1 F8 {4 L9 n" f6 ?) h) ]
在cv中调试,结果错误。) K' R2 j) ~8 V% j1 p

! _3 U5 D G2 @! x2 z' l0 n; u3 U" b& l! H' C
退出cv后,显示的也错误。
* ~& t! S a' {. t4 l( H3 F
! q6 C ^: x" }. ~
) E) U: y6 [: n5 m, i# D* a* @在td中,结果正确。: }) U! t" j" Q" x1 N
m3 V4 K- ?# b) z; ?: n/ `! C, x
' ~1 P" J! C$ S7 H( N% t8 H9 c
n$ X! [; l) |( y: A; e5 {还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
* m8 y7 A. [$ w3 J6 M% c# {2 `* i6 b9 ]0 s( U3 F# e1 W
- s t: {2 p# Z; {/ e& \, ~" u代码如下,请各位帮忙分析下,谢谢9 e8 I5 S& E {% J0 J. l
" [7 V. r3 A% C4 d( H4 J
.model small; S/ L% ^0 W. R8 ^
.586* U' }1 O) B3 B/ e3 p. D
.stack
3 j' Z! f! ^& W.data9 x/ u# U3 a: X( z, Y) h4 f
cpu_str dd 4 dup (?)
: `. Y$ ]' k5 E db '$'
/ N8 }8 o0 b2 L7 N' g. O.code' S W$ U/ G3 H# J! g& D( n2 |0 L
start:
# W* [5 m" f7 _- \3 ]2 X* \& _ mov ax,@data
4 @% [ N4 Y' e. b. \2 [ q mov ds,ax6 x) r% m* j# |! h+ g
mov es,ax
; K1 R3 N2 C* R" h8 u- S - A& r5 U& Y/ b9 l- z, W* }
mov eax,80000002h1 i% a: L/ c a, S! H! f) k
cpuid
: q4 J8 D) J- l2 E mov cpu_str,eax4 G+ E, g, h6 o9 Q
lea dx,cpu_str/ J' ~; h7 H) ?: v
mov ah,09h) G( R: M9 f% U7 l
int 21h
5 S" k& R$ d, w9 C% [" A1 W mov ax,4c00h( t' u- Q# F9 g% h1 @( q/ S) K
int 21h& L& O6 l3 l1 C
end start |
|