|
|
Hi 各位高手好' F/ V k6 p7 e4 E
以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。
" |4 i6 O3 y8 s;---------------------------------------9 P: e( i0 j- v5 ~5 |5 [
5 e$ ~' M4 J" S b.model small6 B& F) P7 z( x& z' Z) L8 c
.586p: Q' k; x% X7 g. r
.stack 3 O$ X6 {3 w/ Z! V! `4 G x
8 b) Y. I4 ^5 [" w2 Q, E m' j2 Q* h
.data
# s4 `: O/ _5 [9 J& t0 H y3 m% [. s/ n( r. n2 ^+ J
DESC STRUC
" Y! m7 E" G* j. } LimitL DW 0
& ~ n, }( M. i5 A$ Z4 x" h BaseL DW 0 / _" J; u, F/ {6 x* R/ a2 }
BaseM DB 0
3 l$ Z. V I7 b5 O) l7 L Attributes DB 0
9 U! p( a3 e# a( e! g LimitH DB 0 " I3 S: k/ Z3 T1 K( S' P
BaseH DB 0
8 A+ [: {: c1 L9 E5 [DESC ENDS& A5 p- u0 [8 k+ P
7 C- R0 c' O6 l+ _# }) A6 f6 TPDesc STRUC
3 ^( U- q: x- N! S& T) j Limit DW 0 L' `# b* X: _0 \/ z, ]7 t. j, _
Base DD 0 ' ~! O8 F, S& z: u
PDesc ENDS
. [) ^8 r* R, K& O
5 R, @8 u0 y# xGDT_def Label Fword Q4 B9 e; B4 j* E# B) Y
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
3 i8 D8 }$ ?, k- t/ v) K, F/ ZData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
) M( t/ V& ^- [2 a2 a4 h+ [- P: r0 Q T' W; I/ v1 h4 @
GDT_Addr PDesc <$-GDT_def-1, >; b. {7 d7 W g- G4 {2 e0 f$ H
cmd DD 255(0)3 `. q' Y1 E3 Z! ]: N* {
" S& D% E2 K R+ q, D.code1 p! p: T% }; N
main proc# `) I; `4 f2 Y6 K- d- }7 o3 h
call Set4gb+ f$ x7 W+ J; A( B! R! c6 a
. |/ ]& o( G8 l3 K
mov esi, 20000100h
6 g/ B( f' w Q/ j5 P# T mov dword ptr fs:[esi], 055aa55aah
B" j' S* F2 S: Q& } ' s2 l6 F3 H _
.exit
, O+ d3 y A/ Q$ G3 amain endp
* U* o: D$ F% v9 A; j0 d$ O! d! \+ h# L" @5 Q# k
Set4gb PROC NEAR. G' e9 f4 p: M
in al, 92h
& C4 ?4 Z' N! D2 Y; j- ` or al, 0024 q1 O2 r3 s; n z8 X; T: p! F7 M
out 092h, al4 p6 q/ v8 y8 F* T1 J
out 0edh, al
4 n& a8 _9 h6 X7 y- j/ a8 l* r N% ]; Q$ U! z
cli
/ o4 [ D4 z' X# s7 |1 g; V7 q0 c1 Q4 t6 w. Q, i; i" J, I M
mov eax, ds
) P8 O P5 ^. o, Q shl eax, 42 w: ~, S1 @4 m3 X# K
xor ebx, ebx6 Z+ q+ V% Y7 {$ R; M, H
mov bx, offset GDT_def
; [& h% }/ F: g2 n/ |! {& ~# U add eax, ebx
: ~3 W4 x" R, A, K mov dword ptr GDT_Addr.Base, eax$ s! K) n( Y5 o/ U
lgdt fword ptr GDT_Addr7 {0 i& t7 S" z* y
3 x* j1 L! n1 w% @+ u" M mov bx, 8: t' Z! k' t5 J$ R
mov eax, cr0- C' O, [' Z: k8 a% @- r+ F6 B
or al, 1
5 c5 ]# w3 V9 s' p% _ mov cr0, eax
- B/ Q) b; Q! r9 b, u' K- p% K6 ~$ o2 h% O2 C7 l
jmp pMod, {/ Y- }9 f& f* d# G
pMod:( m W' m( s3 D& f0 X& {- j
% i' _4 @0 {$ z+ e8 L mov fs, bx, Y4 {( y' k5 Y
mov gs, bx
# C' f$ Q- M/ }# x6 \. V" O! ] and al, 0FEh. z3 [' I( V0 ` M& |: Z0 v/ ?$ {5 j
mov cr0, eax% H5 I: s6 T4 V4 w
) W1 b/ d1 i, G3 [5 @; v7 J% s$ i$ } jmp rMod
/ Z6 d! Y. p$ v8 y% j* ~2 m rMod:
+ `- x5 F. j6 L, ]
0 d# K9 D' r* r% j; @1 {0 V mov ax, 0
: P! q- \1 n- } mov fs, ax
) S7 X( k* N6 w/ Y- g5 d& b mov gs, ax; D! D8 y$ r" K" d {
, d7 ]5 I5 c( V5 X5 _; u+ h( `: v. X
% b' v; w2 D& G: R; a& b. D( T8 U* A2 [
* l) V. \7 ~! |/ N. Z% ~+ W0 I
sti
! N. o6 V1 ?6 {1 S ret
* n2 o# ?. O0 Y K7 F. |' ASet4gb ENDP3 H/ q3 Q+ Y3 {$ w% m0 t1 U1 R
2 o9 ?6 @) b4 P# h5 I6 J
end main |
|