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

顯示string會出現亂碼

[复制链接]
发表于 2010-10-19 16:41:51 | 显示全部楼层 |阅读模式
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值- _: v7 {- e( u: }6 z

8 J# K: D& e6 k- a1 c例如: C:\memory.exe(程式檔名) 01000100(Address)
0 a, i! r& d; a1 l% L7 {
) J; `5 ^+ u4 f* F7 t5 U則會顯示01000100位置的值+ ~3 m2 ^3 b) s( n

& ~- r4 T) @" n$ m/ E6 ~( Y但是我另外還有要顯示出字串,但是顯示出來都是亂碼
0 |; K* W4 }$ G, F# ~  W; d/ y3 p( Q4 o( r
麻煩前輩給我一些指導,謝謝  
  }' p8 f+ w6 j/ h. Q/ A& {0 d0 x3 H3 Q$ _

4 F+ L  D% ~2 S$ \/ ^.model small
8 A8 }5 v# r+ \, b4 J5 s2 K% Z.386p
# ^' w! T3 u, f;------------------------------------------------------------------------------------------------
5 \' K. v7 n9 O( VDSEG SEGMENT USE16'data'  
  U; I+ [) A5 J$ S
- \8 F9 c) ^8 H8 FDESC STRUC% }5 u" W* f' J1 i
  LimitL DW 0  ; [& Z1 L7 V" H% n* O. y  K4 F) T+ e
  BaseL DW 0  ; r4 A( y5 ~0 o+ U" @. \
  BaseM DB 0  * |2 N4 x, X0 y# L9 X" n
  Attributes DB 0  . y# m! ], X  E3 H0 {; a# e
  LimitH DB 0  9 N3 j/ a3 y; q7 P
  BaseH DB 0  
1 X5 E, G9 g4 [$ KDESC ENDS
* W' L6 w# b. O# l" S4 E6 c# r3 X
& V) j+ d/ s# m3 w/ UPDesc STRUC
4 U; x: y, W7 m1 C' ~  Limit DW 0  
; F& b6 z& n  F# V  Base DD 0  8 V1 Y# k! I2 _" D( f* F
PDesc ENDS$ |  t: H9 ^/ |; G+ Y
/ Y( U. u5 n9 f! B6 V
GDT_def Label Fword
% [7 {. O- C$ w1 i" YNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
' h+ H; V# W4 z# F) v, A* DData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
# \# }: i# p5 s) B! _2 W, cGDT_Addr PDesc <$-GDT_def-1, >
) {$ _; q! M) W
& B$ s8 D( I- lmsg1 BYTE 'The Input Address is'
) l# o0 Y, L/ v; dmsg2 BYTE 'The Data is:','$'4 q; z9 @) a$ U# {4 ^1 Q
( w/ p# U% P1 \6 V8 i8 f$ \6 |
DSEG ENDS3 \0 K9 B: [* F( ]
; a0 a+ S. A+ M1 V% _2 O* m  d

% P# q6 X% V1 y7 P) X# U3 L;------------------------------------------------------------------------------------------------  ) @# c' Q& _" }, J3 |2 v
0 N' D$ s4 J, e% [- X
ASSUME CS:CSEG,DSSEG
( I; D) J( y4 ?- y6 }  e9 t2 ^2 }( H# `# r* {2 ^2 }
CSEG SEGMENT USE16'code'1 {  n' W8 c, V+ X  h9 U
  
9 r) ]) h7 L7 ]  push ds* @* H. }  T+ r3 I
  push es
- d9 {* W% i# O, S/ [  push fs8 I( e6 _$ m+ p3 D- m4 {
  push gs# [  Y! T8 x' A2 |
  & I* m, H% R6 i, a9 [, z5 E
  call big_real_mode
2 r8 \- w5 N2 z/ q0 s7 f' V  J) Z/ a4 z! H
    ; w& W; U0 p4 H
  mov edx,OFFSET msg1;& n+ ^9 n% f& r) j. A  J# w" n
  mov ah,09h;   
0 x; v! W9 X% Y( O9 t! o) T4 H. Z  int 21h;
$ j0 e* e; W5 p8 B- u  mov edx,OFFSET msg2;# N9 C) y3 c  d& m( Y: K( I1 \
  mov ah,09h;8 Q3 N2 h$ W+ F6 P( I3 o- c
  int 21h;% U2 D6 I/ N9 W- Y# y: d
   
2 u$ H. G: r7 B/ r  call PSP   
6 }7 f( j0 B4 E# q6 E' Z   
  _) y( z% ~0 s2 [4 `  call crlf   3 X7 n2 v3 W( M4 N
   
; ]* A& z1 ~! L  mov esi,ebx
/ |# Y# r1 Y% B( y* k  mov eax,fs:[esi]
4 f" F. R! V1 K1 n) V2 E  x: U  out 80h,eax1 ~3 z7 u! g/ z. D  c
  mov ebx,eax
' [% o! U' r, P* V. [3 z  call _8bits& I% {. K& y+ e: o" ~
   
4 ~# b$ B, J8 Y7 h' z) w1 U( T$ B0 h  call real_mode
1 ?5 i  d2 c; g6 z" t0 e   
& q' f* f$ y1 [1 e  pop gs
9 @* a! O0 j. V$ G$ g7 o  pop fs' T+ X# n; V4 K/ g
  pop es
: g3 s/ B# `' l* i' O  pop ds& J' m) s0 S! V" Z0 Y3 o
   
. m! ?0 A3 T) ^3 j3 V- d  .exit, c! n5 Q$ Z  }" q" o: }' R; j
;------------------------------------------------------------------------------------------------
4 K$ w7 p' A4 m- }: ~5 @! [/ Y% Nbig_real_mode proc near$ u, x! R& o0 \) O, |5 R0 G# R
  in al, 92h
$ K# p/ o; h5 h7 w: q" I) O& ~  or al, 002
# E. i2 s2 {: O9 \5 t/ h* i3 Y7 E2 A  out 092h, al) |0 C3 U! U/ h5 v: O9 @
  out 0edh, al( p" f. Y! q7 g" W% J: B
  cli. Y! X, F4 v: ]2 v/ [2 X0 G
  mov eax,DSEG
" g1 t; M' Q: o, o  shl eax, 4
9 z/ u, m+ W/ p2 `  ~# F  xor ebx, ebx
' q0 }1 E5 n+ w  mov ebx, offset GDT_def
. ?9 L' U  @6 l" i7 \4 |3 e  add eax, ebx
* V8 ^. V5 S' M4 Z  mov dword ptr GDT_Addr.Base, eax
0 F% g8 q! ?  S/ z5 V4 {) O  lgdt fword ptr GDT_Addr8 N7 H6 m1 F7 B2 ^/ [
  mov bx, 8
: o3 N; B. d) r1 j6 _  mov eax, cr03 d) h" a* f: p" h+ S. P) x
  or al, 1
$ V7 a& a4 C( a) y" J  mov cr0, eax# z: N" T3 j3 V& ]) d! ], H- x9 y
  jmp PMod9 g( s* z4 e  u$ M) q, K* a
PMod:
: C8 m9 @' H. f+ b8 i  mov fs, bx( t5 B/ k# d0 C3 S# U
  mov gs, bx5 t5 a% k$ r0 ^: E
  mov eax,cr0) k0 D8 y  q" c+ }2 v
  and al, 0FEh
' J, C. D, P/ v2 T, {  mov cr0, eax  9 g" d  u/ ]2 @9 a% c0 z$ r
  jmp RMod
$ y9 l1 w! ]9 v' m7 Q2 S4 M' jRMod:2 I+ Y# o' M/ I7 j. L$ _
  xor ax, ax
8 L! m3 i9 z: O  mov fs, ax
# s) E3 Q% Z6 E" I  mov gs, ax5 m2 f& p* p7 S1 ?  N( X/ ]2 o
   
/ o4 ]: \! z5 ^1 J1 l, H6 m/ t  sti
$ g0 v3 F- s$ S2 c) ^& m! X    5 q3 S8 C0 h* Z7 y( j5 V# z
  ret9 G( t- X9 e4 S) t8 b! k$ X% I$ W+ a: J
big_real_mode ENDP3 b) l$ q& l! e7 L3 o9 K7 O" f
;------------------------------------------------------------------------------------------------2 ~! x; t+ F! x* x
real_mode proc near/ G' k; l; Z( v. R# a0 ~2 i: B
  in al, 92h* e; D: e5 C- T, O* o3 D* b
  and al, 02
. M4 g1 ^" p* f) ~  out 92h, al   
# Q! B/ `4 g! K; u1 ?: I# N( ?  ret
: a, l2 T# M; I2 {- _real_mode ENDP+ R* R; c4 L8 a: c% z
;------------------------------------------------------------------------------------------------1 X) m7 u  k! s% z
Get_Commandtail PROC near: G/ V5 ^) u0 Z/ Y6 Y7 a
  push es  ' X' f1 M5 U$ ?
  pusha
: U3 H6 Y+ z, T7 X& i  mov ah,62h  
3 c& P' J! T: X* ~6 O- }  int 21h
! s% {3 y4 {3 [6 z" P+ s1 M3 ]  mov es,bx. r9 J% w4 m: l! h
  popa  7 a' U+ b6 D2 j* s) H
  pop es
7 t) k* ?5 k) X& ~* V  ret
/ O7 z/ E# @8 K$ a% bGet_Commandtail ENDP
# ]$ \( N0 A. B$ W;------------------------------------------------------------------------------------------------7 j; S$ ~0 ~7 s8 I# U
PSP proc near$ ~2 q2 ~! W9 O' X6 a
  mov ah,62h& U2 k, M% Q, d8 F, R  P$ @
  int 21h  E( P; b# h  t, N( S& W# [2 ~
  mov es,bx   / E# T, \% O$ T2 i, o; F" u: F
  xor ebx,ebx
. [% M) Z  Q$ }  \: L. k/ `  mov si,82h9 n% K1 d% c- m: a. W& E
  mov al,es:[si]  \' e/ J7 P, g, d6 F# I7 `2 j) W6 B
  call Change& [# E0 ~  U2 a
  mov cl,4
& i. ~% s4 l8 `; e+ g  shl ebx,cl
9 @: _$ w5 x" j9 ~  add ebx,eax6 w* `4 C4 n3 I+ Q! B& H/ l1 [
  mov al,es:[si+1]
# {. t8 i# a0 q( L& E& Q  call Change
+ h2 U& Z8 t* L  p( P) ]6 |  mov cl,4
# J0 R- `( l2 A  X1 `3 N! K2 N+ n  shl ebx,cl
8 {' l4 r2 F. F  {  add ebx,eax& b, a8 n6 q+ _" [+ h! x" L
  mov al,es:[si+2]( U( X- J% i9 j+ p  n0 p1 _$ g
  call Change0 j. d: G  X- u( m# B! P8 C- e
  mov cl,4
) N2 L1 v+ L' x7 e  shl ebx,cl: A" R" B) L: L% L9 q! u/ b8 n& M9 R
  add ebx,eax
- j& E7 L  B5 y' [4 b+ G+ p- W- r  mov al,es:[si+3]
$ B6 v1 s! B0 E- L; K4 g  call Change# j0 \, R+ I# m9 G8 s) Q
  mov cl,4) i- r" m; v1 m6 V/ Q, E
  shl ebx,cl
) V( `3 i  m; A6 ^% r- z' d  add ebx,eax
+ F' U5 ]9 F+ w+ B  mov al,es:[si+4]# C) q! Z, T: v, N$ r
  call Change1 \% D$ n9 Z! ~+ N6 J) G9 `
  mov cl,4
+ W0 i  b4 B7 `; @1 v  shl ebx,cl
" x5 n$ v% m- W$ }; r  add ebx,eax( n5 _- u% f# j% U4 h
  mov al,es:[si+5]( I' x* G5 U3 h' J  e* W
  call Change  ?5 X- ?" J, S  e, V
  mov cl,4
8 J' J, ?) u) b( I- W  shl ebx,cl
. e8 g1 Z" w. {0 Y; R- y  add ebx,eax
0 e7 Y7 M9 {- q! W" u0 w' h  mov al,es:[si+6]
8 U% r/ ]% J  c  call Change3 j7 V! ^$ a: I3 O
  mov cl,4% O& `/ G  h5 H8 Z
  shl ebx,cl
9 r3 Q+ s! H- j- l  add ebx,eax0 k% {/ i. z$ j( s1 u& @' y$ ~) J
  mov al,es:[si+7]
5 ~: m7 d/ ^6 _  call Change
4 W3 B5 h& u$ V# j0 P  mov cl,4, V  k* R9 ?7 C7 q0 B4 k
  shl ebx,cl" U( \" D5 C7 l3 f: k) G
  add ebx,eax
- s' K! z, ^2 n% e/ v. B  ret
+ j! r% j) x; }5 I' I% Q# NPSP endp
3 p0 u6 d/ u3 L' r# F9 C;------------------------------------------------------------------------------------------------7 |- H8 ~8 ^/ S& |0 _) g; D$ m
Change proc near
. A; C2 x- F) L* k4 sA:   
  s: B! s; u  Q& [$ p; C  movzx eax,al) n& `( z( J9 j2 `3 `, `6 T
  mov edx,eax  j" D( P/ Y. R/ _
  cmp eax,'0'   
$ d8 \' v$ u* o2 ~  jb A
* P" L, D, [/ V7 ?& j  cmp eax,'9'   , O3 a* ?+ e1 |* n- F
  ja B
4 \) A7 m  _5 o! \- l5 E7 o8 k  sub eax,'0'- y: |7 J' ^* i: S" S: q* |/ H7 D
  jmp short E
" w( }, i  `& d- w" xB:
# L' P2 `" z! e' |5 J2 E+ ]7 n  and eax,0dfh   ; R$ h; p  ?9 A& h6 O
  mov edx,eax
% B5 K! a8 B0 s/ k% r5 _# r  sub eax,37h   
5 i6 c9 B. c0 @( D$ q/ H# X  cmp eax,0ah
: A7 d: V% z  W+ }, [: b+ }  jb A   
/ u' z  ^( A2 o1 K  cmp eax,0fh5 s; _# Z  e$ p2 r# G9 u$ s" h
  ja A   
  b8 ]2 h5 i/ B' R8 eE:4 Z; ~5 {8 U& \% B+ o$ g
  push eax   
% b' P0 R% ~% F) \7 @" R  call PRT   
  g" S2 _, Z, n; Q8 F& y6 d$ \  pop eax
* D1 |$ V) C  I/ K' KCExit:8 ?& `4 F" v* n3 b# v2 Y
  ret6 W! |3 |2 @% A5 K* ^
Change endp" R5 u$ P$ |* W
;------------------------------------------------------------------------------------------------
' a& z* N* n; i2 G" |PRT proc near. e- g% s* J; g- S# t
  mov ah,02h
# h) o0 M0 Z0 i6 @  int 21h3 O6 B* L/ s" G: }
  ret
7 m# s1 G4 C! q- dPRT endp
! t/ F5 e. i, R6 m;------------------------------------------------------------------------------------------------. \9 u0 n0 ]$ v3 Q
crlf proc near  c# s9 t0 }$ ~) s+ Z* u- }
  mov ah,02h4 U+ {7 j) @: ?' x7 }
  mov dl,0dh
2 j* }" x8 V6 P$ Z% j6 v  int 21h, L  m6 Z! h6 s' f
  mov ah,02h
8 N! }6 z5 w' r$ I- x  mov dl,0ah1 o; V) v6 F& @
  int 21h
4 N! |2 ]) I2 r( H1 v0 {  ret
) w; E8 p4 s. M' m9 Ecrlf endp3 b: W* D8 k& M9 g# y. e
;------------------------------------------------------------------------------------------------  ^: B3 Z6 ]: x0 O
_32bits proc near( r+ Z; i2 ^% ]! \
  pushad8 Q& e7 N8 z% N1 P, x
  mov cl,45 }  L+ e1 g" L* z- ^! Z
  rol ebx,cl
0 i8 Z" h+ t" Z( c, a4 x  call print_4_bits
% e$ L: k' K; \) y: _( _+ z8 w  rol ebx,cl
$ l; u& j: t# b/ Y1 V, w  call print_4_bits6 u* g. w6 s/ ]
  rol ebx,cl4 G# R6 I0 Z" g! `! ^
  call print_4_bits& R. \  z& b- M: u
  rol ebx,cl! u) _( m4 z6 u
  call print_4_bits6 ^* b9 H' P; j: g
  rol ebx,cl$ G4 g% v# o) [8 V
  call print_4_bits: `) m# q* `  E* T. Q6 z) h( q
  rol ebx,cl& T+ A! G4 q: x3 `+ P" ~& b
  call print_4_bits
' g/ S0 ^7 u+ {  rol ebx,cl
0 o" S; u! Q6 z: F- U/ f  call print_4_bits5 F3 `! c$ u4 \5 i$ h) h9 j
  rol ebx,cl
5 @' H% y* g3 N& r9 ^8 ^  call print_4_bits
* \- S/ [6 D# ^& p! r$ v' {  rol ebx,cl# D/ V1 j, m: N, N  W$ N
  popad
# Q) l5 o) k5 Z. n" S# \  ret8 X$ N% U- n% m
_32bits endp
. p5 g  u) I: g8 a7 O8 y4 l, ];------------------------------------------------------------------------------------------------
) Z" p; a" q  X* L7 }' ?_16bits proc near. G! P3 [( t7 d" z
  pusha   0 q6 ?0 X9 c) j, M
  rol bx,cl4 J$ d; x& i6 q7 Q4 h
  call print_4_bits: X* q  C* u: U) S( D7 J
  rol bx,cl  e3 }( d$ n/ J% G' G) r, q
  call print_4_bits
! C* z/ s3 n  m8 Y8 @8 V. y  rol bx,cl' i. \4 x7 Z- f) B3 ]
  call print_4_bits  g4 \& _% c( P$ e; v' l" u* `
  rol bx,cl: V5 M; g6 G3 o2 ~0 |
  call print_4_bits' Q; m. V5 j& g
  popa
/ ^3 D% @; k% ?% \5 z$ i& c6 D/ [# t  ret9 {7 Z& T. A( ?! i0 B3 j
_16bits endp6 `" g) N: [- x0 t- E: R
;------------------------------------------------------------------------------------------------5 _* S  a; I- b4 [' g' M
_8bits proc near
+ o# @' o% b1 m+ b. ^  pusha   & D/ X- W, A9 E7 G, x
  rol bx,cl
5 V4 Y1 e6 e. z7 l! A  call print_4_bits
; K- w9 O# P2 z' P5 c  f  rol bx,cl
3 E: C  v! [' J% f; R  call print_4_bits
- J- Y1 \+ H* T/ v+ q5 F  popa
" d( z5 G& @: F  ret5 ]% t3 b' S1 c9 C( G
_8bits endp
- _0 h- a: `, E, y3 G- B5 _;------------------------------------------------------------------------------------------------/ Q+ }) J/ X' F! A
print_4_bits proc near* R+ X- w7 n. \8 g; a# Z* D
  mov dx,bx$ l% Z  e* Z; h  e& g
  and dl,0fh
1 k9 j8 H  S" q; L9 c3 }  add dl,30h
: ^9 [/ P! `4 ^2 Y- Y  cmp dl,3ah
, W5 ^) C. c; a! ]  T  jb print; H. U# r1 z* H% x  C! B7 Y' t# Q6 z
  add dl,70 J; N' i/ ~8 t; G2 j7 d# K
print:   : J/ I$ x6 y! i* O+ N9 T
  mov ah,20 M; F. N  ?: x" ^
  int 21h# _" ?, r4 X) D9 N1 e
  ret! S  P; y- H) Q+ F/ Z7 y/ V+ U. L* f' E
print_4_bits endp   
( C& R9 }. L" ^;------------------------------------------------------------------------------------------------
/ t# H0 ]. `; m8 J" bCSEG ends$ V: @/ i- i4 g% A6 t
END
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2026-4-4 14:39 , Processed in 0.132902 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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