|
Hi 各位高手好
1 x2 O8 A9 E9 b以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。( d7 [9 g/ x- M0 n
;---------------------------------------
$ g& M& s7 E/ L9 a- ~4 @4 ?" R* X" ]7 [
.model small9 k0 \# C3 c- F6 s* A' [
.586p3 e i+ Q+ {. j* F2 O" R. z; P# U2 A
.stack # m" I, e1 V$ q: Y" z. X7 L
4 |& ^4 R& ^( l5 X
.data: y% W% w* x6 M. O" s
6 e2 b1 N( d3 W q+ ~3 S4 w: jDESC STRUC' H2 D% l* O: R7 x. ^; U9 y
LimitL DW 0
+ Q! h6 \( f1 T7 \ BaseL DW 0 ; M* J- @# [; k, c
BaseM DB 0 4 u$ t& J O& B9 g+ \) y* x9 l
Attributes DB 0
- z; x! k3 L1 i C" p" T* w LimitH DB 0
I6 Q+ ` n. k$ E BaseH DB 0
: b# L/ c' F( x$ s; u$ T/ N% ZDESC ENDS+ V- g' N( _! }
; L+ C. R3 z& y, i: ~. {PDesc STRUC
" l* `0 f5 j# L: ]: m1 i7 ? Limit DW 0 2 y; I3 U% T* m. w& F% X! B
Base DD 0
4 N; B) C; h. ]4 b3 uPDesc ENDS
. A$ v K8 l# h7 H6 U; V3 U" r' n# T0 Z0 H
, Q8 T8 y! J1 lGDT_def Label Fword5 C6 x: v) f" d/ `
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
: \( K- d; E5 `8 ]- SData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>( e3 H" h" @% @% m6 g8 v
# L. f5 `: l% N) y( x3 F6 ^9 E3 E* nGDT_Addr PDesc <$-GDT_def-1, >/ d# `& v. L+ L C; j5 ]
cmd DD 255(0)
! A. h) y7 N' x2 ? ^* H/ J: e9 j8 H( @& W5 u5 d
.code
& ?0 g0 _( f; H' \: imain proc
5 H m0 t) u% m( } call Set4gb
2 J) Q! k0 U: G% U6 G6 Y
; Q( U/ T% T4 H# G3 y2 F+ { p: _( J mov esi, 20000100h- I( h" U5 [) k" ?% f0 e+ L9 S% |8 f! U4 |
mov dword ptr fs:[esi], 055aa55aah
2 v$ c9 i1 n: C+ ?
$ t$ V/ k# W) y& e2 h4 [* R .exit5 Z1 B% c$ }3 `! t( n1 N
main endp / s% X4 z' s- s. E* u
, O" Y2 C! P; e& X& o2 O/ x
Set4gb PROC NEAR7 ^1 R& g" K4 A. o7 U* r: h
in al, 92h
( E6 `0 A6 L' [3 k or al, 002
+ e$ o$ k/ k2 h7 W3 O. p3 I3 ` out 092h, al
4 E4 v0 N; [7 Z( Q; V0 o6 T+ N, G out 0edh, al3 b/ f! B( Z# F5 K: \! u1 T' w
/ G* M; I4 ~0 N cli& J7 }! N) M/ r6 o) w2 c
2 K, U3 V- Y W" Q* ` mov eax, ds
Z. v' s0 T/ j" a8 p) Z% K& M shl eax, 4
* b: Q J, Y2 i" | xor ebx, ebx
" e8 b* ?( s% T6 H" d' M: Y mov bx, offset GDT_def
7 Y i' P0 t/ N, p: p' o# \ add eax, ebx6 c9 F) D* E# B+ Y& l) ^, M/ t E1 q2 Y
mov dword ptr GDT_Addr.Base, eax
' d# Z& K. e0 n* I4 [ lgdt fword ptr GDT_Addr
0 O X. W3 r3 C; _9 e. d7 m: n' Y% I6 y5 v8 X
mov bx, 8
2 ^; K; v: N. Z8 C mov eax, cr0
4 `0 p$ Q/ Y% H* u or al, 1
. s( ]6 ]9 K( P6 | mov cr0, eax) @. e4 f3 c7 P
; f- B" N1 a+ }! u' o2 @ jmp pMod/ I. u5 `/ Y) z$ h3 n
pMod:, P4 W+ _- \' X! g: q* F- P
Q/ _7 W9 b# B3 t2 ]% ]
mov fs, bx! L" g! k1 C4 x
mov gs, bx5 @" f _; Q5 O
and al, 0FEh9 W( l c1 ^! ]1 z/ s3 J, l* T
mov cr0, eax
2 \' }* A: A; S & F0 U7 J' m7 O. ?
jmp rMod! o# s& z$ s1 G6 x1 h9 P. i# T
rMod:
5 G$ t V3 N6 [0 p R" ]
+ g; Q+ t( C% s8 _ mov ax, 0
: f, H) h0 q* u, `) E mov fs, ax* v! \9 v6 {8 N& a- [9 M
mov gs, ax2 [& Y0 T& J& {3 M0 h1 B6 D3 d* A
2 x9 G& i- `( }" R + l/ R: h2 @- H
" o2 i5 a' s+ U sti5 Q! J P9 l5 I" S
ret
4 g7 F, A: _1 M! k% pSet4gb ENDP
) m. q2 Q7 ~# N( t( ]6 O
! K# W/ y E Z3 qend main |
|