|
|
Hi 各位高手好, K p" i, c4 I" Q4 \
以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。1 t! [5 A6 E: S0 Q4 A
;---------------------------------------
2 w1 X5 l7 C8 T0 ?& I- M" J% N6 I& W
.model small
# H" G$ R; Q* L/ U.586p
; e4 d$ C0 M" E% [( S, A$ W.stack
/ C) f6 Q/ ^& n2 ` + h& M7 S4 u9 L" [
.data k! u- d4 |. M# K4 j( v
' J; A# A% C- gDESC STRUC
$ y" t9 a+ V* _ j5 V# `/ H LimitL DW 0
@2 m5 W9 W; A# c: M6 u+ U) V6 R BaseL DW 0 4 d8 b! T. z7 s+ O8 k; i* S* |
BaseM DB 0 ; g6 ~' Z& E& o# |9 H+ Y
Attributes DB 0 : n. y1 s% R( J0 N" U
LimitH DB 0 3 g, j0 b$ n/ T9 M
BaseH DB 0 & |: y' a+ G# e4 e' H) U
DESC ENDS
) w0 r3 r# Y# E* o) |5 w0 e |' S8 h7 _2 |) M" F
PDesc STRUC
5 }, i( r z7 p* T Limit DW 0
7 A# ^( n& `, e: L% t2 n( [& H# C Base DD 0
+ y# J* {' S9 [/ P9 O, YPDesc ENDS
' U! ]9 L+ Y4 U5 w5 p' M: I0 Y6 ?0 ]. ?6 d8 ]+ `* X1 x
GDT_def Label Fword8 F+ [9 s |0 P# C h. E5 J0 l# a
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
. i2 ]$ R+ l6 j; M) R U3 WData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>4 U& L2 w( e6 Z" X% Z3 u% J
: K$ t3 D5 Y1 |2 bGDT_Addr PDesc <$-GDT_def-1, >0 N* W9 |' }+ J, ~
cmd DD 255(0)
5 Z1 } e! b4 F8 }- b9 O
1 D% o( `/ j( p/ f4 x: P$ Y; }.code4 h6 q9 ?, y0 M+ b% `9 P, d3 `
main proc
9 h* c$ m2 K8 \$ u9 K+ o call Set4gb
) N A0 F U% b4 E
1 F* ?8 I9 G9 ? mov esi, 20000100h
H! u0 `0 Q/ ? mov dword ptr fs:[esi], 055aa55aah' x8 m7 p* Z6 ^' H5 p
- u0 j7 Q% X a
.exit8 _6 k# K3 z+ Y
main endp . C# o0 H" i3 j# M
. u' o$ P k* F0 sSet4gb PROC NEAR
' T# j) f8 ~- ]3 \3 a1 _* R in al, 92h2 ~2 |; E0 Y! K( ]2 z- V( U5 S
or al, 002
; P% ~) h* ]! `6 B8 m out 092h, al
/ e. X; B& w7 J2 H out 0edh, al
3 Q8 S2 Z6 ?1 ?5 b
- l7 [* K+ e3 l9 X7 a* ~ cli
) p! d# R$ ]# E) q+ @& m# }
A% V7 i% A2 y6 F1 @) t2 j+ V mov eax, ds, c1 b3 i/ m2 B# S5 |4 D W
shl eax, 4
8 E$ c0 X0 J8 ^ xor ebx, ebx8 K+ C4 o: Z; d9 k/ w4 k
mov bx, offset GDT_def
+ l5 x7 q0 C" p V0 n2 S8 g add eax, ebx
2 M8 ]' p. U6 Q2 n0 D mov dword ptr GDT_Addr.Base, eax- N! H; e0 Q! |
lgdt fword ptr GDT_Addr
: r3 o# H9 j. P
) H9 g; n3 ~! Z6 m mov bx, 8' G. J: l' o6 @8 _5 d
mov eax, cr0) `1 J+ [% f) G8 X8 A
or al, 1
% I$ D5 f0 k! V; {$ W mov cr0, eax9 L2 l6 |# Z/ l0 {
* U# o; r% K4 \7 D0 p$ W: g5 ?+ d
jmp pMod
7 N; }* a$ x8 u2 \) M! |+ ] pMod:1 u4 i) z; a$ L
! o: c2 n, A/ a# P
mov fs, bx
3 ~/ P1 b/ P9 ?. f6 ?6 C% {, o1 Q mov gs, bx. @* U% ?' C& \ w. A: ~
and al, 0FEh0 E! R# N5 @+ \; `- g
mov cr0, eax/ L7 ~* P4 ]0 }+ o( @$ e
' m8 u2 i5 W* a- z jmp rMod) e* w3 `4 Q% M5 k3 K
rMod:5 l) z) W" @8 W. v
) J6 e( |( A1 t+ l
mov ax, 0* [% @- J6 m7 G" t! Q
mov fs, ax
0 q# r9 V/ A# C: C5 p8 L4 l mov gs, ax
! f& R9 `) u: P
0 K% R8 @/ B, z- g) _0 j0 ` $ o# Q, [$ @# d6 {
3 ~; o# Y" M* Z H, d: p3 h" I
sti* c3 z4 Z6 V) A6 ]- `9 ~
ret
: B: W! o# i5 A# MSet4gb ENDP" Z0 S' h7 I$ v/ M
! d C& i3 [7 Q9 X1 F; S+ Y6 z' @+ a
end main |
|