|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。- M6 E$ c0 U% o6 _& y
运行环境:% J/ K4 I1 G0 ~$ W7 O' Z
masm 6.11
. f$ E8 T3 D% @' h7 p( p+ ttasm 5.0
' V8 g' T: T E# c4 K- \1 i' |; J% dwindow xp
3 J& f' k. H; |# }- D在DOS下也试过了,结果相同。! T1 k( v5 g) H& s: u
4 j$ W; A8 L) S5 N! K, O正常运行,结果正确。
6 v4 M% s7 A; A" `0 L5 L
3 p% X0 V. e) A$ x9 b9 A3 k
( n/ }# z+ V4 f" Z+ s在cv中调试,结果错误。
' {8 K: h; b, G 1 a! ?7 |5 F+ d' _. s
" ^4 }/ H9 V, k. c+ o退出cv后,显示的也错误。5 n& x& O, x8 O, e* f( m

$ T& w: O; F7 |' R; k8 p' O7 `6 ~. f }1 r! ]' W
在td中,结果正确。
; u$ S4 q# F9 P# O3 O) T
2 z6 D+ w! V' h5 A0 z" G
6 l; E+ [0 B4 t& s
; R+ i: V4 K- ^" q) ~还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
( u1 {% J& Y' @1 T' d
- I( X* J4 g0 I3 e) r) ? u) t5 J8 `# L, D/ X# D# s, \/ N+ A! t
代码如下,请各位帮忙分析下,谢谢
# x, c6 [- `8 F* t3 `
/ V+ d+ w3 @ }2 l( l.model small, @ V" N) e6 L0 @
.586 y- b( O }: A1 q0 ?. g) D
.stack: r( C$ ?+ a/ P/ v
.data5 }6 e- ]9 Z4 w) _' ~& H
cpu_str dd 4 dup (?)
6 Y3 [, [9 c ?3 k2 I' e; [* a db '$'2 o2 [ x* `) C1 u9 j/ O. G
.code' ]( s! \7 [7 q; F5 s4 ]
start:
8 D5 Y( p8 ?7 A9 j0 [3 W5 A: m mov ax,@data
& D+ d- o- G ?# G mov ds,ax. q! _6 A7 H5 _3 Y" Y/ T `* m4 t
mov es,ax
2 \, ]+ n1 `9 `7 A4 F0 v 5 K) Q: A4 q7 Y( m4 u8 K3 Q2 y! ^# l7 r# X
mov eax,80000002h0 n$ \8 v1 [% n, U7 T
cpuid- @ y! A3 p, K! i" ~3 q8 [ r
mov cpu_str,eax/ ?2 o% U- U' n. c# l6 v
lea dx,cpu_str
9 V8 B n: Q/ B mov ah,09h
: _. t0 {% X; h& N* G$ H' I int 21h
/ T' {- o7 U9 q3 m4 l mov ax,4c00h! g# p5 v# y: a, I8 i
int 21h
- P) A. @# G5 g. qend start |
|