|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。0 g* }1 q6 U* N1 L
运行环境:" Q9 \" O1 B$ e9 x1 O
masm 6.113 g$ [$ }$ e# t e, f7 v8 K
tasm 5.02 v$ S" T. [2 X0 Z) N* a, u! X) p) F
window xp/ \! H0 I9 j0 X# ?" B$ g
在DOS下也试过了,结果相同。1 U' u) T: V6 r3 A( C" o1 T' d
+ \; o7 }7 k2 ?2 M) u$ f
正常运行,结果正确。8 L$ \& n( T: {

7 v }$ e n+ H. m7 C, j2 l5 M
0 H* L5 A6 F! z+ R" r. Y$ Q& i在cv中调试,结果错误。1 D% Z& w D1 @! I
4 y# I9 K: r1 I( d4 W
$ p: p7 q8 e* m/ y) _. T4 W
退出cv后,显示的也错误。9 Q! F. m) T, q, U
4 V& V9 v4 f$ G. a+ h1 W* D6 `; A( N
/ M$ ~8 h& s- s M% V3 A: j+ F$ f/ P: T
在td中,结果正确。
0 C" m/ a# H9 q, M9 r4 S
! W/ Z8 n% b. Y" a
; R0 Z4 m" J0 G$ Z: r: Y! P- _; x- [0 y0 z
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么5 J" r! j* o* M% E. p5 L2 |
$ C9 I! w' X0 E0 k* h
( N- I- h) K$ Y/ z代码如下,请各位帮忙分析下,谢谢' G& ^" }1 j: R8 h: W/ h# q+ b+ e# ^
! |; X1 T4 c! n$ x.model small- E* L/ h/ V* w, O$ E& H
.586
( v d, ]3 _$ K" F.stack
# X1 I7 r0 E: V4 ^, _7 K4 M.data( G8 N( W. `; w$ T- i% s) ?
cpu_str dd 4 dup (?)
6 t! m! l4 d3 j1 k- F8 d db '$'+ i- H% R! B1 `+ ~! p
.code; |( d$ R% | i9 K4 i9 W+ j
start:
' q8 G( z( k, C8 P! f mov ax,@data8 ?! f# N& W9 V' E9 o
mov ds,ax) v2 z6 K/ P) M: n( h. Z
mov es,ax# M" j/ r- [ p( w% A3 k- c
& n6 P( M% v6 {$ |1 [ mov eax,80000002h8 [$ Z0 i* E# P4 C' J2 r
cpuid
* g. V# c8 ]& |+ V+ L: F2 s mov cpu_str,eax# V* e( w- ?$ c1 a4 Y% |' f
lea dx,cpu_str
/ \& T) @. ]; ?+ }4 J: X mov ah,09h# s4 @0 S, t1 Z1 r
int 21h
, ^. ]/ V3 N2 P, _ mov ax,4c00h
- Y, T i: ~6 P3 m7 n' v$ [. P9 g int 21h
# ^% e0 a8 z7 G1 Z% V @7 Bend start |
|