|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。0 s1 a2 Q3 q& Z* F
运行环境:
% D$ W4 Y: F, I) h' h/ v: `masm 6.112 d/ b& P* M. v+ d6 y! o% {+ i
tasm 5.0
' I) W' ^. ~& fwindow xp7 q* _6 M( r% j i# u* c# V3 a
在DOS下也试过了,结果相同。
% o2 A, m. Y. ?& I# F9 @5 I# B3 N9 e7 H- v I) q! F
正常运行,结果正确。7 N8 @6 w# R% \9 V: E

2 R5 r, r" y! w) i
$ k1 b9 E6 t; l' X在cv中调试,结果错误。
! m$ f" O8 ?. s$ \3 l- _' C
' l0 U' O: g) O: m% h; ^
' v% c+ E( N, w& d z; x% }2 F: G退出cv后,显示的也错误。8 _# k$ m! z/ {/ |2 d3 a) l* o

* e& z, g4 V* W5 U. m+ h2 _3 W
* U ?0 A9 V( A/ H1 |+ a/ Q6 l7 o* H在td中,结果正确。# ]- N% s3 F3 i# F$ F, N

8 h1 J# ]2 t* ~( }- }: _; X3 ?) E0 F/ R5 I
2 v$ k, Q' |* o8 ?* x1 P, [* f
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么* ~7 d W$ x7 u. l
' e/ u9 M8 s6 U! y. o
o" q! _! ]/ l/ `% j9 J: z代码如下,请各位帮忙分析下,谢谢7 n0 y: C/ @! G2 m/ g% _+ j- l
8 r) u7 `# U0 y, A/ r) F.model small
& @: K2 J/ W2 J! X, Q.586
/ S% [1 t- H% i7 \: p) @.stack
9 y; Z9 z5 z; `.data
% ]1 {" N8 r" [+ ^7 {6 Y$ ]# u% Icpu_str dd 4 dup (?)
" {* v. ~- L( l3 P! G0 o db '$'
" z3 s5 A' ^+ ~3 j" W6 C/ B0 \.code
) n/ c8 S( l3 c) c# m- a4 _start:
7 l5 r% e# ?( r2 l& o ` }" z) ~ mov ax,@data
: x* e* S+ W! C, M- P2 A1 B Z+ o( | mov ds,ax
' c: J6 h( o& p* c mov es,ax
+ Y$ y* @- L( ~# V! C9 U( c; x . S) P9 R! n0 B" d8 `' V
mov eax,80000002h4 _2 t4 z) c* A% F0 L' i
cpuid# G$ d& u; ^- C) F
mov cpu_str,eax4 q# U5 R1 ~* @" u8 A5 i! J0 }
lea dx,cpu_str! y2 v/ s2 ?" B" d
mov ah,09h B5 c/ d [- a% P
int 21h, K; p" ?) ^( F& Z1 n- Z
mov ax,4c00h
' z. C0 {+ Z) {, d/ l5 P0 P int 21h( _* _# g, t I u
end start |
|