|
|
Hi 各位高手好
4 [- ^ U7 K7 w$ l以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。
4 ~& C) ^( f3 p, c( y4 ];---------------------------------------4 C" Z* [3 X" Q6 g, f& M5 K
' W/ A1 d: a. r# D6 r8 ~7 m! ]5 a {8 H.model small) Q, y1 s/ k! I8 _7 J
.586p' M5 |: O, q# \, H9 z
.stack . Z1 L* G9 t$ i: o( g' G3 K, n
3 P7 e$ {" r( Y' a; r6 g6 @. H
.data; R' h' J0 R% h: E4 F* P5 W
0 J% Y* m) Y# @# v o/ I, eDESC STRUC
7 ~) E. a$ ]% V- C) | LimitL DW 0
5 c& J2 k+ y7 D5 L BaseL DW 0 ! ] X7 Q G6 Z/ B% E" a: K
BaseM DB 0
0 t- j1 a: Y0 m( E3 N7 j! ~% s Attributes DB 0
& k2 p. t$ c, h LimitH DB 0 y- r. `& |" R
BaseH DB 0 X! [0 x3 a: _, Q( k( }9 f6 ~
DESC ENDS
) e v+ h2 R3 v- L) _2 a8 \( Q! V; g. G$ x, q& P, P' R. ^
PDesc STRUC
% s0 @( Q Q' T, N2 {- V9 S. ` Limit DW 0
( `; K% X" S. p Base DD 0 A( `1 r$ e# \/ K8 }- b
PDesc ENDS
% i6 O1 g+ N) M. F' y( q" \' O' \4 @4 k1 S. v5 |
GDT_def Label Fword
$ N( B; h( x: [+ \ N; q! kNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>3 |) c. b( e! u7 ]0 O
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
6 q$ E( ~6 e0 _# ~( [# L& S6 ~% K! l7 d5 B& k9 B# _0 H
GDT_Addr PDesc <$-GDT_def-1, >
/ s& l$ A& S! C7 N1 F" {4 @; scmd DD 255(0)
% a( b( z( S$ Z, {- _% a+ ^1 b* g1 q, x3 r
.code
0 E2 H6 G" J2 N2 xmain proc8 O! C) v/ [+ T
call Set4gb6 ]! Z; Y. h8 P5 d
6 P0 [* H6 w; t" s0 b/ f9 X4 D mov esi, 20000100h
1 R6 S, s5 ^, a* A& J& q mov dword ptr fs:[esi], 055aa55aah
: b: I3 @1 N* R* W
7 A3 d3 `1 V8 w% i8 O4 F! {3 x .exit" B' {" l0 D/ l2 h3 ~$ ?
main endp 6 L( h8 E: X4 Z- `7 [- ?
; _/ P. [2 U- S; QSet4gb PROC NEAR
8 F5 w' t& j3 c- M; O) h1 P in al, 92h! s2 d# S: [! k
or al, 0021 C1 v( m$ ~. ?3 n { x: o$ X( e
out 092h, al% D- m( m6 M1 N' h
out 0edh, al
2 Y" l& [4 y( C5 M* ]% q9 `
, {6 E1 F, {# J cli
% K, x: ?) P* }4 X6 h2 r! m6 U s0 o0 V& ? S+ ` k
mov eax, ds
6 X- J6 W+ d* \" W( {4 k, I3 q/ ~/ w shl eax, 4+ N& k3 [' ?% O% q _& M& Q1 u
xor ebx, ebx
4 O: p7 J7 J. G7 B3 t- p, j9 t mov bx, offset GDT_def
3 ]0 n0 H& S9 c% I& `: ] add eax, ebx* ?3 p: q# t0 e2 ]0 d3 H. j1 H
mov dword ptr GDT_Addr.Base, eax5 k) Z$ V# i/ ~5 |3 E1 f
lgdt fword ptr GDT_Addr: D+ _* ]- Z* F! f2 P& O* R- C
8 v: k! ?- k0 q& b# C" X* [) y
mov bx, 8- F$ D# c( `/ w: d- W
mov eax, cr0
3 N, p5 A8 b7 k( }& u or al, 1
, G9 z' A' b1 d4 S8 y5 a) |: e( l' Y mov cr0, eax* J1 ]& U& M# B# F5 n, m C4 g
1 m/ n1 e1 \- h- z- o
jmp pMod* }# {! r. k9 `% @% |
pMod:( \6 X4 B9 Z- m/ o. z
# j& E( ?) h* G2 G9 I
mov fs, bx$ P* R l3 Z; _' \+ k5 k
mov gs, bx1 V6 P7 _' E9 n" `6 ^7 a
and al, 0FEh
8 M* d6 C F3 z9 k/ S2 T. K+ b& F mov cr0, eax B5 H# `2 \' M, E/ l
m3 I9 h/ `3 q, S- v7 R& n( W
jmp rMod4 G G& W4 w _$ S& p
rMod:
y2 }2 C M' ?- W ^& K) @! {! ^* ?3 M3 D$ K. l2 E" m
mov ax, 08 A, d" q* }9 {. q; ]
mov fs, ax
7 j& v$ O: N! u1 ?9 `1 M1 G# v mov gs, ax( Y3 Z" t5 _* ^8 }
; p* @& c' M m$ @
& F+ F% P/ N! p8 |; U2 L! A0 z3 M: w* ?, g
sti6 X6 |- F/ \8 w1 H1 @/ _+ e+ k
ret
) u( J' m* K V" TSet4gb ENDP6 ]9 [+ s9 [- Y$ x
; w* y9 k/ e: V$ ]/ F8 a/ q- {
end main |
|