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

進入 big real mode 會重新開機

[复制链接]
发表于 2010-10-8 12:43:38 | 显示全部楼层 |阅读模式
Hi 各位高手好" N3 O, R+ J, K* G
以下的程式是我修改網路的一段程式,我把他修改為,讀出memory的值,並顯示在螢幕上,但是我修改後,當我在DOS下執行它,電腦會自動開機,想請各位前輩幫我看一下,是哪邊出了問題,因為目前的我是沒有頭緒的,麻煩你們了,謝謝。$ q3 n' I% V6 w0 g. \; v
;---------------------------------------
# J$ }3 |8 l" k4 h5 T' Z9 p
$ z4 F/ W7 V0 n: H) N" z, T" p.model small
0 D+ I  S) C! `.586p  |  E7 V) U' N/ ]# I
.stack  
" C1 A0 i/ d" ?5 G% x   
: r# R# v4 I9 m; V6 _( n2 [/ t. y+ v.data3 B/ P1 A1 A; s5 W. h
! \" @% r, n* J
DESC STRUC
& @8 v3 O) m" W5 E+ D& \4 L6 @* |  LimitL DW 0  : h  X! G" S! m8 O/ |0 @9 E  W/ e
  BaseL DW 0  
2 h, u' e1 y* \8 r5 ]1 K3 O  BaseM DB 0  , H6 e, _  V8 c
  Attributes DB 0  . V* o8 ?( h  C+ m8 f# a" D
  LimitH DB 0  
: m, Q" ?% o% p) S3 i( a  BaseH DB 0  
8 v( s% T+ _% C* H. s0 kDESC ENDS  P! D9 X6 {: l

. w  ?1 t' A/ Z  t3 ~: HPDesc STRUC
: U9 V# @/ w8 g4 z' |  Limit DW 0  " H3 o+ _6 e: {% M
  Base DD 0  
( a  p6 c' F' {: J) E" qPDesc ENDS' W4 M' u2 ?! \, {
& Z& E2 _5 N$ L8 g
GDT_def Label Fword
! _; J, g! Z& gNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
2 N' X6 e( {- P# [; k$ QData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
  E3 M& ?2 E* @' S6 @2 \4 A6 q3 u. r4 K$ h% J
GDT_Addr PDesc <$-GDT_def-1, >
1 U# C2 u8 y) v* G4 ~& }+ n! M$ J/ Vcmd DD 255(0)0 E8 g" D& E  M
" ~, M. N( z" i* {
.code
% ?. {3 Y5 c4 n2 r" _* b& Lmain proc
4 O. C* y  \$ {7 O( j  call Set4gb
7 |" n# ^1 x' Z9 L$ ?  n: @, o8 s% V8 c+ @
  mov esi, 20000100h1 \0 V- g9 Y. P+ u2 G) T
  mov dword ptr fs:[esi], 055aa55aah# @$ M; n( a+ g# f. D# Z
    & H, b) d9 N6 \; i0 A' d
  .exit/ X/ o4 a4 ]6 k2 A* h* I/ ^
main endp   
/ D& \0 @: }& K5 e" W* I! v5 x- F7 K) ~& [
Set4gb PROC NEAR0 f4 _- k- E) V* _- Z
  in al, 92h
) d/ U7 \0 Z9 ^3 o  or al, 0025 l: e1 x; Y# r" s1 r  E  u
  out 092h, al
' K0 J5 |$ S# Y: {3 w  out 0edh, al/ K1 t! q( t8 A

4 g, `; T; j. M, R' l3 D  cli
2 h7 y! v# d0 y+ X8 e; j& T$ D& _- _: U4 P8 g0 m9 w, C: ]
  mov eax, ds& m9 v! S" h) I( W1 U/ Z9 n
  shl eax, 4
& B9 J, B: k, c! h# W/ C  xor ebx, ebx$ ^, V- n5 n" _3 m$ }
  mov bx, offset GDT_def
% z2 g/ f0 n$ j  O1 v" \  add eax, ebx
1 c- t# A0 j; r" ?" O( N  mov dword ptr GDT_Addr.Base, eax* v$ o9 ^  e3 e# Q% ~
  lgdt fword ptr GDT_Addr9 I$ Q1 a( _; R5 A* z. x

1 P8 t' K+ s$ ^8 @  mov bx, 8
4 V2 ?9 S) d% g+ J( O7 Q: N  mov eax, cr0
1 M  s6 _5 a0 Y6 v5 Y* N; a6 D$ r  or al, 1, g! C. ^# M- R2 _& H% s3 X
  mov cr0, eax
; Y# N& Y3 N  H8 C" O1 e7 {0 C4 u* S- H+ E1 e3 B9 X8 C6 U& @$ }
  jmp pMod2 \4 R3 s. C; x, d9 {
  pMod:7 O8 t9 i3 h) [
- i) L' k& R9 @$ r$ f8 f/ S
  mov fs, bx& }0 c4 |. C" H4 B% o
  mov gs, bx4 n$ Y" ~  E2 z- R, w8 W3 Q
  and al, 0FEh
8 \" M  f  f& s' u9 W1 |, D  mov cr0, eax. }: r2 U* c- Q
   
: [; s) |, k* F8 l1 \$ u: i  jmp rMod9 Z* t. S0 ^( M* }, N) k
  rMod:1 g( v0 h3 A! p6 R) E4 _* [7 h- u
3 P, J7 v6 A1 K1 N: I
  mov ax, 01 Y* l7 l* ~" ~
  mov fs, ax9 Q$ S2 \4 V' F
  mov gs, ax
' z! h) A* I3 j8 K0 \9 E   
$ D" E  \) p( ?# V- K3 Q   
+ m% Q! K& n+ X( w% g0 u& {7 _
( w1 k/ A/ j& P3 k7 Y  sti2 k( m5 ]0 ^& ?) d0 O1 n
  ret
) {$ ?3 _( }' O8 g! ~8 _Set4gb ENDP6 C3 c5 F# U; ^2 f
    ; C2 Y8 n; j1 E$ w  W
end main
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2026-9-18 20:05 , Processed in 0.433335 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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