|
|
Hi 各位高手好
9 V. Q4 C/ q. J, I$ A4 b8 ~2 W以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。
# S" t) R3 I5 j) _+ s' p;---------------------------------------
$ Y2 v2 k1 s# H) e; D6 t0 r5 M/ |8 a; f* x% Q
.model small
- i, L' u$ A/ \! Q4 J.586p
; V. i5 |. R; K7 M! t5 z0 G- S.stack
U4 x: d- w. t0 c
! m; O' R" f! U- m$ L* F V9 H.data
! g+ V9 j3 B) y6 L' @( L1 }# [% w
$ U; R- w8 |( u5 uDESC STRUC
3 A; t2 Y$ S+ O7 G2 z7 J% b LimitL DW 0 / G# p$ r, P1 w1 p, d+ M$ O, A
BaseL DW 0 9 v+ x- \! i! e7 Q4 `& P# r
BaseM DB 0
% }. ?0 d. P+ C; ` Attributes DB 0 . X7 S/ }7 n* E2 Y
LimitH DB 0
3 P- Y* w5 ^/ ~) l; h; h+ y BaseH DB 0
+ G4 O( b5 T* sDESC ENDS
& S' L3 X$ ~' [9 Y
- i3 v7 v* Q9 uPDesc STRUC2 ~$ w* N' I( C z- _8 z# Z
Limit DW 0 $ Y% ^1 h E& }, E/ h) ^5 W
Base DD 0 - B1 y9 B' g" L0 i2 N' G
PDesc ENDS5 |6 k4 V2 }) m; Y5 E. @
8 k: {3 C" [6 S$ g8 L$ K7 LGDT_def Label Fword
& N2 R% ]8 M) w& I/ S+ YNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
- _8 t+ s! `# M8 Z# ?Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
+ J! Q8 @, v+ g* ~, i+ X. U: V7 x: V1 Z4 D
GDT_Addr PDesc <$-GDT_def-1, >. J7 D' _0 Y) h2 Y% J" I1 r8 n0 @
cmd DD 255(0)
& f7 {5 z) d0 g$ ?+ u6 w2 z ~# a7 F. V7 H9 A
.code
+ t: l, a& E; fmain proc: t5 V% R3 G3 ~ K3 A% y; p) h
call Set4gb
) q1 }* G+ V! \0 X7 n! h" z+ E1 d& }% g% j$ g: Q
mov esi, 20000100h
) }& F0 U) Q; r9 h e( ]) |; f mov dword ptr fs:[esi], 055aa55aah
' B9 T3 J) h" C7 E0 t7 j
" a* k, _' U8 b9 n# w .exit; J8 G( Y0 N; z0 X5 g
main endp + v/ z% C* \0 [
( A7 P1 ^ E' j& x8 L) U! Y+ z6 @1 ]Set4gb PROC NEAR3 k S2 ~) s/ f1 ?- {# b
in al, 92h$ \: v' m* p5 M; n
or al, 002
! a+ G {1 R K out 092h, al: V& ~/ R# Z: A; c$ L J4 M
out 0edh, al) Z3 R( u+ |% c: g/ T7 I
# ]. C1 e& F" R6 o. a cli* I4 ^& ~& f' X% c7 b% B
/ x2 V, [5 J |7 G4 x mov eax, ds9 E! J% P! H( x& p$ f5 U! O6 {
shl eax, 4# P" r4 E8 @0 f- N3 x( [) F
xor ebx, ebx
0 I d7 R' }! h' p+ X1 l2 Q5 i mov bx, offset GDT_def
5 _) Y8 R5 d, Y# C W add eax, ebx" T# [ u8 M; q9 D% q0 H
mov dword ptr GDT_Addr.Base, eax3 C8 M1 n5 Q6 X1 n1 A% ~6 L) V
lgdt fword ptr GDT_Addr% Z9 k! Y7 w& G$ h; [* c# @
7 @: l9 O; t! H! ^3 K, x$ ]1 D
mov bx, 8/ H n" q' r9 I. s* ]
mov eax, cr0$ s9 a* P) L' n+ }8 J
or al, 1
. g. e; X7 ~9 s+ N- ? mov cr0, eax/ j4 @9 M* k8 h( ]% v' J2 M. i- {
5 W8 _9 t+ ~: i9 l
jmp pMod7 W/ p! O5 [- z) b' T' l
pMod:
" U/ X/ Y0 y' i9 C' N
w/ }4 X% c6 f$ H$ J mov fs, bx
. M/ T* G; p' o$ l mov gs, bx9 n/ r' X( y( l" ?% f7 O" w
and al, 0FEh" K! E/ n9 R. f5 }
mov cr0, eax$ ]) c- A5 @8 E* J1 P1 y
; h# S- F/ Y3 f
jmp rMod9 p; s7 \0 a/ t
rMod:' }6 L* B+ S: I0 \* Q8 Z
" W3 p0 d3 b, e4 \* v+ o& v2 U' f, d mov ax, 0
, R0 A! \& D7 P+ \1 { mov fs, ax
, Q! D' m9 w+ S% O# C* F7 ~ mov gs, ax
5 ^5 S0 F0 W# ~) N: i7 F
0 k/ |9 \+ q/ F0 x: R/ K; |7 x 8 v' Z% C3 X" ^
1 h3 c0 K1 h& r! }
sti
9 I. L% t. {. Y: `) ` ret3 J2 E8 ^7 D5 s, y0 t
Set4gb ENDP1 R. I, S4 {. _% c9 w
, ~4 O8 o% w, w: Z4 C: {2 _" J
end main |
|