|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。* Z) e5 |. Z7 }7 i1 F& A6 _- k
运行环境:
) F! F" S, @: omasm 6.11& r- [- O! G% F5 V; G
tasm 5.0
4 A; P( V) }4 L0 M2 a8 Owindow xp
, G) h+ v5 ~7 e" P在DOS下也试过了,结果相同。
, K3 D! R5 Y! o; |7 o0 V6 \" ?$ U# e2 u2 y# |* }; m
正常运行,结果正确。0 ]* _( U8 B) b' {" p# q9 Z9 l

% K" Y! o" U5 m, i
; \# Z4 R6 N2 k$ ]. N8 V在cv中调试,结果错误。! g! R9 R. X3 U9 |4 P

2 |. `0 J% z! l, [8 R# S
- ]6 q2 r+ [' o3 L! F退出cv后,显示的也错误。% ~" o) ^* n+ z6 s; S2 W
$ ?1 e2 P! A2 w9 ]( w
+ N: R+ K0 h) h5 G! V. l) ? ]
在td中,结果正确。
- d( c! }6 y; r; C. ^
. w$ O( S; d+ g6 g* n$ L: \1 A$ B3 N D8 C U& d* U
6 l# P' U9 `. y+ Q$ x* G# T
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
8 v/ }/ v5 L5 H3 A' }; a9 z7 H/ Q- S5 V4 r
4 Q+ h" K- B& l0 q& E1 X1 k+ P/ h代码如下,请各位帮忙分析下,谢谢
+ H! } L' K4 D0 X# D7 V& M- l$ U0 {- _4 e, O9 I
.model small% h! m* E! G& V, M- J7 \
.586
# J/ d; X8 ]. ~.stack
+ x, B) p u g5 {: v7 U.data2 A5 j! P- S6 n5 p/ ?, V# f) |
cpu_str dd 4 dup (?)
+ R8 y# Y( r( v db '$'
" b# b% i& V* f5 D7 D. u# {.code
$ Y/ N, @9 l) }7 H( Ustart:% {, O8 h- n7 Q- Y4 h! e3 ?& E5 l
mov ax,@data
$ [+ X' u5 _" y2 [* q& Z5 i mov ds,ax
" p: M/ N8 c) d0 s mov es,ax1 X' X5 w* l. e j0 m: z5 d }1 r2 n) L
- u+ J# n1 t4 p mov eax,80000002h
* Q" v4 t" W6 ?6 V) H7 A4 `! z cpuid
* t+ y- `7 I0 J! @3 |3 G! r- O mov cpu_str,eax! Q. I" y/ @9 P0 ~* a
lea dx,cpu_str
5 d0 S) G5 c, C6 x mov ah,09h
2 c) X; f% ^2 l6 p9 c9 \/ P' w7 C int 21h
" ~8 Y, j3 _! e f) m! X- N& f mov ax,4c00h# I3 Z. w1 @. O
int 21h7 w; v* ? x1 P- E+ X8 N+ a- c
end start |
|