|
|
Hi 各位高手好
3 n* {' P" L; \- h2 v, W& X以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。
7 m' p T u. G* ^4 s;---------------------------------------7 K) w% C, m4 F+ ]! x
; ]4 {/ y" C0 T. E
.model small: G0 V& w( e& x, P$ Z$ P2 t6 [1 O
.586p
8 O' b% t4 K; w4 T3 N.stack 7 i6 M! ]+ v' S; i
$ R( Z) z$ }0 N1 b/ `& W& W
.data. t) Q( S% |5 k4 z! S3 Z
3 X# ^0 N/ k/ w, P6 ?DESC STRUC
5 D; _* n' N# N |# [ LimitL DW 0 + B, n. c5 J+ }
BaseL DW 0 % m* s" I( w" {0 p
BaseM DB 0
, O0 n. p6 ~6 @4 h" D) c5 V Attributes DB 0
& ]" m9 K$ \# v" Y* G LimitH DB 0 , o, s6 ?; k" `! K
BaseH DB 0
' z6 b/ Y2 ^; N7 n n% C! fDESC ENDS
: }% F9 d0 `% T! g x" J2 v% k& ?8 K, I9 O
PDesc STRUC
8 A, W6 b7 I; |' u! ^ Limit DW 0 % O8 v; {3 w1 O$ \; o
Base DD 0
& t. ~& v0 L/ ~9 I+ pPDesc ENDS
: K1 u' U& R- H6 r+ W1 E& x- k! B# `; S) r* _
GDT_def Label Fword
3 q7 ~: P; v WNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
9 f- M$ Q0 i; X! z! h9 MData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>4 [% m1 q0 @# n; L! g
% ^, u. h; ?: P0 Y9 g) p- n Q, x
GDT_Addr PDesc <$-GDT_def-1, >
. J& M, v2 ~ }cmd DD 255(0)& f7 N- T" ^. x9 Z2 O# T7 X' G4 h
9 ^, M! I( w5 e
.code D3 X* C9 Z+ U% ^, i
main proc- ]4 `# Q4 P$ B! l
call Set4gb- a. ?1 g4 t! j$ F% f2 ?" B
$ F# T+ z7 H. p) ]& N
mov esi, 20000100h
, @& A) G% N3 }8 F& W; G0 F mov dword ptr fs:[esi], 055aa55aah
% \$ k% y9 b; y) G! l4 k% i9 @: O
4 v& n# J+ w7 ]+ k, S .exit" h8 p& @$ y4 ~; |
main endp
% g6 i6 V: }/ w1 t, ]
( A y7 D1 Y+ U3 G% G# ~5 CSet4gb PROC NEAR
$ t; H9 u) u4 e in al, 92h9 ]8 W. Y. _" L9 Y) u. |+ {! f
or al, 0028 @' E6 {" w/ c* B- c
out 092h, al0 @" i2 y3 a: W1 [' ^% @
out 0edh, al/ G) U; Q1 G7 |- {7 p5 C
1 R6 ~7 x) m9 t" b9 ~9 l0 c cli! v) Z8 Z1 O y0 ?
( S/ ~; g1 M3 J* d4 E mov eax, ds
0 Y5 e4 s' k. \( R/ v shl eax, 4) {) W" [$ E! T1 z( `" l; h E
xor ebx, ebx
! |& d! p: P4 A: h4 k. c mov bx, offset GDT_def
1 ]; P( B" w8 y7 f add eax, ebx
# V: v9 C1 x$ R+ Q mov dword ptr GDT_Addr.Base, eax
0 ?' S6 A4 a5 U! O) j r6 S1 ` lgdt fword ptr GDT_Addr
$ E% i$ T: w# t8 p# T
5 w m% r% b. }5 Q& W mov bx, 8
0 s1 T2 K9 C- [" a+ o mov eax, cr0; F3 o. q4 ~: G c! f X
or al, 1
9 u1 f* b7 [7 ?8 b9 Q; S3 i% U mov cr0, eax' \( @6 g) p% c& C& b6 J/ k. I
9 ~3 c4 i/ b: C# f! l& _+ k jmp pMod! X1 L( Z+ B/ Y0 Q! Q P
pMod:
) N% x/ _5 N3 q; P0 s' k# y7 Q) }* x1 |
mov fs, bx# n' R- z8 A9 S/ C
mov gs, bx
7 t u" [$ K! w4 L, D2 q; K and al, 0FEh2 v; [: [3 v* p0 m$ W( l
mov cr0, eax' F7 R7 b" M* o% o0 `2 B
/ S. c* Q) R/ T6 e% |% | jmp rMod
: G y/ L8 B2 R8 W M rMod:& j( C. a# T# r( A4 G \
1 q9 c9 V J( ~+ T' n mov ax, 00 C4 q t0 L, E, b% C" `
mov fs, ax
5 x8 b" J1 l u8 r c1 | mov gs, ax% ~$ Q! d8 b: a- H. O" q
( C0 c; `* i, l0 G
2 q2 @) p- l. \4 f5 W' O8 n2 e7 r- a! A
sti# d3 y0 c0 p0 u1 e
ret
; u7 ]/ l' T* w1 s5 [1 `8 r! a1 pSet4gb ENDP
9 t6 n: D: q e+ U' | & O! T) X5 ^, |+ I- D5 N$ _1 ^
end main |
|