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

關於SEGMENT 宣告變數的問題

[复制链接]
发表于 2010-10-19 16:50:51 | 显示全部楼层 |阅读模式
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)
% q( P& X5 j, q1 j  Z" s" H6 u
& s1 `, p4 F) c9 U則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
" a0 W6 K) b4 G) X8 A% Q* r- A8 u/ {5 e+ `, S' s
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝  : r" O, Y4 I) @6 c9 D

' @* y+ T# L$ Z4 x0 G  m9 i.model small1 t) J! R) q# n: ~
.386p# h5 W) s+ r1 F* R* B
DSEG SEGMENT USE16'data' 0 p" m- D$ \: O! |1 ~, N
, N. Y7 {" m, j( g8 f) ]3 Z
DESC STRUC$ j% _) W: J; g$ r" j2 u
     LimitL DW 0 8 S( d/ _) L; F# W
     BaseL DW 0 # q! n  @3 X  S+ _. H
     BaseM DB 0
. B3 s" h: @$ {' Q3 ]     Attributes DB 0 ( H, k  {+ F3 E
     LimitH DB 0
8 t; C) |, W; X5 ^8 `( m- N/ S2 L     BaseH DB 0
$ g' Z+ K/ Q( ]' Y2 L1 _$ RDESC ENDS# F) p. Y3 G0 a% m

# \( G4 ~, y) P9 w& s% YPDesc STRUC
0 n) S5 V9 {( u0 O$ E- z     Limit DW 0
" E" ?4 x/ k; m7 ?0 h& O, Y     Base DD 0 ( C5 I9 S9 m2 h
PDesc ENDS
* ~" Z2 ^1 i+ d: }
. v, W. ~1 X9 ~' g! b3 HGDT_def Label Fword( h6 O! q7 z( z
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
0 i7 i, `' y( @) ^- h4 Y& ?Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
4 d! o7 _* L4 p% k) x/ k! [5 k& ]GDT_Addr PDesc <$-GDT_def-1, >
- X1 H, C& \# N; g( U9 d
, g3 k$ [# a* A0 k3 zMaddress Dword 0
, A3 X4 L6 D5 X4 x! e% Q0 h, G) J: x" W3 o, N! ~0 A- R/ g2 o" l
DSEG ENDS . g/ W5 t) i  m% T
ASSUME CS:CSEG,DS:DSEG
" C' [/ o1 m+ j( J1 P. I2 g& U/ w" H0 g' |& w% O' k' c
CSEG SEGMENT USE16'code' " H) _/ i1 l% |2 |! K  k
      push   ds
1 P  s2 F5 `) ]# T. E      push   es* y7 z, z1 P* O& w/ T
      push   fs( Q/ M+ S% {# ^  j, j
      push   gs$ @  {. p3 ?% d  C
      call   big_real_mode     
6 a; u- q* z$ H      call   Get_Commandtail
  X4 E5 j# b+ S. p, L  k7 R0 r* i      xor    ebx,ebx! A# Z, s2 }4 @. X6 I* z( }2 f
      mov    si,82h. F0 m! R* S: l# P! M
      mov    al,es:[si]& [2 U8 c! p8 V* D+ T1 r+ C0 x* W
      cmp    al,'r'
1 I5 D" a1 z7 }- X      je     R
5 j0 o/ _& Q- v' V' d      cmp    al,'R'
3 N4 E, U- T- n; D: e: Z      je     R+ e7 l2 [6 }0 C& j1 w& }, S
      cmp    al,'w'/ b7 u4 ~& B* R6 _8 U; F
      je     W
1 z( h0 o( @5 V2 k) S. J      cmp    al,'W'4 k# E# i7 m8 c1 x$ ~
      je     W          9 `/ w2 m3 C  O" s- l  M9 q
R:
$ k6 u8 a- ]$ ^1 X0 W: z: C      mov    si,84h
: R! b# X& G: f5 F      mov    al,es:[si]% Q- j* ~1 @! k$ g+ b0 d" B9 f
      cmp    al,'b'7 l7 V* v- x+ S8 D! c
      je     RBT
+ ~8 D3 ^* t- ~, V) N5 ]      cmp    al,'B'9 k; C: L+ q0 w8 j" b
      je     RBT. i" A: t4 Q# L1 x/ z
      cmp    al,'w'
" @; k0 m7 i- J      je     RWR
" i3 |, V2 S# t9 [      cmp    al,'W'0 M8 _9 a# t- h7 u, `
      je     RWR
9 u% i1 N. ?. c" y, v. }* t. H" j      cmp    al,'d'
/ X9 G' ?" Y8 |* a      je     RDR9 M+ y; K8 v1 ^' Z/ c/ x1 m6 }
      cmp    al,'D'% E+ z2 ~* ?3 l( ~, h
      je     RDR             ! F: I3 D0 D0 |9 L8 R/ [7 F9 I
W:      
$ [2 H& T. d/ [) e4 E, d3 D6 E      mov    si,84h
4 d  o# O; y% ]' I      mov    al,es:[si]  B; Y: p+ E$ x
      cmp    al,'b'0 _* |4 h  @8 |( e
      je     WBT! D1 y" u* P4 S
      cmp    al,'B'* K- a( W, a. A# ?) s3 {
      je     WBT6 J  h# ^8 }6 C0 ?3 A
      cmp    al,'w'
6 t1 M: E' D5 F9 F5 H* v      je     WWR
6 W: f; H' g* W6 x      cmp    al,'W'
2 }! s1 |: M+ f0 k      je     WWR) i3 e/ w0 |/ w8 G! B
      cmp    al,'d'
. a/ j4 D, w4 \5 x; K7 O3 T      je     WDR! x' T6 z: V+ p
      cmp    al,'D'2 u3 E3 `+ W$ [+ Y- Q
      je     WDR3 v0 x+ H6 P! c( R
RBT:- B# a& J4 X* ?9 A2 e. d
      call   PSP        
" v* O, A' H' ~* E$ F: A( {! w      call   crlf           0 ?6 w4 [/ Z9 S6 p2 `8 \# n
      mov    esi,ebx0 ^2 j$ l* `+ g8 |6 U
      mov    eax,fs:[esi]! T8 {2 s" g' V5 T+ A3 u$ c  a
      out    80h,eax2 P9 C' u2 i. n% `0 K
      mov    ebx,eax
0 t0 |" R$ v( U" B2 ]- m1 Z      call   _8bits
/ s5 n9 ~& {( f6 H$ W& B      jmp    Exit! h. o4 A* t4 J% A, }
RWR:) e. o) B9 i( ^6 C2 Y3 f
      call   PSP        
. O7 ^! e( }0 ?& Y2 N      call   crlf           ) \1 z: ?' O7 L# T6 v9 w# a3 |
      mov    esi,ebx3 F: i$ r' j* E$ G6 l4 k* F* k) ]
      mov    eax,fs:[esi]
, E/ }# c3 j/ u8 v7 a7 T7 t      out    80h,eax
% Q2 b" [0 Y( O" W8 c      mov    ebx,eax5 s  k( R+ J8 w
      call   _16bits
3 X, U" I6 ]5 \      jmp    Exit- _3 u9 z. f+ h( J" t
RDR:& L7 u4 r: w" z/ m: g0 i
      call   DPSP        " H' N9 u6 J) K
      call   crlf           
& ]+ b  d/ z( m4 Q& t      mov    esi,ebx6 R4 U* E9 w1 m" t6 `
      mov    eax,fs:[esi]
( k% L. M( E* B  a0 @1 T0 X0 K3 _" A      out    80h,eax
9 C0 p9 j5 {+ ]0 s: ?. j! k7 T      mov    ebx,eax! A8 M' Z7 Z. u. {& W2 }& B% w6 x
      call   _32bits( ?; a+ W3 R* R7 m! [
      jmp    Exit9 p$ S& c7 a5 a- F! }; M0 k* s5 D
;------------------------------------------------------------------------------------------------; {5 ^0 M1 B: I# U  S
WBT:$ v# L0 ^5 s8 V, J. x5 C8 x. k9 X
      jmp    Exit, J/ U  S3 R$ [4 b$ W, m# P/ E
WWR:
4 c/ p! r- i5 B4 C      jmp    Exit% f/ c  n" P( I1 J$ u4 p( A
WDR:! ]. l# ~1 c" t; |1 a
      call   DPSP
' h$ z! V# U& l( `/ [8 R" w% G0 `      mov    Maddress,ebx      2 W- m# V/ }" K9 R- G! a8 M( D
      call   crlf5 _; E" S& E, i( ]; [5 D
      call   WDPSP9 {' b4 v; U6 @, i4 A( W. [
      mov    eax,ebx
* I0 r$ F3 L. x& F( A1 o( ]8 p      mov    esi,Maddress          " d7 k4 ^* {9 B' }; |
      mov    fs:[esi],eax
& ~  ~, K- F# n3 K# N      out    80h,eax3 E, i2 g6 F5 A. J/ x1 ]
      jmp    Exit
  |7 b+ \+ C* Y( N, ]) \" _8 C;------------------------------------------------------------------------------------------------      
7 l" j2 g) Z9 _8 H( H5 O0 w! iExit:- m+ K5 ?# I) N4 r- D2 d/ g  ~
      call   real_mode     1 c, h4 k8 V2 @  J. y
      pop    gs
+ z% n8 o7 i9 r& \' K: k      pop    fs5 F" M% C, I" M
      pop    es! Y1 N$ R* R/ X* `# ^6 k
      pop    ds       7 ^- J0 t9 k7 |, n) C6 A
      .exit
! Z# f$ s" ?/ ^; P  U;------------------------------------------------------------------------------------------------3 a! S7 P# W$ z7 z1 m
big_real_mode proc near
; L& Y$ U0 v2 c+ h) v7 d) b. k: e  v      in     al, 92h
, j1 i" o: i$ B( v. _      or     al, 002
: C$ e% w7 v3 e) d( S      out    092h, al
$ V) d* u9 J! W$ ^! O$ f+ G% [; x      out    0edh, al
- s! U5 \1 \5 z/ N- R1 [) I# C      cli. M; ~; w) j. `" I9 X. ]
      mov    eax,DSEG( I( X% ~, O* j( l* A8 k7 {
      shl    eax, 4  c7 `5 ^3 F; F
      xor    ebx, ebx
* |8 u0 Q) S7 x2 e      mov    ebx, offset GDT_def* q& B7 A; v/ @2 f8 u* J
      add    eax, ebx
6 _: `# ?; L/ N4 ^9 m* {      mov    dword ptr GDT_Addr.Base, eax
7 K8 f* Z$ A' z; [9 C. o+ e      lgdt   fword ptr GDT_Addr
3 k( h5 f/ \" B+ D$ Z      mov    bx, 8
6 I# b5 m+ h: P4 Z" y3 ]      mov    eax, cr0; v9 l& k) w/ B6 T& i# ]
      or     al, 1, v" M9 B# b$ b; ?/ t% T
      mov    cr0, eax
: p2 [# n) m; N- @: G3 J9 t      jmp    PMod
2 a" X4 O8 F6 P. z- C, @- d$ T& mPMod:
6 M- y7 H; a/ Q' `7 ~% g      mov    fs, bx
. @1 _3 H$ h9 _, H4 K! F' X7 a4 Y; w& {      mov    gs, bx
8 r; f# n4 g3 Y- x% d6 T      mov    eax,cr0
3 V) w, o# J1 O      and    al, 0FEh% Z# u5 D4 A9 l( f3 E# l
      mov    cr0, eax
) K& G, z5 \* D# [7 d. C5 B      jmp    RMod
8 C, I' T8 h2 W+ E% e% T" zRMod:
# k* ^- o$ A4 c  G) _1 @. D      xor    ax, ax
' j' C/ R5 G6 J# Z- h) J; d/ i9 J      mov    fs, ax5 m4 o6 [* W) {$ t
      mov    gs, ax     
6 Z5 j6 j3 A- Z% ^2 S# s2 K, f      sti     
. S, F$ N7 C! i# M# q$ t. ^      ret
0 j+ B9 j1 M. hbig_real_mode ENDP( F; M& L7 R3 d
;------------------------------------------------------------------------------------------------1 o( S2 [0 s, i% L& k: P
real_mode proc near  A8 ]: G& F% j
      in     al, 92h
( T. m7 A9 n5 t( `6 D      and    al, 02  P+ f3 I- M' L( W. _8 a: N0 }7 t" P' W
      out    92h, al   
3 S# ?9 i2 T" p: R! U% g8 X      ret( }! s: s5 s( C, L
real_mode ENDP8 |4 i% O8 E$ ?! T, m$ H
;------------------------------------------------------------------------------------------------* X5 j% ~' a5 O2 Q: ~3 n
Get_Commandtail PROC near
2 ^) L/ @) O0 i1 h1 V2 E5 v; ]9 K2 S      mov    ah,62h % J7 G8 r4 s! w# P' p+ l
      int    21h
8 Y" x0 q5 A# M, X      mov    es,bx
- y* z/ Q/ U/ k' o      ret
$ e/ U5 h7 Q1 t6 @+ G$ a8 RGet_Commandtail ENDP   
9 i# d3 S+ N) [# k;------------------------------------------------------------------------------------------------5 g) G6 o# T8 p- J- u
PSP proc near
8 `& x3 u5 g% i      xor    ebx,ebx, ?8 y% x  ]* Y
      mov    si,89h
  K4 ^# O2 A' q' D* f* f7 ]& N* H- }      mov    al,es:[si]. l$ d  E/ O* A
      call   Change6 B# Y/ n0 p7 M
      mov    cl,4
, S6 u9 ^# e, p: `9 J      shl    ebx,cl
, t( T+ ~! r; H1 [* S5 k1 h8 {$ g" ~      add    ebx,eax3 u% S# h  x, |, ]) Y
      mov    al,es:[si+1]
- z, y- \; E' F3 g3 N; F; |      call   Change
% @: k# g+ y3 W% i9 }      mov    cl,4. w( X4 U7 K2 Z& _7 i$ V
      shl    ebx,cl, o: }0 H. Z; x
      add    ebx,eax5 E/ B9 n8 {8 ?  l: Y
      mov    al,es:[si+2]
, w, d: k' y! G. r0 M8 _      call   Change, }  v5 \. L5 t- Y4 R3 e
      mov    cl,4
- B7 g" M' ?1 E3 i% e4 r      shl    ebx,cl
  J& D+ W% Y. H5 M4 ^$ K      add    ebx,eax/ L, k8 O: O. b7 }" }
      mov    al,es:[si+3]
$ O8 j9 m9 V8 q% V* }      call   Change
2 ~2 J% U5 G: r9 I      mov    cl,4) X/ n- t' \, |8 k
      shl    ebx,cl
$ v* K* i& Z1 k2 Y      add    ebx,eax) V) E5 E3 a0 Z  b! n1 H
      mov    al,es:[si+4]
& S. i( I. o7 S/ W5 P1 u) N      call   Change
& m8 Z: x4 J0 {4 v; {8 E      mov    cl,44 m6 U0 z6 \& a1 q7 T. u
      shl    ebx,cl/ \/ r# P7 U; q
      add    ebx,eax  D3 m- p1 {4 r; M
      mov    al,es:[si+5]+ h9 ~1 s0 v& K) H9 Y* X0 _  Y
      call   Change3 ~1 }; w5 \/ D- O- H4 _1 S/ d
      mov    cl,4
6 {$ @; S( G1 p. V9 w- M5 s3 p      shl    ebx,cl
  [$ V8 c# }& w( L. S  }      add    ebx,eax* }4 I* T' i6 _; n) q
      mov    al,es:[si+6]
$ [; K1 X% y7 w% V! z% [      call   Change+ z+ K0 N7 J9 O- T& m& T* a
      mov    cl,46 O, B+ O- o1 H5 s: Z! d' X
      shl    ebx,cl
5 ]9 p$ ^5 u% M      add    ebx,eax
4 b9 g0 i3 x, n0 C7 c  l. d  O      mov    al,es:[si+7]4 D- Z- }5 U9 B  v
      call   Change2 X7 h; p% |8 z- _
      mov    cl,40 U6 M; r$ ]5 p
      shl    ebx,cl
+ M( ~$ {  x7 F* B& E      add    ebx,eax+ D% X2 b8 v$ |# m7 B
      ret8 a3 z* ^( `) Q' }6 u: B
PSP endp
! q2 W! {& M, M;================================================================================================) i- f0 A  h, @
DPSP proc near
  M9 d, \% j: W+ N5 H; O      xor    ebx,ebx. R. |6 k) N; [7 U5 A8 x( \  G, E
      mov    si,8ah* F$ Z& _, g+ P2 V; F1 _1 Z3 Y
      mov    al,es:[si]
* j" m& y8 n# J% j* H: b% y3 {      call   Change) V/ n6 }8 G1 u
      mov    cl,4
5 s: q5 N; B! A      shl    ebx,cl% K- y* J7 n3 F* @
      add    ebx,eax
; ]9 N* }2 ?+ ^      mov    al,es:[si+1]
$ \6 P+ K6 o( F" B: h1 h      call   Change3 q2 P6 s1 u$ o
      mov    cl,4
/ B, K0 C4 A: N. ~% s      shl    ebx,cl
& q. I) R( S; U" g6 v( M( T+ }      add    ebx,eax
6 Z8 K) _' i' H. |! R; i8 p* K      mov    al,es:[si+2]
' H, K: v# Y8 ^7 ?+ {5 |      call   Change# d0 S1 Z  e5 A) L
      mov    cl,4, u( a; M: B6 ^4 v  a/ @2 |
      shl    ebx,cl
% Z8 G) x5 E$ b( t% y1 _      add    ebx,eax( N- g3 b3 W3 b- w5 Z  r0 v
      mov    al,es:[si+3]! E6 T6 I- V5 g+ C, K, j
      call   Change+ M  ?7 o7 w7 D  m5 i( q  l
      mov    cl,4
8 \% ~2 s3 r* d! u: k! K2 q8 N7 `: }      shl    ebx,cl( Q' i7 g( a* e- B
      add    ebx,eax0 T3 [8 z4 ^+ G/ a' c
      mov    al,es:[si+4]
/ l: r7 J- l  G; `! Y9 g      call   Change
  {4 d7 p9 X) u      mov    cl,47 C* F7 \& J4 D! k1 L: a: X9 a
      shl    ebx,cl  \9 `& z1 r2 z4 J1 q. E
      add    ebx,eax, z8 H% h  ]  Q. ]1 n  z# n
      mov    al,es:[si+5]
- w8 \' Z# |* x. U3 }7 o9 T* D      call   Change
+ I+ \) v0 b9 t/ W, m# q      mov    cl,4
: J7 ^1 O: T0 t" ?      shl    ebx,cl
9 L- u  M+ o' E& a" @- q# }! f# A0 H      add    ebx,eax
1 k* n: j7 }( x      mov    al,es:[si+6]
4 F' |# P  @$ N3 l1 C      call   Change8 I6 I8 p* _  e7 F- D4 m3 r! y
      mov    cl,4
9 S- q* D  y/ a: j      shl    ebx,cl8 E. S! \$ I2 m/ G4 h7 Q: T
      add    ebx,eax: @# q  J' j% w) P3 y- m! [6 Y9 t
      mov    al,es:[si+7]
% N; }8 r5 d( h      call   Change
  `5 u0 |3 c- L# ]$ s      mov    cl,4
6 C2 ~9 j+ q- s# E5 }9 G; j      shl    ebx,cl* _1 T! T1 V8 F
      add    ebx,eax7 j$ F  D/ B0 M0 Q$ w; Z
      ret. N5 q' `: }( \8 z* e% Q5 E( |
DPSP endp2 t% N! M& k9 ]$ c
;================================================================================================
" B' T- R5 _; Z! B# o0 v# M% YWDPSP proc near
" Z/ Q" x8 e5 R  Q      xor    eax,eax+ s6 ~3 i; U( G& P8 Y, d7 [
      xor    ebx,ebx
1 L  g( g$ K( q: k& ~  D6 l2 @      mov    si,93h
2 |* Z6 F  l3 z  x6 S      mov    al,es:[si]- g5 w% d5 \. n5 |/ f* L* T
      call   Change& h6 z& K9 `: ^; H! |8 {- F6 T
      mov    cl,43 [2 p3 C5 I! d0 ~
      shl    ebx,cl0 c7 ^4 Q0 I; u9 E
      add    ebx,eax
* a: z/ l- w+ l; i5 L0 `      mov    al,es:[si+1]5 @1 X+ f  W" K% y2 {9 \
      call   Change, u2 r# N3 K/ t8 _/ |
      mov    cl,48 i- K: H# V1 @- I1 u! b2 w
      shl    ebx,cl4 B* Y; f; S' B; v' ]
      add    ebx,eax4 q0 U: l, e  e+ D) A
      mov    al,es:[si+2]
& r7 V3 z5 T% u' R$ o8 z- q      call   Change
) C4 m8 i* ?: y0 q1 K      mov    cl,4
# f) `8 K4 v0 F- q) d) u* J      shl    ebx,cl
. R, O! y, s+ r6 @$ D  j1 I      add    ebx,eax
2 U+ H9 f$ t7 P# o, G      mov    al,es:[si+3]
, W! O: ^# c( k( w      call   Change
  X3 A5 C' a; D( x. b$ H      mov    cl,4' z& c: {! [9 J$ u; W- r
      shl    ebx,cl
6 A: Y0 p4 I9 c! y      add    ebx,eax
: A$ e$ y3 \1 N1 M4 a4 n8 o      mov    al,es:[si+4]8 X/ i$ V+ u" [4 E" q
      call   Change
9 a4 s1 I2 w8 t$ F+ Q; ~  N( y      mov    cl,44 I9 U6 z' k: a
      shl    ebx,cl
; `% I: L7 y) P: V% e      add    ebx,eax
2 q# z$ i& A* W7 h      mov    al,es:[si+5]# f' C7 n4 k9 }5 D
      call   Change% M- b' p3 G( X. y- Y; t# m
      mov    cl,4
" Z9 l9 D  c- r! E& [      shl    ebx,cl( J' N; ^( Q+ k% v/ O, k' j& N6 k
      add    ebx,eax2 L& z4 F0 e( |
      mov    al,es:[si+6]
( G3 u6 V+ I' _& j      call   Change& g5 O" H6 [; i* n
      mov    cl,4
9 _8 W9 P- u( y, L3 V      shl    ebx,cl2 r1 _% [2 j3 `
      add    ebx,eax
3 [( v' y: B1 y( Z* I3 t! y& P, T      mov    al,es:[si+7]
0 \6 V3 y6 s3 R4 o3 T% j/ d$ n      call   Change6 {6 m8 s- W4 U. ~; u
      mov    cl,4
" J* e. N& I& y      shl    ebx,cl1 I; x2 b% n" A3 s
      add    ebx,eax' f) k8 G$ y* A+ c4 M( ?$ ~
      ret  I) @' `3 o5 n  B, O
WDPSP endp' s8 V3 X9 b' G2 k
;================================================================================================
2 A, ]3 p( ]( P6 [Change proc near
4 s; H. |# {: O6 p4 Q' rA:   
$ [1 `+ \" S& s- ?* V      movzx  eax,al- x$ m. }( c+ [8 ^0 i# v! O+ }
      mov    edx,eax5 E5 P) V" [# @3 ?4 y8 ^
      cmp    eax,'0'            
" N& `& n9 a* Y, [2 _      jb     A
( `% [3 a& _" @5 w$ I, u1 z, Z4 k      cmp    eax,'9'            6 R; U4 N7 c" j, k0 F
      ja     B
1 h; G9 _! Z; P      sub    eax,'0'
4 _) u. d: L0 `      jmp    short E5 f5 g) F. f, q8 ]/ w4 K, Q3 W
B:" G! c7 A; ]* D6 q5 T* d
      and    eax,0dfh             X1 B" G' w# P: U9 \5 [; [: R
      mov    edx,eax
4 T4 F0 V# Y9 ~+ B1 O) }% K* X7 v      sub    eax,37h            " q, B- u' i  F9 y. b6 n5 z
      cmp    eax,0ah% x/ ^  N6 J8 Z: w$ l0 f$ G% q
      jb     A                  * Y: U$ t2 a! L/ F* [- A  H
      cmp    eax,0fh
- w1 u* h  [* q$ _      ja     A                  
$ n' @9 N$ X/ t  }9 IE:
0 `" Z' `3 }, ~- J" |8 r0 |8 i/ |      push   eax      
' ]9 B, h+ Q2 t      call   PRT               
! ~4 G+ e6 n) ^      pop    eax
5 `/ w8 N" U" `+ uCExit:
3 V" K) ~9 F/ ?* U4 D) D3 z      ret
, S* G( g4 t- ~9 V5 S4 Q* [Change endp; t/ J/ l8 ~$ T  D
;------------------------------------------------------------------------------------------------* c- `) l4 E* z4 r) c5 L0 V6 H
PRT proc near
0 C2 f, t5 q: f. Y8 b! t      mov    ah,02h
. L) ~4 h9 u* O; v      int    21h- G( y& U# n) k& k% d/ {# a) b
      ret8 ~$ G, u. \9 l8 [% B4 e
PRT endp& Z. {( f: v4 O  r  P6 M
;------------------------------------------------------------------------------------------------. V  c& O; a0 R4 J. f' e( E* w3 @
crlf proc near  a; M; [! _9 Z+ ]6 x/ F* P
      mov    ah,02h
6 l" j. {6 I, X: H3 D6 |* r4 J      mov    dl,0dh
; I9 d" D9 I1 i7 y1 R* S0 L      int    21h
3 b+ \; p3 \+ Y6 |; z      mov    ah,02h3 s& ~! @4 Q  k; A- i
      mov    dl,0ah' i9 ?( Z( O, J* e& e8 [
      int    21h
! R& q6 a; Y, G! K) K5 i4 @% U& N      ret% `5 Q2 c7 _+ K- Z
crlf endp
1 W4 q( C9 L8 `) _9 y;------------------------------------------------------------------------------------------------. A* S% k8 m4 g3 X" u4 T( @: j7 k
_32bits proc near
3 o" U- Y  e) @3 A+ Z# ?      pushad
8 n. l3 V1 `$ O$ V6 b* ^      mov    cl,4  o8 ?8 Q& t" e  ?3 y
      rol    ebx,cl
+ Z/ |6 b8 g  d, \+ K9 N' Q      call   print_4_bits' H6 R" t: a, b0 @1 }; o4 Y2 T0 E9 n
      rol    ebx,cl
7 W2 W* h# k- E; p% a4 t0 K7 k* n      call   print_4_bits6 h  _# `& D0 Y, ?0 c
      rol    ebx,cl( b* v2 L1 O2 `: ]
      call   print_4_bits
( p: g! Y3 d. t- x% S1 i      rol    ebx,cl
+ I) T# L8 m) P7 d" z! k% K# F      call   print_4_bits1 x. i( _- {$ ^9 w4 `
      rol    ebx,cl
7 p  u$ A9 I2 K( E' o+ {, z      call   print_4_bits
' y/ d+ `+ v& {6 G0 Q" \' {      rol    ebx,cl% R' x6 L) r8 f5 F( l" U
      call   print_4_bits  V% L, k1 O7 |( I  |1 e$ s
      rol    ebx,cl
$ m2 k3 L" h! z0 A      call   print_4_bits
8 }6 B0 I' N9 U6 Z- i. Y" _      rol    ebx,cl6 c0 g* c9 o* m% Y5 E# ^
      call   print_4_bits
9 ^7 X+ {$ c5 L) Q& j      rol    ebx,cl6 ?. `, J8 F$ d9 o4 y% c2 ]
      popad  ]7 p6 l- X% J1 ^% ]: N4 s/ J- K
      ret9 J0 U8 c& M. p+ }
_32bits endp* a( X+ H7 d" I1 ]! F! h6 k
;------------------------------------------------------------------------------------------------' O2 n' a6 @7 l6 R
_16bits proc near2 o. |; d5 |8 G' V
      pusha        
$ S4 k! x' I, j" Z      rol    bx,cl$ }/ Y5 n9 L! e* v2 e  G) S0 e8 L+ e
      call   print_4_bits
0 O# e! l) i; A. w; Q9 T( R      rol    bx,cl
' r' `6 C- t3 W& ?5 V      call   print_4_bits
7 s* l6 l# G0 p      rol    bx,cl
/ c( T1 h7 g+ ]! @* W      call   print_4_bits
  l. T1 y: s. g( ~& J0 o+ @# G2 A      rol    bx,cl
& P( @4 P9 Z; o4 g, U      call   print_4_bits* A4 C5 S" Y$ Q# ?. ]6 U3 R* j$ F
      popa4 F! ~* B2 m- j- i! Q: d
      ret- }8 L% K1 \* o% ^/ O# w8 D, `
_16bits endp
6 B  g8 N8 p  X' h. m* r;------------------------------------------------------------------------------------------------
/ i5 t7 X2 Q' {# h& [" m_8bits proc near( `: @, v2 @; {- S
      pusha        7 [7 k! p0 Q7 k4 J/ N/ W% i
      rol    bx,cl: \# A8 r9 o: n+ J2 c2 a
      call   print_4_bits: |% K6 _  l' ~1 Z  e, Q  b) J
      rol    bx,cl5 p$ b: o/ f1 y, t" S+ ]- C
      call   print_4_bits
5 `3 {, [7 C3 Y: Z! `$ \      popa0 \. @& g. ~' t$ y- R
      ret
7 J) I4 m& f! a, R! t_8bits endp
2 a) K  {4 F1 Q& w. E0 y1 S  [' nprint_4_bits proc near
2 k- j5 m3 i7 C7 O      mov    dx,bx
+ ~* S1 A! A( \0 Y      and    dl,0fh
, }6 ?/ j9 E. |# I6 A9 M: a      add    dl,30h
# n1 J& l( g9 f: l. x4 T9 c      cmp    dl,3ah
& m) [: w1 P! z* ]      jb     print, \, S/ n; R) M* Z
      add    dl,7
4 j: B3 O/ h( q: `& u/ Fprint:  
: x. h$ d9 [  r      mov    ah,23 L6 A% n3 y5 E- z# L
      int    21h7 }) {( p; ^' s" p/ P
      ret; E+ a# P* q+ [
print_4_bits endp    ; y1 k8 Q+ c/ z  K+ Y
CSEG ends4 z' ^) i6 z' I( S# M4 W* \
END
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2025-5-22 10:08 , Processed in 0.124345 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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