|
|
最近学习的cpuid指令,因此写了两行试一下,运行结果正确,但是用cv调试时结果却不正确。
. w0 |# v. ?- [! u" ^" e5 a运行环境:& l+ @+ z2 k: t% L0 D
masm 6.11
/ y: X( V5 V6 n$ }& e) ?tasm 5.0! n' A0 o; g% e
window xp
& Z* P, ~* g* d在DOS下也试过了,结果相同。
& z1 S. h; @' F+ d3 i, v4 S$ r, C# H1 g- O* c% o3 r; z+ g6 V2 z
正常运行,结果正确。
& h" j1 _. Z: Q7 F. c0 u; A! {
# F1 o3 u ?5 v5 [
$ O- A6 e# C& e! i在cv中调试,结果错误。2 E9 [& w5 v$ } O7 _2 `
3 K7 l) q0 T3 {4 V2 |2 U {
! _- o/ a3 O4 \' |; P退出cv后,显示的也错误。& k: n; y& m( T0 x
, s7 }8 |3 z: G- E
9 N e+ m7 _. Z# z) |2 B, }% F5 x在td中,结果正确。
% g4 g5 v$ d0 o + U4 Y8 I( F2 x P; U' D
/ y+ P& E, L7 q! ^
8 `+ M( c/ |- i3 f- M还有的时候在cv中寄存器的值莫名其妙的变化,请高手指教是为什么+ R+ L' K: ~4 D
" ?. k7 c+ } V1 `) I9 w0 `1 l4 u M7 E
代码如下,请各位帮忙分析下,谢谢& U, b, `/ ^5 a$ M% a4 ]
5 F4 y# W5 F6 A1 z! |
.model small, ]! U6 m5 Y& K2 R
.5867 F* q5 a/ O1 {
.stack
1 v t3 v6 |5 M2 T: v& ].data
- W1 R1 z @9 @# p1 ~ D, k$ Icpu_str dd 4 dup (?)
' g [/ X6 x+ [- z5 f db '$'
: r0 Z. V V& ?; l' Z! h9 [.code
) N% u- G' S: l& }+ F- _start:
- G$ |; V* T n8 q mov ax,@data* R+ ~9 j1 J E9 k! M% V
mov ds,ax
( z' ^) K, f8 G8 t mov es,ax
& I$ [: i0 g* M9 I5 s3 G # h7 J R' ]5 T: q- `& S
mov eax,80000002h7 f* q6 r# d% q& D
cpuid/ _# `0 r/ v% r7 m" f+ ?
mov cpu_str,eax
4 Q3 K4 X; C( {( a3 s: w6 w P" @ lea dx,cpu_str$ `$ _" E# ` j; K0 D' ~
mov ah,09h
% K# c9 X+ T- a- ]" v3 d int 21h% P8 t5 P8 w# n/ u7 C8 E& C& C& f
mov ax,4c00h
3 {9 `- c4 E% {2 v3 \8 L' w! r. f4 T int 21h
! q- H5 G! P- E+ E6 p- jend start |
|