|
Hi 各位高手好
' m. e! }& V. c, D, S以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。8 k# D4 U( i. \" i' G4 Q& a
;---------------------------------------
8 W. t5 g8 Q0 d' v* t# {$ D% B _: O% u2 f1 g7 W$ h& U, C* l
.model small6 K( s( _3 D+ U9 p& a& j
.586p
# V: q9 ^- C+ ]2 t; u# Q3 n.stack $ e b/ @3 e2 _" {+ d
1 n9 |/ W! J! {1 ?: o.data
7 T. _$ S5 g; k8 M# f' _" _$ J# K' n- f) \6 ?9 p( u, s" n
DESC STRUC
8 R* L' G$ a8 s LimitL DW 0
5 H4 A: H& \% [4 q4 ?/ ] BaseL DW 0
4 G3 t, _1 l) A/ K" x BaseM DB 0 % C, k; l q" t4 z3 ^8 f. ?2 r) Q
Attributes DB 0
@, k: C6 n' s5 g9 s9 {5 ^8 C LimitH DB 0
/ }! M- q' z* F- w: `2 L BaseH DB 0 8 }/ ^8 v `. {5 w( P: l4 o" t
DESC ENDS( ]' r1 f- Q. }+ s# K+ i* t) I
7 g6 w! i% p' Q6 cPDesc STRUC( c6 M+ {) i8 d$ @+ O, y
Limit DW 0
. r* j3 @% n4 i9 g Base DD 0 ' {) |. p) V8 V% x9 q0 x, T: @
PDesc ENDS
: |! T+ A) ~% F3 G) c- u1 Q5 o# B6 W( Q' S1 F: u* A. n( j
GDT_def Label Fword
- M6 C; d/ j) T( L) d9 t. qNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
$ [! A, s1 W) [# pData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
0 M; b8 L+ b% S8 L7 x7 a+ h- I7 B
1 j4 t5 ?, W% b: Q# Y, ~/ K1 qGDT_Addr PDesc <$-GDT_def-1, >6 T* H- g* ^; [! l7 R
cmd DD 255(0)1 @4 p9 p! t! T6 b
6 n, [ V M5 e: i
.code
. W0 C( Q0 R @' o( amain proc
' m9 L" ^ H. s9 W% }3 ?1 | call Set4gb
0 A3 w2 q! J6 ~2 o( Y: f+ y0 o/ ?- `5 D2 _2 p% d! B, A
mov esi, 20000100h( B3 Q" O0 G* ^6 F8 A3 w6 K
mov dword ptr fs:[esi], 055aa55aah
* Z: j( Y" [2 L" _3 p' V @3 j7 S) Q' K4 z; |- p4 G
.exit& Q6 I# q8 J5 h6 d, g% @
main endp 3 ? C c2 m! l8 t! ?
( }/ ?& x- a0 o% c) b4 n
Set4gb PROC NEAR9 P& g% s2 X5 @( n3 u. S/ j
in al, 92h
! i2 z- N* Q" Y7 p or al, 002
1 E5 Q/ {. Q$ U" w/ W out 092h, al
; W! V; O6 s" u( X9 ?/ A* [9 r6 S out 0edh, al0 Z2 r2 `4 ^* Q: x9 ~% m
# d" ^. [: ]* S cli) N3 M$ Z/ i* W* y. b
* w/ U2 n; `; V" w- Z$ a5 d
mov eax, ds
1 G F) g: _& j9 }: m shl eax, 4! E) G4 J! C3 o5 B
xor ebx, ebx& c; u5 C8 d; G, H# b
mov bx, offset GDT_def$ g0 a9 d6 i, a, r& M* }
add eax, ebx
! z% v, y% Y2 `6 f! w mov dword ptr GDT_Addr.Base, eax
+ h5 N* s9 t" c$ F5 x lgdt fword ptr GDT_Addr
" ~/ G: Z" n1 d8 N0 q% p
* u: F. q* s' I/ x8 L mov bx, 8
7 X) T: _. T8 w5 F3 a/ [ mov eax, cr07 f% R |+ U; `5 Y' y
or al, 1' z" V, i9 M3 o' |/ `
mov cr0, eax
& }- V' F, O8 o" Q# |) |( N1 M" k0 Z* L
jmp pMod" r6 Z( S6 k0 n4 F0 P+ |9 V
pMod:
, X( S0 K! u1 \; V6 N, n y. m
" D; E, { z ?' x mov fs, bx6 y3 \' Q* @. j% v% m
mov gs, bx
! Y% h0 f# a. F and al, 0FEh! B- F( u% G% X3 J) a# {0 ^
mov cr0, eax
' ~5 e; P( G4 Y, q ' E) g% |7 x/ T1 v% Z( i
jmp rMod
) r# l) p, z( y. u rMod:: W8 K% ^: Y `2 o% o# Q! Q1 R/ Q
" C) ~$ ?9 H" p/ d& u1 N/ l8 S2 { mov ax, 0
$ B# q; Z& [9 q$ N, W; L mov fs, ax) T9 l9 T; @, e9 g0 w& w: r
mov gs, ax4 T! U+ Q5 |. z
$ p" D; D1 v: e: L- E0 L# V
* t4 v0 v- { c& H! |* j
2 w+ {2 D G, A6 i7 C) m
sti
$ r+ `# j4 z/ H& N ret
( Y5 u# y0 \# \) S8 l/ l- tSet4gb ENDP, j' q; x! ~$ ]: Q
3 E! s$ P. ]. H! e4 send main |
|