|
|
Hi 各位高手好, E/ k* Y1 I4 U+ R& i" y5 L
以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。) d) G' Q3 E- r. L# \2 U
;---------------------------------------$ G) @* X/ \( A' E8 E( w
$ G( o G+ u$ ]9 M' X8 {
.model small
9 M+ ^: Y' f6 r.586p6 o" {) v) H+ Q- n! G+ j) R W8 r
.stack * b' H8 n; F- D0 w V0 b: F; x
3 E3 p' F& K- @- h3 H" |; C
.data
* I) H1 r6 q$ c' b* W
+ o& ]0 x. E6 F) zDESC STRUC
. R2 k, f" ^9 i! U! a9 b" r6 q LimitL DW 0
- J w. J. u- m& C2 l4 ?" T8 {; i BaseL DW 0 : k8 Q$ v$ ~( M- ]
BaseM DB 0
! c1 O. q) R8 `: t' u Attributes DB 0
' y7 ]$ S6 n. H! ?+ f E0 Y LimitH DB 0 2 Z+ ^: \! }6 o7 S+ Z4 F" B+ q) W
BaseH DB 0
" v( G9 ]0 m& H7 qDESC ENDS' C/ {5 Y! Y3 A& @. U5 |( M
1 Q1 v% n4 Z* f9 s [
PDesc STRUC
0 a& r' V) f; I- Z5 b Limit DW 0 ' K! a2 k$ r7 r9 i
Base DD 0 0 |' |# c/ G. Y- x6 s/ p
PDesc ENDS
7 u: ?( x9 m$ y$ u" R# ]' h t
% N( R1 ]6 t1 tGDT_def Label Fword+ h* p) u0 C3 S; T% m, R* P% k7 m3 V
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0> [: J) h1 ^3 }5 h! T E
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
9 R) S" t a1 K
- _. z9 ~; W3 U$ ]GDT_Addr PDesc <$-GDT_def-1, >
X% t3 A8 j" |" z1 F; J( \cmd DD 255(0)
! z5 D6 y" u' p6 \9 o- o: m9 q3 O: @! V
.code; b u) U `( S# o
main proc9 Z$ w% i# D8 w! T. L; |
call Set4gb
h" U2 ^5 ]8 ?& ]- L9 P6 t. q" n4 h0 n& ^. [2 X+ p
mov esi, 20000100h
7 I0 v1 {4 d% A9 p mov dword ptr fs:[esi], 055aa55aah' J: N! G, f3 Y6 e+ O- C9 }; I
) G2 y0 G4 t( A5 @ .exit' {8 M2 T) F- O
main endp " K9 J) J1 g5 h1 }" F2 }
" ^# k- [( Q/ U' ]+ f' fSet4gb PROC NEAR; a j+ `- ^& q# T" k4 v/ o+ {$ u
in al, 92h
/ m$ ~1 l7 q) ]$ L0 [ or al, 0024 U2 c6 G# b, g/ m7 q( S5 W
out 092h, al
' P# [7 g) J7 @' _7 n out 0edh, al
8 P$ N3 X2 @6 N1 g+ R
4 e6 U! W. g$ ?7 l cli
" r" g8 C, d5 w$ C3 u& z! X# A) W0 f* o; y
mov eax, ds4 {# j0 M* T, N! R2 {9 g/ t5 d( R
shl eax, 4& T6 e2 l. h' E
xor ebx, ebx0 j% I6 B3 x0 v! r0 t! @
mov bx, offset GDT_def, ~* R2 p. l1 l! P
add eax, ebx& W: ?1 }& k6 b8 J! V6 k. |, S
mov dword ptr GDT_Addr.Base, eax: z; x) ]% N% u
lgdt fword ptr GDT_Addr* y' g/ {4 j! M" V' H
1 W2 U7 o% F0 i* s. F" ?
mov bx, 8
4 t& ^2 P2 j+ I9 }: \ mov eax, cr0' A w1 `' [( b9 y/ d" W7 H
or al, 1+ }; Q5 `, }3 {2 U
mov cr0, eax
- f" S. h7 g1 C0 y) A2 p
% V- b6 x: y: }* m( L: n4 j+ J jmp pMod# x- }" f& r6 n# I+ u# B
pMod:
- K; Q5 |) H$ ?) \+ N% l5 `8 C# w- V/ {& D' U
mov fs, bx+ q, ?7 e$ W1 V7 l: b. l
mov gs, bx# \% u: [( B+ U8 G" e, F j; N l
and al, 0FEh2 }; _% R4 G0 W& Z
mov cr0, eax
! y& v: ~# z! ? M& {
& m' B, q2 e; E+ `/ c# p jmp rMod
+ K" O5 Y% h4 v4 i% ^$ i6 s rMod:) H$ {' M$ R$ M
0 _8 q; X) _9 D6 t9 h4 }
mov ax, 0. ?9 c* U) P' T" [- _4 z
mov fs, ax0 Q$ @0 I) T. ~+ Y# E; c7 ^
mov gs, ax
$ G0 c* }: ]9 S: X- ]# c , M2 p/ q/ S! k6 k
6 y' k; N9 }# l, m) W! r: \& _: |5 \% s
sti
& ~2 X0 S0 z. }& C5 p+ C ret
) A- z! U7 g7 y* J6 ]9 u+ eSet4gb ENDP
9 Z; d& M' U/ O) n5 j4 j; O8 T5 a
! h) c0 { p: \9 pend main |
|