|
|
Hi 各位高手好
5 j4 u* z4 a) |$ T' a) u以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。
$ ]# H( M- Y8 b- d;---------------------------------------; E& x' w/ e$ ?% O
5 G. Y' P% a z8 u% I
.model small
3 g6 f5 A- ]1 m$ H$ s+ v# d) r.586p
* L2 D" Y& Z0 C: O6 i4 O4 A# s! X.stack
- B$ ]0 B$ C; ^& D' `8 \* \* Z& P. l / Y! J9 x- s! r* u: L) k" G
.data
5 c7 C4 U0 ]! I0 e" h; Y. L; {8 ]" h, p& Y' v2 v" J
DESC STRUC7 @; S+ z0 E) S C3 a; k- z/ p
LimitL DW 0
* a4 g8 L5 b6 l BaseL DW 0 6 W7 o, w( Y) E8 j
BaseM DB 0
7 z2 _' n3 s) t- G9 n Attributes DB 0
, X" H9 I+ C5 C; u& d, V$ R" U LimitH DB 0
) [4 r5 C+ M7 O6 [+ _ BaseH DB 0 # |) J6 `" L$ H5 l3 i
DESC ENDS
4 {: E- B, ^& }0 y) j8 q$ H: S( \" {& C& Q0 h# u
PDesc STRUC- F+ b* C+ `. V
Limit DW 0
4 f9 `9 V' @) h9 d) l8 o! P Base DD 0 , e+ s: y& x/ [! F) Q! N o
PDesc ENDS/ l" d; U# X( K3 n! I2 ?8 }# L
9 b8 @0 ~8 V) xGDT_def Label Fword; s# ~ D; M' X. A; h% Y. V8 I }
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
& X+ [+ O3 ]7 N1 YData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>) ?6 D. O3 s6 g4 L9 o% p
1 g6 S, _9 B! D0 _0 b8 J% V* y+ P
GDT_Addr PDesc <$-GDT_def-1, >* k0 t5 E: [1 N6 L- g0 y8 O; E
cmd DD 255(0) G' ]5 z' j5 n: w$ \0 o5 u
8 N/ D$ y @9 [- i) z) K' L
.code
8 Q( H2 M1 v$ h' T3 rmain proc) b7 {( c4 m5 \: w
call Set4gb9 |2 q! x8 m( M- g2 q, ~
0 W5 K% R' W9 Q2 w0 u+ d mov esi, 20000100h
" `9 o# o) \% |) k. \ N# ] mov dword ptr fs:[esi], 055aa55aah0 Q* |" x3 F2 V: N* n
+ F, k) R* Y. `! M8 C
.exit
* t2 M3 ]$ w8 s1 Pmain endp . P8 D( X! X! d0 V3 b$ @' f! V
* W E, ]+ E0 G! b& ySet4gb PROC NEAR
0 ^( ]$ |# N m) D* C: } in al, 92h/ h& F% W6 z* ~# E2 D
or al, 002$ z& { @( e, |2 L" @" R
out 092h, al
1 \5 X; {6 o7 m& C9 _+ P( b$ i out 0edh, al4 X$ ]" j$ u+ D! P( {
e9 }( J; K2 e6 Y1 Y cli1 S# v9 l: f! ^* v1 i* p
+ Q9 v* _" c0 U5 z0 Z
mov eax, ds, _- r# }6 p- L, D( F( w" Q) r
shl eax, 41 }! ]8 p V5 s4 ]0 E
xor ebx, ebx6 l' r% G1 ^9 B
mov bx, offset GDT_def
7 v \0 z4 ?) Z/ M! A, r1 g add eax, ebx
! S; }5 z% O3 |# X) L mov dword ptr GDT_Addr.Base, eax
! J0 v* f- Q+ T3 C lgdt fword ptr GDT_Addr. T) y7 w1 ^0 T& |6 p# h4 N
( k* o" Z7 ~: W0 B* ~: v2 i. C mov bx, 87 G( ^$ e$ G! k4 t( t
mov eax, cr0
) F: r* {. @8 c* D3 Y- L: Q# x4 Z: a or al, 1
( y) }7 j* i" |0 d mov cr0, eax
' f9 ^, D7 a! N& F* b9 G
- ?6 ~. z, z% a" l jmp pMod
3 R1 S+ ?) o9 M& _' C/ V! D: N: { pMod:( Q1 H3 \3 j; F) \/ b
& }/ f9 a1 ]2 I6 |' X3 y
mov fs, bx
8 \* ^7 d4 w- U' g; j; K mov gs, bx
8 i h! u' f* G* l( T& z+ s1 r: R+ e and al, 0FEh
: {+ n4 b" {" b! a3 o mov cr0, eax
8 P- u8 E4 P: E) B) f$ g3 \2 C. y / { |- b4 u2 I5 x
jmp rMod
) K1 a$ R- C- C/ v9 a rMod:6 @, \- ]* H: g& V
! V# M4 T2 K8 W( h U- n- ~ mov ax, 05 d3 w* ]; H* N+ V" F6 ^0 P$ k p
mov fs, ax* q4 b+ x1 B! Q
mov gs, ax
% q. Y) J; d$ T9 R
, @" h# J$ ]0 V( U U3 c' E+ `1 f
( G' [$ @& U, T6 {4 C9 N7 A8 g# m: i1 I1 ?( E E( D5 K
sti
. M0 `5 Q, _+ G8 R, |' ?9 h" t; n ret
$ U$ O# |6 Z' N0 r& ~: c- ?, zSet4gb ENDP4 b/ [ [* h; k' {1 v/ u" e! O& p6 x
, I5 s. [" |0 E: m5 C
end main |
|