|
Hi 各位高手好
6 C( n ~% D. e' v+ W以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。7 n9 D; N5 v E/ I
;---------------------------------------; t2 i' U2 P$ R. \7 p, M
2 t* S( J- q1 x4 \; l.model small, \+ @7 T9 y0 k+ ?1 @4 g% D
.586p r1 z2 `: Q. b/ ]- Y% l
.stack
/ `. C# [9 N+ m. n
" r% v: Z% A. m3 Y0 Y A.data
1 R7 q5 B3 I2 ^$ U! [" G4 _: `) o* q# c3 j6 l; V7 V
DESC STRUC
, P& L" ?8 M" d: D i" l& B LimitL DW 0
3 G* d* \/ `2 J5 {' A BaseL DW 0
6 T' A0 V" b; ` BaseM DB 0 ! b6 G* E8 {; e! B* X' r& Z8 Y
Attributes DB 0 # j5 T, Y$ I8 I7 o" ]
LimitH DB 0
" U# _7 Q; `- q. _( k6 m( [0 x6 E8 `: v BaseH DB 0 ( V- h( a6 F! t5 E! ^" E1 w
DESC ENDS3 O6 Z/ i3 n& R
2 y+ [5 q" ?# L9 r( j/ j) y7 u
PDesc STRUC
% U' x/ ?2 X) ]3 z" K Limit DW 0
9 k$ T0 i {, `9 h; v) q. u& a Base DD 0
4 r# L3 [7 s S3 m: }6 q! uPDesc ENDS4 q7 ~1 b$ |! ` C
- m( e/ W' t! @
GDT_def Label Fword7 s6 b# E* `( ^$ n% @0 G
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>% B! I% ~8 v2 Z/ f$ \4 U
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>$ ?" l# _3 _% T; @& _+ t
9 K4 K% k6 |9 {( t2 V/ V6 a. SGDT_Addr PDesc <$-GDT_def-1, >' @, I3 u4 E9 `* m7 x
cmd DD 255(0). }% F% X+ Q4 \' D6 X
0 ^2 V$ P2 c& q1 A
.code
2 {* k' ^; T( u: smain proc" k0 n: D& R7 [3 o* l* P
call Set4gb# Y4 l' D% o- z, l
4 H3 A' {5 {$ c8 U mov esi, 20000100h
! H( H- I: d& G3 a+ g( |+ K3 L# ^ mov dword ptr fs:[esi], 055aa55aah
2 `! J, P/ d$ @% ?+ M# ?! T* f
/ q u/ K2 S, ~; E .exit" z" T* P* U0 V. N$ q
main endp
( N- z$ P' E B3 p' T+ G7 l# K2 X. C/ V; k2 f" ] h5 d
Set4gb PROC NEAR, s- {: b* A8 F# u$ j% o8 m
in al, 92h8 p7 ~ Y6 \, `% e
or al, 002
8 |3 O* ~. _% ?% @ out 092h, al
* H8 B; o* h" R; |8 P+ v; l# H7 t( S out 0edh, al3 N4 U: W" F$ E7 H( k
5 k, `$ w- H' B7 d n8 y8 q
cli
" Y8 c0 a. j& ?% X! Y; l; I3 Q6 y+ }# [# a& k3 l
mov eax, ds
, O( e- \" G* ? shl eax, 46 R- P' R: c! |& `
xor ebx, ebx0 R* J2 G+ _8 X) P9 \
mov bx, offset GDT_def
# s. Y- }) n5 a2 ?; ~/ K add eax, ebx* G* M1 d& S, Y" e/ F# Q! d; N7 B
mov dword ptr GDT_Addr.Base, eax' `+ y& ?2 w5 r3 y0 d, V
lgdt fword ptr GDT_Addr
0 v8 a9 G/ R2 u7 c9 v) Z4 f
% ?! c9 n6 M0 z8 u. W( k. _ mov bx, 8* B4 v; H- x3 u5 Q8 G
mov eax, cr0
2 `& W" K2 V0 \: l or al, 1
2 [* i& _: e# B7 @2 @$ F; d& { mov cr0, eax0 @9 o: V- K: E) Z8 H0 e! @
* U: i( L4 K+ A$ i5 _6 V jmp pMod
0 u( Z" x3 y t8 i' D4 ^ pMod:3 L' _0 E; \. o% K/ x- Y
: T$ x# q; t, w3 J2 ~, P mov fs, bx b+ w2 e- L9 h* W
mov gs, bx
% {7 _. ?5 v% i! E% Q! D and al, 0FEh0 p# `& M8 Y1 y) s( G
mov cr0, eax
4 N9 y8 z& b: C! S
% T9 {' Z% I$ y0 l$ L9 `. g' M8 a7 v' I jmp rMod% j; I! z: f4 @1 C& T% X
rMod:4 m! k" l/ _' s
6 U, J* `) Y1 d& z( s. e# w% g( c mov ax, 0
; u9 u' N4 P# c+ Q mov fs, ax
% U( t7 b1 F% Q# C! Q mov gs, ax' W/ c$ m' w3 r5 G& S$ [6 V$ B" e
( h0 S2 t+ ~ p' P3 A$ [ M
9 W |+ g$ @- c' W& k- Y
) K2 Z( f9 N6 u' ^$ u6 E2 g1 | sti
$ ]5 J: ?+ u. ]4 j" G: T0 }7 z4 G ret
' y- a+ J& C2 d7 J4 RSet4gb ENDP- t1 j" W U. y" t6 ?
) E2 y, b6 a2 _6 Eend main |
|