|
Hi 各位高手好
6 P0 n( Q. d! F! [/ Z) \: \$ w以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。
+ o0 Y' Z- E- a$ |3 _;---------------------------------------
% v; P! c0 F, m$ k) e$ O' Q4 y2 W* W' X
.model small
/ r1 t4 Q/ R8 _8 I: U' ~.586p
" F8 ]$ v7 d4 t# B6 k* L% U.stack L8 S7 E$ B" F& n% h& |* O
- s1 N9 M3 R. h! X. }! f: H
.data
1 V1 Q* i! V% x4 E7 U5 p4 r
( h! S8 A* n3 b6 r9 \' `DESC STRUC
* J1 Y' X5 `' S; g- E, | LimitL DW 0 : d. g! W6 }" ]3 f' l' O
BaseL DW 0 & W4 W; K3 ~/ u/ I4 |' T6 Y
BaseM DB 0 - f8 ?9 d& o1 [0 g/ o% g
Attributes DB 0
9 b1 K: J9 v/ r- W5 F3 j LimitH DB 0 - r& w+ ^3 m, A6 Q8 b! I( M+ p
BaseH DB 0 / v8 @- G1 ]& j; Y' k; B9 [. j
DESC ENDS2 l R. O( u" J1 H& s. ?
# T' C, T8 X" e; q0 |# H) _0 D) NPDesc STRUC
- D' B4 c5 H% ^' w; t, D Limit DW 0 * U2 S+ K' H$ Q. O u5 B& q
Base DD 0
: B) M" D! {" s. ?4 ]- [* T/ x8 APDesc ENDS
; T5 X7 P# w: M( S* l
$ } X6 f7 f. v; OGDT_def Label Fword
7 f5 N/ t+ H: ENull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0># {. c+ e) W- Y# c
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>( r" C7 @" _0 l8 h9 Z: K
6 Q. Z- O1 I0 o: VGDT_Addr PDesc <$-GDT_def-1, >& T, s) e" F# @- I \1 v' _3 a2 y
cmd DD 255(0)& l# z. X" s5 y) k6 b% K C
' O: ~3 [5 c2 w* B- x
.code8 `. p& f+ y, l1 h4 e
main proc
- |( o. x% [7 D) ^# i+ p5 e call Set4gb
6 }6 s+ F0 y9 q# h. D: C+ x7 `" k1 I2 O) o |7 q) @
mov esi, 20000100h
) U) l: s7 B* X9 y mov dword ptr fs:[esi], 055aa55aah( x. ?6 b" H4 I8 |. w8 }; }
4 K ^( V$ o$ D4 l6 c% u, Y .exit
6 p: ^( O2 ^; ?7 O" _1 Ymain endp " u! w& _9 E% b9 F& G) g
& U; q; h F ]0 [: ], uSet4gb PROC NEAR
; X; Y0 T% e7 U! e/ |% w& d! _ in al, 92h" G% r; Z1 ~8 ?( r3 o1 L) I& Z/ x1 v
or al, 0028 g% F- N$ l- F! M# V
out 092h, al4 O9 ?0 P5 x0 k( F2 Z" i
out 0edh, al* k+ M. X. P. [( z7 i
( t5 I7 e# r; U
cli& v$ C' Q( g+ G& m- j2 d
8 E, J" b. ?( C- V* g mov eax, ds
% }, N5 V$ @2 p* y6 h: B/ M shl eax, 4' Z0 Z$ `5 N+ _ I5 K: I1 Q8 e
xor ebx, ebx
- _, u! H: X, c0 i9 W' q! y mov bx, offset GDT_def
# ^- t5 n, ~* u7 q+ w5 z$ r$ i; W add eax, ebx$ Y! o$ b3 S$ H5 C* F! E4 c% }8 p
mov dword ptr GDT_Addr.Base, eax
: w) f3 z, M. v- z, K lgdt fword ptr GDT_Addr
/ n) x: q6 U* N2 i2 s ~5 b' @8 k! s0 D1 U4 R+ _1 u) [* x
mov bx, 8
# C/ O( c2 u4 M k" f5 G5 K7 i- L mov eax, cr0; P/ r# c5 J; W: L
or al, 1$ c3 L! X( r! |# h- e, H* Q
mov cr0, eax6 D4 H0 d* s) ?- t! N
1 b) w$ y1 |0 d; |0 L( @
jmp pMod
4 y' m. N% Y5 R pMod:
7 ^9 C; ~' Z# B4 y! E
- c/ J# H+ ?; U% }- h9 K$ Q' I mov fs, bx# q$ e8 G Y' Q
mov gs, bx
/ |' f$ }; T& ^8 s9 p$ I$ M) e# f and al, 0FEh
4 o# y. U) ^/ K- q& O* Y* O' X mov cr0, eax
1 y8 y3 _7 | o" |; X% k9 L
5 R6 E0 B/ j, B5 o0 b jmp rMod
) k- n# ^% Q1 y. H* v, d$ h) T8 B/ t rMod:. m$ F6 F$ P8 V! S7 U) m; o4 E( K: ~
% J+ t/ e0 @3 [1 @- x mov ax, 00 y5 U$ V$ P' Y
mov fs, ax* `+ k9 d% O, E/ N4 V
mov gs, ax
: f$ e* c! z( L* }/ x/ ?, b' O
4 q3 Q+ [# V4 r , C' L/ f" q. n* h( B5 R' L) _; r
0 z. d. |3 _- E, C3 `0 c( ^% M/ g
sti5 s: v. F O7 K, {8 {1 S/ ?7 \
ret3 d; L- @( y b
Set4gb ENDP
8 y0 G+ i0 ]3 g' k' O' @ ' ?( O, f1 y/ ]. g7 P2 B Z9 d1 J) t
end main |
|