找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 6344|回复: 0

進入 big real mode 會重新開機

[复制链接]
发表于 2010-10-8 12:43:38 | 显示全部楼层 |阅读模式
Hi 各位高手好. _4 _( ^. O. ~, u6 q+ J! Z8 g
以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。
# d/ \) o# P3 O4 d6 ]5 U( K; X, |* t;---------------------------------------! w8 n7 ], Q- U) H7 ?

- r5 y9 ?* M; F.model small
7 O4 o% n& ^0 J8 ]( b5 f4 I3 g7 w7 }.586p% O. \) D- Q/ J" W" p+ K+ k5 G
.stack  9 S1 @; g0 k* h+ ^7 ?4 A3 g; N
    ; l2 I9 Y( }( s2 ^, {) O* {$ L' b
.data* V# F: z% y$ l- X. J- N2 k+ _
& j5 f$ T% C' [. d4 E$ |/ c
DESC STRUC
7 \3 g2 R0 y0 p" M% s- {0 }2 ^  LimitL DW 0  : b1 L& B2 |1 U+ }6 J$ T
  BaseL DW 0  
$ z; Y7 ^4 _: I, B; a  BaseM DB 0  2 i8 ~; }) K& ~! \+ _- E& Q
  Attributes DB 0  6 G# ^  T9 _1 u$ w3 o
  LimitH DB 0  
& T/ p" g9 \* z4 i  BaseH DB 0  " l3 ?+ P0 ]9 ]" n  w
DESC ENDS( v; L8 Q3 l( Q0 J6 |: |

; k; k4 B$ a  m( oPDesc STRUC
2 N8 T, d# w5 q9 M, T  Limit DW 0  
! M2 t+ G" h; g& ~9 o" q  Base DD 0  
; Z* v, i# w8 s* d' p4 \PDesc ENDS0 o2 v$ n7 w/ y8 C4 Z4 q5 h

0 x& M7 L6 S/ W0 FGDT_def Label Fword
9 w6 W( p1 [% n6 GNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>- B  B$ \7 t+ k  B( W) p( W
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>" R! F7 i& l8 Q
& l) k" j2 t5 {7 t
GDT_Addr PDesc <$-GDT_def-1, >
7 J0 ?7 ~; }% k& y. _1 w7 }) [cmd DD 255(0)1 y. R( `7 Q0 U- w) }$ [8 J+ I

2 G7 H1 q& d4 h) v* n* i) M7 X( D.code) x! F1 L3 K0 ~6 W
main proc
+ e6 M# X" n, d: y6 w  call Set4gb2 j' _" F  Z3 v2 Z' L4 m
9 n) G5 ?4 d! T/ ~
  mov esi, 20000100h+ g% T3 q; h* Q4 Z4 s
  mov dword ptr fs:[esi], 055aa55aah
. T2 {0 U4 G7 {5 o   
  H! L! Z# V) K: s: u8 M  .exit: m1 q; a0 I5 ]- Z/ O6 s) q* b
main endp   1 G5 H, |3 [9 ]
) ^& M3 Z. H( B* g/ _; u
Set4gb PROC NEAR
' }0 i* e$ X; t- T  in al, 92h
: j3 L2 h. B1 N. b3 m1 E. k  [. d  or al, 0029 M2 |, K/ C. K; z9 w4 Q, z* s1 C6 Q; {
  out 092h, al
$ p9 o0 h1 t1 ^  out 0edh, al+ s' {- |6 x2 [

: z$ v4 E0 A' l4 m2 u# k$ [4 ?  cli' m" G; f. L  t! V  E. o( X
/ o  O  B! j& J) J- |6 m# h* o
  mov eax, ds2 b. W! f3 a) k2 {% d5 q
  shl eax, 4  z$ U! {2 s5 w$ ?0 Z
  xor ebx, ebx
2 e0 p2 D; m4 j/ U1 z0 C  mov bx, offset GDT_def! }+ }/ I! t: m; w$ r
  add eax, ebx
4 s' I( [7 @- e! t, f, {  mov dword ptr GDT_Addr.Base, eax2 k( G! L" s4 u7 G% u: c& r
  lgdt fword ptr GDT_Addr9 L" f4 t# R# C& g  f
, O" g% ~+ J, y5 Y* |  V  f
  mov bx, 80 [2 y' u, u! q6 h& N
  mov eax, cr0" ?& k- F5 Q; V$ ^( M9 M
  or al, 1) C+ k2 ?* w9 C
  mov cr0, eax
4 @2 R9 {$ i; d2 a6 b+ g) X  K4 K0 q) ]
  jmp pMod1 P  W8 Q0 E( o' M
  pMod:* [0 [# `0 y6 [+ p, W, r3 I
! o3 B& R# o7 }' Z6 M# n9 v
  mov fs, bx
; N+ E; ?$ N; k& n' c  mov gs, bx
* s- k) o7 u4 N7 n  and al, 0FEh) U$ a1 x2 K" r3 |
  mov cr0, eax
+ g- F# t7 M! `- m   
2 }& L* ?& K, w; h  jmp rMod
7 [: q4 a% x5 N. Y: G  rMod:
3 t: n! t7 M; z6 m6 s" l
; E+ j: N2 V2 F. M0 C1 C; [; w+ |  mov ax, 02 ~, Y% N! g* B! e! w. ?
  mov fs, ax/ A; ~! V2 _% T
  mov gs, ax
) g' O9 T# f: X9 x5 r+ V    2 U) v( l1 c6 O0 h5 V2 R+ u% B
   
; E9 P9 K* P5 U
! y, n5 g+ N  T! V1 l  w( P: a) U+ J  sti. o& f! U- j( ?7 B+ ?
  ret
5 o5 F) E$ h" aSet4gb ENDP
+ O6 x! u  e4 w) o, H   
5 q# X  R* F, h9 x2 Aend main
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

Archiver|手机版|小黑屋|计匠网

GMT+8, 2025-6-16 12:35 , Processed in 0.024806 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表