|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。
9 }1 u8 U4 c3 q( g运行环境:
& [+ x; N; K" N l N# o* @9 Qmasm 6.11
3 u, ~/ @" Z) k4 a5 C* Ctasm 5.0
$ U: U& b% N" ~) @window xp
" U6 d! Z9 B2 d. p在DOS下也试过了,结果相同。0 b V& Q6 v. s1 w2 c9 D
2 t9 F$ }* h' D( E6 Z7 m; w
正常运行,结果正确。6 B2 F, G7 a5 h( F
' \! Y0 n' w! q2 h
( A. {' o3 C" s0 }5 r9 W- \1 D在cv中调试,结果错误。
: O0 q( h$ h( g9 K ! a m5 D0 ~, Q' v( X1 s/ a' y7 r
" T9 r! X3 k1 L* e, \1 }! o4 d退出cv后,显示的也错误。2 ? ^+ p: o% g( } X
3 h/ j6 Q/ ?& t! y
7 ~8 h4 K' C4 L6 ]# O: {在td中,结果正确。
, ?/ C5 M7 G0 \( s7 ]9 |" @9 `
8 S5 A, n7 l& ?: m! E% u x3 o9 d6 w' L b& T4 j- J. J2 ?$ o0 |
8 _3 k; x3 m- \
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
" f6 G7 I' z4 `1 x/ `5 _, w; S, p# |( y# i# e$ Q
' Z! ]) r0 q/ M
代码如下,请各位帮忙分析下,谢谢* i. b" ^% ]5 P) d0 t
7 F% P3 h! O+ W8 ?/ \4 ^. k
.model small
/ \4 U* D1 t, A* J0 E4 \& d" S.586% i- n$ A( b* `4 b
.stack
# `3 S$ y" @, D" U7 |.data
. i0 q7 o- o0 c2 V4 Rcpu_str dd 4 dup (?)/ `" P& N, q2 q6 z
db '$'
; i% K" G: t# ?( g6 x& B) w( c.code
8 x7 f9 S N5 i: |7 z% x0 }start:
9 D' k7 \5 L/ w: `; ]; I, e8 K% c mov ax,@data7 n J, c. ?8 w& M% k* k! s
mov ds,ax
5 b% ?' p- ^ n7 I- @4 p- X# i mov es,ax/ h% N- u. H9 X4 |+ V: l
; d/ k# d4 k% f0 v0 B/ j1 B3 r mov eax,80000002h
7 o* c* n# C- Z7 E" s+ e9 x cpuid
& v! S$ U! n% Z$ n3 @4 X mov cpu_str,eax* ~' w9 Q) e" X4 H3 H0 K1 ~
lea dx,cpu_str
8 R& M) V3 q- `5 Y$ X, d mov ah,09h- S! W. u7 L; k+ {. h0 e
int 21h/ }( ], K; W. C
mov ax,4c00h" X# H4 w5 ?. g6 O0 q5 Q& N& Y
int 21h. H1 `9 ^) r5 d# N6 ]
end start |
|