|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。
4 v- | ]7 T! S运行环境:1 K6 ?( A, E+ C+ Z' Z9 P8 V" s1 h
masm 6.11
2 E- x2 y7 S' r; y @tasm 5.0' j! G+ ]4 O7 S; a, O
window xp
; r& ?# t, ~& |% B& j; C; |( s在DOS下也试过了,结果相同。
0 }/ T) l9 {+ g2 {1 S7 A( h' d6 A. Y4 }. G
正常运行,结果正确。
+ W7 X/ W E. K6 J2 B! q
- j! M$ O- q; r. a+ W6 q5 Y1 n8 v) c% ?! O
在cv中调试,结果错误。
7 U4 O2 d9 g0 T1 X 3 q' f+ } r" E# [. D8 ^: l6 V
6 b0 n d9 U6 y: x. |9 m
退出cv后,显示的也错误。
" ^4 l$ O+ }* W& _& q6 j0 z
8 E# [7 x5 I4 i* u4 c6 t& y( E V, D4 ~9 o+ l6 }" i) l
在td中,结果正确。
( |' F% n% {! [: T4 r1 q+ P
5 Y8 T% v" b: Z
2 K! E4 t# i8 B7 `8 R5 z8 d2 s- h: C7 `9 [6 i* c
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
5 Q7 f6 f- r [% E+ w" S% c
1 Y4 G: w/ ]/ Q) ~. R& \
{" w' ]% d. s/ f+ O* H) p代码如下,请各位帮忙分析下,谢谢
) o) K; b4 s) W% d4 q0 N7 `% N' S9 `
! _4 F3 \& J s. Z. P+ y.model small) Q! h K- ]$ x2 _$ D( X: o# C
.586
) k' {4 l/ ?5 _+ C; t9 o; D3 f6 `.stack( x( R1 f+ \9 t7 a. V2 N6 Z
.data6 Y9 D6 r( s: A/ L
cpu_str dd 4 dup (?)# f9 j! ~0 n1 d
db '$'
! J' X( e0 M5 G5 s.code) M' N9 a& ?! b; r, u# v7 I
start:( Q. w0 V2 p& u) H, k
mov ax,@data2 Y8 O8 y& P9 l* Z1 x+ {
mov ds,ax
% }1 T+ P$ G! b5 x1 i, {2 s/ F mov es,ax" P& n$ b) Z2 W T. [( n& x
) M0 i( ]9 w. a; q
mov eax,80000002h
" ` e/ ]# e4 v8 G1 T% | cpuid. x6 x" N$ J6 A0 E7 c$ E
mov cpu_str,eax- R: n5 v: y: c9 G3 y: [; K0 E2 T
lea dx,cpu_str
: H" E9 t4 j' y* r) | mov ah,09h
9 V6 p* L$ _3 Q0 f/ ? int 21h7 R. A2 {. k2 P
mov ax,4c00h
1 ?. D% r& A6 E' |" N int 21h9 r2 o' H1 d! Q
end start |
|