|
Hi 各位高手好
3 E7 B4 J' u9 Z! k9 e; h1 s: b0 H$ Z以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。
6 N* ? N, A4 l2 A/ i* d- @;---------------------------------------
, k8 W5 n1 o; k2 g0 h, E7 J3 ?( ~3 Q9 x8 f
.model small u9 j' W& H+ U( D$ z
.586p
4 z$ ]( Q+ `& v.stack
# f) S' I% w# b, @0 v) L0 G 1 k+ Z( N% b3 @7 J. v% I
.data
6 {" L: s" } Q6 @+ H
2 Y0 `6 s4 c5 p# n0 vDESC STRUC: `1 `" R# n; A
LimitL DW 0 : `# p' Y. L) o# V
BaseL DW 0
* i9 R5 i, ]0 _* e6 L BaseM DB 0 2 ~* X, k% h1 z7 j) o
Attributes DB 0 3 v# F/ J4 C: [: R6 Q4 y
LimitH DB 0 6 [- A4 z9 g+ f2 k. g
BaseH DB 0 : ?. G1 _3 q! L0 o5 B) l& I
DESC ENDS! N5 J5 Q5 J- n& ^
) ?, I% P/ M0 `( V2 E, W8 z
PDesc STRUC
5 p4 u7 x8 j6 ^; L! C5 m Limit DW 0
6 P* q0 y5 f& t: } Base DD 0
6 K) M* O; A: J! @! M/ hPDesc ENDS
5 ?# O/ ?# q ^2 o L+ B5 @* z+ B0 N
GDT_def Label Fword3 r) ]2 m1 M1 K9 I& j
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>5 h4 |+ r: u) k( I
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>% @ @0 J9 _; }7 F' m
5 `' T# S4 V$ ]: |GDT_Addr PDesc <$-GDT_def-1, >
{6 a7 G$ ^! R: v& vcmd DD 255(0)
4 ^1 x0 A1 T) R# S% y+ U1 W# C8 f2 G+ Y( z" |
.code
/ A! Y% W+ ^3 @0 m; l" ~8 ~main proc0 f+ b% _. |. {! N
call Set4gb* j z$ U5 I. k/ O/ h
R' h4 Y d7 l' _( c mov esi, 20000100h
$ ]: a7 l0 Z4 A- g O2 Y, q5 g mov dword ptr fs:[esi], 055aa55aah6 _+ ]* h% B# `# q8 }& l" {" r Y: ?( u
7 q* T% h' o) H5 A! ?# K- Y .exit
4 s" D0 ]3 ~1 a2 s2 A7 l& Umain endp 1 S4 v5 S# Z0 E# x* s- i9 `
6 f, g W7 Z( E8 \7 G) \0 F0 l
Set4gb PROC NEAR
' z9 o7 D: P4 W$ I" H in al, 92h. f5 m2 T6 X4 v/ I: F! M! E* ^
or al, 002
% @1 y- q4 W* n7 H: m4 Y9 \+ w out 092h, al
Q- G5 {! H! C/ k/ e! {9 v out 0edh, al- x( \3 p& M9 @- _2 N' k+ B* {
6 I" `) i3 D# H8 \: I
cli
6 d+ c# J$ {$ w( R9 @. o# V
1 m, n0 z# k3 \" P mov eax, ds* G8 J8 w$ ?' @; E
shl eax, 4
$ n1 j! B* O' c: k& l) a xor ebx, ebx
; K& D' x. Y% T( ]" U( }% ^ mov bx, offset GDT_def
$ L3 Y$ Z: k* p( B# ?9 Y add eax, ebx: g8 \% ]5 g- K! {7 m2 x* E
mov dword ptr GDT_Addr.Base, eax! j+ R% n1 r# U; n- Z
lgdt fword ptr GDT_Addr
) l! e$ g* t' W: _4 K8 h2 S
, o& f! n" l5 ]! _0 @0 [" V mov bx, 8
) e7 P3 A; G# w& P mov eax, cr0
, w" B( Z# N* p' V4 \ or al, 1
r, t; I) R" q- s' l mov cr0, eax
& e- z5 L5 f. X
7 ? m, u1 q& K3 G. m jmp pMod
: p& S5 Q3 l5 t; X# W1 N' n/ `, C pMod:
( a% E1 e* t2 G$ A) j/ X/ A; y3 y" b- V% ~' A
mov fs, bx
6 C4 A2 Y6 h; P# C7 H- _* r' a' [ mov gs, bx
' `0 i* I) @ H and al, 0FEh
% w9 c# X2 ^' S/ b: h" |0 b. N mov cr0, eax# r5 N8 n7 G6 J9 N+ P- B) y. n
: k( Y z" n' s% q! d: Q jmp rMod. k3 _1 E* r4 ~
rMod:
- X4 L% F$ l# R0 l/ L) Z- ~. Z8 L
" R* S4 B) b! o* A% I. B mov ax, 0" O9 n' Q; }9 Q, e+ E
mov fs, ax+ q$ k& ?: E2 d" U" u
mov gs, ax
+ ~( Y! i- _. l; m
C. Y* ]% {3 r! Z % I3 [- W" \) ^/ L4 u r! s9 m% f
; Q/ P( a8 `/ c" `* \* o( O sti; j) ?/ _ m( E
ret
, y$ F6 K: p! }. YSet4gb ENDP
" I, B6 ]: \ T8 g* y/ y; [ ) ?0 h( t! i0 D
end main |
|