|
|
Hi 各位高手好* r! y6 a2 h" s# A9 j: C: H* F
以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。8 M; b+ ^, }" V) B: e F( x
;---------------------------------------
7 G0 \7 @* s' O
! h6 Q0 `/ Y3 G.model small6 Y; L& u; m3 A h* b
.586p* L% Z9 P5 r; R1 j
.stack : M: ?4 m b+ Q
- A n" ?' `# B% X.data
- ?& D. } |; T, _! T
$ M2 Q' P7 r6 b' s9 NDESC STRUC! n4 A' i( k4 ]* ?8 T
LimitL DW 0 $ }: w t& o8 F* h0 `+ \8 ]4 t
BaseL DW 0
1 V1 Z8 {; q! i, |3 K& p4 Q BaseM DB 0 ' T5 _7 q' W. v: D6 u
Attributes DB 0 + q7 x6 f& s: N. Q2 M' Q
LimitH DB 0
! A) J/ {0 v! s" x) d BaseH DB 0
; }' }3 j2 S7 \DESC ENDS
5 i" D1 A4 g! @: M
: r% f* J5 \" K& \PDesc STRUC
& H6 L# T& u+ Z% P! w% b+ }6 Q Limit DW 0 # ]: ^( W8 l$ G: a
Base DD 0
, U3 w! o& ]5 D0 `8 ]6 Q- qPDesc ENDS
, D# z E/ h) \- O0 X6 C0 }+ L1 s! p/ Z- M2 W
GDT_def Label Fword- w$ ~5 q( b4 l% `, L
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
4 W- q( _+ I% c( x' h' t2 Z0 TData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>7 u& t9 o v! m$ F9 R$ G% C
$ K. T" ]9 O" |# I0 RGDT_Addr PDesc <$-GDT_def-1, >
5 |+ l" h! D% i& X5 E/ t/ ocmd DD 255(0)1 N2 ?* |- `3 Y1 m- m. _
8 p1 A& G9 V/ G0 I( K' b.code$ T+ B6 R! L% `( g5 _ e0 w
main proc
; t0 Z, X) l$ u) }( t call Set4gb
' Z5 t; `2 ]4 K3 ]1 F: ~( n; \: Y
$ Q" O) K) K5 a+ [6 A" { mov esi, 20000100h) t# `' _% |9 y1 \0 Q: n
mov dword ptr fs:[esi], 055aa55aah% H* s" l7 A2 l0 j1 ^$ c8 j' V' u0 h
2 U( }+ v5 \# X9 }$ I( W% Y .exit
; A1 p! Z5 U1 m8 E8 dmain endp , ?9 v7 n$ ~6 Q( \ a2 h
* d" [4 o* M# ~
Set4gb PROC NEAR+ X& H5 Z( X9 ]* C( v) w( S
in al, 92h
) m* a h' p( d9 O' n or al, 002
% w. p; L Y; `& l out 092h, al
- a5 o3 w) ?$ s5 H3 l. v' F# Y2 k out 0edh, al; y4 c) j; ^* }# K% s+ j! ^$ Z) }( S
# R: F1 ]* H0 y4 W) s" c0 @ P
cli
; c3 D; m9 H( D$ U* Q* G
6 m0 N) @9 m6 f* L mov eax, ds
6 u- j& s% t9 S2 D/ Y2 z shl eax, 4
% Z4 z" Z. e) P/ S P& B2 W xor ebx, ebx
' O, ?9 b! q$ I; P mov bx, offset GDT_def
# C7 Y( u0 t$ `* L$ m add eax, ebx: M, g: }' k7 b1 F1 V
mov dword ptr GDT_Addr.Base, eax2 ^- B, m) k. I" j% k/ f- R6 J
lgdt fword ptr GDT_Addr
" m) G; T) T0 ^ Y- h2 \& f# i4 V5 e% x0 G/ J2 h) `
mov bx, 8
" z2 \+ E2 b# ~7 s: H0 _8 f mov eax, cr0
; ^. j0 j1 S5 c* F$ G or al, 1
) }4 w* A P: z. z: q$ A8 T mov cr0, eax9 Y! u# Y) Q/ I! `
) Q$ ]" d* r; Y
jmp pMod/ }5 M$ y1 ~4 ]1 e* E% [+ Y7 D
pMod:% u/ Q6 z$ p" R5 C( {0 I
# M ?+ h/ j }, k
mov fs, bx) E# K' p5 g i
mov gs, bx
: X' M! q) g. Q, c, s and al, 0FEh0 l8 q7 A4 V8 C# F3 b" p
mov cr0, eax7 o X& C: z8 c3 P# Y0 B
# @ V$ k2 S; r4 m6 J5 Y+ c4 G Y
jmp rMod" D7 \" U- f8 Z7 f/ p5 ?) |
rMod:% z' d( r# B g8 F
( j8 Q+ V9 U0 f
mov ax, 0% E' O3 L5 @4 s5 h, n* k0 y. ~
mov fs, ax' n/ F: }6 W; V) y% a5 X7 p
mov gs, ax
# I; J8 I$ G8 y$ d1 W
5 g( G1 x3 _! I" @$ W% \* [
# ]$ y0 I5 f. U0 _
. K+ h- i" {- B, W1 D( X sti
% e- L4 b5 t! W: a0 Z ret B; Q, D! K) _/ v0 v; T
Set4gb ENDP
' s8 J, B6 C* c2 W2 g
; y+ C3 S7 x3 N: z0 Nend main |
|