|
|
Hi 各位高手好/ ~* C0 @: \) u
以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。
: _% ^/ L4 g" i* s# w9 [8 t;---------------------------------------
. \. Z) j: n- B7 J4 s& T, ?) ^2 a9 V! h' x5 E, A$ w: [
.model small
- ?0 y+ D* L- t& J.586p
. Y0 R" ~+ q$ l6 W.stack 5 ?4 a* \$ @% E
7 O( G6 e8 `* {; P1 e( u, D- y: K.data
$ C6 C( R: u: v* `
9 k, V; i5 ~: s* a% HDESC STRUC+ ^' o- `+ }5 d8 f! R2 A9 q
LimitL DW 0 - p: `( h$ D8 V. D7 o, f
BaseL DW 0
3 L+ h+ ~9 O' G' F5 B BaseM DB 0 2 r4 z, [& `- @# d8 |
Attributes DB 0
+ }+ S& B7 J7 ]2 j* c) L LimitH DB 0 3 v! U$ Y- s3 o. Q5 s5 a
BaseH DB 0
4 D1 B' `1 y9 p! p& QDESC ENDS& p/ z! I6 w4 x8 |
1 o/ G: m* x& n& k1 l3 hPDesc STRUC
. h/ F5 t# Z l# ^. S) \ Limit DW 0 , x$ ?! \$ G! F/ @
Base DD 0
0 U* d) h7 v( z/ ], x2 cPDesc ENDS
/ m; Z0 |" J9 M7 v
% y8 P; j) p" G6 Z" ~% r( {GDT_def Label Fword+ I# d4 @; j/ f! M! A
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
2 {8 S, U& P0 gData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
" ^, h; h9 B& M0 `1 H9 n" x1 q1 v9 p. e) q" N) D; ?5 n
GDT_Addr PDesc <$-GDT_def-1, >4 u; w- ?* [- Q# L3 N
cmd DD 255(0)
- G# E3 n3 m% f( f) S5 n
! ~4 S2 e8 A3 E: f8 |+ y3 g.code) t9 _# O' t5 B( W# x. d
main proc$ y. P5 U4 O9 y8 \9 V, Y, x( Z
call Set4gb" J8 ^8 w# v, T- I+ t& a. ]( M
5 w8 w1 g0 L8 }/ [1 q9 a7 P
mov esi, 20000100h/ q \, b. M( X0 j& y4 P
mov dword ptr fs:[esi], 055aa55aah
* l y1 v7 ^* g# _. U 3 d6 E+ z0 _6 q3 Q9 }/ _# ?: d4 X8 [
.exit# O0 ^& c+ r- l9 |) G! m
main endp
- d8 }- V! `# @' ?! U2 R* u" P6 A; s4 \" m: Z
Set4gb PROC NEAR
& B) ?& N$ H$ r c in al, 92h
9 A9 D$ }+ }6 V; ?! Q or al, 002- Q, S& _: F" p8 I) e% X" S. v
out 092h, al
! n& S1 }+ r5 v0 f" z6 k out 0edh, al
0 N$ B" s1 {* r0 e& [5 ]) T r; Y3 i5 M. } k
cli* u% E6 |5 V0 A- n9 ?
1 j: _8 e9 `# T
mov eax, ds$ D: B( t* O4 w4 x. t* ]
shl eax, 4; T* _" A) }) N
xor ebx, ebx
- d o5 a% Y% Z/ ] mov bx, offset GDT_def$ z; H8 v) A( t0 J; e% y
add eax, ebx( R$ _0 H6 z4 k" H8 k( P+ F
mov dword ptr GDT_Addr.Base, eax8 P3 a. L. B# S: k. ]
lgdt fword ptr GDT_Addr% \" l- G2 o5 V4 G
; p6 n0 C2 G( @0 ~* J ]0 O
mov bx, 8; [9 A# \3 b: g9 X* @+ s$ M
mov eax, cr0) w" }: z- J/ {. R9 z
or al, 1
% U" l+ M5 C( D+ |8 g, k mov cr0, eax( ~# z1 {4 T1 Y8 j# R. S9 y
" E: I2 ?, h% K jmp pMod L2 Y( N4 e/ x$ \4 o
pMod:( |* d8 R; V. V# L6 f6 X% S' m7 N
* ]/ T1 h- V1 r$ L5 J mov fs, bx
- w! z1 |* ~% y. Z' l6 R6 S% I mov gs, bx1 x4 q. ~" f6 l$ K% T9 k4 w, t
and al, 0FEh
# c& H/ S0 z& E) A" ]- i6 H mov cr0, eax
: d, o% i0 W$ m# D2 _. Z0 h + u. I& ~6 [2 x% @
jmp rMod+ r- a+ ~9 a4 }# X
rMod:
- d2 W% }2 [8 h4 N
# y- F+ r) l$ X( p* O mov ax, 0
, A, R+ k9 P: ~) x8 ]6 @ mov fs, ax
2 `7 q' ~, a# ]; _+ N mov gs, ax
4 n5 T% c [. I$ a6 Y6 J
! g2 U3 e& q' \! j' @/ F$ B
% c" ]% F4 {, A) d% E% t2 E8 q6 o- M! X9 T! ?2 ~( [
sti, F& O* d5 f# l U6 m$ V- d0 e
ret
( @$ c7 E* g& H# A7 U6 pSet4gb ENDP: n0 [0 s5 G# s) |
0 u8 D/ X7 h6 y/ l; Zend main |
|