|
|
Hi 各位高手好
- ^' L( h. u/ q, d4 m5 o5 z以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。9 r3 W7 ?' |2 G! S4 f
;---------------------------------------9 m0 w9 x" `9 G- r/ L% B. m% V: ]
4 Z. f3 P, M+ y# S R4 ~
.model small
5 [0 J# {9 l- Z* ]0 ].586p
+ T" w9 V0 G v3 k# l( {.stack
6 e9 ~; K% t$ X
1 B& E6 C/ g# g) d; C- ~$ Q# }6 y.data
% x! k/ O4 ?! r# O: Z9 S8 C+ J C# \% ]: t3 Y+ D" O% b
DESC STRUC7 |3 R8 U m7 c+ s
LimitL DW 0
0 a1 z. H; B% I6 E1 c5 h1 _* } BaseL DW 0 : Z. [# T# d5 ~/ N& O
BaseM DB 0 1 W) ^" \7 O6 W; c( {$ Z8 ]
Attributes DB 0 0 Q/ a: r4 Y/ f* P4 z
LimitH DB 0 $ W/ L) v( Z- A; G7 s1 O& j
BaseH DB 0 ( ^, D0 A% u/ _2 t! ?6 S( m
DESC ENDS
; i9 ~# j' h+ ?. p6 [0 Z, t4 T' K( J k
PDesc STRUC
7 P* y+ s6 D F: p' x& M# V, p Limit DW 0 ! {3 \! y. a$ F( [% I: V0 l! F
Base DD 0 , d# j8 t9 \' q# [6 [
PDesc ENDS
; X0 o! q4 H8 L& y+ O
2 _! l+ s1 i% R4 ?GDT_def Label Fword
- T* u$ t# P+ [8 jNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>6 N' |; U' o2 n
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
5 A/ `: ?/ C# y x; @ v9 j' |
( P7 O5 N) ^, r9 B I5 v' BGDT_Addr PDesc <$-GDT_def-1, >) D# F9 ]. o' d& P8 b
cmd DD 255(0)
5 H1 I1 J9 P1 K& @8 X
$ B. U# O% I# J3 ^2 a' N.code1 Q4 @' S! w+ X9 f$ P7 D; H& U9 k
main proc
! |( [( u8 ?& @+ O2 X: E) d' r call Set4gb/ L! f& x; @$ C
+ j) k- D7 N0 W
mov esi, 20000100h/ K) K! @8 h+ t( ?( h D2 v
mov dword ptr fs:[esi], 055aa55aah
7 T" p! B! u: u
! t7 {1 t" _4 d2 C7 J/ P .exit- v& V, j# |2 ]4 i7 ?
main endp - i \, @1 l/ m
( F; x8 c) t& {' l. C! @+ b
Set4gb PROC NEAR
6 V1 o) x5 T1 H3 _# {! N in al, 92h! e6 k% T% h3 \( {* j. c1 {% r- y. k
or al, 002
. J5 j; K+ {+ ?9 s$ q+ v9 m+ V out 092h, al3 w# x+ E- ^ S* m6 T% g
out 0edh, al1 Q! a/ K8 o# B7 V+ Z
/ C, R0 q( }7 z) A+ ^9 g
cli
; N1 n5 f: }, w3 p
1 O6 D5 M. w% }0 P) V* ~6 N- R mov eax, ds4 e6 O; i/ n4 N2 o2 f9 g7 u0 d
shl eax, 4- G' F6 x. B! f/ {
xor ebx, ebx4 R C" p/ L8 z& c
mov bx, offset GDT_def
# V2 z/ K4 E" u+ Q4 R { add eax, ebx
# {- g. J, W4 l% F' F; j mov dword ptr GDT_Addr.Base, eax1 m1 H7 S5 G# ~. S B& x+ j
lgdt fword ptr GDT_Addr
8 Q, y7 d% I' W8 C8 h# y8 G
: S R+ ?$ G9 B: J8 I+ d mov bx, 8
! S7 ]- ]- Y" B+ D7 b- \ mov eax, cr0
! s2 ?4 `' T7 L. o* L5 n) W' x) g or al, 1
, u2 ?9 [" ]3 } mov cr0, eax
1 d9 k6 l9 p% R9 i: L2 p1 D! K9 q( ] k
+ H2 j( _6 ]0 ]5 o6 j0 w/ Y7 O jmp pMod# d) t+ }# t. o" H( X
pMod:
3 E7 q8 a4 a! y( x4 I2 l" |5 D( y$ {/ ]9 u8 l, H9 K
mov fs, bx
: V, s6 D& r; O3 N. @- l+ a* u mov gs, bx
2 ]: X0 `8 }$ A$ B% K& }) ?, ` and al, 0FEh$ O% |0 F( f4 i$ }" w
mov cr0, eax
$ h7 B+ t4 u; G8 H4 ~ ! ?% {4 z$ Y9 P8 C# N
jmp rMod3 z8 U& @& T- }; ^( s
rMod:& f! {: B8 q) F& |- Z* L% u0 r& d
2 T$ I9 p# ]& Y
mov ax, 0
3 X8 |8 N: @7 ]+ m4 r) m mov fs, ax
4 h- O9 c9 [- y( M5 m mov gs, ax
# N) v, Q- z7 |, ^# a
1 e! C7 M5 l/ \% d
7 ?) G) ?% N+ f3 K( V1 T/ Z* M0 R
) T/ m; x* G& ]) E, z$ A: _ sti/ k% {/ s+ _8 F( J/ M
ret0 w. s, o" a- _" M2 j, w% r
Set4gb ENDP
( ~, s! j l0 K, a+ h
6 e8 |8 P8 L5 ^( wend main |
|