|
|
Hi 各位高手好
- O) v& O: N$ T7 X: g以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。. h1 E9 p0 J; @* |: _" [& v
;---------------------------------------: A+ b, B, r+ w& z
M( @; J% g2 W2 |. i
.model small# z0 T" {/ R* a. H% u
.586p
2 L6 E6 }8 i, Z A% s! s.stack
+ E4 o. h; q i5 z* Q8 y$ e" I4 l
G2 c8 q0 Z1 Z! E7 ~9 a3 k% |& Y.data
& |6 E/ Q5 p% t2 {- C: t' [6 V
: W; T( B- c/ y3 Y' x$ _DESC STRUC
- I" z f3 \; ?8 E( s. w& \ LimitL DW 0 z: T! L5 {3 a. n
BaseL DW 0 / s: j: Y- J0 U! z0 ^5 _
BaseM DB 0
( _2 A% a0 I# I, b% S' Q Attributes DB 0
1 a" a! n' l7 b# M LimitH DB 0
( E. h4 }/ l2 J8 P* h BaseH DB 0 " r9 v. A9 _8 x+ Q+ O" f1 R* F
DESC ENDS& F3 o; J/ d, G3 B# @& A8 b
; }5 ^" L% v3 s! {
PDesc STRUC4 F, A) k- T3 K/ S/ o9 O" {
Limit DW 0
$ U3 H: I1 \1 o1 M Base DD 0 : z/ b n" @5 h$ I |
PDesc ENDS
2 ?$ y8 a! m$ J: b: K
3 f0 |( M# V3 u9 ~6 O9 \# D/ M- MGDT_def Label Fword
" D) ]3 _2 i' ~/ K: CNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>/ b q+ q* B6 |
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>" E1 s' O p6 ?" }8 |( z
5 |1 U; `# c9 O5 t
GDT_Addr PDesc <$-GDT_def-1, >
& H5 t/ K( S1 Jcmd DD 255(0): X" x+ j) K- Q! L$ n+ I5 i
/ F& k$ s2 U7 ?" h5 P- _.code+ K4 @8 o, Z& m( |1 w' d3 o
main proc3 L' \% l6 K+ j9 {+ \
call Set4gb
" |( r8 [2 N3 r r! h! D+ b0 \, h( b5 y
" M9 K1 _4 q% f6 x* W* I5 t9 L mov esi, 20000100h _4 ?# Z; W& `, V1 U% s5 O$ D6 J
mov dword ptr fs:[esi], 055aa55aah7 B- s. ^) r" @3 G* a
! R1 Y, O% ~' B% V& m .exit/ \( ^+ L$ s7 D& D
main endp % O0 J) s+ F, V
1 W+ g2 b/ r! s: @8 a8 d* \5 u
Set4gb PROC NEAR
D! y* O) F% e$ @: e in al, 92h. s% _0 q, L0 O& R1 |
or al, 002
5 p: f# ^% g. Q9 \; R2 t out 092h, al
8 a* `! v8 n% K- z* k9 V out 0edh, al
( }: v) m9 Q9 G9 P, @0 L5 k- |, x- l& x5 s& b2 o/ B* }
cli
1 ~* t+ n, \. Q, B ]3 \3 f" s8 ^3 y7 ? f0 `* O/ Y
mov eax, ds" \) u: B; O) I% q" ~8 U n
shl eax, 4
% O) s' [; R) j8 K xor ebx, ebx
- J( Y; O$ D- t$ } i mov bx, offset GDT_def
' X: r2 a5 Y: V, R/ W* ~# K3 D add eax, ebx s8 n' `7 q( N! _* X
mov dword ptr GDT_Addr.Base, eax
9 u8 p( U9 @& w; X8 Z lgdt fword ptr GDT_Addr
; U" }) @0 k% U# ?& }, h: o
1 M. ~* [2 @, A" l1 t mov bx, 8
4 c- e- T7 p, N3 |- y7 F mov eax, cr08 _% F2 o( v2 K7 H& q! ?
or al, 1
5 n$ k8 S- e$ }1 k8 @; [; p: w- u mov cr0, eax$ X0 Q' ^. w7 j. ?$ H( g: d/ B) m" [
$ b( m u/ G2 n' e jmp pMod
' Y2 A3 o- @' w6 M' A: I pMod:
5 K' Q G$ O5 o# A, d1 ]* s J
, x8 v! }% D! d4 y. h" {! N mov fs, bx( A' @/ ?9 ~( S) _
mov gs, bx% y [# M' |, s
and al, 0FEh+ | Q$ A5 g% B1 s
mov cr0, eax
5 V! {+ `, k0 ^' D8 C+ A
1 {' B( S1 d- K: t jmp rMod
* P' S, t: O4 {) H& d rMod:1 Z" k* d' _/ }$ q& \
/ b+ D3 u; k0 t' s5 ?$ `7 q2 z' h
mov ax, 0
) k1 m* s2 I* @4 s2 j s mov fs, ax
2 K% V e4 V/ l- x mov gs, ax N' |6 Y( I: {/ W' \" I
: p% g, ]0 L- M' W+ ?% b m ( G. X! h1 n& n* R5 d
: a* m: e; }1 l. ]' x+ L
sti+ x7 Y0 f+ q8 S G. \
ret
3 T! A/ g) X+ D4 `( h+ [0 fSet4gb ENDP
- Q, o* ~) Q$ i+ U. s. u8 s
6 m' O) ]6 K# l4 _1 Qend main |
|