|
|
Hi 各位高手好 w# T6 O9 N4 ]; p3 P
以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。$ T7 H) o5 A9 [- N9 l
;---------------------------------------
( T' o* l- g: a( j' }' Q+ ~7 e; f$ o/ L% ?6 `
.model small' _" j6 n g- _2 h5 u+ @
.586p
4 l# H1 U7 `6 D0 N.stack & Y6 U$ j4 P1 `
1 p, {) A2 w% O9 J0 H- D: M.data7 |6 f- n! B" o- E8 W) k! k/ ~! I
6 f; \5 z0 f' Q% S" x( g5 r
DESC STRUC
- p3 H8 t- a6 f' p! ` LimitL DW 0 / E3 J( P7 `" f: {, ] o7 M, v5 c
BaseL DW 0 & {' s4 R; w4 t& {1 y \
BaseM DB 0
& p5 B* s; }" n% X$ T e7 W Attributes DB 0
; c1 E' O) T! M* T$ k" d% p LimitH DB 0
- r$ h; F9 E6 E BaseH DB 0
5 ^5 t1 G( g4 P, TDESC ENDS! i: N! X9 L- Q! m& F
" O( i1 l- j2 m. k I" RPDesc STRUC
# U% D/ j5 v" Q9 { Limit DW 0
$ \: J, x5 R' u" J Base DD 0 2 _+ T' P1 i2 D V( [. O
PDesc ENDS
3 R% w3 _3 u$ b+ s4 I/ s9 O, C8 g- a
GDT_def Label Fword4 a7 Z- V' W% A9 ?+ a- B9 s# q
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>) Y% \: @. Z, }& p' n# }
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>3 P5 ^6 M+ W& L5 h
/ r9 k8 P( B3 P0 z6 X
GDT_Addr PDesc <$-GDT_def-1, >) l* j; ^6 P; [) M* B' m0 B
cmd DD 255(0)
2 I, c6 h. _/ s8 Z* C
3 }4 ~: J I; ~* V.code0 t6 @9 v6 [0 I* B) e$ \' r
main proc# U. o4 `7 A5 g- p. N) o
call Set4gb
7 m0 u+ I: Z3 ]) f" b7 P# b- y, E: B$ _+ v; ^
mov esi, 20000100h
$ [2 m: E+ D. S mov dword ptr fs:[esi], 055aa55aah0 [; K% e% F8 O8 f% \! m
% w; j; N2 m7 @ .exit7 g+ z8 L% G" E) y9 u7 _: Q
main endp 1 x/ |: p, Y2 R" Q( X" e0 L; l! m
% `, R* @& p( R5 M' p& n% ZSet4gb PROC NEAR1 e+ f1 L! G2 O% k2 J- j
in al, 92h. R4 S: N9 R4 c3 p3 x3 G
or al, 002
. x4 n" e* K: e- D$ o out 092h, al
9 N" g7 }! F) @' ^/ P& F, y out 0edh, al2 n4 c# W# q* e/ T$ x! f
. o' d g' y/ w, Z" o
cli
4 [4 A s8 G/ I$ @; a* p! k5 v+ T. x
mov eax, ds3 U3 [/ Y) m& X. x
shl eax, 4
2 s+ Z Z! l1 E0 o9 k- R xor ebx, ebx
* t2 a' l4 O2 J! w mov bx, offset GDT_def
3 f* u- _2 X+ k& _" ]$ t8 h add eax, ebx
8 F+ _4 N7 g3 R2 A; v mov dword ptr GDT_Addr.Base, eax
5 a/ [3 f* E) j1 ]6 T2 ~2 X. O lgdt fword ptr GDT_Addr
: y! h% c+ k, w) R4 R* ]1 Z
- n5 ?) Q1 L$ Z( Q0 R4 N mov bx, 89 ]; W* l9 }, E8 j/ C
mov eax, cr0
% Z0 a- V+ u: v3 m or al, 1! a J8 h9 Q' I' V% L
mov cr0, eax& M/ Y @. ^# C
0 x, h+ C" u6 K. V( x6 Q
jmp pMod" m) X: M! U8 p4 d* t
pMod:6 p t2 v# b. @! b$ f
) Y5 {+ W$ D4 f, w/ q) F! _ mov fs, bx
3 @. g5 s2 V; n2 o% g mov gs, bx2 a7 R# W0 E% s# t1 b& A0 S
and al, 0FEh
) z2 G" c- o9 g mov cr0, eax; R v ^8 J# g3 h
4 l5 ]! T* r- W: ? jmp rMod
% a% }# a1 K/ a" y7 |/ k; _ rMod:8 j' k( W9 p# h6 S/ I
1 Q/ L. X- a B+ r5 {$ p( L
mov ax, 0
- W `5 x& Z8 o d mov fs, ax
9 F2 D' A6 W* B: `* V& T* s mov gs, ax
l+ V# ?/ j) k9 \) g* O
8 b n: P# v: p
/ h" b( c3 ^! u7 B8 c# F9 w4 i/ F' `$ B' {$ p
sti
! k3 w- V, _! E# G E ret
8 A2 A4 d$ M+ C2 Y: e( bSet4gb ENDP
6 L) `3 v* Y$ \& c( n6 ]
* E% w$ _. w8 r. o* H" f+ W6 L6 Hend main |
|