|
|
Hi 各位高手好
, m& R* F+ z2 Z' y以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。% _7 f- G q: Z! R; }' K
;---------------------------------------
: \% W& D3 f5 |# k& M( X2 Y% K% H
8 W3 n" U) q2 m6 @& q.model small0 k. y/ a% I8 v- E; j0 W
.586p
' p) ]: ^% y! n q0 [) M.stack ; ~( t5 u o$ @4 p3 N o
2 ?- f- q: J! t3 K( @- c.data- T" N1 D- k i) k" Z
1 C. S" w0 c0 n* F& X* Y' P3 bDESC STRUC
+ d0 Y& b) ]% K- }$ q4 \, q LimitL DW 0
1 Q: I h, T: u1 j, J BaseL DW 0 ' z+ O- P& L) J) F
BaseM DB 0
6 G- m1 v0 o+ X. \ Attributes DB 0 $ G! t% I" q2 U- I% ~$ C
LimitH DB 0 7 s9 p7 Z* \& F+ O- L
BaseH DB 0
t+ [! ] z9 T1 R9 B9 R$ `DESC ENDS
5 T X+ V" U# K! p
1 d6 i4 R8 U5 |3 I* c KPDesc STRUC
3 e. S/ S$ F* i, E! D Limit DW 0
+ Q" l Q @2 y+ g Base DD 0
+ A* }9 R3 J. V S: YPDesc ENDS5 S. Q: p, z- N% F8 {8 F
7 p3 |, P! @* f+ _
GDT_def Label Fword
) G& F. f" p T4 \' rNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>$ t9 l+ Y7 D) T5 M5 z5 c5 A4 R- B
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
: b6 @5 A; p& e0 C& P/ l7 @5 Q" Q7 J8 u" o9 p* m
GDT_Addr PDesc <$-GDT_def-1, >
9 a2 _. _- _* k8 Y& i% v. dcmd DD 255(0)
. R/ y' T$ Q! [# R c/ O7 S9 R4 y6 \7 `* C" `7 r& K6 l/ p
.code5 @# e8 m+ {* ], |$ w5 U
main proc0 c9 I7 \* {8 L, d k* k
call Set4gb, c9 d9 u7 P. e; m
1 Z+ p8 h( H3 |! B3 p5 S X mov esi, 20000100h
$ C" W% \7 N; T" ` mov dword ptr fs:[esi], 055aa55aah% g: ]' C& J) T$ W- ~0 O- S: B
3 F8 f( N. Y! N5 C# L8 H9 }" h .exit
4 y% i- o2 K( b4 f1 ^main endp
2 F1 Q& O& r9 f- t6 d# {
; C, g P) j) P0 `. i6 pSet4gb PROC NEAR
0 b* ~: X) }& C in al, 92h& \2 r" x0 n/ }( q
or al, 002
6 A) D) _$ ^- M1 ~ out 092h, al
9 K; m$ M* E: ^7 p- C# T out 0edh, al% C: g* ~+ U+ D- l" V. K) B
5 _$ \' a+ |" H' H7 P
cli5 ^7 ]* J) V: O& A
7 R& E5 t0 z, u1 V6 p- X
mov eax, ds
* a: n- W, [$ ?; d shl eax, 4
1 F) y: u' E7 z z- Q xor ebx, ebx# A$ `3 ~: k# R4 a1 W# U
mov bx, offset GDT_def
" m7 w9 E" k- U0 ]. |& E add eax, ebx- h3 k, l- s: C% U
mov dword ptr GDT_Addr.Base, eax
6 r/ L# c' L1 x% x8 A6 ? lgdt fword ptr GDT_Addr2 L/ M3 ?9 ^; s2 |$ q# W9 V& m7 `
! H; F$ |3 n" B; ~5 ~- L8 I mov bx, 8
6 ~, ]5 m0 y, w' {6 h# L mov eax, cr0/ y/ q4 S5 x2 {5 B" q d
or al, 1
1 r4 z6 P; p! Y# m& \ mov cr0, eax1 r u+ k' Z% X0 F$ d3 h+ i; r
) E; h9 [/ S$ R z9 ^+ }. a& }" c
jmp pMod
6 Z( R( b) ~7 A* @. ]1 ]# Q8 m- B pMod:
+ {2 O! J& C* V9 C* X3 n; E6 G2 {
' E1 f& Z8 D# D6 S# z6 |: b mov fs, bx
% J0 k$ r! f" C) ^! d: S mov gs, bx
9 ?% C( m* f* o; l; q& L% Y and al, 0FEh
. B/ \# K# g, M, M' u3 G4 m0 p mov cr0, eax
2 y& X) F- @/ i# I# a- V' p% N
7 q$ c [; s& `4 n/ K- Y2 o! G- e jmp rMod
- a( e. H& U) ?: R& @! C rMod:
' E' S3 N: k/ r$ Y9 i4 W% B! C; I; t( `, D
mov ax, 0
" n/ C9 r/ {0 k mov fs, ax
! y: S+ y2 Q) v# X mov gs, ax
* i; _ p5 ?3 j! M
# q' k7 q5 y" n8 f , {2 u6 u0 G! e0 [6 |# _- P) _
5 f4 Y# X6 P2 L x
sti b/ e5 C$ l. g# O( W+ d
ret
+ }6 f4 I- A0 t: t8 I+ D7 D& ISet4gb ENDP
" K1 A1 X& i+ q, P
! L4 g/ | V5 J: }9 l% Hend main |
|