|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。
2 H7 n0 S: M0 Z7 O' x7 U, j+ k运行环境:
) h7 S `0 G0 S# e! y# ~9 f1 qmasm 6.11$ ^& \# X J+ [
tasm 5.05 \7 o( N7 P! s& S5 L, \) T- B
window xp4 n/ w" U; ~* \: X' l+ D
在DOS下也试过了,结果相同。
A! a; D3 d% w g* M# j
& F8 _/ z1 C+ _ `9 y1 m正常运行,结果正确。
9 K* w1 E7 n. y, z % x# L7 l' d8 c; G/ i
" w4 R0 Q) h2 X- [2 g- _& t1 O0 h, t9 T在cv中调试,结果错误。
O8 G2 k* P0 K2 L& ^" g, m& T
6 j7 d5 }' k8 e
! T& Y5 p$ ~3 r6 v退出cv后,显示的也错误。( X1 ]' B6 j6 W2 `- _
$ f" h8 E8 U: p
% ^7 q9 j8 g1 B* j' F在td中,结果正确。
* D) j8 F6 R$ M/ z7 S% _4 X. V" }# n 6 v N; R* D: j5 |: S
2 i7 C |1 \/ V
) }1 Z: ?9 t7 I& U7 |; q4 T+ V7 v还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
& \, {9 J5 G/ e6 q# S+ A: G8 t0 w5 C1 b/ n) I* `
7 t: S. c5 r9 V6 C( {$ ?% q代码如下,请各位帮忙分析下,谢谢/ Z7 x5 D6 P- Q
! D/ q# t: h( A* a1 w) j
.model small
4 a& k! C. |: I3 T- [.586
% ]5 K; X b2 v! I5 ?.stack2 h0 K4 i2 l7 Q. F0 g$ | y
.data0 E1 e* z8 D2 D1 |- _
cpu_str dd 4 dup (?)
7 c3 I! l* o! {/ S2 i* e db '$'
: q' B, r8 C" q& o {$ d' D.code
' ^: i/ A+ o5 ?0 T; Rstart:
) u: i: z+ r* ?! d2 V2 T y T mov ax,@data
+ r4 X2 U. `, v2 R/ @ mov ds,ax3 I9 |8 c" R ~
mov es,ax) j4 D$ b5 j1 W6 C4 L d
2 w+ L5 O; S- m% R
mov eax,80000002h- E, u( A! u2 X
cpuid1 M6 H) N: ]% X0 G
mov cpu_str,eax' d! Y) ~& _" U. ^. w8 [$ }$ l _
lea dx,cpu_str
. _6 E# E9 @% p/ }. L mov ah,09h* h: A0 p7 T: ^! e+ Z
int 21h
! C+ ` U) J5 R. C mov ax,4c00h2 z8 {: B. f, b! z
int 21h
/ O! z: c. S$ z8 y! W( w! nend start |
|