|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。
, b% p6 b/ ?' O6 }* I6 b运行环境:8 x9 E' s, f0 d) M/ O7 D( T
masm 6.11
5 k% K4 Q% h* R0 F! k! e$ ]2 ctasm 5.0; `$ l& P! y* @/ f% b
window xp8 g, \/ w! P9 L, x2 s1 x+ [, O
在DOS下也试过了,结果相同。$ ~, l" p+ N& A: Q7 ]9 o6 Z* v7 t
: C3 O. c u6 a3 d6 [. {正常运行,结果正确。) w/ u# u3 t, t1 N- o

$ k2 _) f! `" z; j" C v' \, V5 Z' l4 ?1 K- K$ `9 [" Q5 f9 ]
在cv中调试,结果错误。
" ]* u0 L3 J+ v ; b, S) _9 j" E6 n2 N" N
1 m6 D* N: k L/ d/ I, x: P! b: A
退出cv后,显示的也错误。$ @6 ^6 j9 k( e

0 T( D0 ]* R" l$ l
# Q' r k+ {$ t% y, \在td中,结果正确。
8 S" ~% z/ u# N) U0 J
! z" ~+ x5 d- c* J* M+ u& p( V+ i1 Z+ V
# K1 t3 R0 O( z6 ]3 L2 r$ W) G
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么4 M7 s) v7 {0 H* R L. n' T
2 X0 } {. k8 O
$ z6 f( d# {8 U代码如下,请各位帮忙分析下,谢谢
/ m! P. d8 C- n" Y
* |8 b/ e: o6 n& j* M# G.model small
@0 N5 o) N4 Y' x: ^% h.586
. w! [' g a) @9 J1 M1 X.stack7 l* V/ t) ]. X9 e
.data
; F# C' B0 J- ^, B! J# E5 ]7 l1 Ycpu_str dd 4 dup (?)# f3 \' s: ?: g* b! Q5 T, o3 O9 \
db '$'
( u) i: }& d' `+ _$ e) _( M.code: U& k8 H( }& _( h; o4 ~ f
start:
; X% D( {4 E7 v7 U- A- A mov ax,@data
( W1 n, T- t0 _, x7 ^4 L7 Q mov ds,ax
) g5 }% }6 p6 x mov es,ax
& r. Z( Y8 Z3 q. w6 t
- l# y5 G% i; G/ W mov eax,80000002h
/ S& w# [' |: F; r6 s4 D cpuid- U/ K6 @; u* ~) l
mov cpu_str,eax
9 {( R7 A8 {1 u% C" Y9 f# M lea dx,cpu_str
2 _4 X' j0 w- E- L8 h/ ` mov ah,09h
$ {0 w, b$ e) g6 \( ^0 z- p int 21h
8 U* T* k0 v- y! o mov ax,4c00h" k+ X j; R( ]3 L( f: p
int 21h% R6 S" A8 L/ w7 y- T, L
end start |
|