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

關於SEGMENT 宣告變數的問題

[复制链接]
发表于 2010-10-19 16:50:51 | 显示全部楼层 |阅读模式
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)! ]% M1 W! E. ^  f  h% V$ f
0 v$ Q$ l( c$ j4 U
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'5 Y& n! e; ~; H

5 ]' N; p  n' z6 r宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝  
* R% u! N& R% x4 c5 K$ t2 a+ P5 k* f- y/ G4 [& _3 T# |
.model small
+ D" E" }+ r& o* \" j.386p9 l2 I3 H) v" L! |
DSEG SEGMENT USE16'data' ; S. x% S5 s0 J

$ c9 s& p0 k2 w+ K' Z" e% E; ^# \: M" tDESC STRUC) a9 E) o# r& Z* H! Z  {4 f/ R  x
     LimitL DW 0
" t$ n, O; D& m     BaseL DW 0
3 u( w9 c# t2 d6 }7 Y1 \1 H     BaseM DB 0
& q4 U4 E" K$ H& ~8 _8 t$ q* Z     Attributes DB 0
' C  W; C1 h! i$ j+ r     LimitH DB 0 ) @1 H: S. g) E9 E% a4 _; S! k
     BaseH DB 0 , h5 P2 O. T+ Z. l9 @3 Z
DESC ENDS# t, t6 _4 @2 `- u) N

( t- e5 H+ b9 A% aPDesc STRUC
" c$ o9 x( E  D/ x; C7 y     Limit DW 0   |& w, U. O2 ^9 f
     Base DD 0
# c2 d9 K: l: @0 J" M. [PDesc ENDS* e% f# [  S6 c3 y
8 R  ~5 N3 l, d& d5 Y
GDT_def Label Fword
5 v0 `& ~; R% dNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
7 b% d  h# e/ u$ d- w3 _& ~Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>. `9 K$ b  Y1 V" ?+ d2 y, y* G$ g
GDT_Addr PDesc <$-GDT_def-1, >+ U1 p) `0 ?- O0 Y' |( P! B
8 I6 r7 i' T# m0 N' R
Maddress Dword 06 }8 g% N- E. P: X# N* T

9 `6 ]( H, x$ u0 \6 E$ h' Y' wDSEG ENDS - c8 I' c. j7 L2 E- @" b
ASSUME CS:CSEG,DS:DSEG
) r1 }+ D4 a' w: e' [/ k! t% p1 A6 D# |0 E
CSEG SEGMENT USE16'code'
- b& c! y# Y7 M3 @( ^7 P      push   ds7 s9 h8 l2 O* f9 G% k" [
      push   es' V8 K! {, m8 R7 m1 _9 A- x: E" J
      push   fs
1 c! T1 ?  A: i- o, a7 h      push   gs
* W1 @' U4 i/ y      call   big_real_mode     6 @- s: Q) T5 T
      call   Get_Commandtail
: }* q9 X, {# x; H1 q% R      xor    ebx,ebx
' }2 x+ F9 c7 f* w3 X+ ?/ u8 O      mov    si,82h
' o) |2 o- r! e- t; {- U' U1 M      mov    al,es:[si]
9 I, l$ N) U& M8 I/ T3 S" {      cmp    al,'r'
1 R3 P; n3 T2 G. \' x      je     R
* f- Y7 l6 l2 e) v5 y/ a      cmp    al,'R'
4 {5 |& i  V9 R. F      je     R
" x  G! I% A' o9 d4 l' ^      cmp    al,'w'
$ ]* s2 Q- I& N2 f      je     W3 A9 N: s/ ~6 U( Q! Q; A8 a4 O
      cmp    al,'W', c7 p' m" `7 M
      je     W         
" L2 v$ l( ]2 @# k4 QR:
% i  h3 F: E7 u6 b: S  ^: |      mov    si,84h" x6 `5 ^+ \9 r8 `' g1 ?% s
      mov    al,es:[si]
" f! H# L1 K# H6 @& Z! r6 n      cmp    al,'b'! Q  f' D: H6 c4 r  c/ x
      je     RBT, D; w' P9 H3 G: ]
      cmp    al,'B'
% k' P; v  G) o' R5 M% l      je     RBT, R" a: L2 Z% d
      cmp    al,'w'4 S% k9 `3 g. x! Y/ o, t
      je     RWR
0 H! g- \% U9 R% I% Y" P      cmp    al,'W'
  |& {. b* J9 v3 A. |2 T/ n6 B6 F3 A      je     RWR
$ W+ B5 x* _7 R* G0 p      cmp    al,'d'. {: Y  l; L+ |  U$ B) c- P
      je     RDR
% V9 z$ x$ i. y      cmp    al,'D'& V' g; \. @% k. b5 s
      je     RDR             $ U5 @' W6 Z3 J3 j  s, E$ t
W:      2 O2 O8 L- D, Y6 |0 k; z8 n3 m
      mov    si,84h
4 O; ]$ r" G- |6 O. F; w# s0 D      mov    al,es:[si]
* ]8 ^% t+ i* a; ^' Z      cmp    al,'b'
2 T( ^$ k$ d! B" w7 K+ V2 e      je     WBT
( N3 _  t/ b$ Y6 L      cmp    al,'B'4 G  ^+ [/ t% T! `& s  @  {1 u
      je     WBT9 t0 P# J! [) }0 S3 X: |
      cmp    al,'w'; {$ x6 C0 I% B0 B1 ^; B
      je     WWR
$ G9 s# y& a4 m% p      cmp    al,'W'
! W$ W- }9 I+ g0 V0 H* t% S/ I      je     WWR
. _" O+ |% G; `. a, _3 E      cmp    al,'d'4 V. ^* p( P& v
      je     WDR
1 J: l; G( L& v. F) U3 P      cmp    al,'D'8 m8 _$ r( l) I1 x# k* k
      je     WDR( y+ Q/ L, q& D! q' N  A
RBT:9 P" d, w4 ^, W8 I( `
      call   PSP        / m7 C! |7 H0 q0 [- X1 a9 i
      call   crlf           
4 C6 D' l* W1 I3 m      mov    esi,ebx3 X3 L* t; B. Q# u. j9 Y2 V
      mov    eax,fs:[esi]
" m% ]8 Y0 V  S5 K5 ]1 \0 N2 M      out    80h,eax, U" M# `3 a5 u2 q  G6 {  J: m. v
      mov    ebx,eax+ Q# ]4 ]" f& X: r
      call   _8bits
' f( V. p  B/ S- g      jmp    Exit7 \3 `. w. k/ J+ c, o
RWR:" {6 X+ l. [/ b2 c+ u3 j! o4 G( @
      call   PSP        * b$ V. q4 W9 W3 O& k7 G6 b5 d: s
      call   crlf           
9 c8 O+ i+ ?$ A9 `2 c; l* P* v      mov    esi,ebx2 p: Y( t# }) a8 ~" w; V7 c
      mov    eax,fs:[esi]
0 q# y3 J% N0 ]+ b8 R% v& h      out    80h,eax
& Z& _. @/ O* ^! L! E) P1 v      mov    ebx,eax! L$ L- C% u( o; N
      call   _16bits
& k* ~9 r8 k8 w( p$ ~# m      jmp    Exit% m  G# u& s5 x: S& g. b4 {
RDR:9 Q" L7 n" |) E/ O; \
      call   DPSP        
' Q8 w1 C) i7 l$ m      call   crlf           - \) n5 [5 `# o$ I0 Z  f' |
      mov    esi,ebx
; z* U& l. d0 w1 G      mov    eax,fs:[esi]
5 {$ i: x( R- @7 q9 g      out    80h,eax5 j. u' c  n3 W" `% J! c: h7 ]9 f/ H
      mov    ebx,eax, ^' s5 M# [  |  O! D8 _8 ~  q
      call   _32bits, {; {7 a2 q- s1 v/ x. B- @
      jmp    Exit2 k" F* Y9 R' [6 ~
;------------------------------------------------------------------------------------------------1 L0 T& M3 R  C4 p5 S% R
WBT:
: C8 U( z/ H! }* f. B' {" `2 _0 t      jmp    Exit& f, x3 _; ?% S3 j' r" ^+ S; B
WWR:
& u1 U  z3 ^6 [9 h5 }      jmp    Exit. x8 S0 @- N/ p) m
WDR:
  q3 o/ y( K/ ]5 P3 x      call   DPSP. O, [4 }3 b, J; |& o
      mov    Maddress,ebx      7 P( Y; _- M( {0 N
      call   crlf5 l$ Q# c, V" C. b
      call   WDPSP; ?7 P3 O" O7 |
      mov    eax,ebx
2 x! `4 K9 P' U      mov    esi,Maddress         
" R1 S7 q  n8 y0 a; H% X      mov    fs:[esi],eax& a) n+ I& V' U% s  j3 w) w" r" b
      out    80h,eax
: ^4 ?! ]: f0 C  I      jmp    Exit
' |" K- w9 o' w' c# S2 A;------------------------------------------------------------------------------------------------       8 h( `7 q* e; Q2 I
Exit:* m$ c9 @9 l/ T5 }8 g+ F+ H
      call   real_mode     
5 U, ~8 O4 R8 ~8 p9 @( G      pop    gs8 W6 q7 K) l: M" e$ \$ M
      pop    fs3 g  |7 g- F+ x6 P- V! ^& h" N2 d
      pop    es
  Q  D: L  o0 Y! e; R/ _8 W      pop    ds       # _# M8 X  J, [) j7 I! H; s' {4 e
      .exit
, ?' Y- f2 V, s+ |" f;------------------------------------------------------------------------------------------------0 g0 O1 ^  C) ~& a$ y' {
big_real_mode proc near+ t0 a; Z/ t* {" o9 J6 _% b! i
      in     al, 92h; j* _7 Y3 u9 D% M3 u( K. h: F/ }* Z2 q, @
      or     al, 002
- ~1 S4 i7 G! g5 c      out    092h, al
7 U& o( d, U" ~( e7 J. }! U: h      out    0edh, al% B( `9 i; J; t4 v" M6 a
      cli* R! |% U" w, A9 t# s( G7 B
      mov    eax,DSEG
, s: v. N- L: {( K; T1 B/ W      shl    eax, 4! `. s0 U" ?9 I$ Y5 Q% W6 @
      xor    ebx, ebx) G0 I: o( I6 T) y4 }5 V0 Y2 r
      mov    ebx, offset GDT_def
- z% ?+ O5 m2 }. @. g      add    eax, ebx
: i  ]$ U8 X. Z9 F: K/ S8 X      mov    dword ptr GDT_Addr.Base, eax' ]8 [0 w7 N1 {/ J, M
      lgdt   fword ptr GDT_Addr$ o6 `$ x  F/ @( e: K8 A( Q
      mov    bx, 8
, H; H' h# S  j2 `9 w6 I! i      mov    eax, cr0
) T, n5 T, Y) X- i7 a# Q7 f" ~3 c1 r! L( d      or     al, 1" J: y7 o6 r. E4 [7 V) h8 s/ k
      mov    cr0, eax( Q2 [" R) X- O  O! ^
      jmp    PMod, X9 t" `+ r* B
PMod:
" L2 F- {6 U+ r! Y      mov    fs, bx% q9 P* n7 M2 {# N7 ]
      mov    gs, bx/ ]" `" J( O) ^& v8 R, Z% k
      mov    eax,cr0( {* J( _' L8 j
      and    al, 0FEh# S, [3 w/ q5 b  c9 o4 J
      mov    cr0, eax
: Q; Z! Z+ D$ _% X) o$ c* \      jmp    RMod" J6 q* l1 `8 V
RMod:( M7 x$ x# H* {& V3 t5 @4 s' F: s
      xor    ax, ax
, H4 E: ^3 Y  v" j      mov    fs, ax' L9 K; V; J; g5 X2 @
      mov    gs, ax     ! `/ W% q, `9 A8 F* f
      sti     
* G% l0 {5 M$ j. ]      ret
: u' N4 i8 y! ibig_real_mode ENDP1 n+ R, G3 K1 v6 v
;------------------------------------------------------------------------------------------------
  I% M, c: }- E7 W* o+ @% ireal_mode proc near0 x# I2 Q; ~2 P- w2 Q) p
      in     al, 92h
; q0 t" p; i4 j0 c      and    al, 02- @! H+ z! w$ Z8 y: ]
      out    92h, al   
. p" N3 g8 t  X      ret
! D' p; G8 t6 ^real_mode ENDP
( V! v# T8 o6 D( }8 I2 J* @8 _;------------------------------------------------------------------------------------------------
) D' z. t# D2 o, B8 K% c; \% OGet_Commandtail PROC near
% Y! Q7 K8 C; t. ?* [  F* g+ A6 y4 ]      mov    ah,62h 2 q8 U9 I- s9 T7 R7 a: R
      int    21h( c8 V- K' i8 l5 d! O$ Y
      mov    es,bx
- h- X- d, ^% g      ret0 U, G( ]5 L3 e+ m! O: G; o3 Q
Get_Commandtail ENDP    $ A" v& p  t$ D4 G/ K. r. [) k
;------------------------------------------------------------------------------------------------
5 T+ t  N0 B: I* w' n! aPSP proc near5 H& G- e" Z4 l) g
      xor    ebx,ebx2 v! Y1 A9 ~# X+ v5 R( I! P" E
      mov    si,89h8 a2 p: k2 V& F0 j( `
      mov    al,es:[si]9 e; g# s, a5 N* P6 w2 d1 |1 U
      call   Change
4 H+ x% F2 j, L  `& n7 c' \      mov    cl,4
! Z4 o2 ^' Y. A0 u' ]7 `      shl    ebx,cl
$ Q- S1 E$ z" f8 ~7 g5 i) t6 p  T6 g      add    ebx,eax3 F" a9 [+ b. d$ `* X9 P0 z
      mov    al,es:[si+1]% J! A' @. [/ B; G6 |
      call   Change
; }. |3 Z0 S0 F      mov    cl,4. a. y! G! }" J3 [# o8 B
      shl    ebx,cl) t' q) ]' J1 O. ?, x0 C1 K
      add    ebx,eax! ?$ S1 {) v% I1 v
      mov    al,es:[si+2]
8 T8 {# j$ r# f      call   Change+ ^2 Y& t, ~. j: d& |0 H0 d
      mov    cl,44 h/ O/ N# s" _& E; z
      shl    ebx,cl
- I0 ]& J* M' z9 |. }0 v( \3 p0 E      add    ebx,eax' ?' K4 N' ^( y+ b9 B
      mov    al,es:[si+3]! g0 `- {$ ^1 ]1 o; O
      call   Change
8 X9 j3 C  R5 ?0 U' w      mov    cl,4/ n" Q, J* Q, S6 b+ |3 u
      shl    ebx,cl
4 i+ F! k* z0 ^1 `( O  R* V6 [      add    ebx,eax3 O+ U( w" x/ d) _
      mov    al,es:[si+4]! f0 L0 ~3 `. Z" k- r! e
      call   Change4 U9 V) j, L& u2 M" O# B
      mov    cl,41 }5 w5 `9 ^1 p
      shl    ebx,cl, ?1 I1 I4 r' z, k2 k
      add    ebx,eax
$ g+ ?4 i2 K. o& U) d      mov    al,es:[si+5]# t$ p1 O( p% X7 ?2 @; p6 I' }7 v
      call   Change
) X+ B6 U+ \+ P; E! \- z# l, Q8 \      mov    cl,4
% i0 W; @' o; Y! P0 B: N      shl    ebx,cl
) F8 F- i; \' [/ G: z3 ]0 y- Q1 }      add    ebx,eax" j5 z& ^  G% _9 A8 R! H0 Q# m
      mov    al,es:[si+6]
* j0 M1 }2 v8 u: w      call   Change, G! l$ z4 Y3 V1 g+ _) Z! }+ u2 ~
      mov    cl,4
( Z8 F) i. G: o4 H2 b8 y* u      shl    ebx,cl" L) P; }' U. \  w  b  w
      add    ebx,eax+ I  P* M* E8 k1 {( M# ?* `8 g, j
      mov    al,es:[si+7]7 L: m( d4 j( }1 J  U9 I% W
      call   Change  l0 Q2 w$ [" e0 G% Z
      mov    cl,4! ~' d9 y4 Z1 U
      shl    ebx,cl
- j6 S/ T( p2 k: I      add    ebx,eax
3 }4 c! t8 P' b! Z      ret
: x7 S  v6 Z, TPSP endp4 q& j+ O8 w2 }$ Y2 F/ _, _) H0 b9 }
;================================================================================================
  x$ ]9 k. X* i( ZDPSP proc near
/ R5 ^- i3 q3 E- e" t$ R& G      xor    ebx,ebx; e/ U" }+ W' T3 u. i
      mov    si,8ah. n3 w9 ?4 M# n. N- h
      mov    al,es:[si]
5 {8 j# Y5 @& B: \! \% A      call   Change1 b$ m3 C& I. y7 y% V# H+ D& j
      mov    cl,4
, V3 D" J$ h3 h      shl    ebx,cl2 B$ F5 T/ x$ g0 ?& B
      add    ebx,eax
- U' i9 W3 ~$ T$ J% W% ]! v: k& d7 L      mov    al,es:[si+1]
  J$ N* z* s" l. N      call   Change6 O1 T) |3 z4 e( E# [4 G$ _9 k
      mov    cl,4: j1 A1 W7 ^+ q; f. M
      shl    ebx,cl* y3 R$ v3 A0 i: p
      add    ebx,eax
/ d0 J% F" ]% n) ?9 q$ Z, z0 l      mov    al,es:[si+2]) R& B& @8 {( o& L, i) S) X' o6 G
      call   Change. P& u  ?+ P' t5 }+ j" b, D2 q: N
      mov    cl,4- y! t2 p/ h; B  ~
      shl    ebx,cl
5 Q2 |/ J" ?  l; k, h5 H& X8 y      add    ebx,eax7 Q; n8 z' C8 q" _5 }. A# K1 E4 ]2 K
      mov    al,es:[si+3]# n' A) f% w0 Q; k+ ~1 v
      call   Change
/ ]: `, ^7 c6 y5 \2 C: n: I, E      mov    cl,4
( g$ E, I( I8 a8 j& Q      shl    ebx,cl
3 W4 X+ m# J8 F      add    ebx,eax
, h$ v3 C$ C$ \8 ]3 E( `      mov    al,es:[si+4]1 i6 K4 I# i6 h9 i
      call   Change& \% B1 h/ c5 j! W& W
      mov    cl,4% h: p' `' L2 @' O
      shl    ebx,cl% R. [; i! u7 g$ D: {0 D' Y; T
      add    ebx,eax
- T9 T9 B) M/ P1 d9 P1 F      mov    al,es:[si+5]
: p2 f# U$ x- S8 q! |      call   Change  }1 c+ R: E. H$ H9 }
      mov    cl,4
! F% o1 U8 a. u* I  C      shl    ebx,cl+ h, L& Q9 q( B) L* `
      add    ebx,eax
- x5 T1 W* Y' r* m( C7 W      mov    al,es:[si+6]
9 n4 A1 h4 b# L8 V9 |      call   Change
: P* v4 Q  f+ {# a      mov    cl,4* n6 h6 }! [7 k0 F9 _
      shl    ebx,cl
; u; V2 F( y% \, M      add    ebx,eax
, T1 U& @# [% @% @      mov    al,es:[si+7]
$ V& ?0 o+ D* M% K  @! V/ M' t      call   Change
2 W# l, G& m$ V, R% |      mov    cl,4
9 d" R6 |+ S% G      shl    ebx,cl: K+ Z9 N. _- B" N7 |
      add    ebx,eax
5 J: I; i1 f% R* r( H      ret# k5 `& \$ X- t8 u
DPSP endp5 W* {. [" I: |7 l: ]# r  O
;================================================================================================
5 X/ ?. s- V# u, M+ T  BWDPSP proc near
- T6 W9 L8 D4 Y* D5 N# m0 L      xor    eax,eax
7 e/ @/ ~5 O9 R2 e$ W2 X" z+ L      xor    ebx,ebx) \( y7 y8 g7 x0 }3 u( Z: p& _- M! q
      mov    si,93h: |( S9 [/ R0 k1 `' \/ S
      mov    al,es:[si]
3 O3 r( A4 X) a5 s) `      call   Change
  Q( j1 i5 [9 Q* }7 ~% J      mov    cl,4
6 e1 }2 X8 P3 Q/ |/ G4 b      shl    ebx,cl
' A4 ], K( A9 f; c" P6 O      add    ebx,eax0 C) j( ~  l& B2 _2 B
      mov    al,es:[si+1]
- m5 b1 l8 {# T: u$ D  o: ~* {      call   Change. l2 L" D7 C  g3 g' o; W' D
      mov    cl,4+ ?+ b- l" O5 X- D
      shl    ebx,cl/ m# C9 V# b4 Z
      add    ebx,eax
- S7 k# R( ?" w6 j& b9 p7 \  |      mov    al,es:[si+2]
5 |) [/ v. K- V* H# ]9 w      call   Change
6 h& L$ p/ q) D  A# b% `5 j2 F      mov    cl,46 f* K( l# Q9 {# Z: ]8 G5 a
      shl    ebx,cl
: `3 T: F' |1 x0 D3 c      add    ebx,eax1 Q) s" o# |) \0 n
      mov    al,es:[si+3]
5 `* h0 u: A# m' c% F1 B2 h      call   Change
0 J$ I, n4 B3 x& }% b& b- p      mov    cl,4
% l' S7 ~4 H0 V$ y. V      shl    ebx,cl
9 n# l; S6 P8 u4 h0 |6 `      add    ebx,eax. z) E' \  u/ v; ]' [
      mov    al,es:[si+4]
* @5 @2 Q. A9 F4 }  l* l; R& j  u! c      call   Change
4 H9 i# N  ]8 @# g      mov    cl,4
5 n8 ~2 X; q! ~2 @. z% h! z8 w      shl    ebx,cl; A' ]# u/ _5 S' u  p
      add    ebx,eax8 K+ H; C8 {; W0 X
      mov    al,es:[si+5]
) B& J6 p: W! M" y6 V      call   Change+ j/ }+ D- {) R: }$ i2 S
      mov    cl,4
: [+ r. A" J- v4 l0 v0 B      shl    ebx,cl8 E0 _) q) f- {# @% w
      add    ebx,eax
' {! K, T' V: U( M( O5 y5 Z      mov    al,es:[si+6]0 Q0 g+ T. ^0 T# q& \# g
      call   Change
# ]4 \) T" f, b4 Z      mov    cl,4' \% x. I5 z2 s
      shl    ebx,cl
: i+ R& X$ `* S& R      add    ebx,eax# p7 I+ h& }5 p+ D( ?
      mov    al,es:[si+7]! c) V; M- ~( c8 B  J) [- m
      call   Change5 i" \, X9 ?' _9 U) G. ~
      mov    cl,4
2 x$ _8 H- Z. L& K! G      shl    ebx,cl$ i# V1 `  M3 z: W* e0 F  |5 u
      add    ebx,eax& u0 H# ^% A  p  ~& u4 Z8 R; R$ @
      ret7 Y5 y: Z. ^( A- n7 \
WDPSP endp
: i: S' m# a: \2 Y8 \;================================================================================================
( d; `) q: X6 E5 u" L, u; {Change proc near
( |* t; Z0 r( p, J/ JA:    1 w( _( v' `6 q; H1 k; P  X
      movzx  eax,al: r# N1 g" T* h2 G/ h( b2 f
      mov    edx,eax
2 V0 D4 s- t- t5 a' L- {1 A      cmp    eax,'0'            $ X" u& ~3 o8 P0 z5 i/ |5 t1 V( H
      jb     A
; W, t- S- M: I5 r+ n      cmp    eax,'9'            ; l% {! I% L5 O! k$ o
      ja     B! b/ I/ o/ c; @0 v" F& \" W
      sub    eax,'0'. ~; \+ J; m5 z" J# o
      jmp    short E
: s! [" G  q  j. n1 R* R% u! ?B:. i9 H- _7 v3 \- N1 Z! ]. K( F
      and    eax,0dfh           
- j& J8 X2 c6 N1 K      mov    edx,eax/ ?2 m, j, g3 U7 }
      sub    eax,37h            , t; G: s/ [9 z5 n6 n4 k% s( o
      cmp    eax,0ah
+ w" D% a0 P- a% c: `      jb     A                  + r9 P  X, p, R8 B/ ]
      cmp    eax,0fh4 I2 n5 e2 \( e* F3 A/ s
      ja     A                  
' h$ e5 D8 b- zE:% Y* l* ]" P5 V
      push   eax      
+ L* O/ e6 U* A      call   PRT                : u2 U4 e7 m  b" d6 y3 \
      pop    eax
, ~/ i3 N6 }2 B0 u/ @CExit:
# z8 E, I) R2 h# t      ret
# {; B1 G$ m5 k( u& c' PChange endp& ?# Y: S% R6 X
;------------------------------------------------------------------------------------------------
, H! i" Q# d& I; o2 ~# ]PRT proc near
1 l+ Z$ ~6 O# V  M- C! D      mov    ah,02h. E+ n( `, P3 `/ V: F$ g
      int    21h4 r  L) w; U3 J0 r2 ]
      ret
* J& h9 I2 i* F- B  E6 z; c$ v6 q  qPRT endp
7 P2 ~% z. K; Z# }/ \" T1 F: ]- g;------------------------------------------------------------------------------------------------. S& J  k0 T8 z8 r' S
crlf proc near
9 b2 P3 O; \8 N0 a9 K      mov    ah,02h' q6 A" Q2 w9 B* K1 @3 u
      mov    dl,0dh
5 L% ^8 X: }- S$ H( s  `      int    21h
7 O4 O, u0 A% K4 k      mov    ah,02h/ H( o6 w1 M8 k3 G, ~" Y1 ]
      mov    dl,0ah
% z- j! R) V( x! C3 C( B1 P' x      int    21h
, t- m* t% T+ i2 ?7 ~      ret! o  O( T6 H  |) C2 {% U/ Q% u
crlf endp" [6 k. K/ d  h3 h
;------------------------------------------------------------------------------------------------, ?; E+ m2 o9 _7 P5 ~
_32bits proc near
% w' p/ k, @7 D% ?; O% Z      pushad
+ \0 M/ }( {. M2 P5 K      mov    cl,4" G9 ~% g5 E2 z, x
      rol    ebx,cl0 \1 |" I% ^! T* }! Q; e
      call   print_4_bits
/ ?, l, l# F4 p7 H# ]5 k! L      rol    ebx,cl
5 q. q8 a( F6 h* q5 r5 z6 N% H      call   print_4_bits
7 g1 H1 Z$ B" v9 _: a7 ]      rol    ebx,cl, P2 x9 a9 F9 u/ V( ~5 ?) ^
      call   print_4_bits
3 f, s+ T) K3 z; b+ v+ m      rol    ebx,cl
0 H8 L, U" Q4 F, E& O      call   print_4_bits6 x) q$ s+ ^% j& E9 `5 j
      rol    ebx,cl! |& |5 n9 ^0 g# j
      call   print_4_bits; f2 o# Z$ J4 g# ?1 O. Z+ z
      rol    ebx,cl& q1 f1 J( u% A+ B
      call   print_4_bits
4 W/ j0 ^. B( U  k8 X: T      rol    ebx,cl" G, N8 \& `' z+ O% N4 h
      call   print_4_bits
/ i6 O# U/ y4 Q& a& ?! q      rol    ebx,cl
2 K$ |  A1 G3 p3 z      call   print_4_bits
0 [( W% A8 g4 G4 o* x      rol    ebx,cl$ Q5 N6 l: F6 Q! h
      popad
) G6 G) s0 ^9 H% m# y      ret4 r: n" P+ h+ B+ B: K, N
_32bits endp
: D9 s$ _/ }; G! U7 {/ x) i;------------------------------------------------------------------------------------------------) D0 J2 U( r: x, j; H8 O
_16bits proc near
, q( j* ]$ \/ B$ h1 k. a+ [      pusha        
/ `. A# Q4 M% w9 a$ X6 S: a! l; D      rol    bx,cl4 a# c! d1 q$ e7 M# E4 X
      call   print_4_bits1 M# U8 |+ p2 q4 V7 n3 ^
      rol    bx,cl
2 x+ w# X/ _: H$ c+ Z      call   print_4_bits1 [6 z7 l* Y. Z* x6 H" A
      rol    bx,cl3 h$ d  N9 \4 y4 k6 l. G
      call   print_4_bits
) [1 r, t2 i$ a+ Y+ ^      rol    bx,cl
! J$ j2 N$ C& p4 A; P. F      call   print_4_bits
$ A( O9 j) s  a: h      popa
4 f. T1 U0 n' Z0 H5 M3 Y      ret
! y, O5 e; F  W0 r* M_16bits endp
& L5 {% s- e8 ?6 B: |! e$ f;------------------------------------------------------------------------------------------------
( }- X. Y7 {8 H_8bits proc near
: H$ O3 q$ q% P/ `0 s      pusha        
/ o8 g" _$ @; Y      rol    bx,cl5 T2 V* u4 U$ l0 \
      call   print_4_bits0 ?! E6 C+ M5 w
      rol    bx,cl0 l8 X' H% @! L: s4 D
      call   print_4_bits- ~' [2 g, E) a. ^$ a0 k
      popa) b) f! l) N" E- Q! V
      ret% k3 V: f  ^$ w; ^! ~: k7 {( `
_8bits endp
+ f1 {" R9 c, ^3 ~print_4_bits proc near  g9 A" o% H0 b) y
      mov    dx,bx
. o4 L  x+ `6 ]- N; c      and    dl,0fh
# X; K$ S# l! m6 k      add    dl,30h* E1 N: _5 a, q- V8 t. G+ X' \5 L4 A) l
      cmp    dl,3ah
1 X0 d+ W. C# v  {9 w      jb     print
2 ~( j: u& p2 l+ a2 v  K, k      add    dl,7
) y! `) R& F9 Gprint:  & x/ u/ S7 ]2 V7 g- [- z) I
      mov    ah,28 C3 V) y6 r( L- [2 P  H
      int    21h. I$ m  e( K4 e6 t  c8 ~4 u+ P
      ret
7 }$ G9 U8 G2 }print_4_bits endp   
, v/ f% o$ Y2 B" X& h4 ECSEG ends* G' `7 N0 F! u1 x* _5 t
END
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2025-6-17 15:00 , Processed in 0.164128 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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