|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。1 n# d" r6 x0 Q# x9 {
运行环境:
; B1 }! D; C% r: Omasm 6.11
+ l. t$ M8 M8 a1 }4 b& o4 l. Wtasm 5.0
7 S, m' w9 K0 v2 m2 d8 N, ~) v1 Iwindow xp
: W7 D# r, O( W8 i; g在DOS下也试过了,结果相同。 W8 u n& d5 I, r/ t
# F6 x2 V s- K6 B正常运行,结果正确。% n- K! X, G7 s9 r* G3 l
4 c9 x! h4 u- ]3 z
% u4 }5 U0 H" s9 D: D+ z' A; `在cv中调试,结果错误。
5 H* I6 O' d% O* Z& O+ C3 _3 a ! Z9 g% i+ G- e+ Q7 e2 |7 i
6 X- J! G8 N$ E0 H
退出cv后,显示的也错误。% P/ U0 g" r w! o
1 S6 O5 @9 c1 T0 V
% j5 }0 X6 L& }/ K. ^
在td中,结果正确。* K: h1 q3 ]( D2 x

@1 ^! `8 V; @" S" e7 M! k% A `+ _, A. O. M+ ?, _0 C
& e: J* k* h4 R" `. M. Z5 Q% A+ J
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
6 E1 j- z6 @+ x( X- V0 V
- b" G6 p1 h8 F: P+ b1 d( A( p) [( B0 @# r# Y; \1 n
代码如下,请各位帮忙分析下,谢谢
3 s- X& w' M" V
S; {7 L3 U* v.model small& M, B9 S- t) ^; O' u3 s( u8 O
.5860 T) u+ p- V! o3 N1 ^
.stack
+ u) X) d! P; U4 N: X( O( J.data/ K" _8 C6 `1 I
cpu_str dd 4 dup (?)% x2 c4 f" _ X" y L* U5 r
db '$'! Q/ q! k5 x% G. U* E; V
.code$ f9 ~" D) Q+ b! ]# k1 I/ t
start:1 }: D: G. R6 T6 G0 \
mov ax,@data$ L! m7 k0 j" l# b d
mov ds,ax( ~3 @ J/ K# ~4 c$ f: c# l
mov es,ax
) {% \, o& V8 w8 K( e9 | / m% |' b% @( {4 w( v
mov eax,80000002h
4 D1 |! X) D6 |5 h5 |0 l cpuid+ K4 Q1 [, V& M9 f% N% y
mov cpu_str,eax
# O! B& I' x2 C: ^ lea dx,cpu_str# n8 ?: f3 C# P" @0 a( ~
mov ah,09h3 _* m6 r% x1 U4 s* c
int 21h2 @5 Y/ _; ^% }# Z8 l5 I
mov ax,4c00h
: u) C% A b8 O2 O. L K int 21h
% |) N6 A1 [$ A/ i0 T/ Kend start |
|