|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。* W. P" v" | e* T8 J
运行环境:
+ i" E7 @4 F9 i% A6 fmasm 6.11
C4 N4 b/ s: ^. z( U( r% o6 u8 Ptasm 5.0
/ J1 k2 _4 S( ^. a% i& Twindow xp
% a5 n0 W+ p0 Q# ` `! `在DOS下也试过了,结果相同。
, R7 \7 _# v3 G" `) h, Y7 Y& s% C' J1 a2 J( P
正常运行,结果正确。. K4 ~5 t+ D! p7 V: ]# |
; \5 `, s" i" a& @! Y/ Y% @7 r
F' \/ y5 ^6 a- e
在cv中调试,结果错误。
8 g7 L; A/ x/ ]
3 P) g4 K; V; E+ K( }* L2 s4 Z: k4 P' u; y, _5 G3 \) X, Z! j( o
退出cv后,显示的也错误。; u; H$ u$ X. ]. x4 k7 ?
$ I9 s# K( V1 b1 q' s
7 d, L, Y0 E+ B+ y2 [
在td中,结果正确。
: @0 d, u! N6 c* X2 ^; F
; \( B, Y: }% T$ Q9 C! h8 W9 q: }! `0 a0 \3 c
3 T! u* ]/ O" t2 a8 C, O
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么
# M! h4 n/ Q1 `# R3 I& Y
! L" L1 [/ w7 j
' P& M* Y6 K$ e5 i# B4 m7 y% Z代码如下,请各位帮忙分析下,谢谢" e5 h0 G2 U( G8 ], f, u! v
, {- x$ ?5 H, x/ }% S, j.model small
" ?% ^, s1 U: C( p K2 l) F.586" i9 k7 F! [5 d9 {9 m
.stack
. q4 s7 W1 K* u9 D& Q; u9 N) l.data
4 d3 n6 b& x) B7 k6 V# Q: n6 Jcpu_str dd 4 dup (?)' h# O6 a. Z7 o8 n3 L9 d" ?
db '$': s& r6 f( t( S
.code
& j2 @; m U" \1 \, d( N; J1 nstart:
4 ^* e* R1 c- g+ {- m: X+ O mov ax,@data
! R4 J. o5 V" S9 O5 m/ ? mov ds,ax( K! }( T; l) f
mov es,ax
2 V& W! _* Q. K- g ; Y' Q+ A2 b8 ]
mov eax,80000002h; e. D' p# Q9 p7 d
cpuid0 `7 g$ N! F, n, H
mov cpu_str,eax* w3 A+ r D0 H" k. |, t+ `
lea dx,cpu_str
0 o. s4 p# V. v; }4 A mov ah,09h
- U* D0 }) i9 o) [5 P+ @ int 21h- X, |4 `! c4 K( {2 R5 [2 A
mov ax,4c00h! b/ R7 M- h5 ^6 I; B" R
int 21h
, l' k+ X$ b0 R% h, \! H$ jend start |
|