|
Hi 各位高手好
% V7 C& U- Q/ {# t/ _( V- i2 i6 N以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。
" Y1 t/ P$ f# h- ?0 O. }% ~: _;---------------------------------------
# ?2 K" w5 l$ m- u; @( `& y% f& z5 ]( B% w
.model small8 \% F! ?: B0 T; u( f B
.586p) g0 o5 ^) v# k0 M( k: o, a
.stack
o2 J/ |) I1 p- y2 G8 S2 W
9 A; |+ z6 M% _7 m) j.data) D3 ^* {( c. i! F. U4 R- u- z# N
0 }, Z$ @% _ `3 b/ RDESC STRUC [3 G4 q: l. z- H- ^
LimitL DW 0 - a! p# z$ S4 u9 T9 q, ` Q
BaseL DW 0
4 I; J8 @7 w2 @, E" [, R BaseM DB 0 * X, k9 u) y4 X% g" J* P
Attributes DB 0
3 c$ |# M% X& R t& o& p LimitH DB 0 1 g0 @& n7 c! p" B; n. `
BaseH DB 0 " M9 B, M$ _4 {& k3 o0 Z, I6 n
DESC ENDS
" ^: c+ M! @! V' w% N5 A: \: S3 B/ i9 ~4 S! c$ |" q& b1 {4 x
PDesc STRUC
8 |1 F6 B# h' M2 e! [/ l# T( E Limit DW 0 : D0 r/ k0 _; a
Base DD 0
1 V& _5 d- a9 [: G' WPDesc ENDS6 \8 Y, z/ D% p6 T; d
+ i6 T; x/ m( H
GDT_def Label Fword
) O8 M9 H' Z: X3 N% a% W( M" dNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0># b; J( n1 l3 i2 u
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>$ p. b% y5 H' M. A/ a+ x6 @$ m
C- Z" J- A- E7 I* Z+ p: tGDT_Addr PDesc <$-GDT_def-1, >7 p }/ U/ u/ p) V5 S
cmd DD 255(0)- I3 q3 r2 V& i2 |# x. K, O
8 v4 p) B1 S; k) p. w+ D& @& d
.code
& d5 O. P$ |4 G; `' kmain proc: p) L! c$ u# F+ D/ I
call Set4gb
4 N! x, @# \3 W
0 h# O4 E9 S9 b( J mov esi, 20000100h
, c- o! @# G( z# N1 J9 U. x mov dword ptr fs:[esi], 055aa55aah- Z# D) s6 g+ i' ^! r/ D
9 k: O# e& [' _- n2 X+ d" _+ W
.exit
- T8 N2 \7 s" R, Z) q3 ^main endp
" @- a. O8 [2 y X G
o0 S5 _4 K3 L0 x2 JSet4gb PROC NEAR
0 _6 p4 V3 w* H4 v0 Q in al, 92h
- s9 r. k+ _6 w( r* ~7 Z or al, 002/ G+ {! c& l! p% R' K: {
out 092h, al# [% O' P' ~" j7 }
out 0edh, al. d& a3 \9 t4 v& r2 F
: \9 J/ B. `- c; S6 M9 n1 K& `
cli! L/ k0 @0 D! z* m, q2 R7 u6 P2 q
- m$ S, Z. b1 l9 \- c
mov eax, ds( l2 E7 }& s Y/ q
shl eax, 4! t; B* Q* y3 j; x
xor ebx, ebx4 D7 b7 s5 {2 @' |
mov bx, offset GDT_def
5 R$ Q) A& y! T! K* v add eax, ebx7 o" k1 p* N' C6 M) H
mov dword ptr GDT_Addr.Base, eax
" U' D, e1 q+ _1 v lgdt fword ptr GDT_Addr L5 y- X( K# Q0 E. b
n7 n- o" q2 E
mov bx, 8
( u) y; C$ I6 A O% j6 F$ @( h0 x mov eax, cr01 y0 X5 ^" E6 ~4 I
or al, 1, g7 G& ^) @9 ?+ _
mov cr0, eax& F3 k# U+ ^3 L: L- X
/ k* P. U6 M2 `0 e
jmp pMod9 C- K p9 q& d& ]
pMod:
- R# `- h$ { s9 Z: b* D* `! Q& j" Q
mov fs, bx
$ y+ _, u: Y( } mov gs, bx- N' D& h! c0 p. h3 G* y( L
and al, 0FEh# h( h! E' P/ G/ j! `# d
mov cr0, eax
+ A' H5 H5 f% ^: O- [' y & O) y4 E9 O+ E6 d! V" ]
jmp rMod
$ j1 c3 n1 S& w( o0 A. S rMod:4 ]; M" E" v# |/ B4 s* u
: x% z+ M+ p M. }# U% g mov ax, 0
) _0 i- d, d" z& \8 t w4 N: |( a5 @$ L mov fs, ax
* Q( Y' x7 m S- s$ x mov gs, ax5 u, \. }% b. g# W9 H
0 N0 j) {: F% }( a; C( `7 t% g
9 U4 G3 w+ S7 R( ~
$ @4 A7 P3 K( _9 c sti
: ^( q: ?* A' k( @0 N ret
9 V3 M9 t6 v/ u& B6 P' m, x4 F2 K$ sSet4gb ENDP) U1 x8 i0 a: Z2 p* r s
- d$ y1 q4 u7 a" K& j% E3 }
end main |
|