|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。
7 F; |, e, j0 Y5 T) ]运行环境:& [8 [0 ~! z/ e8 S6 B. \
masm 6.11
4 s* U" b( ]3 P- ^tasm 5.0
# P% x: J1 l- T8 _window xp, x" p* Z- s( v3 ]
在DOS下也试过了,结果相同。
, t5 r0 x4 j+ X& d
9 Z8 z& r: i( i* `& O6 N1 u正常运行,结果正确。0 a$ Y6 Y& o) P; }& E
2 p0 ]* q" M: O( U+ P
9 {" a( _' h% N! N9 d" d8 _' ]3 `
在cv中调试,结果错误。
: H% V: x& {. x% X2 F( Z% }$ x6 N# h
N- Z0 g5 h) G# W/ G+ _/ r5 ?6 I- b3 X/ f' L
退出cv后,显示的也错误。
n$ j: ~) U; i. o6 ~: q9 y ! }* A8 k5 c+ N' I9 c. `
7 T! f" X% R/ O9 I$ e, W
在td中,结果正确。
" W4 N7 L5 N/ R
5 }' ]* H6 R' f2 b- ?+ `8 R q/ l
) ] _4 I, P+ D0 u# ?: ?$ e& W, N. N0 k7 m
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
3 s/ h( A) Y3 b- L9 J2 b. H% L. r; f- f3 N i
. K6 F) j/ g# n* f+ A8 i( R代码如下,请各位帮忙分析下,谢谢; p+ ]+ A) ?; x T' O) E; W
/ n4 ^4 a. ~% H' o% ?.model small5 n/ c. _7 O/ k$ D
.5861 `; t/ K6 ` l; p2 {( S7 d
.stack
2 h$ m5 N8 k' A' Q2 O.data
5 M" W ] i' i Z& W, pcpu_str dd 4 dup (?)- i, z2 a& m8 e6 \
db '$'
D! T X$ k7 j, E+ x4 e! w.code: i. v2 g9 n! `6 }! N; N5 B8 n' S
start:; Y0 p% m, s- i' m( m8 ]
mov ax,@data
0 @; }/ ^2 P8 L" u mov ds,ax
% O: W6 m- Z/ G mov es,ax
I U9 S6 D: E3 x5 U7 K/ ~* c$ t % W3 H. }2 _& Y9 F
mov eax,80000002h; @/ ?. _: D! _& p
cpuid
A. q1 n: w4 Y. g& R4 y$ q mov cpu_str,eax
q2 ^* ~, h. X9 m# R: c' n lea dx,cpu_str
# r- d( G0 V: J8 I% R, k mov ah,09h4 Z/ k4 y+ D# c
int 21h+ E5 G. R! a; A4 |2 _9 F
mov ax,4c00h7 r1 I- S$ s. S
int 21h0 D7 ?( @2 N* C; n, `4 l, I
end start |
|