|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。$ [5 z8 Z' {$ k' H/ R# ?6 L
运行环境:5 r: M6 ?- K+ l+ P
masm 6.11$ K6 c! d5 r9 F; Q
tasm 5.08 A$ p+ A4 z' B; Z4 _' C' l
window xp5 r+ i6 L- m% D5 |: j
在DOS下也试过了,结果相同。3 L4 R3 r1 Y5 A6 G
9 Y+ L! d8 K7 X( ?) ?4 t6 ?正常运行,结果正确。; ~, I9 Q" R( n! o7 r& y6 w
. R& L( @. X$ G ~$ U3 q$ c7 ^0 a
4 C& W" i6 c5 ^7 [6 U2 h; s0 Z
在cv中调试,结果错误。
1 T' h6 X5 C& x
4 m; _6 j9 V, j9 u5 \$ g; u
! _% @" z% U" ^8 e! N退出cv后,显示的也错误。
+ x2 a5 I- g/ K * e3 x4 s; Q/ }- q% E i5 [ t5 \
* J' ~; S' N4 g8 b+ w3 ]7 l' r+ v
在td中,结果正确。
- r" i; m7 o# B# r 5 @; ?7 p% i- F1 x3 y" D. q/ {. _$ Y
' e5 k3 l" k* E) r
8 c" T4 l2 e9 {: E' m4 [/ i
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么# n& ^; u/ T! N3 a
7 I/ t# I% T3 p& z. ?
% T8 z) }3 }6 Q( J代码如下,请各位帮忙分析下,谢谢
2 c+ E8 O* w: M# B7 w7 v% t3 ], p" g) k ?- J7 ]
.model small D, q5 C/ I4 I6 x; w G% q
.586
$ w! g8 b a- R7 U' g, w.stack6 ~/ B1 X- P7 A2 x
.data& c/ X# a$ J3 q5 D1 f4 n
cpu_str dd 4 dup (?); I# h5 k2 z9 Y6 p9 _% U. U0 ?5 f
db '$'
8 n4 P3 `/ X4 g% p! g9 A) @.code: t$ {/ s8 i O
start:
4 n. U5 e- T& E0 ~- M$ m2 z: x9 g: g mov ax,@data
4 y' H# S! d I0 n- l mov ds,ax$ y" e0 @0 @1 o- w- w- G5 S
mov es,ax
9 d/ m4 j' g$ k) l3 P 3 P$ f. z$ |% C* T) ]7 j
mov eax,80000002h; ~1 D' ?/ a, N C/ H/ e, e7 @
cpuid
1 N9 }" E% s+ l5 y8 t+ ^( R mov cpu_str,eax
- i! o% `# R$ e. z, U# C) [6 O. V lea dx,cpu_str
$ a: y4 q. T/ ?) V/ ^1 P mov ah,09h9 N8 ^ n: f2 U
int 21h
, P0 h4 Y" B# [' G5 g& p mov ax,4c00h
/ {2 k+ L9 s! @ int 21h
( i8 v; k% @0 ?end start |
|