|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。+ V3 ?) I' \; j& m
运行环境:
& c7 Z4 u2 B+ R1 }8 Lmasm 6.11
% P. B; ~" q$ S3 utasm 5.00 G8 d0 M! ~8 h: p; y
window xp# r' E1 P& ~/ G2 K. W$ D$ W
在DOS下也试过了,结果相同。; A ~2 I* |9 Q) S9 ~% f
) d2 I7 o4 I' g6 e7 m
正常运行,结果正确。
4 p! t3 l0 \. `" u0 J ' q. F, p( E* p2 B: f2 c7 h5 }
1 y3 R- B5 |/ q1 \% z8 W在cv中调试,结果错误。- ~5 t/ t8 S4 I& h4 T# ?9 Q
8 n6 f7 E- k3 }" x7 _ g
. p/ ^& a* k: q+ e
退出cv后,显示的也错误。
$ J: Y4 s$ n( g% s0 } / Y% u. S& A( w1 ]/ t( @& F
5 r' x1 w6 n9 n4 t! k# W! B/ p在td中,结果正确。 C; r" A; L0 X9 x$ n

* ?. S7 W% W% q3 d( n a* L9 _! T& y k7 B# \/ ?5 `
: @* U) N& u& j% |还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么# p2 B4 Z6 s5 y! O/ X# E
, J* d' B& ?0 S" e/ P9 N U$ W
) ?$ i5 ^/ l/ ^2 |/ t, Q5 A; u' k代码如下,请各位帮忙分析下,谢谢
% M& o6 y3 W( x9 w) g6 k( h, T% X1 }- Q
.model small
8 X- m, K8 H& R* \0 `- K.586% P: T8 T) M" J; j9 Y. ]
.stack
" y0 S. B4 J) ], X Y( d.data3 t' s6 Z6 u' [4 J9 c
cpu_str dd 4 dup (?)
O) S4 H$ T: Y: q! T8 G0 ]% p3 X db '$'- E4 K8 ^: ]% H" y& L) |
.code7 X% b8 [( w$ k8 o5 j% S- [
start: |2 t* U( R. B9 B
mov ax,@data. {# n3 @# N! k0 y
mov ds,ax
. f" I# h% n8 { mov es,ax
; g% T3 H: ?# ?; W7 _# m8 l% k
. i' V$ R4 W8 t Z4 l- ~ mov eax,80000002h
4 X& `9 G6 {( \8 f$ o, G, c8 W cpuid, [( T, @) v. ~* j
mov cpu_str,eax
6 B9 H) [* y7 S+ \ lea dx,cpu_str
; b; k0 m. d4 I; c E9 t8 a mov ah,09h ^* z7 U5 n$ Y9 p. R
int 21h( {6 g: c; [, g7 C
mov ax,4c00h- S+ S: c A7 i5 C! X: t
int 21h
" a0 Z B0 l$ `2 c1 Kend start |
|