|
|
Hi 各位高手好
4 z8 D, p) `& ?2 U0 T) C2 x9 {以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。& L) q4 b% E4 q3 v* E
;---------------------------------------0 e) \% |0 B" u) r
( M2 z5 A3 F7 g: P$ E8 r
.model small4 Q( J% I) L5 ~8 P9 j) m; }' s
.586p! I/ [( r7 d( w0 ]* D0 R8 n
.stack
% t* w+ M( ?3 I' O; o. B9 S9 T, x . H& V* J$ ?( k9 [- `
.data
) l8 f- H5 Y7 V
) X3 u6 | j9 Z$ e3 l, z' E6 o1 [DESC STRUC
+ f- v$ b4 } A LimitL DW 0 ) J5 p2 P% n+ G7 j4 Y) @
BaseL DW 0 . Q- }0 z" z+ y' F+ b; S y
BaseM DB 0
" }( A! k# `: _2 N! Z Attributes DB 0 3 e; D" j3 X- y6 C+ ]4 r
LimitH DB 0
# q! W: A" Q- D7 q* r BaseH DB 0 ( v" N/ K8 ^0 u$ Q/ }2 `
DESC ENDS
# y s7 a* Z* n4 R8 b- \; o- w
' b6 i8 Z7 D p$ L iPDesc STRUC3 B4 Z- H( ~" B) A
Limit DW 0 ' {) ]' c3 E% P- d: }6 o6 z# u0 k
Base DD 0
- P) f+ E Y* `1 r XPDesc ENDS
4 q6 {! `. j$ J5 k9 T5 @4 i
) R6 S: `+ X c% `1 h# @GDT_def Label Fword$ j% @" U; @5 u1 R
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
5 c' B f& p- f/ a0 T" PData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
$ ~2 f' s- ^: q( n: V+ k+ D4 }* P& d% R9 n
GDT_Addr PDesc <$-GDT_def-1, >
2 J* D" C1 N: t5 N# Q( e: T5 d0 jcmd DD 255(0)
9 E( |( S" J0 t* C7 G6 x& v" t j1 ]# n5 o
.code
* c# P4 j8 X/ @( T% |; u0 omain proc
1 x# P, k8 T" v& I call Set4gb( I$ h m# L6 O- ]/ f. v
1 N% B% v; {3 N- r O8 I% P
mov esi, 20000100h# t8 v& F$ p* |1 n& J3 s( n$ g! V
mov dword ptr fs:[esi], 055aa55aah
6 \2 A; m7 p( M5 j# N" w & `( F3 V( a) u
.exit" t F: |; P6 _2 ?+ T' u0 y
main endp
( z, T. v/ A( I M+ x7 b1 X% \: V
2 u7 z: a' m+ \$ {4 z; V8 ?4 S5 JSet4gb PROC NEAR
( `& R" T+ I3 D5 g. o2 t. A T in al, 92h2 Z* K4 X$ t* z( r8 ^- U
or al, 002+ U- g, B( Q" U- B" z/ M& B. ~
out 092h, al
4 {( l/ v+ O0 k" q V out 0edh, al$ p c: I1 ]- F3 L
7 C% {7 b: Z7 Y5 ~( F9 r. m
cli
8 N: j- C6 G- ]: G" y
6 @! L) b& M2 E7 q0 m8 X$ P# { mov eax, ds
/ Q1 A, E$ l9 ^' G- u shl eax, 4
! u; D% t! q& @" ` ~/ n" Q xor ebx, ebx
& i" Z* o- j3 _, T5 Y$ t% [- H9 O" b mov bx, offset GDT_def
: S9 t# n! k# S& X* r add eax, ebx
R( v% Q& {: V2 F. | mov dword ptr GDT_Addr.Base, eax
' o1 }) Y' B; h4 e# ` lgdt fword ptr GDT_Addr6 W3 o! ~2 p0 o' l g" L
% o* P* P2 K# w( ]* ?! e
mov bx, 8
) j) E& G j* J. i0 \3 @ mov eax, cr0
& {6 P* S& j8 j$ V, H8 G* F or al, 14 w- ^: {4 c8 o5 h- D4 `
mov cr0, eax2 C. P$ ^. x) @+ j
4 H" O) x. ^4 f x* g% \4 E: E jmp pMod5 ?/ p8 [) n$ ]5 K4 M
pMod:* g1 B. i# _& A. v
6 L1 G1 V" {8 `/ ]4 [
mov fs, bx7 ?, q- i4 Q; v) _( N( ]
mov gs, bx
8 L( N( [' G: o4 j$ W' F$ t and al, 0FEh
4 ?% D% g2 ~* G& [- G mov cr0, eax, I1 H5 P* A" [2 T5 P! X
9 Y' r1 @7 V" H! f, W' s
jmp rMod
) _7 Y$ g5 a: }$ H- V- a rMod:
8 t9 m3 t! z" e. _$ w
4 F# T7 k8 g( M, t5 s mov ax, 0
; Y& i% V$ \( i0 ~ mov fs, ax
2 d% J9 _8 l. y- A1 n. M mov gs, ax- Z$ p! E* G" N3 z/ ^
" @3 d) ^) A0 z8 O' }1 | x
3 c: b8 ?7 z/ C) N% q/ m
& F/ l8 b0 k2 S( `0 v sti
% c( K$ h, d! p( G ret1 g5 {% i' }3 A; a3 a) [& K
Set4gb ENDP
! l7 w2 w2 q4 s: b
5 U1 F& a- Y/ `* J6 }- r3 L' C: Dend main |
|