|
|
Hi 各位高手好; t/ Q! m6 w& O; g- V6 @
以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。: u) A, ?+ x+ b: U5 U/ [0 ^ m
;---------------------------------------+ u8 M3 ?9 O& w
5 Q( s6 N9 }8 e6 n) V. H
.model small5 `; a5 N8 [ \" Y; _2 ?0 C; S8 C4 k
.586p. q& Q$ D; E3 Z: S5 m. c
.stack 1 J& r7 g5 w; B$ g
" F7 U ]$ S* F' _, Z
.data
6 u% B, u" U3 W1 J2 C& E5 d5 J- G0 w# k8 a" J/ ^
DESC STRUC
* ^/ v- Y$ h5 q5 q% I LimitL DW 0
4 J8 a, w, Q7 ^5 ~, a" e BaseL DW 0 ( e; h, ]. _/ \0 H6 j6 ^- |
BaseM DB 0
0 x; ?" e$ k- E2 G# g Attributes DB 0
6 I/ n6 R U& H; X LimitH DB 0 8 x' x& D5 R4 u- v+ P3 b
BaseH DB 0
+ Q% ~9 l( u* Z& ZDESC ENDS2 a, F1 ^0 a% g1 j& _
f) y( ]' R9 Y2 ~8 I
PDesc STRUC( ?! J, |: i g: E/ c3 g/ X7 M
Limit DW 0 5 @! X2 v9 q! w5 q4 _2 q
Base DD 0
}2 K4 b7 s% I6 J* r0 I7 ~PDesc ENDS" y# [, \0 ?( d+ l8 M% s4 s; i
( [7 U( A" x/ t. VGDT_def Label Fword
% X/ ] R# o, s0 l# U) L3 hNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>: W' [* {' W$ V6 j0 Z" R, f
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>: y% R4 i7 z& V: Q$ T6 `) k0 u
: v. w4 [: a" }9 B$ r5 mGDT_Addr PDesc <$-GDT_def-1, >( i$ G5 u" V' u: r8 Q$ c
cmd DD 255(0)9 O8 a' B* ^6 a% w. ~3 d. \
/ u; M" W; y h1 P6 b2 z
.code7 t2 J' u* h, |+ I" }1 A0 p
main proc
& I3 m0 Q2 Y. a. S7 b; \) I call Set4gb
x# Q4 V4 o0 }. h5 C5 ~+ _1 @
, _5 {0 _6 Q8 k2 r) N; c! f. ^# E3 ] mov esi, 20000100h! x3 T2 Y0 e! d2 e) ~7 x
mov dword ptr fs:[esi], 055aa55aah
* a! ?, T6 L! W9 B( A) w
3 v' O/ p4 _$ b; H: B3 B .exit/ ~& M+ _/ q( L5 G
main endp
5 Z/ A: K7 _& Z; e. Q h4 l% V% e+ B5 B+ ]3 s% K! j
Set4gb PROC NEAR
5 p6 Y+ U/ S h2 x' z X1 _! }% y in al, 92h
$ Q' b. V9 Z4 _+ o: f, y1 E6 H or al, 002
( q+ w/ Y7 |* }7 e) r* t$ l6 d out 092h, al# u ]! c; v* d/ L0 M; P- o
out 0edh, al4 @0 P _ [- x. j% p
( ]. u) X' p5 e; J- @
cli- h9 Q+ y9 g; v1 V: V) x
, r# p% @0 H$ I: d6 s/ r
mov eax, ds7 J5 s- u2 Z* k) m+ t" Q
shl eax, 4+ r* Z% V# `( U8 Z7 q) O% ^* u5 W+ n
xor ebx, ebx# R. k/ }5 v j P. Z z
mov bx, offset GDT_def
6 `( n/ b- L. j3 y6 i/ H2 c add eax, ebx! J* p" q% B3 U9 g0 H; f6 b
mov dword ptr GDT_Addr.Base, eax
. P* z: L/ f& ^( v! l# Z* `& \% c. ~ lgdt fword ptr GDT_Addr
! L, h! M" f( A, H' w9 v) R, W9 z3 s1 |
mov bx, 8
+ H6 u. V G: G8 H mov eax, cr0
: R& n6 U8 |+ I7 R% W' i5 ? or al, 12 l5 K# w2 L2 v V; @
mov cr0, eax" Y$ A8 f" r8 Q, N) h. a
* P# O s* @5 W: f# ^ jmp pMod& `0 R( H) d. Q9 I* x6 z( P
pMod:6 l* M: U9 q1 o* U3 h! U6 w
, H! H4 U0 a! a2 ~ mov fs, bx) p, A l8 D0 [( v* \& o! [ K7 C
mov gs, bx
' f& b- \ C; v' V* ]; J5 S and al, 0FEh3 ]: \- x) a I" p4 W n
mov cr0, eax
! X3 }% E B2 P# o ) {9 E8 a+ r( }; g
jmp rMod
0 M, q9 a9 q; u5 j1 I rMod:( y: e% w( U2 X7 }% Y5 J7 D
% y% e# j9 ^9 x0 L. I: q5 S
mov ax, 0
+ Q$ I6 f: d- |' K5 k4 f mov fs, ax
/ O9 @2 W6 R( [1 z( O mov gs, ax4 ^( \" R0 W" q
* s5 f6 V) P3 Z5 V3 k+ z9 U: u 1 W, v! ]' c& s6 Q( V
6 p; q% X" C' h6 T1 d8 { sti
, z1 M9 b. P" ?9 t% M! O! A ret
- q' q6 ?: V0 S+ ~2 |. w9 SSet4gb ENDP( C: Q, M9 C; U1 \9 K r2 d
$ v( V) {& P$ p# n/ ]
end main |
|