|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。$ N2 [, T) d) {* H
运行环境:; D) G4 u. y6 _/ t
masm 6.11 z' X) r7 X" |6 [2 y
tasm 5.0. F7 h8 D) u& d9 j) u
window xp
- n, U, a, E" X# ?0 s在DOS下也试过了,结果相同。
6 v3 O9 d6 Z3 o
' P- |' P# f. [6 k2 J0 y正常运行,结果正确。# V4 {. C' r& s# g; Y

. |4 N3 |. H6 J a8 M, e' r! p4 v- v& L( m
在cv中调试,结果错误。
% j3 c. d, v# R5 S* n! k# c 9 C8 w( y( n5 D3 U. T; D9 q4 o- C
) o" ]% u" N% s" ?
退出cv后,显示的也错误。2 E, J& p5 U( q% W% Y! s$ {

" P% ]+ j) G) _; o
0 V Q2 ]8 G F' L3 D在td中,结果正确。6 _# L# [0 a) E$ U9 D @9 x% M

% p2 a; y1 k- B" X) k. b) `0 K
7 f9 G7 t6 K$ k8 N* |7 z7 K' i. z' b5 K3 s, U9 k
还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么. e- J F0 [0 T! k4 E
, _* ~# d) s& B& P
# n% A! ~: \6 x9 j% b. [代码如下,请各位帮忙分析下,谢谢
! o% @) C$ x& y6 x
2 V' E( r* F5 I; Y7 W! J.model small; B3 r, _- Z! t; F
.586
" ~: K) p9 `5 u# x( U4 ~.stack
" l( D: \) A4 a3 M) j* f.data! O# B# b) _* { h5 ^3 P3 w
cpu_str dd 4 dup (?)2 ^# N1 |/ Y# x0 K3 D1 u2 s
db '$' j. t" _, l7 N h6 B
.code) x: H8 ?% d+ r7 s" @' B4 q
start:
7 j) d/ T% d/ w- ~* w/ ^4 x mov ax,@data
n1 j+ ^5 s) u/ Z( G& f5 V mov ds,ax
5 e. ?- A% [/ p mov es,ax
0 p: f( Q) t. m# p3 P* J( k
' Q' Q/ D# V+ y2 V9 P mov eax,80000002h# j+ v. @% m, K
cpuid+ ^" `1 u" N9 C
mov cpu_str,eax! w: K+ F3 g4 c
lea dx,cpu_str
6 h# |( s+ d0 r7 z mov ah,09h
+ G" X' w1 `% Y4 i, W3 ?& i* n int 21h
& @, S1 @( V1 c# a2 y: a mov ax,4c00h" y6 {6 f! S: ?" K t( c
int 21h
5 J1 p& M3 `9 X! Bend start |
|