|
Hi 各位高手好. _4 _( ^. O. ~, u6 q+ J! Z8 g
以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。
# d/ \) o# P3 O4 d6 ]5 U( K; X, |* t;---------------------------------------! w8 n7 ], Q- U) H7 ?
- r5 y9 ?* M; F.model small
7 O4 o% n& ^0 J8 ]( b5 f4 I3 g7 w7 }.586p% O. \) D- Q/ J" W" p+ K+ k5 G
.stack 9 S1 @; g0 k* h+ ^7 ?4 A3 g; N
; l2 I9 Y( }( s2 ^, {) O* {$ L' b
.data* V# F: z% y$ l- X. J- N2 k+ _
& j5 f$ T% C' [. d4 E$ |/ c
DESC STRUC
7 \3 g2 R0 y0 p" M% s- {0 }2 ^ LimitL DW 0 : b1 L& B2 |1 U+ }6 J$ T
BaseL DW 0
$ z; Y7 ^4 _: I, B; a BaseM DB 0 2 i8 ~; }) K& ~! \+ _- E& Q
Attributes DB 0 6 G# ^ T9 _1 u$ w3 o
LimitH DB 0
& T/ p" g9 \* z4 i BaseH DB 0 " l3 ?+ P0 ]9 ]" n w
DESC ENDS( v; L8 Q3 l( Q0 J6 |: |
; k; k4 B$ a m( oPDesc STRUC
2 N8 T, d# w5 q9 M, T Limit DW 0
! M2 t+ G" h; g& ~9 o" q Base DD 0
; Z* v, i# w8 s* d' p4 \PDesc ENDS0 o2 v$ n7 w/ y8 C4 Z4 q5 h
0 x& M7 L6 S/ W0 FGDT_def Label Fword
9 w6 W( p1 [% n6 GNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>- B B$ \7 t+ k B( W) p( W
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>" R! F7 i& l8 Q
& l) k" j2 t5 {7 t
GDT_Addr PDesc <$-GDT_def-1, >
7 J0 ?7 ~; }% k& y. _1 w7 }) [cmd DD 255(0)1 y. R( `7 Q0 U- w) }$ [8 J+ I
2 G7 H1 q& d4 h) v* n* i) M7 X( D.code) x! F1 L3 K0 ~6 W
main proc
+ e6 M# X" n, d: y6 w call Set4gb2 j' _" F Z3 v2 Z' L4 m
9 n) G5 ?4 d! T/ ~
mov esi, 20000100h+ g% T3 q; h* Q4 Z4 s
mov dword ptr fs:[esi], 055aa55aah
. T2 {0 U4 G7 {5 o
H! L! Z# V) K: s: u8 M .exit: m1 q; a0 I5 ]- Z/ O6 s) q* b
main endp 1 G5 H, |3 [9 ]
) ^& M3 Z. H( B* g/ _; u
Set4gb PROC NEAR
' }0 i* e$ X; t- T in al, 92h
: j3 L2 h. B1 N. b3 m1 E. k [. d or al, 0029 M2 |, K/ C. K; z9 w4 Q, z* s1 C6 Q; {
out 092h, al
$ p9 o0 h1 t1 ^ out 0edh, al+ s' {- |6 x2 [
: z$ v4 E0 A' l4 m2 u# k$ [4 ? cli' m" G; f. L t! V E. o( X
/ o O B! j& J) J- |6 m# h* o
mov eax, ds2 b. W! f3 a) k2 {% d5 q
shl eax, 4 z$ U! {2 s5 w$ ?0 Z
xor ebx, ebx
2 e0 p2 D; m4 j/ U1 z0 C mov bx, offset GDT_def! }+ }/ I! t: m; w$ r
add eax, ebx
4 s' I( [7 @- e! t, f, { mov dword ptr GDT_Addr.Base, eax2 k( G! L" s4 u7 G% u: c& r
lgdt fword ptr GDT_Addr9 L" f4 t# R# C& g f
, O" g% ~+ J, y5 Y* | V f
mov bx, 80 [2 y' u, u! q6 h& N
mov eax, cr0" ?& k- F5 Q; V$ ^( M9 M
or al, 1) C+ k2 ?* w9 C
mov cr0, eax
4 @2 R9 {$ i; d2 a6 b+ g) X K4 K0 q) ]
jmp pMod1 P W8 Q0 E( o' M
pMod:* [0 [# `0 y6 [+ p, W, r3 I
! o3 B& R# o7 }' Z6 M# n9 v
mov fs, bx
; N+ E; ?$ N; k& n' c mov gs, bx
* s- k) o7 u4 N7 n and al, 0FEh) U$ a1 x2 K" r3 |
mov cr0, eax
+ g- F# t7 M! `- m
2 }& L* ?& K, w; h jmp rMod
7 [: q4 a% x5 N. Y: G rMod:
3 t: n! t7 M; z6 m6 s" l
; E+ j: N2 V2 F. M0 C1 C; [; w+ | mov ax, 02 ~, Y% N! g* B! e! w. ?
mov fs, ax/ A; ~! V2 _% T
mov gs, ax
) g' O9 T# f: X9 x5 r+ V 2 U) v( l1 c6 O0 h5 V2 R+ u% B
; E9 P9 K* P5 U
! y, n5 g+ N T! V1 l w( P: a) U+ J sti. o& f! U- j( ?7 B+ ?
ret
5 o5 F) E$ h" aSet4gb ENDP
+ O6 x! u e4 w) o, H
5 q# X R* F, h9 x2 Aend main |
|