|
Hi 各位高手好. |$ ]8 Z. D& b1 K
以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。
) ^6 W& D$ u" _4 l& V;---------------------------------------
/ {) B) p& X4 q3 ~/ }- w X
' ` ~& ^0 W r.model small
" I" W9 E: b( Q& z- m! s$ n.586p
4 M' V! O# `% L* S.stack - z) h9 @; A& M- S
% y8 f8 i6 r9 H. v.data+ J. e- \7 |# V _% I) k
2 F7 d$ [9 V: s
DESC STRUC7 s/ I/ @8 I; N# o! Q$ P6 S4 F. H
LimitL DW 0 3 T n% b9 s( I3 A& n% S; e, A
BaseL DW 0
% R/ ^ G! T7 p0 V) u6 P BaseM DB 0
- w& C* v' U* C# n' W1 l Attributes DB 0
' O7 b4 x; m* J0 g$ Z LimitH DB 0
7 T) @' o' B' j! t! U BaseH DB 0 3 P" V4 t7 \- S& x# p
DESC ENDS8 \) _, S% `3 M% [
6 @, o8 O1 i1 X& J) U; ^; nPDesc STRUC
- u0 l S% O* e% F D o# i Limit DW 0 1 A' V3 Y) ]6 P: n: j" _! F( H
Base DD 0 $ ^& b$ R" J* R' o% H' n
PDesc ENDS
4 l2 u4 T, m& ~+ |' U9 R' J) p" n
7 Q$ o: P7 a; PGDT_def Label Fword
3 M$ G3 I; T; w9 w6 eNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>% N* Y5 Q0 K% v/ [; |; r
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
; T9 i2 \0 Q! g% ^9 P) c
$ X1 B/ H% k" ?: h( X) kGDT_Addr PDesc <$-GDT_def-1, >
) s4 A. C2 _, W4 y8 C* Q/ n, Ccmd DD 255(0): o% Q4 i+ ?' m" {% z# O
2 j$ C+ p- j* V6 h! ~! m.code
5 l* R; F& J4 @, wmain proc3 S* m* P1 F/ z/ P/ N8 Z
call Set4gb
) K E& r$ U# O7 e4 H& X `. m7 l7 i! `3 v" x, j9 A5 S
mov esi, 20000100h( M _6 ^1 F# n& k
mov dword ptr fs:[esi], 055aa55aah
6 J1 U; `% k7 T
' Y5 \) H0 t. p' M$ l/ A .exit2 R: _- {5 h' j: H
main endp 0 e) @5 ]! f# K6 j
: C: o+ T6 l6 [, d
Set4gb PROC NEAR
: Z/ O5 O/ v: [% ]5 c& F in al, 92h
4 ^5 j* W: p- E/ X5 T or al, 002 I7 { l9 U/ {, m5 d7 X/ r
out 092h, al' y; f0 J! q$ D1 B6 x1 b
out 0edh, al
. f2 ]7 {" m% w3 M F% n Q
; Q5 i+ R; w6 }, Z9 U& Q S2 { cli
( ?( L, ^5 z8 h: H1 O2 C
. }' E4 Y i8 Z' k# v, [ mov eax, ds
6 n, j* e* Z* V* A [& c. b shl eax, 49 }. o, g# a. v4 T7 y/ _ g
xor ebx, ebx
& r, y; c& Q, f2 ~% r. l! c) p( T9 n2 y mov bx, offset GDT_def
) ?* M& Y" S. D/ H add eax, ebx
; Q; P0 L" I1 C' D# K! [4 F: i mov dword ptr GDT_Addr.Base, eax
9 A& G/ C X6 u) |7 r( [- v lgdt fword ptr GDT_Addr, F3 D3 u! y2 k7 a! T/ H. w9 O
: R7 h& |( R& V6 H# b
mov bx, 8, s5 J* c/ {+ Z8 H8 ]
mov eax, cr0
/ g+ w5 ?, M9 b0 w3 k4 @3 B5 d$ G or al, 1
! A: b" }: g+ N9 ] mov cr0, eax$ I) B3 o2 Y& ?2 d* I
% `/ ?9 H8 ~6 j jmp pMod
& k9 P2 e- f4 K+ d- Y6 ^2 I! q& g pMod:
5 Z* \* p' P4 M
8 ~6 W: L- G$ G) g mov fs, bx
& O7 X8 k1 C8 P( J4 G+ F1 H mov gs, bx
V7 G* U: b2 R3 m and al, 0FEh
. q4 n2 d: c' N5 K mov cr0, eax
3 S& `+ ? ^; w3 w4 t
/ y2 j2 z3 x0 _3 T# K T+ s: U/ t jmp rMod
! D& o0 W+ b* K0 i! X rMod:
3 @/ ^; B7 t: E& v b' D4 W6 q+ f, B+ ?- t
mov ax, 0* R8 K4 H! s) g9 s
mov fs, ax! N9 j+ Y9 k: X V4 K
mov gs, ax
3 O0 P# H4 o! s$ t" p7 K 4 m, s6 ?. V5 h8 _: Y6 `$ m, i
. W# m/ k) Q5 t: [: V+ ~
/ u' [. O1 a, V' q" b/ a* \ sti$ _8 J! J8 E$ V# h
ret
. c" Y' _! D# j& R) `6 S1 jSet4gb ENDP
7 d, O& ?, X0 V! n5 p4 a
- k$ T0 c [$ i8 ~% c: cend main |
|