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

顯示string會出現亂碼

[复制链接]
发表于 2010-10-19 16:41:51 | 显示全部楼层 |阅读模式
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值& W* c& z/ d8 C- e
7 e9 U8 i$ t9 {  X6 G$ i
例如: C:\memory.exe(程式檔名) 01000100(Address)
2 b! l$ C9 r, w, p& D* H' ~9 Y7 N; I4 A. ^7 N& v* Y/ _5 y
則會顯示01000100位置的值
/ x) p& d' F: K! Z7 \
# f/ }. @* c6 P但是我另外還有要顯示出字串,但是顯示出來都是亂碼
5 M: N, W. F( `0 l. q( i
3 \/ @+ y8 p* l: b$ j7 G* @5 H, P麻煩前輩給我一些指導,謝謝  
. X) f4 a& Y' {3 P7 S7 p1 w/ s
+ \; |# K# N4 n& w2 ~* S: L+ s0 u: i2 ~( I$ V6 b) j
.model small% k9 e$ d2 }5 G" b
.386p
% ~( `7 A- _$ R" O( D;------------------------------------------------------------------------------------------------
1 }. N) \" ~. `8 I+ i) I3 M9 N$ iDSEG SEGMENT USE16'data'  3 F4 O5 p# z" z- e9 |% \$ L" Y$ }: O

) M8 q7 T& E; ^( o( S' A( eDESC STRUC. i) E5 @( a0 y2 _" O% N1 U
  LimitL DW 0  
6 M3 w( ]( R$ p5 o. T  BaseL DW 0  . Y7 L6 g% B6 y. g) e
  BaseM DB 0  # w: m5 {. Y/ V0 `
  Attributes DB 0  ) B, s1 E8 y3 e6 f! ~
  LimitH DB 0  
: R" b) p! g) \  BaseH DB 0  
) ]- b. M; y# T* x: B; }1 LDESC ENDS" k# z9 ~% N  G
7 g( V# k3 ]9 W* T
PDesc STRUC
  B4 D! j2 m) z  Limit DW 0  
4 G# h. q0 s  A& n( T, W: A5 u  Base DD 0  3 j' l% i5 q9 L" [! F5 B
PDesc ENDS
+ c! s7 f7 @' w% N
# X: U/ m, \0 |& sGDT_def Label Fword! M& d* P+ H6 T
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
& Y( C: k3 ~( `2 cData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
! ^+ V0 ]& l, N5 y5 yGDT_Addr PDesc <$-GDT_def-1, >
- h* j0 I2 Y, l- ]- p! J& m3 q
msg1 BYTE 'The Input Address is'
1 J8 I3 u: X1 U8 f% M" Smsg2 BYTE 'The Data is:','$'
6 t/ _. B5 s% \
3 Z% _# m3 T3 Z5 g+ `) b7 FDSEG ENDS  N+ E. |" D2 e

- O1 M$ M2 y) ~4 [+ f' {5 _8 I) Z$ F# M* D4 K, J( ^  W; V/ t# r
;------------------------------------------------------------------------------------------------  
/ p) V! o+ s- F) a6 x& h
0 i5 H# u6 z0 d( [0 U$ W, J- KASSUME CS:CSEG,DSSEG
& {! m5 F) P8 ^. e9 b$ w# H8 G; U/ \
CSEG SEGMENT USE16'code'
, I; n' r% M& ^' J' ?  * |" e, W$ C. u9 M3 g: Z* o
  push ds% w% ?9 o" `" }0 q4 f! T
  push es
. K# A; ?4 H' {: z" F  push fs- K3 u  y, w" p' D, z( l+ C- y
  push gs
2 h3 L/ ?/ [& {  
: H+ t0 E: \2 f; @# l- ]# \, X1 Z  call big_real_mode1 z4 U: z) }) y, S

  b4 m# C) a  t    ) j9 R, i8 x+ ~1 x/ ?
  mov edx,OFFSET msg1;0 N, T6 r; a" l# X
  mov ah,09h;   
8 W0 u* _- y- a* T" _/ v  int 21h;9 u1 f; H8 E% D) ]& k! p& Z! d
  mov edx,OFFSET msg2;: C' L( O: g& d  f( c# s  f1 K
  mov ah,09h;. k* R" `+ z4 @0 _+ C7 z7 ^2 G9 t
  int 21h;" w) q; K; g" O% t5 }/ \1 f& v
    0 w( P7 i% Y; K8 }
  call PSP   & p, k0 g4 b/ K% O6 ~# F: a
   
  b* b, K9 X+ }) V1 t; G" N/ V. R  call crlf   6 e2 b3 s2 {, j" a1 P3 C9 q
    ) |. B  i0 R0 G# M8 X. Z- Z
  mov esi,ebx
/ c  B& t* a6 ~  mov eax,fs:[esi]
9 u2 r4 b, L/ G4 ~. x5 S  out 80h,eax9 K9 X7 m3 N3 ?8 g9 u) q
  mov ebx,eax
: u% n6 i5 m$ O/ _+ l! f  call _8bits* V7 H% F6 h# D! A9 A( R& k! n
   
6 J5 _% y. D7 R* D) c  call real_mode8 d' N2 F$ m% _2 H
    ) B0 t7 {4 a, v1 F& y
  pop gs! b2 U# V8 Y) m- G! K
  pop fs7 p# `# O% F2 {, v+ A
  pop es
# s, |# j( w1 ~0 r" n& v  pop ds0 i& I, e3 X# d' J" K" W- B
    : Z5 a0 x4 t8 D. [- K4 y
  .exit7 F( k( q& f8 E2 p* h5 b" [
;------------------------------------------------------------------------------------------------+ i. c) a5 S, K
big_real_mode proc near& H% G6 e' N( H4 Y! s
  in al, 92h) k' W$ L) u: [5 X
  or al, 002
, \! K/ @5 I5 s1 `8 ^; U( p  out 092h, al
: O8 P( ?  u+ I' L" a6 A  out 0edh, al
/ f, a+ E+ T1 o" F' V  cli
- O  _, Y, v  R; G4 B  mov eax,DSEG
# z) Z* L: @4 X% q+ t  shl eax, 46 p: `! a7 ?5 f5 z  B' e+ p
  xor ebx, ebx
. S5 Z8 Z  s# A  mov ebx, offset GDT_def
: s5 }: v* q5 ~8 G  add eax, ebx
9 W6 x, [  C+ d7 C# U  mov dword ptr GDT_Addr.Base, eax5 |  e4 ^& |' Y( v- h
  lgdt fword ptr GDT_Addr
9 o2 D) ~: A6 v3 a  mov bx, 8
; B& ]* t5 x+ b2 G3 C  mov eax, cr0
& E) |0 F* S" o% @1 K* [  or al, 1: B5 {9 E) L- v9 Y' e% A
  mov cr0, eax; [# X' p( W' J! p6 j
  jmp PMod% D* K% P1 z# M" ~& C* u# A6 s6 p
PMod:0 [  v" ?; ^) A: |- M5 r
  mov fs, bx# w8 p& ^9 ~+ m# D: z- F/ \. x  \* D
  mov gs, bx
2 w/ e  A6 @# k  mov eax,cr0. K) K9 x$ l8 j) ]. p( b
  and al, 0FEh& ]- c$ U$ G. f, c
  mov cr0, eax  
" m# w1 p7 k! Z6 }& S  jmp RMod
6 f  j- T+ r6 d/ o# r* C- ORMod:
1 K& Y0 @7 N. s- y' d  xor ax, ax4 |; t8 s4 K9 Y  ]8 N0 f( o
  mov fs, ax+ Z8 b# I# j: l' q) N$ r7 C. E
  mov gs, ax$ w/ z/ l0 o0 a# N
    ; }8 C" u3 t' N, d5 Q
  sti5 |. J5 Q1 L2 B
    5 F) ]3 [" j# ]4 ^4 a+ ~
  ret' k& ^5 f# O- t$ z
big_real_mode ENDP! m5 `/ S& a8 u# X- G
;------------------------------------------------------------------------------------------------' M3 N0 I. Q* ~# ~' o
real_mode proc near+ l* S5 @% L, i
  in al, 92h
- p4 _/ M, b/ _* x  and al, 02
4 l/ k. k  q! D  out 92h, al   # o2 g5 _/ @5 A: W' {' z/ U
  ret
) g- K6 d- `8 H3 V+ ]1 u/ Preal_mode ENDP0 H4 f/ o$ ]$ L) D5 l! h9 m& @
;------------------------------------------------------------------------------------------------
, ?- N- k- R7 o% p' VGet_Commandtail PROC near
0 x2 H+ {* h- k: Q: n  push es  
! V' `. O* |! s" D  pusha
1 z7 R! u& U0 g  `  mov ah,62h  
1 }# R3 L* N( n& i  int 21h
% h" l1 }7 I: G: V4 B  mov es,bx
$ D$ u9 q' j0 G. a, z. o  popa  
; @. M' s, X8 h" X# d' [( T  pop es: Q$ x/ a  ]% r! E$ W! Q; ^
  ret
/ @, j4 b% X( E( e4 O, IGet_Commandtail ENDP
. r0 c) f" m6 U( {) y3 M;------------------------------------------------------------------------------------------------, y: g. ?* g1 k/ P  z7 p
PSP proc near
$ Z. f. V, l8 W$ C! S; B  mov ah,62h5 D- C8 n* b0 S4 J+ S7 }& W
  int 21h+ O; T" l, w0 I1 O' k+ n0 d9 X1 ]
  mov es,bx   
$ U5 j' C8 G% A( M+ T  xor ebx,ebx0 P& k/ P$ n/ A4 U4 ~7 y' {
  mov si,82h& G6 O2 X7 z/ M: P$ X5 h( C# k
  mov al,es:[si]
) Z8 N$ d" _8 e6 H9 \  call Change
$ I2 p7 h0 p: M; e  mov cl,4
) d" T+ p" C' F& M  shl ebx,cl
8 o* |( t8 v3 c  add ebx,eax
1 }, F$ @; b) y' i) G  mov al,es:[si+1]
: f/ W9 ]" d7 j  call Change
+ S  G" j+ K6 d; H  mov cl,4
# U/ b% E! `/ d1 d; m5 U  shl ebx,cl: F$ r8 b5 x: N1 ^2 E# U
  add ebx,eax
( u6 l1 n: }5 J$ F, W+ N  mov al,es:[si+2]7 i& t( ?! j; m" ?% i
  call Change' S* W1 W# @; R+ Y; c- x
  mov cl,40 u3 y$ |$ H$ F
  shl ebx,cl
& U( F) x: I2 U& s3 \9 z% X  add ebx,eax
! q+ ]9 d  M1 B9 J/ T. Z/ @' y. X  mov al,es:[si+3]$ P- ~7 |; I- S
  call Change
. K) F9 {& E  ~3 W1 Y; J  mov cl,4! m4 H7 U8 l0 l
  shl ebx,cl; {0 i; h7 ?! W+ k3 n9 G2 b$ ]
  add ebx,eax
; s% B3 B! O0 x  mov al,es:[si+4]: {( P9 ^4 _5 l: [" W
  call Change2 u" v7 W2 F: U
  mov cl,47 m5 J) d# j' d: [4 A0 Q- G) e
  shl ebx,cl9 w- G: m3 f9 _
  add ebx,eax- {/ Z' c6 J% k/ l! p+ E
  mov al,es:[si+5]8 [0 V1 |' |+ C6 ^# `! U
  call Change
8 e! s+ U. F9 x6 ?2 T* x  mov cl,4
" X+ g% @- M; }/ G  shl ebx,cl/ {2 f' X; w. T( Q# s7 Q
  add ebx,eax. X, ^  T/ g5 z, Y; O
  mov al,es:[si+6]
3 T0 |5 x- n$ }  a/ y) o6 X% [  call Change  L: C$ J7 q: v9 Z- f
  mov cl,4
5 _, @- L7 F+ m" `5 |8 D6 y2 S  shl ebx,cl
3 D+ i4 W) d2 q/ w* Z$ Y  add ebx,eax  \% W& x" g% Q! P7 q0 G: N
  mov al,es:[si+7]1 f; w2 e2 M" f8 h, _6 L
  call Change. P' o8 m  w" @' j  }9 M' C
  mov cl,4
$ R0 H, l2 t* [2 p( e3 v/ V3 E% x3 ^. Z  shl ebx,cl6 O' y4 g7 D( s& K# g/ \. {' u
  add ebx,eax) e8 i) i/ b2 L8 u* G9 n0 D! V
  ret2 _, Z8 }! R2 s% u* x
PSP endp
" O+ ~2 C5 u& K;------------------------------------------------------------------------------------------------$ @/ M( b; v5 V% d2 {7 ?
Change proc near1 Z' ?2 P/ H8 K# w1 s6 c
A:   : Q4 k% G- U! t0 B
  movzx eax,al
4 l' Z' o# u: B, i! d- a$ q8 ^  mov edx,eax
; V  z1 M" z4 J+ d# A" d  cmp eax,'0'   " ~. z; K9 f  A1 n) g
  jb A
+ q1 D% t( U3 W  C8 r  cmp eax,'9'   
) T* m7 X+ J( N/ O  ja B* L' K% s4 v6 j0 w, S. z
  sub eax,'0'
( \8 X' V' I% u1 a  jmp short E
/ d- g4 i  Z3 b5 P6 T7 Q4 ZB:
" `: V, o/ Q( f; X; M4 L' P  and eax,0dfh   7 U6 r) A1 A5 s. L+ \6 w! o
  mov edx,eax
$ d; p) D5 a0 D) W9 i% [- ^  sub eax,37h   
# e9 o4 d# j8 K  cmp eax,0ah
( |: H6 z" T& O  jb A   
: l" t7 i: b, E$ B8 m( \% f) U9 L  cmp eax,0fh
+ F) e) @' G  e1 X  ja A   , r& o0 _- X) E) L3 t- q0 t2 w
E:
4 ]4 m4 x" x! O, y. I( n  push eax   
! {' n1 `- x" q" P  call PRT   
# `2 G. P# l8 x$ {0 w7 `" P, ]  pop eax
2 i3 j, n% N" m- z9 V0 JCExit:
. p6 |! F$ P. R+ o  ret
  @# J/ q- I$ B9 AChange endp+ F' s% V6 q" U! v" M0 R* z6 k% Y6 n
;------------------------------------------------------------------------------------------------9 Y% B8 P: _2 n1 M7 W$ d
PRT proc near. [, B3 j0 D. M
  mov ah,02h
4 }1 C7 V5 I$ V  w  int 21h
1 E% J# k) D5 x% N/ l; q. n) S  ret
2 E8 f  E* M2 c3 K. p( y! m1 o1 mPRT endp6 k9 y4 N2 p! U+ Y4 X
;------------------------------------------------------------------------------------------------: m; U: m) _1 W! o# w' e
crlf proc near
% L% e' f0 r: i6 p  mov ah,02h7 u6 s* |" h3 a' ^
  mov dl,0dh
- D  G6 n. g4 ~" _. z; n/ y$ I  int 21h
+ g$ Q/ f0 M5 |; K* H: D1 Q; b  mov ah,02h
) w! h6 K+ `3 G3 _6 e# A2 G  mov dl,0ah
% y$ F- H8 E. L4 e  int 21h5 e- O2 `# v) D
  ret7 }0 s5 R" e: Q4 X6 F7 h
crlf endp
% x; m: T+ P) R# g8 p: c$ j' ?;------------------------------------------------------------------------------------------------
( u3 d1 A9 @( _! u_32bits proc near+ K1 p. V. b& e* e
  pushad
4 M, E& a3 S$ w% m& m/ A; b+ \  mov cl,4
% [' m' V. B8 S/ z- A* P' a" @6 _# \* j  rol ebx,cl( ?8 t, }- C; E! M
  call print_4_bits
. n' C8 F: B( b1 \* Y/ n2 m  rol ebx,cl
- W& A3 a6 P  R! Q. m+ r9 L  call print_4_bits
% f3 a# o+ c  H$ z& n9 w$ U  rol ebx,cl7 h7 I7 Z: @2 v9 T
  call print_4_bits6 c0 L6 X" l( x6 d$ ?# ?- L" E6 Z( y
  rol ebx,cl
3 I* @4 N4 f4 S' g! w  call print_4_bits
3 C8 B% _' T( E; s& Q$ n  rol ebx,cl6 e8 r5 E3 ~3 j  S2 h+ a  O
  call print_4_bits
- p- B9 x0 v7 k  rol ebx,cl
4 p7 U' M' Z% U" c0 L  call print_4_bits
+ S# F* B. j! H8 C4 k* o  rol ebx,cl
9 G& y9 V  P& L' n/ F  call print_4_bits
% }6 ~' |3 R( r. E) |  rol ebx,cl
' ]5 r( W9 T. r" U3 F  call print_4_bits5 k, k8 a6 L  L3 b' B
  rol ebx,cl% r9 X/ `4 w$ D7 S
  popad  Y6 X* A$ N4 k7 ?" x
  ret
& e3 Q0 R3 y% ]_32bits endp. ]9 I4 \" M; P! X" I, F
;------------------------------------------------------------------------------------------------" H. V; Y/ d0 z. \) e/ l; v1 T
_16bits proc near
. a  l# T5 J$ H$ W7 w  ~: O  pusha   
. ?9 Y2 X# g3 g0 h1 k8 D0 w  rol bx,cl  k6 y! h! ~* Q- C, X  u6 a8 \; {
  call print_4_bits
" e. ]% Q3 Z  t$ E3 T8 i, t: ?  rol bx,cl
. n* z+ {2 s3 m! `) c  call print_4_bits- X$ X1 }( @- B9 i
  rol bx,cl: f* p+ W& V" v# ]1 g5 e- z
  call print_4_bits
5 y* [, |' O' V1 L/ y  rol bx,cl
- f* e( r8 `2 l- @0 F3 }; N, ^  call print_4_bits; _" c- ~1 U3 v0 l. B! }) g
  popa
4 D- n: K1 J3 ?& B" h& Y2 l: g4 I  ret/ D0 K: ]' }: x( i* Q$ p- M
_16bits endp% R7 g' M# s9 `& N
;------------------------------------------------------------------------------------------------
- W" G$ U& R- l& j_8bits proc near
- ]3 n  Y3 G$ n2 v+ Z  pusha   
  i4 c, `$ X6 ^( p; a' O4 D; b  rol bx,cl
% `/ z5 T2 _7 X- d  call print_4_bits
+ x1 ?9 K; r2 z  rol bx,cl' t# s4 R5 D# e  V# O' M/ k; R
  call print_4_bits! W; c  ?( o& F* c3 [
  popa
- m! u5 A2 ?" I$ ?  ret& ?; {3 V! a* p7 a
_8bits endp
6 _$ `* n5 Z0 b2 Y4 g$ s) G;------------------------------------------------------------------------------------------------) X8 U. e  }, e1 `
print_4_bits proc near  e1 F- }8 u9 W, t+ r- u. S
  mov dx,bx
  O7 L! L4 w7 w8 H+ U9 y: p2 x$ [/ H$ g  and dl,0fh/ w3 E6 ~9 Z' X, f6 U
  add dl,30h
2 ]1 f0 u0 I1 U$ B7 L/ C  cmp dl,3ah
0 w) B, o# c9 z  jb print( W" U, i) e2 Y! S" z
  add dl,7
4 q8 y: t& e- H9 Dprint:   
7 [( j+ w. e% c$ [- v' j2 H  mov ah,22 m: ]! p" |, g  s- Z9 O% k& R
  int 21h
% G4 y, y+ z9 U- p4 J" t  ret
% `0 @) Q% q( Zprint_4_bits endp   ; V' S7 P1 e! m" e* C
;------------------------------------------------------------------------------------------------
2 [: B) M# u) uCSEG ends
9 d% g' S* |+ I3 R5 NEND
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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