|
|
Hi 各位高手好
; K( y \8 j) ` V以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。9 i- L2 Z) a& X/ [7 `/ I0 q
;---------------------------------------3 _" q) L4 G2 B# O7 H! S! G
3 S6 h+ ?! U) [2 i6 q" u w
.model small
8 Q$ p: h; V6 `: [3 L1 q. r$ H1 j.586p
$ z9 r% z0 ~9 J5 r( G.stack
% v* X. L( J6 u" T0 m+ Q% L; ? . N( z3 g+ b3 M5 i: A
.data' B2 N7 Y( I5 ]: o
7 s% S6 v; K% T' t# w7 F; @, y+ |
DESC STRUC
8 A2 G$ h4 ?4 @6 o LimitL DW 0
+ \0 ]& F! y% G Q8 P$ S BaseL DW 0 % A8 }. _) ?# q
BaseM DB 0
" a& Z2 w* e2 @8 f' _ x$ S9 K Attributes DB 0 1 t5 z( A: `* [2 H
LimitH DB 0
/ f4 F* e* T% s BaseH DB 0
2 h* x8 J) f6 F* v1 a; ZDESC ENDS9 g: B# U1 I$ E
N( K4 ?0 t0 ^! s9 |+ z; fPDesc STRUC6 x$ [6 \# E5 u0 w$ w- n f/ z
Limit DW 0
! a9 O2 A( _) B& Q Base DD 0
7 N3 _2 H6 D# m7 R7 @/ o6 RPDesc ENDS
, P) N; D! [& U
5 s! b5 w3 ?# A, i, PGDT_def Label Fword
8 S1 v% D, ~ w( s" ^; Y6 p7 m! ?Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>& t7 J( W w* p0 L+ X8 A
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>3 k1 s5 s" j4 `! D7 O/ H d1 Y
; A% {7 d; j: h6 ~) B( [! U: q
GDT_Addr PDesc <$-GDT_def-1, >
( [6 b0 Z5 Q( U! [2 \cmd DD 255(0)
/ j# u {+ `& k, u# r3 k5 i8 O; A' |; v
.code8 f9 ?0 A) t) R6 f. f) E
main proc
/ N3 t$ ^; I% r, k) e' D7 [ call Set4gb8 a6 w7 }; w' G$ p' E" _
8 U, Z, K7 A, d" Y! N2 k mov esi, 20000100h
+ e, W" i0 q# y* i$ s/ R mov dword ptr fs:[esi], 055aa55aah- u! U7 [* h+ B7 \, @9 d
* N0 P& `% e9 m" N0 H7 _0 u0 j
.exit5 j; F e) o) |7 W$ H
main endp 9 _) d7 k- \; `
$ Z+ F, r) i4 W* M. A" A( h! vSet4gb PROC NEAR P, ~% s4 Z1 y O: j' e1 Z: ]
in al, 92h
4 ]# y% N6 K* A or al, 0027 g9 W: G3 c! \9 \( m0 e- l
out 092h, al
% F3 }( M6 O+ ?# t/ e8 ] out 0edh, al2 J' x% M- U- G& w$ J% V6 H
9 E0 n$ f; v$ w" n6 r( T cli4 S% G9 V7 s* o
2 f6 F# Y7 C- P- f) _2 {0 q mov eax, ds
6 j: t. V; v& o z shl eax, 4- H0 G; k ^( t, y
xor ebx, ebx
, ^, L1 B( J+ v& \# s8 O: H mov bx, offset GDT_def" v! S* j0 o( L) g1 n9 T/ E
add eax, ebx( i7 r( n$ ~9 j; u( J
mov dword ptr GDT_Addr.Base, eax, C/ G1 s# M% Y8 b
lgdt fword ptr GDT_Addr* b2 d9 B0 d# @- I1 R/ g
. K9 ?. p8 F' \" A
mov bx, 81 C0 Y" A, G3 m0 N
mov eax, cr0
9 ?" G( U/ R2 \/ d6 z( \% u or al, 1- Q" ]7 _8 N0 d( ?% S4 ^
mov cr0, eax2 V; o, l7 j" `, {8 y' h* m
3 h$ ]$ D9 d+ ?3 h+ G2 h
jmp pMod" f9 u' x# M: S0 ~. P4 W
pMod:
- {1 m9 y' V. C/ C) n9 }/ q! A- { e: ~, O t
mov fs, bx1 T# H4 ^) [8 \, f8 K7 Z
mov gs, bx. t, J! i9 Z, x% W/ L* f3 \
and al, 0FEh
( a) h- l' ~1 d: @ mov cr0, eax
3 e+ c( }* l( c# `
, G$ x+ {, ~) M8 M+ H jmp rMod
8 c8 |; @% J6 H' m rMod:
) [5 V5 E/ ^( M6 s' S# R D7 y F7 F% `( y9 W
mov ax, 0! S1 E1 X1 }" ?; p# Q. n! o5 N
mov fs, ax
$ S0 c- I0 m( A# t mov gs, ax: w0 d3 i3 E$ a2 L. j" {: t. b
5 h% H. Z+ v1 Y* |$ v! Q2 m
3 `+ K) f% }" x, \) ?) J6 O7 @
& y& h: ]0 j1 j: d4 i sti
7 Y0 O4 Y/ z. Y ret& Z8 Z' ~( i* M- D. P. L# D' G0 P" p
Set4gb ENDP
9 v2 a8 X+ a* g5 t9 j+ Q, I3 U
9 c8 b* Y8 u7 aend main |
|