|
|
Hi 各位高手好0 [$ B5 k( e3 Z6 B, m* V
以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。% {. E5 P: h p. a+ l; n) c% r
;---------------------------------------2 C3 f3 S2 F% l% J
( E4 o1 Y A2 { e' J! _3 |
.model small
6 T4 O1 o/ d0 m. S* H. u5 ^# Q.586p# e, b |' ~" H$ C% f$ v* ]& o
.stack
2 ?. z' O* e- c8 t 3 L7 D) U+ J. d7 Z) u
.data4 q5 I6 q% l& {! [3 C% {
, [6 P Z& n+ i2 e3 `6 PDESC STRUC
8 b4 I; p3 p2 U7 J LimitL DW 0 ' L3 h; R6 ~0 U; p9 l
BaseL DW 0
( [$ ~/ z- A7 n9 S; U# v6 X BaseM DB 0 4 F4 D' }5 B+ `& T$ W
Attributes DB 0
4 A( Q! l* ^2 D; t* _ LimitH DB 0 : o! _$ S7 B$ l# X6 J
BaseH DB 0 9 e, T' z! n9 F
DESC ENDS& N; E5 F3 D9 m7 b. F" N9 M
! B# U+ T7 ]- E& Q. ^: \PDesc STRUC
% u4 e- w* C. r0 R3 N6 p Limit DW 0
% w. @& r/ {+ g% n8 v3 q Base DD 0 % l8 s, O, g `. f- F
PDesc ENDS
) N. M' q6 M$ [ a7 b7 X4 d1 M( { Q" l
GDT_def Label Fword* H; Y9 t! c$ W; p+ m3 p
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>, U- n4 ]5 n: a$ ~% V
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
+ Y% W# B. H) l1 G
- L8 [+ R+ y7 u5 N( }! A* [0 D; a( pGDT_Addr PDesc <$-GDT_def-1, >
+ m. [' M' b) H, _1 Rcmd DD 255(0)
1 X8 `$ i, Q B5 E8 C6 X! F8 e! k, A
.code6 u# v3 p. v( m r6 Z7 |
main proc$ u5 _1 u# @- H6 h$ l
call Set4gb
. L4 W* P) ~" h7 C
% u( X( b' {( C/ P- A8 I" y9 [, u mov esi, 20000100h! u0 i! k# l7 m/ s) u
mov dword ptr fs:[esi], 055aa55aah
( U2 U4 b1 Q* C0 }' N6 J 5 ^0 g3 o( ~( o: U& x% F
.exit1 m. X9 }- l' Y! h( h8 P2 }& ], ?
main endp
$ W% O q, t7 [3 [5 j- u0 V% S, q, @5 A7 k
Set4gb PROC NEAR. f; M& d# t4 I! f$ i1 Y ?9 R
in al, 92h2 z' g& V/ d6 r, {
or al, 002' p* F+ h4 x5 N5 Q
out 092h, al6 @% p# {" K. N6 M1 q* O
out 0edh, al) v* x' S) A: y% i- R
/ F/ d3 P8 G! E' `
cli; a8 V& q& b3 v
/ S: r1 V0 g& N2 b6 t( M mov eax, ds
+ a q; \( D( c, C) | P" N6 D shl eax, 4+ r% v$ A v3 @6 W, X
xor ebx, ebx4 s1 y: q: |* Q4 [5 \ Y; {+ \8 E
mov bx, offset GDT_def
1 Y0 ^: e, v1 I3 u' P7 p& Q add eax, ebx1 j4 ^$ e R6 f8 q& R1 \
mov dword ptr GDT_Addr.Base, eax
$ j2 D0 W, u5 h lgdt fword ptr GDT_Addr
- i( Z3 e$ x& x: _; K/ O3 i
3 w3 ?6 S5 e8 ` mov bx, 8' {" v: }; Q4 v# l+ [
mov eax, cr0, k' r% X y+ ?& P- u6 ?* o1 d
or al, 10 C6 x+ S6 f# \9 \" M
mov cr0, eax5 A3 \! c; o: g4 P. j6 n
; K* b, H3 Q' C& F
jmp pMod- [! \" H0 v& z! D4 z; A- B% v
pMod:& _4 b" p. W! K
6 P7 @7 s6 u2 A* [' g3 ?
mov fs, bx
5 }8 z0 U% y. m$ K9 `- L- o/ \, o! H mov gs, bx
' S0 T, G; N( J and al, 0FEh
0 {4 P- K/ ^4 o: s: {$ }- ^) D mov cr0, eax& t3 h3 ?4 F q( P2 L ?4 I
! i9 x( X# i* }& R% Z! q jmp rMod
8 k1 G7 @" ^' L# M- \( B/ M rMod:8 Q2 d6 F/ X# d& P. o# Z% S
" l# l4 c# H6 N) }. j" Y mov ax, 0
* U( s6 D3 `; @ mov fs, ax
E" l# j5 q7 N2 f$ G8 f mov gs, ax1 ~2 \7 p5 t" Y' |, N$ o M
, b- e/ x5 Q1 k# k
" ?) ^. s1 b4 h% ]( V+ h* o4 {8 {" |4 e* m& Z& k
sti' E! t, n. ?: O1 b8 l8 W
ret, B" [/ W, x9 m6 B
Set4gb ENDP
( f; f3 }4 [7 E
+ S) q W$ H3 j1 r% @% a7 c* |end main |
|