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

顯示string會出現亂碼

[复制链接]
发表于 2010-10-19 16:41:51 | 显示全部楼层 |阅读模式
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值
" g  z- L9 @' Z4 ~1 V5 B
# @: f3 A  f: y例如: C:\memory.exe(程式檔名) 01000100(Address)
/ b1 p+ _( K6 a' D7 p/ z' [
* G- I: W) y6 y則會顯示01000100位置的值& b5 ~8 D, v( J8 }$ I
! W# v$ g# t6 _' n+ H
但是我另外還有要顯示出字串,但是顯示出來都是亂碼
( O( f! ^: ^$ B- C2 C3 y2 R1 `
麻煩前輩給我一些指導,謝謝  ; n$ V0 v, Z% p5 ~+ X. U- M
1 Z1 `3 l6 _( G# U# x" C& D& I
8 h  }9 B, E. J+ Q/ J
.model small
0 z1 ~4 q; g$ L' m.386p
1 h  i  q# K8 S) A( d;------------------------------------------------------------------------------------------------0 c% ~; J0 \! L5 ^- k, t* t! w8 A% J
DSEG SEGMENT USE16'data'  
+ t' L6 ~5 d1 M5 m/ @2 }5 [& b/ f  g1 F5 h# C* `: J5 i; r1 b
DESC STRUC
$ `( R* A1 n! I0 C3 U7 H  LimitL DW 0  , T: s" s# r: X' w9 @. w+ }$ z
  BaseL DW 0  $ {7 B  }% o+ Q2 R# |7 ?7 P" k
  BaseM DB 0  
/ s7 h+ {# x" f. J. V  Attributes DB 0  
" R% h5 m6 C$ d: P7 i, p5 Z: j4 n0 E! o  LimitH DB 0  / n9 S: J' @  _$ l/ W( }: L3 L
  BaseH DB 0  
9 q8 Z0 Z  ~  qDESC ENDS
7 @& L" q$ I! g! E/ ^7 ]
; S% p3 r+ l5 Y8 o  mPDesc STRUC9 T7 n- g- d3 D
  Limit DW 0  . J2 f: O: X0 n9 @" N$ E8 s
  Base DD 0  ) B# d( a) @6 W0 `" Q, B4 v
PDesc ENDS
5 k# l# @0 \: E! `% E' @
% c3 v. f8 W1 N3 X$ eGDT_def Label Fword  Y" F  `5 p5 |  h
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
; ^6 p! N8 X0 w" F  k. sData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
3 ^( t8 L. Y0 b( ~6 X) X5 pGDT_Addr PDesc <$-GDT_def-1, >
: w3 o) |! o' j9 o* U. ^& ]# K/ J" S: G9 c9 h  p' p
msg1 BYTE 'The Input Address is'9 t: i3 [; {7 P
msg2 BYTE 'The Data is:','$'" L. y3 G1 f. T% @  S+ \

2 ^* _+ C1 A% ?DSEG ENDS
) n" c9 j# W3 g/ L6 D  ~! |) t9 ?7 q3 [: s
- Z' L, y6 H; H6 e% P, {( ~
;------------------------------------------------------------------------------------------------  + M# r8 w( R! ?3 x7 f( O
+ U2 F* U: }% N' X
ASSUME CS:CSEG,DSSEG. A. R3 f5 S) E# d
; `$ n* `% x  w, u1 }( @/ f$ n9 r
CSEG SEGMENT USE16'code'4 n4 F) g6 c6 P" k6 [" I" c
  
# ^0 H, E. v# v9 p; `+ s/ Q: |$ [  push ds
5 {1 T+ f! m2 i6 J/ o  push es
4 X, T) u2 P$ b: J  push fs
' O' A! M! {/ g5 @  push gs/ H/ Y4 b+ m9 X% I1 w5 k$ v
  6 Q# w# j1 R3 e$ n1 x8 S
  call big_real_mode
$ ~- E0 n9 w4 d" D! h6 i
2 V- P) A9 T8 T( Y1 r   
  c: i0 K2 T* k6 [  mov edx,OFFSET msg1;
, H3 s* a5 _& t8 G$ i  mov ah,09h;   
! I0 d, s4 k4 ~1 }8 b' h$ `  int 21h;
6 p& `" b1 j( u1 l1 Q$ n6 L2 e  mov edx,OFFSET msg2;
+ K) d) g7 C$ D2 h. |3 _% ~  \' d  mov ah,09h;' D& P/ v8 e) b" ^: n' t& U
  int 21h;
. x+ U5 [! j6 I. m2 L   
+ l: K$ E6 l* t7 h6 D  call PSP   
6 t, h' b3 _  o: w6 x# A9 A1 V   
5 r1 b3 r9 H- j  call crlf   % u6 ]1 X* h6 i2 F" d8 M. j
    ' Z) Q- T, f3 N( }  k4 n( l2 x
  mov esi,ebx
1 Z! h2 e0 ~( j  N  mov eax,fs:[esi]5 p' {4 j$ n8 I4 B0 j" J3 t6 C5 n  k
  out 80h,eax8 \! H$ y. U9 Q! H% k0 g. x$ ~
  mov ebx,eax- X! D1 g! f7 L
  call _8bits
4 P$ Z9 w. ~* Q$ p   
# ~' ^. y! z8 D) h* e  q5 f0 i  call real_mode* e! u" B; [' K# T* p
    & @4 u  Z& C' t% C5 G
  pop gs
8 w; O/ e  I/ L& i/ l  pop fs
* ?0 b! L, M( h# n) T- H  pop es
9 g) `6 q8 ]' A0 w$ N. A4 x( @0 N  pop ds
3 |1 l* d0 k+ P4 E8 b   
' g. P  ?+ g( j  .exit
9 G9 o% Q* W7 j' d0 p;------------------------------------------------------------------------------------------------
/ ~( }# \' |4 K% o  Y- Fbig_real_mode proc near4 Z+ ]- m1 ^' F% O. Y8 S5 S
  in al, 92h
) v: J. T7 _0 c" F/ H9 k  or al, 0020 c  M- ^" {: N9 z5 Q/ \5 V
  out 092h, al
" H* O+ E1 p  E- p/ `9 v  out 0edh, al
/ h) }3 X3 p# S& O8 T  cli
7 @3 W- w' n6 p" F! P  mov eax,DSEG8 V; d3 e5 \$ o4 t' j; S& `2 o
  shl eax, 40 a  H" k) H& b6 Y3 a- b5 y3 g4 t
  xor ebx, ebx
1 D& k9 e0 A; j$ q! J+ H" [  mov ebx, offset GDT_def
7 c* V7 w5 J( d* v0 @! ^/ t$ W  add eax, ebx3 v# x( H# @8 e. H" t; ]% j
  mov dword ptr GDT_Addr.Base, eax
/ L' ]3 x- }( `9 d' E- G# `  lgdt fword ptr GDT_Addr
, V( |: `8 _) c  mov bx, 8
7 @  x8 o+ g* m0 g( n5 t5 i  mov eax, cr0, j6 {  w5 J" D( {4 r% F
  or al, 1. O3 S! y4 N" K4 [" v
  mov cr0, eax5 e- z/ G( q5 V  f( m/ }; s/ s
  jmp PMod
+ G1 x& g8 Y' cPMod:2 z1 H$ P1 G: e6 p# x% Y  d$ I
  mov fs, bx
4 Q( x+ L9 m+ W2 ?1 |  mov gs, bx
- W5 ~; H5 p  N8 A* p8 Q% j4 ]  mov eax,cr0
' g$ m4 S  \1 A, Q4 @& R  and al, 0FEh8 I; V) K5 n9 C8 \7 D' @9 x0 W, p
  mov cr0, eax  
% \. @% V  S* T  jmp RMod; _0 H( V5 h/ r. h3 g. a5 w
RMod:
; g) R' Q1 a& I5 f& I) F9 s  xor ax, ax
. a) m6 |3 H# |3 r; Q7 ~* ~8 {/ ]  mov fs, ax1 E6 {  u: g- t: E
  mov gs, ax2 t( g+ }& F' o' i' G- g
    ! E3 w( v" W- M. m1 T% }7 N
  sti
! {6 @6 r! C% P3 N# s' K4 y   
3 [: E9 n/ v; x5 }  ret" v8 w, [$ U* O4 G6 ?( p
big_real_mode ENDP' {" Y( ?6 e5 T- u
;------------------------------------------------------------------------------------------------, K" k. M  F5 x" ]" g6 K
real_mode proc near  ^7 h" \: ?1 G7 L/ x! m
  in al, 92h! y0 k2 U3 O8 P% U- S
  and al, 025 G+ j, [! q; C% ^% ~
  out 92h, al   
$ j. h5 w# [6 U: o3 H8 l  ret
. I1 w% A, i# M1 M$ N- R2 K. _real_mode ENDP
2 K3 K: p5 b8 {;------------------------------------------------------------------------------------------------/ N0 y, a/ E7 C0 A  s& ]% ^( v
Get_Commandtail PROC near
# ~8 H5 L  P  _! ?4 p4 M  push es  
* M' D! h8 p* n2 A( m2 \  pusha
! U9 \8 b8 Q3 w+ {0 J: f2 a$ ~2 A  mov ah,62h  5 B  X3 u" j4 T# n4 U1 F
  int 21h
" b6 A5 M* f* _) p& C8 z  mov es,bx
' c8 l2 j. F0 q; h" D! m$ v2 O& _  popa  
: {+ G4 \1 X* d  |  pop es, n. I2 M6 V8 B* p/ @+ w0 K0 U
  ret# b( q" f. ]2 r' a, L6 s# p. [
Get_Commandtail ENDP
4 y" i1 R3 P* r; ^- O;------------------------------------------------------------------------------------------------0 `- g% P9 E* e" h: ~% o: ]
PSP proc near
% c9 x9 d. n' t9 t3 B/ F  mov ah,62h
0 B( z% n4 _3 d0 S% N4 I  int 21h
: X! M3 k+ e5 ~- U5 N; x* I- X  mov es,bx   
4 p0 v. K; _: t  xor ebx,ebx' a* K9 ?& z1 G* p4 S1 P7 y- E0 Z
  mov si,82h$ o/ e; F9 x& Q) Q, E0 u
  mov al,es:[si]; @, s5 P( _& N0 C, x) D# ^
  call Change8 m" y4 K4 J5 N3 G4 m, |
  mov cl,4# U0 Z1 X; {; S% ~! U
  shl ebx,cl
" s0 X7 p2 ~+ s; G4 o( [4 ]  add ebx,eax5 p  r9 Z0 u  |
  mov al,es:[si+1]+ D$ j& b9 k7 \. \% q* w& x+ C
  call Change
: N+ I1 j" \0 w9 G/ t/ `  mov cl,4/ h/ ^( ^! C9 u4 D: L
  shl ebx,cl
+ F  M  C& L/ n  add ebx,eax
5 _9 F  y0 t' d0 F  mov al,es:[si+2]: f1 G/ Q2 V/ p. ^8 V) k
  call Change0 s1 s, @. |( A$ Y
  mov cl,4: H# D$ Z5 Q$ n# B; p1 b) L
  shl ebx,cl
4 |/ G: d) Y# q6 T  add ebx,eax
! {! s  o) y. Q3 {  mov al,es:[si+3]
1 A  G. C' K  q8 D1 \  call Change
5 E5 z8 E! I* C2 V3 B  mov cl,4  p% \6 G/ z  N2 G9 @
  shl ebx,cl
) C. S( C; d( Y8 R  a- L  add ebx,eax
# j' q5 B# Q, ]5 ]  mov al,es:[si+4]! v& [$ a6 M6 u, I3 ^* j% R
  call Change
+ ?" l$ J) ^, X: L2 ]) y) r  mov cl,4
' p- C6 C- x, @. n6 T  shl ebx,cl
% V0 \% _# C. u. P- k$ X  add ebx,eax
* S  @& d* B0 j; j  a& X: ?' Y  mov al,es:[si+5]8 m0 m  n9 W  S) T9 a
  call Change! |4 h' i% i. ?9 `
  mov cl,4
8 y" G2 l( [1 a+ W6 j9 m$ {/ p, g  shl ebx,cl" G% J* o* a0 i% X6 S" @, J
  add ebx,eax
# R7 Z- c$ O. e* s4 H  mov al,es:[si+6]% x2 Z2 [" D8 m, A% S% z, u& h* h
  call Change
8 p9 b# l4 @9 C9 Z7 B3 s) ]  mov cl,4
& n7 k5 o; B5 V5 b( R4 t  shl ebx,cl, x& h3 H  H# v, A) w
  add ebx,eax
; M) A* Z0 K3 q. F+ ]7 F  mov al,es:[si+7]
+ O2 W; ?8 G+ K+ x4 _  call Change2 R& a0 v# k( d, z; e4 \
  mov cl,4
# O$ Y9 r! O8 j( a4 k" z  shl ebx,cl1 c" u" L* z: c6 A! I) B
  add ebx,eax
2 ~. y, w+ a' e% k! V  ret
/ _  t9 ~1 s1 z9 A& [5 kPSP endp5 ?6 v( v) w2 O& F7 N
;------------------------------------------------------------------------------------------------
  ]) l6 b; V" j) ^) @. G1 X$ w( Y) LChange proc near/ d1 U$ C. L1 T  b& y6 H9 ~. L
A:   
) d% P- S2 r! F# x& X9 _  j  movzx eax,al9 p% `9 m; J& v
  mov edx,eax
! Z0 ^7 h; `3 M1 Q6 _  cmp eax,'0'   
) G7 T+ t; m, Q- _+ q3 \- T) o  jb A
+ b1 l9 S- C5 D1 T& _2 L7 L5 J  cmp eax,'9'   
* O# L% S1 U0 l+ N8 j  ja B& W* d/ a/ ^  H" O
  sub eax,'0'+ D/ U' b2 |7 x( ?" e. P, v. `
  jmp short E
6 h4 N/ v( K7 @! gB:
3 n1 l, q4 {4 l: z$ g' U8 t  and eax,0dfh   2 J) K( {/ R1 J) c9 D8 K. S9 {
  mov edx,eax/ J: U! s+ y0 d7 |
  sub eax,37h   8 U0 T6 y& W% t# l: G/ j
  cmp eax,0ah, c. j2 f6 }1 s0 n* T; Q+ E$ U. @
  jb A   , d8 r0 D. \) c0 ^. n. u7 |
  cmp eax,0fh6 V: h9 b- N/ u3 J  ^) L5 J
  ja A   & _5 X2 Z8 I; w
E:
' S) ^  u3 g" z0 S  push eax   . |  \! r, J2 {7 L/ T
  call PRT     m8 P/ j9 q3 `4 V8 x6 ~
  pop eax
9 J; _" h" t) L8 ?8 w$ iCExit:- _$ P, a  m. i$ ]6 Q: Z) w
  ret
" J3 O  A" _6 A  S: E) E. {5 QChange endp: N$ V% Y" y$ w9 `5 j# A% l
;------------------------------------------------------------------------------------------------. U) P; G4 Z" w" {0 ^
PRT proc near
+ C& y. q: _! ^+ R) b! a  mov ah,02h
8 V; q* |$ Q  y; b; t% U3 d  int 21h
% B" K; O* a: j4 k" l0 N  ret) ?$ ?" q, w4 ]; C
PRT endp
9 O; r1 k$ m* u# s/ L- p2 };------------------------------------------------------------------------------------------------9 M7 p1 W( `2 k1 U7 z- A3 U
crlf proc near' O' }' I% q! M; D
  mov ah,02h
) z- P, B/ e" J7 T  mov dl,0dh4 m2 _9 D! r  U& M; x1 \+ U/ c7 Y
  int 21h
7 S9 h3 M! t0 x) a* N2 ]  mov ah,02h* \" q( Q+ t4 f" E: n( A% B
  mov dl,0ah
" L: `4 L7 ^$ R) Y, n0 D  int 21h
, O3 D- F5 l0 X7 _  ret, W! [4 n4 w) `
crlf endp
. V& t  u# m1 T8 y' x; N! G+ J;------------------------------------------------------------------------------------------------
! |1 v/ D5 d* n* [6 Y7 g_32bits proc near
0 @5 N. q) [" Z8 g  pushad" W3 h' F: w4 g0 v1 @8 I/ |  X
  mov cl,49 Z+ U% i9 m1 E# W4 Q  r3 i
  rol ebx,cl
! j! V  _- M% L* Y  call print_4_bits
8 G0 R2 L/ v! e. \  rol ebx,cl3 k$ c/ L5 H/ s
  call print_4_bits
4 K8 n% Y& a2 K- ]  c+ N  rol ebx,cl9 K& K( s* e7 K: G8 K( O
  call print_4_bits
% T0 H; c5 P: n3 D3 l5 B5 Q2 E0 H# g  rol ebx,cl
4 J+ |- j: C. V; Q  call print_4_bits/ t6 z) K4 W& s9 H0 ^: H' d' E2 G
  rol ebx,cl
) V* @! ~3 A. z# ~3 S  call print_4_bits) m  Q/ i, u" a2 d
  rol ebx,cl
/ g' i9 L. |+ y) h) b/ L) q  call print_4_bits
# }7 s' B8 X4 u& L1 R5 |2 y) z  rol ebx,cl
' c; ?! _6 F7 J8 ?4 |  call print_4_bits
/ J: ~  `1 T3 r& {/ k3 o' w  rol ebx,cl: q8 r* J0 i# Z6 @' v
  call print_4_bits
* W, T4 N0 R/ D$ L) B7 A- d  rol ebx,cl
2 P6 ]8 D$ J: p0 ~0 e4 m& Q5 r  popad
) ~) y* \! W, l2 m! R  ret
" c% O+ G3 ^2 Y* T4 i_32bits endp0 b/ P7 V% j8 l$ [" e
;------------------------------------------------------------------------------------------------
0 `9 H+ K& X: `$ B4 o8 h_16bits proc near
8 ~) W  M% ?8 H" }" f9 |! F8 j7 p  pusha   - I# u0 z, E* C7 [
  rol bx,cl5 c3 x9 g3 z: ~, C
  call print_4_bits$ V  ^9 [" P# e8 a& [- a
  rol bx,cl  A* H% |( m2 b, P2 J- r
  call print_4_bits
0 ?& |4 z: m% ^3 j" {5 U0 B  rol bx,cl
7 K8 N2 l  d  ?: V9 s  call print_4_bits
9 l+ o1 M0 b- x  rol bx,cl
  o" N: W+ z9 R6 e0 Y4 M# c  call print_4_bits% f4 a0 w' {& B6 [
  popa8 n( O# }# W0 w) `! f9 ~
  ret
8 c6 z% o2 v" P) O2 w7 Y_16bits endp
. R. ?- P" @- r  ]3 |6 e;------------------------------------------------------------------------------------------------5 U7 q1 w7 {! v3 O1 s
_8bits proc near
: Y- i. J4 z! Q8 Z  pusha   * B* w* Y; p, @) @2 @2 N% z! |- j
  rol bx,cl
" B- H( |4 x+ m9 g* i  call print_4_bits
- I) [6 k1 C0 V4 o& m" |  rol bx,cl+ ]  s+ R& d! V; H: K# g& b
  call print_4_bits
/ L5 U& D3 {  F# [$ v) S7 k8 c1 l  popa
. O6 _3 b! J1 b  ret
/ m4 [7 w5 I+ R' `_8bits endp( V4 A4 ]4 B% B1 \
;------------------------------------------------------------------------------------------------& E* Q1 c( R0 G$ b/ g
print_4_bits proc near4 p. t6 X' b4 Z, |8 [6 z
  mov dx,bx
& B# K, }9 C) w0 L5 I; N+ R  and dl,0fh9 X8 K, ?; F6 h. L
  add dl,30h
7 p; s: w0 E  o' ?+ H  cmp dl,3ah* ~) [1 O. ~5 h# U5 p
  jb print
2 L3 e7 `( i$ x9 A1 j  add dl,7
% g0 o( I9 |1 v2 Bprint:   ; b- ]( D" g- `  k+ m& m$ G8 T
  mov ah,2: L, u2 p4 g3 v( w- u
  int 21h. _% O# r" J8 t! z* c
  ret
9 |1 W) u! n0 o& }& U+ {: {print_4_bits endp   , f- r' d2 C3 g: ]' s9 v$ \: O
;------------------------------------------------------------------------------------------------) L: k/ Q6 m9 }" G" B
CSEG ends% I0 H8 \" U- l4 G3 N3 u  b
END
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2026-4-4 16:09 , Processed in 4.562117 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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