|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。 x/ S! a4 N$ [3 U
运行环境:* B# ?- u; F8 @+ p5 g
masm 6.11. x0 v& w$ u, w+ D# p
tasm 5.0
, f" z0 Q8 m# r* H. B& bwindow xp
0 b+ h6 a6 _- d. v. a5 M+ N. W在DOS下也试过了,结果相同。& X4 j- p' R/ B7 ^& M5 K6 M
, _. C( B" P9 O4 q5 r& Y1 y正常运行,结果正确。
+ U" \! j- i: A: _5 T
6 \ E" @9 f3 x/ u5 P& M
6 l# W0 ^5 ~" c/ S1 r- A4 Z7 G在cv中调试,结果错误。4 A. _& ~) V9 e+ r1 @* @- z) {
* D" }; s; y1 l, ^
& T4 Z8 i; l$ e退出cv后,显示的也错误。
# @ J8 k' |; O2 I6 e8 N! @
) d, D7 F% k% G* [: S3 H& m, }" e# z, y3 A4 B
在td中,结果正确。( c7 e' S( g* N9 ? `
' ^$ r7 _5 H( N1 D1 F
- _( u6 L+ I: P2 j
1 ^) D7 T# h8 T& S5 M/ b) Z还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
5 A0 H$ {% b2 G* R0 G7 Z- b
f- @6 A- T ]& g' s3 z
+ |; k1 Y% t/ @- a0 X1 i代码如下,请各位帮忙分析下,谢谢
: e: U8 T. ?( h& Q( f) f3 @* l7 x/ o0 W; ]4 ?; g
.model small
0 h. d* z- ^3 D+ N. z! h0 c.586
) Q8 B- l: a2 d# [7 g( T! m.stack
) ?* ~6 r; J) g" @8 r$ f.data& ~+ |; Z- P, J# T
cpu_str dd 4 dup (?)
9 h7 H. T. s8 { L db '$'/ z- U' I) N0 H8 q& M% J8 I
.code
3 V* V6 D! L3 ]- Kstart:( Z; C. ~1 A2 `& F. @
mov ax,@data
4 G+ i/ l* c6 ?. S1 O- F7 ]/ \ mov ds,ax/ Z" U) L1 v1 y. @6 S
mov es,ax
+ L" R- m' {. M5 j ) d' c4 N& ?8 V% E! @. s
mov eax,80000002h
( m! w, W8 B2 \1 ~ cpuid
* P; n! L2 v7 @1 z. ? mov cpu_str,eax
* w0 {: V8 H# L s lea dx,cpu_str9 }5 B# p# }; j3 c/ Y
mov ah,09h
5 {. p3 g3 P: [" L, ?) e1 X$ @# K. n int 21h/ V. u! _9 I2 I, ?0 h5 u8 m
mov ax,4c00h0 S/ d% g& G1 a7 u5 Y& }+ R# V- m
int 21h
' N2 ?8 o/ ~ h* n6 A' a5 oend start |
|