|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。) J$ d: M1 P1 }# i1 L, A
运行环境:
6 i3 E1 U+ G5 Y1 V2 hmasm 6.11
) `! n0 ^; Q# R/ }+ Xtasm 5.0. X& O, o7 ^6 B( h3 M$ Q
window xp
7 a, x( Y8 d/ ~1 {在DOS下也试过了,结果相同。
7 I2 x, \- l7 {1 }" m# x. s% q
- ?, O5 [- H, d! p8 J3 Q8 s/ C正常运行,结果正确。% n0 A" h) P' S0 r. f4 g- v0 o; ]
: E1 t+ G* N' V7 p
9 Q& R$ W* M: S* ^" ^& P3 J
在cv中调试,结果错误。8 b5 a6 Q! S. i4 T" \

; w: R" E8 P. v+ N' E
% _# i4 A' q9 [退出cv后,显示的也错误。. k7 ~0 X$ @$ L' Y) s0 M
8 T; a& t) [2 k% \: u7 n' B; O
5 i" N' o, Q, D在td中,结果正确。* C$ j* B. U; f0 ?2 Y. y
6 o; z* Y) ^/ w ~! Q% x& m
2 `, h$ b+ S+ x' F+ R- s' i/ G) b' k9 q3 ~
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
9 F4 E; P1 Y- R, Q& q. \/ e" n$ N( L; b$ i
# J3 Z8 t$ ^; l$ Q
代码如下,请各位帮忙分析下,谢谢, E3 O' G& C, T7 w7 [( W6 H6 P
' T- R: k4 n$ J9 H
.model small
5 s" X$ v$ N0 `4 p! c) W.586
5 i' r" N9 q8 B- Z+ r.stack. Q6 R% l R" ?& R( d
.data$ T+ ^' W: l4 [* h5 F; @
cpu_str dd 4 dup (?)
. X% A5 F$ D. ]2 K db '$'! B* d6 `. ~8 q9 E
.code+ S' N" v; L2 j7 E
start:* z4 X; J0 G( [- |0 x% u
mov ax,@data
: v2 |6 v; m7 h% x3 C mov ds,ax
+ \* q$ i9 g3 x) J# b mov es,ax! T# P& L r; E/ S
. |$ U1 n5 R: Y( M3 J' D' y mov eax,80000002h
$ H" p' p" R( Z# W- M1 r# ]! W cpuid
6 {/ Z: i, d* k/ ? mov cpu_str,eax
; i; m5 i# q# O# E+ ~ lea dx,cpu_str- F) s \ p- l& r: ?: U6 r
mov ah,09h' j6 r- S5 F- d5 v' S( J+ z+ d( ?
int 21h$ s" K5 @: W% H. {8 Y
mov ax,4c00h
5 k4 M; y+ I4 f. G6 v* d int 21h* E& h4 v4 k( I) ?) I& ?. M
end start |
|