|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。3 ^1 f4 u5 r% I! R) Z/ i# H6 { ?
运行环境:
1 L3 ?' }% e& ymasm 6.11
# Y" ]" i4 X3 Xtasm 5.0& b$ E- W4 I9 J' L, J# p0 W) b% H
window xp5 X" F5 T3 B$ h$ \+ }2 T3 \
在DOS下也试过了,结果相同。
* @4 ]9 `3 i( W2 e. ~8 @2 P `! j; l, B8 K& p0 T) B+ \. U- J4 g
正常运行,结果正确。* p) G$ }0 k( t6 o# }1 ^- m) p6 c
, w- ^ s3 P. H' ^" _# |$ n a
V" w' }* T. b& F3 v在cv中调试,结果错误。
& m' a [: w: y# H / _, e! {% B# \6 s/ ^$ q2 y$ `! ?
6 L1 \& q" U: e' @4 t# ^退出cv后,显示的也错误。# P! ?# z& H) m' n4 l: K

) s7 d9 `9 u$ d8 c3 B* B! w9 p7 b* J6 L
在td中,结果正确。; v% P- f- o0 }& V4 e6 _

( L8 ~6 }/ N) Y2 p# T, S5 a
# V- E$ A" n4 t3 u2 X' l7 A3 X S. b2 ^- c: L
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
; h2 c, ^5 j3 e+ U9 X
" N/ u) o# W$ C' V! Q4 j% O! \' M8 o8 J
代码如下,请各位帮忙分析下,谢谢! h+ @0 v2 [" D$ Y
* f5 W+ C# U& x, Y( h" }.model small
, q1 ~/ k- [* Y4 }.586* R* ^1 `# E1 k# k r6 R `9 Q
.stack3 q7 M# d3 R# b, ~9 _6 {- V8 P
.data; }3 H! z' l! [' \- M
cpu_str dd 4 dup (?)
5 M, l y- d% M6 ?9 [( h db '$'( T& A& ?! F) {( q( |' Q
.code
7 B( r8 a& D+ ^" N& K/ W: c) C' hstart:
, I- c8 M: C5 Y/ y. }0 Z mov ax,@data
+ ]. g- x, c4 K7 P; [+ U9 d mov ds,ax- E" n. a2 u2 o# t
mov es,ax; f* S3 P- V, r& ?1 }4 {
0 S2 {7 y( D8 D mov eax,80000002h
% t0 t/ p& T2 D. {: z N* @ cpuid I# q; R7 B% _* M: D
mov cpu_str,eax- t5 n' U6 f7 m Y( `8 T+ f- ?
lea dx,cpu_str
( g7 B3 X2 E4 Z! T6 w% M mov ah,09h: Q; h9 }3 J7 m+ S3 S/ c
int 21h
3 W& `; H ?$ k- u* ^ mov ax,4c00h
& Q+ y, @0 T8 v' A3 k int 21h9 S* a! ^' v1 R3 a* P
end start |
|