|
|
Hi 各位高手好
! O* N* w; e- b R1 v1 \以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。! f& N" X, C( x0 g
;---------------------------------------
) J7 X* E- l$ S4 W! l0 U- F
5 E* b$ n' e3 l/ \' d.model small" ^: h& g3 d, l% {8 J! S7 F
.586p. F- j- |1 d* ^4 z) X9 e
.stack 1 T q# t6 d0 c3 N, h
: q2 A% x4 ~3 r: \4 o0 @1 z
.data
$ ]# U/ g9 F! F% k# ?+ O
+ F3 l' A& Y6 ]4 e; a6 ODESC STRUC
0 l2 Z7 p$ i- d; @! ~8 Y$ m9 U LimitL DW 0
# n9 `: A. |! ~ BaseL DW 0 3 y) E! }9 `, M$ t, J0 S
BaseM DB 0 1 `3 O, ^4 Q5 w* v' ]. O7 o1 w
Attributes DB 0 ' } p' Y: r0 \: g* |* K4 o
LimitH DB 0 $ t. ~7 [) ^4 a# F3 ^7 g
BaseH DB 0 & C8 F; ]. t; t4 y. D
DESC ENDS
( t7 M, l7 }9 w4 Q4 x9 i. i( l" k/ Y- ?3 R! b' j A
PDesc STRUC4 o6 _4 O$ e9 [2 ?* ^6 V# H
Limit DW 0 $ m1 A( @+ F! U% [/ n: w
Base DD 0
: m. y2 t7 }6 v$ jPDesc ENDS
$ H1 j. J9 A3 A+ X
/ }) |0 N& ?' B2 ZGDT_def Label Fword
- c% Y/ O0 \7 \4 S! A% k ONull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>2 o# h6 @5 E U/ I! b, F
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>" q* b% x+ j5 e" J
3 ~$ l d( G5 \# H7 r
GDT_Addr PDesc <$-GDT_def-1, >; @" W8 o8 @2 J+ K
cmd DD 255(0)& o0 r3 X% [; v1 U4 Z
/ _7 r4 E# I% ]9 G.code q" S& ]. j: H" W3 g* o$ ]) J9 {
main proc$ @* r$ L" n! f6 E: o e( u
call Set4gb P. W- L+ r0 p7 f- |6 R& l0 k' b
4 [& S2 r* L8 S: y mov esi, 20000100h
- Q& J6 ]) ~' L! j s9 r {/ A& ^ mov dword ptr fs:[esi], 055aa55aah
* @5 E- m* m3 L
& ]% S( k/ k# e/ P4 b9 p .exit
& D% k0 V$ B1 Y2 [. _- q+ G% hmain endp
$ }6 O# G1 f8 G4 s8 e
% s* W& J+ N* [; h, [4 K$ U% fSet4gb PROC NEAR3 ], |& W: X$ o' Z
in al, 92h
4 n5 R" b; Y1 O7 ~ or al, 0025 a! E3 @( E$ ]9 h8 I g; l. I
out 092h, al
6 }. h5 [2 {* L out 0edh, al! Y8 t5 E. u7 Z- p! `$ A% n4 e
5 j3 e, W$ f! ?- Z cli
( h$ C, p' `$ {( y4 }0 @/ u' N0 L" z: W
mov eax, ds
3 z. r/ a# I( F6 M9 [* c) w$ U- w shl eax, 4
# U; @9 h4 G. X" ], ` xor ebx, ebx
5 P! \7 `( J- |# j: U* S+ f mov bx, offset GDT_def
8 d) U: c) q3 v) C6 V6 W- Z2 e Y2 w add eax, ebx
, j# k, l6 G: x2 G mov dword ptr GDT_Addr.Base, eax
: K( d" M4 T8 a- ?0 \* x( \3 I$ @ lgdt fword ptr GDT_Addr6 `8 ~& }! {! [) O0 @" ~0 x, {4 {& }
) I3 W/ q4 z; ]( ?7 L
mov bx, 88 E3 T4 ~7 n8 [" h
mov eax, cr0/ @5 d% M7 T3 o2 L& E9 o$ n
or al, 1; d7 p" z! @: c3 c) S
mov cr0, eax! e6 ]. y2 D& k8 ]7 Q1 s2 X
1 T z% q/ ?2 T) d. F jmp pMod/ p, L5 K4 t! Y S5 E# w
pMod:6 Z8 }/ d' v) E: F4 t
- \; a( Y! _' ] mov fs, bx
" t ]+ j- m$ a3 ]4 t4 V mov gs, bx
0 {, i$ R: [5 U1 b/ _8 o/ x8 W( b and al, 0FEh+ ?5 |; Z, |# U2 t7 L
mov cr0, eax
0 Y( Y1 r6 v: |6 j
; z [" g6 `( k1 t4 [/ e" Z jmp rMod o1 `) p. N; c
rMod:
; F6 I( N6 c1 I' k9 \
! Q- v4 h! C, U9 X mov ax, 0; x: G; T6 F; v- L! E, C7 B$ ^
mov fs, ax
: F: k1 i' u9 ?" B mov gs, ax: |9 q1 k- T8 p% N0 I1 B( V" `
2 \$ w& }$ l& o$ h1 A. B
$ _0 }: R, H+ Y) l8 A' q9 i
' \. b! S Z; N sti
( | s8 B7 } m% I) [* ? ret
9 a6 o! |& E+ U+ s# T Q2 R2 P$ M5 HSet4gb ENDP, j, a& }. z/ c; z' H: j3 n
" g& v/ b" S2 g# {6 ]3 ? S2 [6 hend main |
|