|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。
: s) L6 Q% X g# y: I运行环境:7 ?! ^( s+ U9 B3 |( \4 l" M) e
masm 6.11. c9 C2 `7 { E/ I0 a& y6 `. K2 r
tasm 5.01 g" A( c" \- c7 M1 s
window xp
$ q/ q, f' t8 w7 t% i. S' f' c在DOS下也试过了,结果相同。
H1 H$ U1 v9 T W5 G' G' L
m/ R) o9 o3 z$ S1 _. e( a" t正常运行,结果正确。
* D) C, L0 E' V0 S7 ~/ ]4 O) t6 ^1 d) w
8 e' Q5 h5 d% N6 b- }0 L
在cv中调试,结果错误。
4 c$ c" ~/ M* c$ F) M' e+ o# S' [* u% I4 N7 X7 X1 ?* q
) j* U" W6 g3 G4 r9 X退出cv后,显示的也错误。 z+ L# u4 C5 |, Q& S" v
1 k; D }1 i8 o. Q) G5 d. |/ |
, c( n/ S9 O2 M: g4 |在td中,结果正确。
1 L# @) ^& @5 p. R
* w4 ~. e2 f1 U3 ]. I8 K: a" b( F& R7 O7 q- x- q% X
1 x$ r6 T0 K' u8 J4 j4 p. z6 M
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么1 B: J* F3 \* m3 K7 k
& [) ~1 G1 X' r" z# b
7 R% ^& s/ r8 x* S( ?代码如下,请各位帮忙分析下,谢谢
; [- S9 A' m2 f& T3 J, a; Q8 q
- u+ O. J- W$ p+ c$ z.model small8 K( A( q: p Q. T# b1 [
.586
7 r4 P' u# w7 y' F( P.stack4 O' c+ T$ }5 S/ f M5 [
.data+ L4 A8 F7 K" w7 V1 D9 w6 M
cpu_str dd 4 dup (?)
1 T2 ]* @1 O4 o2 n9 ] db '$'
! |; D2 [. B I, j) Q.code
5 x. J+ O# f- f9 C3 @start:
2 A' F2 b( G7 w2 J$ b7 h! Y$ n7 _5 z mov ax,@data
; g& f- H0 J/ V( } mov ds,ax
9 `$ ^; a) E0 V# R- J mov es,ax' r' s: q t* r
& Y- F" b6 C$ e4 Z( g" U1 o- J mov eax,80000002h5 j, |+ t& K5 e2 \) @
cpuid( Q! ]0 B" g* N5 S( J
mov cpu_str,eax7 W' @$ e/ ?2 }% |
lea dx,cpu_str
% h. T$ |' g0 Y/ w0 `* U mov ah,09h. d* h/ O6 F5 x- a
int 21h
6 K4 ^" b3 d( }: j mov ax,4c00h
/ i5 H2 s) x+ ~6 g) h& j int 21h
+ P. s& ]. f# w" C& A, Qend start |
|