|
Hi 各位高手好
& d% t+ H/ ?+ R# O以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。* y( b% R3 j. H3 a3 ]$ J% J+ k* M* r
;---------------------------------------: x& T0 ~( y5 v* E
1 q: Y, p. \6 q* H6 e.model small
, x4 \9 R; O+ e; V9 W# n- ?* Z.586p
9 v& O* m4 {$ x& p) \( \7 U8 h v( T/ F.stack % E" V6 ]$ z: V6 R7 U6 G
( H" D7 j+ O" T.data1 w W; X- |5 v
! C' Y5 v* R2 @3 V# [2 w9 }0 [* vDESC STRUC, n; b% z+ L& L( i2 U& L# ^
LimitL DW 0 7 {+ s1 e9 K+ u( X. B
BaseL DW 0
8 l7 Q8 s) Z% I# n+ l5 F BaseM DB 0
2 O9 S* M3 ]/ ~' S/ K& L9 T: U# b% S Attributes DB 0
/ `& P3 n& e1 f5 L7 i# a LimitH DB 0 0 B3 K: M! I5 m. f5 G0 m
BaseH DB 0 3 w) j# {8 J7 `4 R4 r
DESC ENDS
+ X9 i: m$ m/ D9 M; h7 R; \2 Z. l8 }: @- H7 Y* C, Q3 y0 L7 e
PDesc STRUC
2 ]& s! ]( |! O: M* Y Limit DW 0
; Z$ U r) z& N: |8 o8 }" `5 [ Base DD 0 $ [# p q3 E! Z' K. `0 l
PDesc ENDS
6 x: r% s) i- s, [, ]) Q# V. s) g" z
GDT_def Label Fword% i3 l* w7 W* Q# }
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
; k( E1 z6 G. JData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
) l9 z9 J1 e0 B2 B% i% c" C! v
/ }: W8 g, K# Y, V/ U6 a( VGDT_Addr PDesc <$-GDT_def-1, >
6 R6 U5 G4 X) O# Mcmd DD 255(0)
! b/ t, n# M4 g7 [( m0 w: C6 x1 E9 _$ T( ]0 s
.code
. }& v$ ]5 [* C5 z" l* Q8 I, imain proc3 l" p1 i* s9 t* q! f0 V! K
call Set4gb( H4 Z. Q; i! J
, c' G2 R/ G9 _$ p$ s. @. r9 A
mov esi, 20000100h
2 C. e- \; n) A1 R mov dword ptr fs:[esi], 055aa55aah+ z( B: J3 R) x$ A3 s
$ F/ o0 D" r# L+ J7 q3 c5 R8 G3 K .exit
$ O4 [! `' d: vmain endp ; o- v& z, h- m9 C' k- ^
) N: q E$ r" W/ b! J. rSet4gb PROC NEAR
) \, O4 p8 U( ]% P: ] in al, 92h8 T9 ~0 h& M( w
or al, 002& _8 a1 Q4 H- J
out 092h, al
& I1 |- Y/ \8 x out 0edh, al
/ _7 E- H9 p% G( W9 I" F
3 q" l. r4 d! e1 v7 \2 M cli
9 ?0 y0 e0 p5 k( d/ H0 z. h; [" K0 V S% ~
mov eax, ds
" d$ D) c3 N( r7 M shl eax, 4
) t* p7 ^. T5 {7 E. h4 H0 x xor ebx, ebx
( t3 q5 o! v% B; D- ` mov bx, offset GDT_def
d: o( @5 v3 s$ _8 O! b add eax, ebx' Y9 R0 H1 k5 w4 y( o
mov dword ptr GDT_Addr.Base, eax
, r* O2 w4 m8 [9 L# c lgdt fword ptr GDT_Addr
( n1 }9 P) p. m2 h- d0 v: v; L: Y5 e! o" A
mov bx, 8
/ K8 M9 N1 c! h; e* }% ^5 E B mov eax, cr0: u$ L4 \ z8 L
or al, 1$ F; Q' L7 m! { b+ z
mov cr0, eax5 g& \! {0 m6 T$ d0 K
7 m5 d" c: o( ^, Y+ q6 p
jmp pMod$ `$ l7 y' [4 S) ^
pMod:2 C( b0 E0 x6 w+ N
$ y, ?: ?. R4 @, y mov fs, bx
% W6 @4 a% r+ [' n6 [ mov gs, bx3 M6 E8 r* S6 s2 ?+ _1 [% D- i
and al, 0FEh8 \4 s; _0 v: o2 e& K+ Q
mov cr0, eax
8 X& e: E' l. i, q
6 n4 ?. b# ?, o8 X# e6 C jmp rMod( Y g1 [% Q! h" @8 L
rMod:
, {8 k6 z1 u% ~- }. @9 A3 T4 q5 ~% T5 I/ E& {: z
mov ax, 0) d$ d! y& Y1 A6 S3 e/ M y
mov fs, ax+ O% u! Q1 d& u) Y; b; y2 O
mov gs, ax' f2 S5 v; M8 f' j5 B" u
o0 G, ~9 a {6 ] A. ]: O/ h F
; v& B& B$ k- `! L4 m4 M
) O' K5 c: D) }+ x sti( a# L& I$ b* s/ r
ret
7 G5 l3 J' Q( U8 @) Q, [5 ]Set4gb ENDP
& r/ F4 }- _- q7 x* P" X
0 Q/ Y: @/ {; q; F: i: Zend main |
|