|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。- [1 t$ ]* J, Y5 j# t' U1 v
运行环境:) C) b- d2 `& G
masm 6.11
' w: v i3 |4 n1 ], D: ktasm 5.0
3 d. y& o4 W$ l- C( K( A- Rwindow xp
9 [* |; Q4 N0 W在DOS下也试过了,结果相同。1 q6 z) z+ X; e! ^6 }0 z
3 E8 C3 r3 J3 {6 W
正常运行,结果正确。 F& X+ J1 \+ Q4 r) ^8 x
4 {. A2 o: O6 g/ H7 ]) Q+ v
" Q- q, _) A' Y. S, y9 k. B
在cv中调试,结果错误。3 U2 h a9 s* q: D
+ U; C( u% ^( V( X" M+ i% P
% Q/ s: r7 N3 ^! W+ t退出cv后,显示的也错误。
n' O7 t" j1 f8 ]4 b; P
9 h0 Y4 r1 S; k5 A* K
& f* J& V1 _) n8 U5 E& F8 S在td中,结果正确。
6 V9 y$ K) Q& `7 L
( d$ b. w, R8 {/ n' ^3 S8 @$ S* T, s2 u9 @( l4 q9 W, \+ d
/ y) B2 k- J: v* S还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
2 `) k/ o/ S, Q$ H
R: S' a% r: E' D3 \3 r1 w, j5 T J( n+ j
代码如下,请各位帮忙分析下,谢谢! u& r6 X/ l- ?; D0 u- ]. [
! R; L. X! p+ f; d( v* N. p h
.model small
# f! ~9 }" N# ]" ]% e* y# e.586
l N5 E3 G: H# {.stack
5 ~/ n8 Q9 m( {4 @- G.data
1 p3 \7 k' n- Ocpu_str dd 4 dup (?)
- F) M2 S" ^5 ^) U db '$'
8 h, A3 R* P7 r* B7 h! D* d( G.code0 t) m0 h! l2 L9 f" s9 O0 j$ [& x
start:. v ^/ t) ] z- `- }' a& O
mov ax,@data& S7 R; }4 a/ U$ L, u" M# m
mov ds,ax
7 }6 E/ T1 A v5 q6 K* z mov es,ax- i6 K( F1 ~: d6 R1 K% Q0 P
7 j- k0 ]1 e) Y1 d mov eax,80000002h+ d4 V5 g1 {2 J% P" z. q) r% ~! B
cpuid& p2 p0 e1 v9 q6 T$ o
mov cpu_str,eax6 d" o7 `% A$ `2 P* |; I
lea dx,cpu_str4 D8 K: l8 _4 G' G
mov ah,09h5 E$ v( g4 F& g% I/ ^
int 21h$ d3 T- z6 `5 Y, y
mov ax,4c00h
( U. L5 f" L7 w) U& W9 M int 21h
7 P1 ^) J A# P0 Q, ~0 e w% y( send start |
|