|
|
Hi 各位高手好0 N' C) O5 q- }, \$ g; T C
以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。0 s1 b* P) h9 p4 M& J# D: L
;---------------------------------------
7 Q. {5 R' h2 r+ w, J6 S2 Q: F
: a( Z* O" g6 t.model small
& j8 Q* m* @; e.586p
{6 @! a9 c' N/ x% ]3 p+ V: H.stack : I- H, N, `3 t" p' }$ ], _
7 |7 X( L( T1 v- k6 J3 T: K' f6 q
.data. A+ x3 f4 E/ ] _- z7 B
! q+ g5 \( [5 t2 UDESC STRUC* G. p0 w9 _' e l. P
LimitL DW 0 / S. y) u6 D( L
BaseL DW 0 ' h$ J6 ~; {0 `% L; q- L' e
BaseM DB 0
* H5 {' X7 N" N# b! |7 K U Attributes DB 0
- D- Q% h) W: j* r; C LimitH DB 0
2 a4 G1 v+ w. O& e BaseH DB 0 * y1 A( G2 U& Y# ]$ O7 X
DESC ENDS
2 c! O6 Z; S) N6 Q* |0 U% R) l0 g* p2 \
PDesc STRUC+ d9 v" V& G5 i" G3 ~/ `; |
Limit DW 0 % B7 H2 V( W3 z- ?; E
Base DD 0 - b8 p+ [; E0 }/ k9 w6 p G
PDesc ENDS
+ j: X$ Z& }" j+ b) n1 R# b. H( ^- ~# |. E
GDT_def Label Fword
O A* U- b' a$ YNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
* d' P7 ~+ B+ u+ V: u+ o+ KData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>* E Q- F2 J5 k9 k& V; o7 F
; N, H: b* Z+ j4 a$ }2 k2 ~GDT_Addr PDesc <$-GDT_def-1, >
/ {" j Q4 I# ^; Bcmd DD 255(0)
1 |9 M' z( u1 i) g! c& V
' G* V& m E5 F/ k: }+ m4 ` K.code$ G5 }' S% L+ z& l
main proc
! Y' w3 k- R7 j" g9 W1 w call Set4gb" y/ \& }, `( j" Q# Q
$ b& S, l, G* I
mov esi, 20000100h1 h( E0 m0 |+ e& [2 k
mov dword ptr fs:[esi], 055aa55aah
% Q# g6 q* `' U& A% c: e 4 j' [! ?& p$ x' g! T R; R
.exit. z5 R N4 X! w8 M
main endp
3 U, T5 ?9 ~7 f7 k/ M8 R% h. U% \
$ p4 W" r8 X5 t5 c3 F/ q. c9 q) PSet4gb PROC NEAR
/ x# H* o0 }+ ` z* A3 O4 k in al, 92h ~! R: t/ Z& Y: ~: Q
or al, 002
/ o" ` u5 q6 Q out 092h, al
8 l* t% ~0 Q2 ]6 B out 0edh, al
6 D3 M6 y8 r" M% x @ ~! Z
$ H Z. w+ E* u6 ^" N( a. i2 j! U- Q cli
2 {1 f# T) i( W" {( t8 h7 ~5 _8 {6 j# k& [' \# I# C3 h
mov eax, ds
6 L$ ~7 k2 z; p* @7 v+ s [: Q! `+ g shl eax, 4* S/ J! ?2 l8 R `- h
xor ebx, ebx
7 s `' g- X5 S4 }5 m2 N8 K3 N mov bx, offset GDT_def6 }5 R% l$ a5 @( K
add eax, ebx
. @3 n; E$ K1 @5 _7 X mov dword ptr GDT_Addr.Base, eax* K+ a+ B. @% h
lgdt fword ptr GDT_Addr
+ s) P T( H+ i& q7 k e( t
: P- j: k" i1 i) H& B; w1 q mov bx, 87 {6 ^ c) e+ {2 X9 M
mov eax, cr0. b; U- m+ B- d+ J
or al, 1
1 o+ x! a' i {9 n! s/ K, |; t8 Q mov cr0, eax! Y2 E3 r7 u# Y1 ]" j' G& i" j3 g
+ V8 [% q2 i, ]# i: r1 e
jmp pMod; w! Z/ B- E; [/ b& j
pMod:- {; ~) C- f; p
4 k# P$ Y. a# ~* \/ f. `5 G, Q mov fs, bx
/ m; I) B, a) V: m mov gs, bx
2 a) v) |: p1 H5 p/ X1 w4 n/ O! p and al, 0FEh n1 ^$ x) {. k3 O) @! U- A
mov cr0, eax
) b1 g0 T' m0 [! R7 P+ Z
0 Y* c% o, c9 V! O8 f jmp rMod
/ Q. U2 ], a J rMod:
; `* G# R1 e! k+ j0 B* z" L5 U' {6 f! P
mov ax, 0
: \, M- v, l! K' |& G" p. k# x mov fs, ax
# H. u, K6 [3 \, d2 p& Y mov gs, ax
B1 @. s4 m+ M; H, o
# c6 k8 R1 z) M6 a, d
' `9 z2 s* ^$ k" l# f" f+ N# l9 L- I- y
sti: A4 J/ Z2 l+ N, B: j: L+ e
ret
1 E# \) ]; D/ A# i% WSet4gb ENDP& ?2 ?( Y" I; c% Z8 m$ \
8 @' c/ [1 v" c- ?' x; l# Gend main |
|