|
|
Hi 各位高手好* u4 z" D ~9 r5 ]9 h i# c! }& ]
以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。: N+ \" p& g4 @* Q
;---------------------------------------2 E- e! [. x" R" m
" Z' x4 W- g% |- z6 {& W+ m.model small w& J' c/ D/ l2 G9 g
.586p2 j- |) w; g3 Y0 K( V( Y1 Q! Q5 i: [
.stack - H7 W% Z( c8 E# R% d0 C
) B- c# C4 _$ e8 [# L- `2 w.data: T8 X& D: R& C) h9 l% l3 c& v
7 {1 ]9 o) m$ \! E9 W2 D
DESC STRUC
* p4 b" L) }* `- q LimitL DW 0
0 S5 b- f# L: M* }* w/ X( ? BaseL DW 0
7 _- e" g& `' r. U M' D BaseM DB 0 6 A2 b6 V6 f# m2 c# k5 E- o0 `
Attributes DB 0
% t# v0 z/ w* y) ] LimitH DB 0
3 B0 U7 v+ a" Y9 \6 m7 @% T* ] BaseH DB 0 . @4 v& e% ]) g
DESC ENDS
0 D# `8 l7 X) }- J. b2 Z" u1 G* V4 Z
PDesc STRUC1 i [+ a0 E/ ~/ Y% G D
Limit DW 0
4 x; G8 K- E9 N+ [ Base DD 0 ; m7 \' D8 u% O& j/ u: P s
PDesc ENDS3 u/ e: {5 [; Y, Q
% z. o! M) x% q: j* GGDT_def Label Fword5 W- p' a/ I2 o: n6 J2 Z+ g! t
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>) _+ ~- v8 r+ Q( }3 s
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>8 ^( S" n* g" ~( h
|7 [4 W, Q) b- _* XGDT_Addr PDesc <$-GDT_def-1, ># D* Z( r5 v+ i: x& E. L
cmd DD 255(0)
0 C# L/ r. b( \, y/ m: m
" S, M6 d! j: h V.code t3 _3 H6 R" S' C* }- Z
main proc
6 t/ p) Q4 }; S* T, d7 f call Set4gb$ X: G: D6 B% d
1 Z( T% o9 L5 p, R1 R
mov esi, 20000100h
: h9 i( I! [$ o9 F3 p+ ]4 d9 X' o mov dword ptr fs:[esi], 055aa55aah
7 q# \, z! k. x' ^) \- K2 x
: O- X( e: Z0 m' r .exit
! [6 n( S* s- e" g1 {main endp & E8 b' h6 x6 @6 x1 q8 q+ ^2 P5 N
& r8 @7 C$ v) n5 q+ ^- j" P5 }" F
Set4gb PROC NEAR* U: E" h/ V, Z
in al, 92h
! z) T+ s3 w& B& B- d7 k or al, 002
. t. s; a1 V: c0 t9 `. n out 092h, al
8 c9 U' Y% u! j, o out 0edh, al" f/ r1 k/ @. I- T9 V+ W
- g& q( z/ @5 u( A9 e
cli
$ Y. J8 T$ _' O) J! ?* p; E
, {# j- C# @/ Y mov eax, ds
3 L0 v: W4 T! {2 Y* Q shl eax, 4! [+ b* D" @1 u
xor ebx, ebx+ D# m: `9 O! R8 G; ^* }
mov bx, offset GDT_def
/ ^; B( j* T1 k/ D. n- v' ~% L add eax, ebx
& l! y5 u0 q4 A$ C! I I1 B9 d. Y mov dword ptr GDT_Addr.Base, eax) ?$ ^; E: b6 x2 Z- w7 w0 K
lgdt fword ptr GDT_Addr
' [) c; M+ E8 o/ A
. [" G/ W+ H" A: h5 m! Y% ?3 v mov bx, 8
8 m1 }- L4 y5 @( ^0 A mov eax, cr0% v" m3 m& I% Z
or al, 1
* Q3 b: @2 X* T! [2 [: @+ B9 y4 d& Z mov cr0, eax) b2 u4 P+ P* |3 U5 t3 [
$ {4 o, o) i$ Q. J, v8 B$ t8 N
jmp pMod J4 s) }7 Q% j) y6 W( n& J
pMod:" J3 k6 w" h/ E- b+ Q
! L1 K8 i, k6 ~
mov fs, bx% q3 D# R4 e% S/ R2 e
mov gs, bx
7 }( I5 C6 |- F7 x$ [$ G$ b and al, 0FEh/ q3 n8 I7 e) V( `: g! s
mov cr0, eax
' Q8 I" i' E+ S9 D5 K' `8 @6 } : q6 M. g1 b4 d" ?3 l; A5 {' e) r
jmp rMod4 x0 z9 g8 L, e, O# M7 i
rMod:
- \5 ~8 \+ X5 j S( x. x; i$ _( ?" l2 n- I( w
mov ax, 0$ p; j) i+ {! v
mov fs, ax
9 }2 G- r; g5 B$ \$ l mov gs, ax
8 M+ _7 c2 B# P9 O
+ v' E% z. {- Q8 w
$ O6 u3 m) F3 Q( @6 t8 D+ y! |( m+ w4 i0 @) W
sti$ c4 |4 O* x: f, _/ L
ret3 Z: K# y8 s! V; }
Set4gb ENDP
# h3 @# C) D4 `8 q
8 G" w" J1 X+ H, M; ^end main |
|