|
|
Hi 各位高手好
O' _2 W0 m3 P9 Q; Y+ ~4 h P以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。( G4 p! } r# @/ i) D! y
;---------------------------------------
5 R! w% ?" ~1 j3 t2 `, u8 a# N3 t3 B! d T w' h
.model small
. y0 N) J n: w& m! j: @& w8 o8 n T.586p5 h1 k* P$ X: W+ T+ D
.stack * s* t+ @* S+ L2 h
- [3 e7 X! F2 h8 ^/ P: Y% s.data- w0 V0 }% h7 t( }# x: z+ Y
1 W3 ?0 f; p2 xDESC STRUC; j$ P+ f& P c9 b$ |3 \
LimitL DW 0 4 S; ]9 K8 D3 r' R' B. M7 F
BaseL DW 0 + K9 h% b+ \: m8 b1 \4 L
BaseM DB 0 ) G, P" T& {) P+ v/ x7 }
Attributes DB 0 ! O! u1 G, D/ h( v! X0 R ~
LimitH DB 0 . b9 L, v* c! I4 J5 v w
BaseH DB 0
/ b3 [8 Z; J* ?6 x$ e" A8 o! A X) hDESC ENDS
, W" m2 t' L5 A; x- B/ @/ l7 n$ m K) f
PDesc STRUC1 C. f) c8 E5 x+ i! A; U
Limit DW 0
, Y r! w# o! n2 j9 U Base DD 0 ; ~! n5 X# s8 M$ a; R9 q$ H
PDesc ENDS& X' t: u. V, Y6 g
# d/ @5 ?! }) l4 w& M" T' N
GDT_def Label Fword4 D: r% G) E9 S3 z! b
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0># D& v/ `0 k5 H' [& U) q$ S
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
/ A+ J6 L! |) Y4 ?% ~8 T2 a
& ]$ v' c' ?) A& p" SGDT_Addr PDesc <$-GDT_def-1, >
/ f: E/ o* e2 f: R# V1 pcmd DD 255(0) D: |+ R/ {1 W# c$ F
6 U# i! H5 _+ o/ x# t* n' V
.code
8 H; K7 L( ^! kmain proc5 _$ U7 C9 w2 p5 w/ ~* Z
call Set4gb" X ?) d8 n p
. x- P& Q: b# ]& f2 l4 l% K/ `; G mov esi, 20000100h3 Y& @6 V! l( D6 N$ H2 Y
mov dword ptr fs:[esi], 055aa55aah
; f# |$ W( s& K
`% Q! F8 {( o% W" M5 I$ r0 n6 M3 L; s .exit
3 [6 o f0 }: {: D& R Umain endp % m2 J" U' M+ L
* Y* T% Q, A! k9 H1 l# B0 f7 fSet4gb PROC NEAR! M) d2 Z4 L* r
in al, 92h
4 d9 y+ n1 Q1 h K8 t or al, 0024 {+ d1 C, Z7 g
out 092h, al
* u: s1 {. ~3 ~7 Q out 0edh, al- ]" f# U W# ^ ^$ |9 ~
' z/ Z% R0 q8 z/ O* |/ | cli
: P4 W# ]3 R" H' o: j( e2 N
, {5 G9 \7 ], r$ c, p& a mov eax, ds- u4 H* o- W& H' J8 d) [2 r
shl eax, 45 k3 l! K+ v/ b7 |$ F$ U
xor ebx, ebx
0 a3 L1 U9 A" `# K7 k7 I$ A mov bx, offset GDT_def$ j; P1 B" b O w
add eax, ebx
" r9 c" S2 w9 P2 c7 \ mov dword ptr GDT_Addr.Base, eax
4 R! K; w* a6 ~9 ` lgdt fword ptr GDT_Addr
) C+ _, @0 _1 f/ @
0 @; X# \% u- d* x3 s! b; S5 g mov bx, 8& t. E- [& y9 b. w8 H1 W5 C: s
mov eax, cr0
9 m f* W" i8 ]5 m' f3 R2 y or al, 16 R9 ~2 y2 h( _ I& |; B
mov cr0, eax
% x0 @, ?7 Z% a' z
J( Z! s" c" ~6 E3 g- k4 ` jmp pMod
6 s) y) A5 z9 B+ ?/ G8 \ pMod:
$ [" q; {1 j' M, Z5 r; ]$ }+ z* x& {, t3 R# J: F
mov fs, bx
# e3 s+ i5 U9 l3 F7 N mov gs, bx
Y# x1 T5 l ~8 _/ D8 r and al, 0FEh4 D5 z6 E4 C `4 ]( L
mov cr0, eax
/ d7 }% F" `5 N* x
, I g9 u6 A& {) \ jmp rMod, @1 h4 M# i5 Q4 S; I# I2 h
rMod:+ _. P! t6 i7 o2 ~& c- I/ m z
0 g7 `6 f$ F" p; B1 p
mov ax, 0
. E0 {+ a3 r* N, ^3 `8 d! r7 D1 w mov fs, ax
7 n' O. d g+ G6 p5 y mov gs, ax
3 k" I" b( b/ l6 P9 D* D. R
5 ]$ L. P4 k) H- a
3 A: c: I; _ t! f1 K0 E* u+ N8 b' `) `$ a% H9 P8 l1 {. V
sti
8 @2 k8 `# X0 k7 Q. Y1 p/ X% i ret
1 @; y8 A7 M9 h$ p5 i0 xSet4gb ENDP
0 L! D; C; V0 J1 t0 e0 f5 M
/ [) ]! W3 h( t+ b8 E& M6 _end main |
|