|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。
! H8 \$ Y4 \* U1 G$ h4 m% P运行环境:
& t9 _3 m" D/ j) ~! s$ Qmasm 6.11
5 |/ `9 s* V5 C. a, c3 d5 ktasm 5.07 _) S8 T; w" n+ |* \( K% R3 w
window xp
" \1 l6 \) _; }) x在DOS下也试过了,结果相同。
+ K+ | ]+ Y z
( `. o5 k8 \5 \ J. t正常运行,结果正确。" n8 e1 ]" D+ Q5 w
; l8 W2 N& n' n1 m5 m
, I# I/ R" k' K+ }0 Q* Z. z; o' b在cv中调试,结果错误。
' g; `# j2 \7 @4 P
5 t V- h, B/ ?# n8 A2 y% g6 U% V. Y6 f
退出cv后,显示的也错误。2 G% J" N6 U- }; a: S+ b

# v) W$ U+ {2 K* ^+ t9 {. `1 T
! `5 ]/ V6 x( r0 Z1 o在td中,结果正确。" {9 \( o0 R e. P! T* B! V- i& \& o
" z J2 ^8 C( a4 e. z$ g
' R' e! J2 U1 U3 n& v
7 G4 X8 o+ G" S. {2 Y2 v) H还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
% d/ C5 Z1 Y$ O! |* `# n6 L
/ g/ u" I* ]/ w- @! K% ~5 _9 ~2 l
代码如下,请各位帮忙分析下,谢谢
6 i6 C$ ^4 F" ^/ ]9 ~4 Y# L; s, }1 s3 T% C1 v {% W* H
.model small3 e% m/ _$ }1 S$ T' {2 h
.586
0 r3 ]0 e& }7 p; G, F! p7 A# L4 A4 c.stack
0 _' ` Y0 H5 l% _5 d. d3 R.data* _/ S9 r: _3 L
cpu_str dd 4 dup (?), [1 ~' R" Y5 s3 m6 i1 d, l
db '$'6 j% E# l# V( W+ t
.code
- A6 }2 [# O0 |. l" rstart:
, \- U, z/ g: E- f0 Z( G# u mov ax,@data
$ t) K9 s, Q7 e* y0 O8 i mov ds,ax
( N" C' p1 w6 j# [% n5 ? mov es,ax9 E9 F1 `+ o8 `4 z( f- U. ^
5 j& }$ v9 k6 X! N: @ a mov eax,80000002h7 s9 k- N0 r# d1 V+ y4 H: Z' O- c
cpuid
0 s) F7 p$ n6 c: g7 f6 E mov cpu_str,eax
* q' s/ y. f4 D lea dx,cpu_str) h0 S( k) [0 @0 K5 l
mov ah,09h" u* m1 \4 Q0 f& q0 O; x- k
int 21h1 i$ U9 ?( z( D) O; P6 O' ^
mov ax,4c00h. b! c, q$ D+ Y- U" B
int 21h9 y4 Q% x/ u, X) g' C
end start |
|