|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。
' X- i9 c2 R; Y. V2 X运行环境:& s0 h5 F/ ^& h
masm 6.11; Q2 Q( v4 z( E# ^
tasm 5.0& @" Q& S6 T! w! h& j* y
window xp
+ d9 I k @1 @. X3 [( `在DOS下也试过了,结果相同。
5 B8 w+ t i9 [8 g! ~
0 z$ R3 N$ D( G$ c/ M正常运行,结果正确。$ r2 P$ r5 Y' E" t+ Z" a2 ~0 ~4 l* ^

5 ~& F! ^$ ]5 ^& s- E' y
: C$ y5 [) `' T$ H$ B+ k, h" R8 k在cv中调试,结果错误。
& r) T. P) Z5 R' }4 h; r! r
' y* a7 C9 t) V( j# Z
3 r- k5 W3 [! L1 S" H2 D+ V! v' p退出cv后,显示的也错误。
/ g6 ?6 ^) e. g! X
; h4 d. \4 Q0 o" ] U! x. E: v
% A. V+ V/ U# Z' Y% K9 a在td中,结果正确。
' s4 h2 d7 M0 t( [" `" ] * a c+ c# T0 L
9 }( S: ]7 ^+ Q1 }# Z9 L. B8 l& S
2 J+ \: A3 {9 J还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么# \* F- x, d3 i
, o: b, a: i# {0 A' V: f9 a: f1 b
2 r% g2 j: {! x6 ? G/ t代码如下,请各位帮忙分析下,谢谢
2 n% e. [" x( w$ j8 U
W+ J$ U% _& A; v4 o8 g.model small/ }+ \) b7 b, w% Y* h# j$ _
.586" n7 x8 x3 a8 @2 b$ S
.stack
* O. T p% ~- p$ h+ V x, Y# Y" T( @.data
- W# t1 {. y) ^7 |5 jcpu_str dd 4 dup (?)
4 U' X# L1 b0 k7 |, S db '$'
( ]2 r5 K) E8 S: C- P.code2 {: ~3 h& L' }& ^" a" `# X8 c
start:8 R2 L) T9 K! f8 l
mov ax,@data
" o) c* P, r) \5 u mov ds,ax6 g c' l+ V& d6 R- T( k, u7 V9 O
mov es,ax
5 D! A$ c7 c4 j. n$ ` # i; t. p1 p; Q; ^& X
mov eax,80000002h) j& v7 N8 i! C9 X$ {9 Z, R0 O
cpuid6 r! |1 p( G/ {2 B" N9 n- A
mov cpu_str,eax
" M( a* H3 t/ N* g: l6 b2 w# g2 k lea dx,cpu_str! b4 b$ i- @7 v8 V0 }% \+ n
mov ah,09h* k0 J: m7 P7 o; A l
int 21h- Q; |9 F+ ? u
mov ax,4c00h3 w/ c2 s( _" o0 z5 j$ }
int 21h
* |! S& N8 S9 U# uend start |
|