|
Hi 各位高手好, ^/ ~6 r' e' o
以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。6 U& K' P; r: s' E
;---------------------------------------$ A+ M1 M5 j9 y4 R3 R$ H: |
+ _) _( `3 k% A4 I* x8 S# ^# E.model small
6 G7 I/ x) ]8 o- G5 h.586p
6 J( e: }5 ]. K" E.stack 9 @; M: N) u9 [; R3 K; l8 r
" ? g% h2 j% H7 h0 e- `1 D3 Y- n.data$ j5 f' Y$ o! R( Q% Y0 Z! ?
6 V0 O V$ w% E" P( M8 b8 N- p ?
DESC STRUC
8 C8 }( D" h" ? s. V+ [ LimitL DW 0 $ T2 r3 p4 d0 [ ?4 T* S
BaseL DW 0 4 W7 u2 ?; o$ e$ D, l* u
BaseM DB 0
' k! }' K+ A a* o' Y7 C( P Attributes DB 0 . P6 q# C5 _8 I9 V" ]$ Q8 m: j
LimitH DB 0
$ k+ X. T8 @8 { m4 m) v: s BaseH DB 0 # e, B. v$ i, v
DESC ENDS
9 y# w4 [' W& Y' J, u8 ?, ~! _" d
. s5 D' C) f8 ]! [& Y/ a% HPDesc STRUC
0 l6 I$ j% |$ M) v# P Limit DW 0
1 Q x; ? f6 |7 l- x0 L Base DD 0 " J4 ?( H" |: m. S4 m
PDesc ENDS7 u+ X N" r0 i+ u$ @4 U
& K. Y5 i: \9 a$ G* ZGDT_def Label Fword
* c. o( I( l% J8 V1 s M+ mNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>5 U1 l) ? r- F# b7 p& x0 v
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
. i5 ^' I2 b& G, I. {( Y% P# S- _8 f3 [
GDT_Addr PDesc <$-GDT_def-1, >* ]) E( X( _* |, _9 ?
cmd DD 255(0)) N( G/ Y) [% O0 K+ x, v
" y6 o' E/ [) ~: Y! L8 i. p- B, F
.code
' U6 v3 K' U i& `2 s8 U: Xmain proc7 @3 u+ a2 \& m& m! J
call Set4gb
* ?2 S: t: g- G1 ~- v; y5 a4 `3 W" |
mov esi, 20000100h F5 V( F; A: h X2 ~
mov dword ptr fs:[esi], 055aa55aah
5 B1 i5 f Q! u4 ~$ f ( l% c7 }3 A6 L; J" i; X
.exit
7 [% \0 v- T8 d$ |main endp 5 A8 W$ l3 e! b: L( d
- n- h6 x8 D5 @* M1 |+ N
Set4gb PROC NEAR
7 V5 |: U1 C7 f" }; J+ ^% I in al, 92h
* }5 A& u9 Z I& L5 k' T9 o or al, 002) G% |: N) R6 O" W9 m
out 092h, al8 n4 t5 ~/ x* N7 r
out 0edh, al
$ [; e! Q- m$ o+ m8 C1 _ q) V& ?1 k7 i" R+ A4 U. v
cli
0 x; V7 A/ S' K5 {* A L: Y3 P/ P" D) n! i4 h' B2 v& O
mov eax, ds
+ R% }$ n8 _8 W shl eax, 4
: |0 l% l8 K; \ xor ebx, ebx6 T d3 x! R2 H; {7 e4 O
mov bx, offset GDT_def- r! w& Y( K* Q% d F9 Z$ J& T( \
add eax, ebx
: e2 D" t. b/ X0 h* h mov dword ptr GDT_Addr.Base, eax
% ?6 x* T6 s* x, N( E* u. p lgdt fword ptr GDT_Addr; |5 C. l+ B1 n; G E7 T
5 G* ?) ~% s- D8 E; U* i
mov bx, 8- M2 X. p& h4 f/ Y
mov eax, cr0
0 Z5 M2 i, Q2 Y0 U) m or al, 1
A. E. i! A3 P- I mov cr0, eax
8 N8 d; g" z T7 \9 O( {% F. v
; S* A2 g! A6 ~3 Y, ^: M jmp pMod6 f, n, h5 P) {5 Q' h$ J* j" d
pMod:
# ?- b j- N- ~# \3 [
& S& }1 E% y; H ]. g2 R/ h mov fs, bx; g: E+ x2 M- Q
mov gs, bx6 G e( x! s% Z4 m
and al, 0FEh
' t) g! l6 M' c: T7 V mov cr0, eax
' I% K' O4 _7 o0 Z* R# U ; p, i$ Y: u2 V1 w; G9 v
jmp rMod, J3 Z9 M3 L. x+ ]
rMod:
$ F' S% V/ I. h2 O4 Z4 s9 j% j8 x8 S4 g1 m: a$ G1 ^" t9 I
mov ax, 0
6 ], F6 o" \ Q0 y% r! l/ M mov fs, ax
# e& w3 x4 v( I7 R mov gs, ax/ k9 O0 u: J. j. p! k) C; r
0 a d: e/ u9 ~( j \% L# ~ ) ]% G, ]6 \8 V6 ?
/ ]1 M4 t+ n* ^! r( i8 J sti
6 m7 v; G5 j8 f. n. ^9 v3 B ret/ q" a8 \ W+ D! B
Set4gb ENDP. C; r* l2 N; r# }9 o
( i' A% t6 [: s; Xend main |
|