|
|
Hi 各位高手好% Q: t9 g5 t8 K2 x( s# }
以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。
! E8 R! |2 d V0 e' u& h- I. n;---------------------------------------; y( z( H0 ?. N/ a* @
/ A: L7 N4 X2 {8 v$ ~; u% O( [
.model small5 y7 U: ]; A5 z A3 ]9 ^7 P/ C @" ?
.586p
& c) y1 F @1 E% F, ]$ e6 B.stack
$ W4 S7 S5 O$ F
/ g! Q+ o( s4 s/ _.data
, G, h( a4 e8 e5 o8 {5 I) ?+ {- x( U/ i
DESC STRUC
2 Q, L1 M1 Y J* n K LimitL DW 0
" ~ n2 F( j4 L; A. X BaseL DW 0 ( Y2 c9 h% p; w2 U; D
BaseM DB 0
9 M1 ` v/ P& c! T% T) ?3 \ I Attributes DB 0 3 S3 }) h8 g, E: l$ e1 B- V5 X
LimitH DB 0
2 n# i, E Y0 h) f& @& F- M$ T BaseH DB 0
7 w0 K/ v/ A' ^+ n$ E S* ~DESC ENDS
" f3 w5 R! t: B$ H d' {) O0 W6 m* h5 ?, c( ~
PDesc STRUC
# c0 m! S B; L! L. T1 k% x; h$ o Limit DW 0
8 e c' ?/ Z5 j% q& G9 h Base DD 0
, v" B+ @7 f2 ePDesc ENDS2 Z0 ^$ p, R) q' z6 B2 g* b
7 R7 ~' M" F t/ ]* ` z0 ]
GDT_def Label Fword1 ^1 R5 P6 |; f1 v1 _' p
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
0 m3 N0 d. W! ?6 ~- HData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
4 f: O& f" f, d; e6 M3 S3 Z: ?4 b) W7 D( J( n6 _
GDT_Addr PDesc <$-GDT_def-1, >
/ W2 U7 p. N* hcmd DD 255(0). E2 `/ |% q$ M: o
+ D' D4 L3 F, P( v.code, y) s" Q8 I2 v; O) l: d2 V* W
main proc& F9 Q. M/ A$ D, x
call Set4gb
9 r3 U- z2 U% d
/ U4 r, A# ]! h mov esi, 20000100h3 M2 y6 s2 y& @
mov dword ptr fs:[esi], 055aa55aah) i+ Q/ j8 ~$ {
" H( T: m9 M8 }/ k4 _* Z! n/ r
.exit
9 P; j- i; F" k- m; G9 Smain endp 6 a& e' @* J( n
+ Y% o, O/ H) pSet4gb PROC NEAR
) v4 B4 n5 t' S% e in al, 92h
+ ^2 V, _" E$ k, _4 A) }# J or al, 002" j4 ^* ~) _/ [
out 092h, al9 N2 S% ]9 [7 v! m% N; C
out 0edh, al5 V% _' \$ y7 G4 @' K
! o) B: B! A) M2 a# Z x
cli
! s$ a- _! t4 i2 X& T" F* G( D d) v% B
mov eax, ds t) H6 j0 C5 |, v0 u3 A" J; ^
shl eax, 4- a2 u7 P w0 x$ t s+ p4 L
xor ebx, ebx
0 W% a# Z6 @; V6 S mov bx, offset GDT_def
6 @, V- a/ K. v# j add eax, ebx$ `& d. F7 P) V
mov dword ptr GDT_Addr.Base, eax
/ d) Q! A8 |1 _" j0 m lgdt fword ptr GDT_Addr
1 _4 F" E m6 ]9 U
/ y7 |2 B2 W0 u# Y( L O! f mov bx, 8: [! I$ W+ c& s2 @+ N+ Y! R
mov eax, cr0
% ^# t4 f, Z0 |2 R% M/ P; k or al, 1$ ^* J+ R9 _- u
mov cr0, eax
% J- z7 Y+ o1 z* F8 x0 u3 ?% @8 D! _' K. W' B2 K
jmp pMod9 X" S5 O0 ~; V0 z" s7 E) i2 ~# x
pMod:
- V9 H* y6 L3 O5 V8 n5 B& j0 |. z d' j* X. J5 i
mov fs, bx
1 P5 T4 L; x- Z3 P: _ mov gs, bx
/ L; B& ~4 z1 R5 x) e8 U and al, 0FEh
$ p3 R7 N- l1 o8 {5 l% |8 ~ mov cr0, eax9 M8 M+ A7 p8 P+ _4 A
" m {9 E% C/ m# t7 j+ s* p1 g9 H jmp rMod
- c: j% J" B+ n8 | rMod:% S I: O3 \9 N& E/ X
& E! ?5 o# I6 m' W
mov ax, 03 [. M( }* T' e" L
mov fs, ax# n, d) h; M) _8 @3 ~- K
mov gs, ax7 r; L- s9 P8 j ^
8 ^% ]* Y9 m7 k P! J+ M
4 B, d0 t: ^1 y0 A% ]7 l5 s
4 C5 B) G0 j. P8 v$ N sti
$ u' G* I& _6 R7 z6 g" |2 b ret( o6 s# i# o+ O4 Y' @! w
Set4gb ENDP
: U3 }. ^( w" ]4 l( y2 r6 F7 E
" l' Y+ R9 {7 }0 oend main |
|