|
|
Hi 各位高手好2 v' I! ^4 s* L' z' b
以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。% O! g% v) W+ F2 l' ?# q" D
;---------------------------------------' E; m: [9 ~' e; T( F4 V8 j
6 U/ d' F) H6 B, {0 D
.model small
+ \* q5 w- l/ M3 [0 F9 d _.586p Q9 E7 p8 p3 T
.stack
# h' G9 }$ T8 L9 o0 y; G ) x. G6 ~3 z: a: D
.data
G0 f: A2 q( R5 f. t- L, Y& K; k5 L2 f
DESC STRUC$ h7 v6 V; V4 D6 I7 j; w' g
LimitL DW 0 / n% {0 J0 N5 g/ \- G: l7 b
BaseL DW 0
4 X2 s$ Z! d8 ~$ e5 \' a BaseM DB 0 4 q6 I4 `. Y+ S. f0 |) G+ ~8 p
Attributes DB 0 ) Z. d7 Z/ E n# o% p. c. E
LimitH DB 0 " B9 V( {5 H9 j1 t, D# Z
BaseH DB 0
& H9 ]' S S8 h. ?! h. QDESC ENDS
* i3 X* w! r s: g1 X' q; H
" q# f# K+ s7 C) a7 CPDesc STRUC/ q, I) n* G1 Y8 M6 L2 g* }5 _& q
Limit DW 0
0 G* G" A# A1 F3 {, k0 C4 q Base DD 0 , m' l: p' l( {: P- ]
PDesc ENDS; y W6 K5 d$ Y# b$ t$ f. j4 N
, X" R# P7 C H0 ^: z
GDT_def Label Fword+ }8 E5 i% e) j6 l) ]2 o( T. V6 U
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
+ [ V! E9 X( A5 \Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>$ T- S7 x( M. H5 v! ^6 I& P/ E, S
& |/ A* y7 x2 @$ f9 Y
GDT_Addr PDesc <$-GDT_def-1, > Q# _) l- a# A2 B, T
cmd DD 255(0)
; ?. L% m) P; C8 A$ Y- W6 L1 M. _4 r. j8 g
.code0 m" } ^# w- i5 z/ |! }3 l% }
main proc
; ]: F# o5 h. Y4 U' g! T call Set4gb; \+ Y( @" @: N" {$ n
; Q7 f) W2 P/ T' M1 h
mov esi, 20000100h
+ X2 H' h+ G6 f ^4 |- M mov dword ptr fs:[esi], 055aa55aah7 b- t5 J! T8 c- \( O
3 U- b- J1 z+ U, w: ?
.exit
3 s# p& `6 g4 K9 v3 `- amain endp
) o* V. l6 u7 s1 U d' ?3 n0 i3 j Z- g2 G, k3 W! s- Z
Set4gb PROC NEAR
5 u" a) C a% p& {) w in al, 92h& _$ V9 r! R3 y7 Z) k# v! T. Q
or al, 002* E/ G6 v- ^; g! D8 W$ @
out 092h, al+ Y; i! ^6 N% H2 K, l
out 0edh, al
& `; \. H+ w( s6 a5 O$ I
( `- `" C0 c; t6 p, O+ { cli
3 d% b/ U$ X( ~8 J9 r: x% x. E0 J3 r
mov eax, ds; n$ G6 g9 I. u4 v' r `
shl eax, 4
! }! J( n# p1 m. q xor ebx, ebx7 p5 p1 v9 J$ \6 h6 L8 }
mov bx, offset GDT_def
/ R; S2 m% \8 f/ c+ Y8 u9 t add eax, ebx
! i. r7 ]3 D _5 l+ D5 p# z mov dword ptr GDT_Addr.Base, eax% S q( o8 j9 D5 \4 m) \ t
lgdt fword ptr GDT_Addr
5 B1 U/ \; H) \0 \" G; J# s$ n8 L6 m3 H
mov bx, 8
5 `6 p0 P( N& _' H$ I mov eax, cr0
# j& L0 s$ M5 j5 F) n/ m or al, 1
5 R g* K+ f* T. Z mov cr0, eax
; V% y- v6 r- V: x6 h" i" I0 r7 d: g4 H
jmp pMod
" O' p, B, P" l" I1 S: N, | pMod:/ d, U. H& f& S
2 v( B6 @4 T7 |9 I
mov fs, bx
4 k5 S4 f' m: K% z$ J* ? mov gs, bx
' G* I# x. [0 l and al, 0FEh2 X9 N1 h9 s1 ]( b
mov cr0, eax
9 J0 F* H' x: @( a$ A" L# N$ Z
$ v6 O; V0 Z- e jmp rMod! Y# O2 l. h5 {/ Q
rMod:
9 z! R* s1 O7 f/ ?- b4 t9 e3 }! \& a4 m: x( M
mov ax, 0: s7 z. e$ i- n" U& c2 y t
mov fs, ax
" F! c4 x& X5 b- z. n9 P' c mov gs, ax6 S9 x' t K) A6 L. k' E0 t
* m5 O F* E0 C. M
( z3 b, F9 Q% L1 l: s1 v( I
2 ]# m; T/ X0 F sti
- f S/ I* X8 ^8 S1 Y$ \" h* S7 S/ O ret3 ]9 j) ]5 J3 {( v6 {
Set4gb ENDP" o* l/ \6 T8 h _2 Q! i$ L
`, t/ T- @6 K( n- p- n' [end main |
|