|
|
Hi 各位高手好
- Q8 t0 Y1 v3 J5 n5 f以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。
5 x0 H+ }" r3 t; d2 h7 X( G;---------------------------------------) w8 h8 q- O2 _% v- V% z0 I
) d; J! m, f; t# A5 O
.model small
4 j$ D( q0 P" J; n2 J' M# L.586p
8 y( d# ]# S" y.stack
9 v% q, m' [# g" V" S. _9 k) x
0 o6 Y$ r" ?8 C3 D0 ^, h7 i2 g.data
. q4 I4 m3 Z( N; C* f' M L5 m2 }* e9 d" |+ B) D
DESC STRUC
, N. ~+ L) y/ X Z- ?$ A7 C' H2 s LimitL DW 0 & N) K3 F$ H9 v1 O+ l* h7 o
BaseL DW 0
1 T4 Y, n& ~; w* X/ ~ BaseM DB 0 5 F) T$ C# g/ [" x* \2 \3 L
Attributes DB 0 2 Z4 v% v. u/ Q, N' Y
LimitH DB 0
! z$ B: n/ p& M8 v& g BaseH DB 0
! V* n+ R2 j+ S- k2 A t' {) `DESC ENDS0 J8 Y( O9 z2 t! S; \1 a
% K% }! N& d7 G, X; O: O
PDesc STRUC+ Q! x+ V$ q3 w
Limit DW 0
( Y C3 `/ D& E' @. o. ] N Base DD 0
2 b% l0 Z i4 T8 }7 @PDesc ENDS
" b! v: c$ R6 b. N2 H4 y0 k
5 g% d6 U* W8 jGDT_def Label Fword
8 i& w; p( u5 Q/ @$ qNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>& `# C7 X5 M- M$ w( v+ r9 k8 X% [! u
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>5 z- r- ?3 q) I, i
/ ~. t. S" Q% o o4 p' j
GDT_Addr PDesc <$-GDT_def-1, >
; x& M+ z( l8 }9 Pcmd DD 255(0)/ J) j* ]3 L$ h
. O4 o4 B2 j( F X! e% _.code! V( G1 g; h. M
main proc
% k1 b- B9 O* e$ | call Set4gb
, b& z5 j7 r$ j; n5 R) u4 M3 q! A* O0 h7 k9 F5 `' k9 l/ X$ l
mov esi, 20000100h) P% f" e) O ^" i+ b
mov dword ptr fs:[esi], 055aa55aah
; B$ I2 @: p* E; } " k( d1 y2 c9 F m& s7 v
.exit z5 e9 ^; V2 N
main endp 6 E5 K- P/ ~& Z7 g
3 ~# t$ ~1 a! }! y- r1 R* f( R, hSet4gb PROC NEAR
( p/ D7 _9 c# o. A/ v in al, 92h
c+ G4 W! M: [2 M( x C" m or al, 002
" r* d8 v; ^/ q# B! u0 O* j0 s4 K out 092h, al$ E! D$ N* ?9 c7 t6 j
out 0edh, al
5 M3 U7 F( L+ p6 L( d
4 p- r2 m9 G1 g6 Q7 Y/ p8 y cli
0 ?, r8 l- J) _( g) p& O* W8 C' n( I7 ^# e; }2 L# [. y5 a
mov eax, ds( V x* i7 ]$ l; Q# r) \. V
shl eax, 4. S% h+ Y4 V, w z; D2 P
xor ebx, ebx
* ~1 r# k0 G/ t' k' [# V mov bx, offset GDT_def5 v: B- |, c# D G: t) y
add eax, ebx- Q: |* \8 `( w, `6 X' t2 O3 V
mov dword ptr GDT_Addr.Base, eax
+ q, z4 V" l4 G: S9 L* t7 n" S lgdt fword ptr GDT_Addr0 R& }8 G* N6 r) J+ F% p1 G! f& o
3 C/ C! K/ l6 ] D
mov bx, 8& }5 l$ a# f' Y2 a2 }# ~" o) w) S; G
mov eax, cr0
$ i0 a/ \. Q8 q7 \! F* m or al, 1
# p& o% ~# ~# m/ w5 C; X mov cr0, eax! l7 S1 n+ T" `/ E$ c) r: J! S
) U! B2 k. P) o+ R6 C, o' X jmp pMod
, n8 z2 G( k5 M; K' S% ~. [ pMod:
) K7 k G" f7 G' g' R% N7 D" ~$ j! p+ }+ x% f' v
mov fs, bx
" a) M5 n" [5 D8 P mov gs, bx1 g& q1 F3 C! _. S8 Z4 X5 R9 u) o( p9 C
and al, 0FEh6 C' I: S( Q+ t& ~ x; O
mov cr0, eax' i$ V( f. ~- R8 Q* f- I8 s
. L, r- S5 _5 R+ T Q jmp rMod u) w5 v) t/ y' U- N
rMod:; N7 S' O" t+ g+ A
. W5 Z( j1 H7 Q' j4 H V9 } mov ax, 03 B+ o0 g6 G1 s2 n8 O' D/ M
mov fs, ax
: C3 X/ b# W6 i) y: Q) h mov gs, ax
) {/ d' l7 x4 M! K9 ?% ^9 ~( o
' o" G( b2 I, |* N" S. d
1 ^& @9 y, Q1 U3 w
; G8 s+ Q& e8 e9 L5 g9 |8 N( I sti
. G; b' I- M% T- H3 R& x) M ret
( ?' }: j: k* ^" KSet4gb ENDP
5 c# _2 d" o3 f1 h & O( w6 m7 K# h" W- p Q6 S/ C
end main |
|