|
|
Hi 各位高手好! V& i% [4 ]) L, ]2 x8 n+ o: F
以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。* H! e9 p& I/ m' }/ S9 [6 T: k# N4 T' F
;---------------------------------------
/ x- Z4 K: u: e# o8 _: M5 Y Y, c; ]) U6 |9 @% s% y
.model small
$ \4 |1 S2 \5 h! h& T.586p+ l7 r1 S6 ]" H) c- Y+ q! I9 [5 H0 Y
.stack
% `" f0 n( p) K. h( j! X! X; ^
. V3 k; S5 C' M. t9 w: S.data3 @! t! X6 J4 S4 Y
+ P0 ]& Z8 Q1 J5 N1 T' ^# M
DESC STRUC" L9 W' ]8 ]% r; K, n9 O
LimitL DW 0
( p, h+ ]/ l- ]9 q; }* b BaseL DW 0 9 ~. b, k# v) i: h. l7 A
BaseM DB 0
/ J$ e3 ~. u- _% W7 l2 D$ ]+ E# f, z Attributes DB 0 / b% o6 `8 S6 s1 [) s2 c( _: C
LimitH DB 0 6 ], A& g |% b1 Z! ?+ s
BaseH DB 0
, G6 M* k5 |1 _0 |DESC ENDS# l0 G% Y( h+ n* m3 l6 L9 z, I; d
% U# y5 Z+ ]$ uPDesc STRUC
( I& c0 Y" m2 G" g( H) \6 t/ V3 [$ ^ Limit DW 0
+ `; @; k" f3 D& _; B Base DD 0 ) J6 }, ^7 v4 L* L# a' F% L, r- N
PDesc ENDS
: W! ?+ B1 K" R Y, V( `
$ ?1 t6 X2 @; ^* V3 y. j6 i) VGDT_def Label Fword
1 t! |; g- d* g; t9 w3 u. H+ ^Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>1 h" e5 c& J* v* f
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
1 F* r1 }) `; u* h* R# B& V+ V: n) `# i8 L0 V
GDT_Addr PDesc <$-GDT_def-1, >
6 N) a$ m+ u4 f. d2 Qcmd DD 255(0)
1 C0 g3 ~9 B* Q' y/ D
2 S4 h/ I r: ]9 z- ?.code* z$ t( w9 h5 w: g# e1 f5 S
main proc
6 L, R5 [ y7 g1 w0 q4 r" E. n call Set4gb. z& T6 w* C" l
' i% k/ R5 f& r mov esi, 20000100h M6 ?% M. @$ k" H) Y& ?
mov dword ptr fs:[esi], 055aa55aah
: G2 c3 H* F* U
7 N3 @+ {" B; N$ o5 b g$ J .exit$ \9 B: z7 ?, ]
main endp
! ~0 h. T1 u& i% I" J4 F1 N% i0 p* Q3 U |7 {
Set4gb PROC NEAR& y) T: H8 ~5 F( R3 c* Q: k, G
in al, 92h
7 ^" p S# }+ O6 q; I( F7 l or al, 0028 u- P4 Y/ Q; `, l3 r/ D
out 092h, al5 u G# \& i+ J
out 0edh, al; ~ \8 b, D3 x- U8 } v6 p
, ]9 W& L7 p: l3 i
cli
. S& S- m3 z) n' o: V: k5 T% ?; O8 z) V2 \ u
mov eax, ds
$ j ^, k! [/ g* V! [ shl eax, 45 [! V. |) b; l# U7 \6 T- [% \6 Y
xor ebx, ebx
, k' P/ C- H- |0 n mov bx, offset GDT_def
& F2 x! H) v6 e9 q, S+ v add eax, ebx
9 H4 i$ Q$ W' W mov dword ptr GDT_Addr.Base, eax
6 E- D: K$ x9 E. j2 A, w' j lgdt fword ptr GDT_Addr
( ^2 ^7 s! y2 H$ }4 x! V
: V8 g( v4 \ t u* \" F mov bx, 82 l9 o* t' R* {; K H# ?. D6 |
mov eax, cr0" ]- j; D* F I& \
or al, 1
; q# g1 U2 O( Z( Y. _ mov cr0, eax
: k' ^6 b' L# z" v" m4 N6 n
6 g* V6 V, K; x2 I jmp pMod
A0 g8 i, Z6 o1 ?* l pMod:* J, w* W3 A; i1 @+ \6 M1 o2 S
8 v+ d; {7 x0 v; h0 w! R, X: Q) A
mov fs, bx2 j& e3 ]" Z; Y! ]
mov gs, bx* v/ O: @9 {/ ~
and al, 0FEh2 B; A4 {+ k- H
mov cr0, eax' J4 r$ F& y2 Z( F" @. p4 C
$ r/ x" W! J( h# l F
jmp rMod% y7 O- q3 {9 }8 i( e) w
rMod:
) `0 X9 G) S4 M$ e* }" \* v2 P) E2 y
mov ax, 0
3 U. f8 ?& F! |0 c( c% ~( D mov fs, ax
- t# m4 v! w- D2 G7 A2 `( H mov gs, ax
6 c, r$ l& ^) N+ z" s ) Y7 _+ a# B( A5 @0 [
5 ~6 E* L# Z$ N4 X/ `7 R/ R+ Q) [8 b% L9 Q
sti
/ q, r% I1 a9 S* |; u1 { ret9 n) P5 Q2 C9 }! i( K e6 @) H5 |
Set4gb ENDP! b C: w" u' V$ _/ t
- I! V$ j V( R% P' b3 A4 a p
end main |
|