|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。
5 T0 b4 I9 N" m0 M' b. K运行环境:( O* N C9 b7 _0 e+ Z0 W' H& i
masm 6.11! `3 _7 l- x& w! d0 Q
tasm 5.01 h$ \4 e, q! f$ ], @' U U0 D- u; U
window xp* f: s/ E- h! V( y/ F
在DOS下也试过了,结果相同。" _9 l: h5 _3 {2 [7 i, ?
: n9 E1 U! B' P2 g/ m; Z i5 p
正常运行,结果正确。4 o% M" b1 O- @
' R' h, |4 ]$ j" m5 j
6 X0 a9 o$ y; @' m/ w( s6 F' S
在cv中调试,结果错误。% s! G5 _$ t5 I( j
" C P' M& ^- D5 A; z: x7 Z( z6 q7 ~) O
退出cv后,显示的也错误。
; U |9 I& `6 ]8 f% @, }# b2 Q" @ S2 L8 J2 @9 t$ `% R( R
% ^$ m* O- |' c3 G, W& Y$ B在td中,结果正确。
! A7 S8 Z1 K4 \6 v N) ^' i$ V3 j
6 T' y& z9 p6 [% p( k6 z- N/ D S4 j/ ~+ c5 W, C! b3 I0 f: K7 n3 l
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
; W0 M( [. z/ [- _: W2 H) s; E; m4 _9 X+ z/ x) P
7 I- u$ ?# [9 s代码如下,请各位帮忙分析下,谢谢
4 T4 q9 I. e5 `; m" T. r3 R( V# B( U2 t: W$ n& x$ n/ L( s
.model small
y% e# d, C r7 J3 M3 u.586! V0 S; _* p/ i4 `6 p3 V% R
.stack
! Z) a6 q+ r4 o/ y: Y: v.data
+ C4 c0 k/ u! L+ [# Y- o: J- Fcpu_str dd 4 dup (?)7 q% H! O- U* a8 m/ S- |( j9 H
db '$'
* n- J( B7 ^. Y, _: b.code
- R; W: ]& m# z) m$ u5 D% D; b0 @start:
2 O) J$ k% g+ \$ A" I4 o mov ax,@data. V# e/ w; e6 p6 J$ U: Q6 y' A
mov ds,ax
- Z2 F" D0 W ]* h mov es,ax
4 z; i7 L6 z2 x7 g& H3 Y 4 v* n/ Y4 t$ i% j
mov eax,80000002h
$ `6 S+ ^' |& z5 [# s! H% e cpuid
& {6 z' k+ {" p3 F: \! t8 O" U mov cpu_str,eax
9 W' M' m; R" _$ U# c! @7 _+ | lea dx,cpu_str
" n$ w2 h1 K' x7 V mov ah,09h
9 l; f( d/ _4 w5 M) y int 21h
4 v! g, y/ f2 a! ?) i mov ax,4c00h
4 n1 \4 ?. H; M* g! {! p; N0 i y int 21h
' V- B9 W' W4 _2 Vend start |
|