|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。
8 `+ c+ Z3 I8 j. l运行环境:
; _; A8 r0 f- m+ |4 y" [masm 6.11
* N* g0 ]) t) btasm 5.0% c- q* A5 ]5 F
window xp
' ?- O$ w1 {& k8 [. Q, o在DOS下也试过了,结果相同。0 ~4 K' F( r, Q
, T' ~ X# y% r! \# h5 F
正常运行,结果正确。
& r9 h/ Z. E* z & V" {, o, }7 F( D: P+ X( i
1 T8 w: [7 u: ~( u- x- R在cv中调试,结果错误。3 X4 p3 H9 E4 N3 F& V' p7 |

+ D, S+ r4 s, H; _% x' r5 N: _9 U- m: X j) m: H+ z2 p+ V9 Q* d$ i' E
退出cv后,显示的也错误。
7 v: }' h9 @* e7 w , n+ x' V3 y, V' n' U
- N/ H' X' f% I在td中,结果正确。' \1 s0 t% r' v0 k
8 \; u f! ?. C5 \" x( W U
$ F" z% P4 |) E, Q- U6 O: V" Q3 p2 p: E. B3 s% U% y% U2 E
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么9 W* Q+ f* q4 ^! d$ Z
3 F, O9 u. E! }: H2 j, L( f
6 H' c+ `5 a* D3 f代码如下,请各位帮忙分析下,谢谢3 l2 N ?# B8 ?. [2 Z
, h9 R. W1 E1 O. ] I6 f% g) j.model small3 n }" {. J, n. }( l
.586( t9 @ L+ n, S6 e- ]. K" g
.stack
( h4 d' \4 J; P- e" L) T.data
+ K! c+ Y: `5 X: y- tcpu_str dd 4 dup (?)) E5 k$ Y) m7 M* g
db '$'* z. j3 W1 M, t1 \; v5 `0 n' N
.code
0 V3 I* l* D1 x" j7 x5 s' Dstart:
7 v% r1 y. b: L% E& n1 A9 a" @ mov ax,@data
5 d! z2 v4 ?3 N* D& D; ^2 N mov ds,ax" n8 S4 [( w" m3 n9 s
mov es,ax0 {' k w- X4 d3 J
+ u6 S9 |& N' d1 x* J) n7 W mov eax,80000002h; B; r, ]% g5 ?
cpuid6 {: U3 A" K5 ^: O6 f% _
mov cpu_str,eax
; J: X. }2 _' d: f# ?. [ lea dx,cpu_str& ~; `5 g- ]% @# H+ d1 n
mov ah,09h0 i+ f0 g0 g8 q2 ~9 W
int 21h8 c5 n$ ]+ M$ r [& W3 m. P
mov ax,4c00h
& L+ ?3 ^3 ^+ C% ?4 S2 [' E int 21h2 M) M, l& q4 W) |& n; E
end start |
|