|
|
Hi 各位高手好
5 s+ O, u* [- l. J+ L I$ z1 ?以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。
) ?$ x7 ]6 X- n! g* \. A! Y;---------------------------------------
. B( S$ Z4 x3 X0 i0 F5 q | h* Z6 S1 \: k" w
.model small2 X0 ]1 ^5 M3 g% Z+ I5 M$ P
.586p
( F! L, P& H6 ]8 f Q.stack 8 C1 t' h, N+ C; E
w( q4 ?0 Y( \, A2 I.data1 p; A6 b/ L6 ~- b a8 U9 W$ o5 a
# w9 t* c1 l- P, c# F6 x4 GDESC STRUC O+ }% a9 }) l; V
LimitL DW 0
, ?8 ]+ E: M; E- V: P; P BaseL DW 0 , {; _. U3 F; [
BaseM DB 0 5 o' w! B2 g( ^
Attributes DB 0 0 o& c0 N p% l3 i% S9 {
LimitH DB 0
+ A2 m# M3 d. L BaseH DB 0
4 F$ C' O9 v- ~* |DESC ENDS
2 c* z) V" l& W6 W2 c) g) j
2 j) {; |' H8 [3 zPDesc STRUC6 c' G+ d4 u# s) d& d
Limit DW 0
. Q* ?4 `; m. J6 v Base DD 0 . B3 H9 A0 C1 m- B/ l1 ^
PDesc ENDS
" Y5 T$ C" k& {
3 j# {0 D2 o& s& V) IGDT_def Label Fword
' V8 T8 O) F! xNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>, b" ?% c1 g: J; K4 o* o6 r& W; |
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
$ v& b$ F- u' h
v J. _( A3 yGDT_Addr PDesc <$-GDT_def-1, >
% r {( B" s, H1 F$ |) mcmd DD 255(0)3 p& B* m3 k6 x
& d+ W5 }) i; p5 ^) K
.code
. ~4 g( J" h4 X. U i' Y0 t5 }main proc9 t" m- g) d# n( u$ q
call Set4gb. q5 f# u$ D. q) J8 q) `5 ^
. P t! @1 v6 `8 ~# p( w/ a0 u mov esi, 20000100h
2 n* P% w- J8 b. Q3 A, K2 Q mov dword ptr fs:[esi], 055aa55aah F6 n1 [* x3 @4 e# E
! o j9 R0 k/ k& t b, c5 z5 y1 d
.exit$ B3 ~- [+ \+ {# W, C' t8 J
main endp
9 u; o( e3 S; s$ q8 J' @& W8 j' {1 r! r3 L9 p+ n, T! k$ _
Set4gb PROC NEAR
' X r* @9 S2 P- c0 q+ s, \ O in al, 92h
* V) ?) [3 [5 _+ R' c, n7 d0 r or al, 002
6 C, |, q6 h' d5 t* r out 092h, al
) e0 }# A; @9 S out 0edh, al
$ f0 c$ W! ^9 w0 v5 g& z0 V
' C6 s5 }5 O# `) C" U: A+ Q0 s cli5 a: \2 M, n# G! q$ F& N7 u& y
/ {+ D! E+ H6 p5 J- ~9 i/ Q. M
mov eax, ds& b* P3 l7 A; M% P1 Y1 c' j' `
shl eax, 4
1 o5 |' [, i' D/ W6 T! a xor ebx, ebx Q3 P1 n' l1 X) \
mov bx, offset GDT_def; i/ m" U* t8 K: e$ J
add eax, ebx0 w4 ?, Q- j. i; D( T+ x {8 n
mov dword ptr GDT_Addr.Base, eax3 R+ l5 m1 ^: ^* w X
lgdt fword ptr GDT_Addr
$ j# N2 W. g8 c: C
7 A3 A. V2 Y4 ~& g. P6 ]6 o! c mov bx, 8! R6 \3 }8 u0 [5 ~6 t6 m( M0 R
mov eax, cr0
3 j. `, F9 k1 z0 Z7 n3 l or al, 11 _' k" E/ V" \# U/ r0 _7 q8 M! m) A
mov cr0, eax
( _. i# `- @% s; r3 G. s# P" C7 z0 ^2 ]1 J3 ^& T
jmp pMod
! x5 |1 Z# I% u( _* x; h pMod:; j. A. @, y# _9 V. Z. f' D
- \0 O9 U3 W, E6 d& R mov fs, bx1 ]0 Z0 ]( E3 R0 W5 f
mov gs, bx9 y, f& `5 ~( X8 a+ r
and al, 0FEh
7 V. D1 ` ~- g( s- G mov cr0, eax, _! d+ [' j+ A6 U% W' t) `
/ ~; Q0 P7 Y- r$ z3 j jmp rMod
" L. ^. i& H: O) G) l rMod:
0 Y- x7 f: j. S) g. P3 r4 t$ {0 h: |" o) P3 t
mov ax, 0; Q! z' |$ Z6 E; s
mov fs, ax; Y/ n7 M3 s3 l
mov gs, ax" ~# o6 L9 L+ l. i
0 T, i5 f4 _. l {: l7 L3 A4 s
2 w G( a8 h9 M, i7 e2 W
^+ ~5 G! W5 O sti
# S* @ X8 _& [- q! m. ? ret
" p! e% o9 b; O$ Z! SSet4gb ENDP9 U) q7 k, }, {2 Y5 U! s7 N
2 Q5 s3 G& L0 h) H2 l/ k# j* _end main |
|