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

關於SEGMENT 宣告變數的問題

[复制链接]
发表于 2010-10-19 16:50:51 | 显示全部楼层 |阅读模式
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)' d+ a7 D  r% j( U4 p. Z0 k8 z
! t/ g+ K  r4 x1 c) d& y7 i# Q  I( P
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'% ~) C) y7 A  y% g; a
% t6 @4 X1 n! J. E  H4 U
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝  
% l4 T* \' d* G/ o: `# y7 C: y4 F- P  `  t6 I7 \- j
.model small
* W* w) m% M+ a  u; }% l.386p1 {4 ^- g6 Z/ S0 ^& _, m
DSEG SEGMENT USE16'data'
3 c2 u9 c" _  V5 K6 L5 E+ Y7 y/ G. K  ?* g  ^/ S( u$ ]
DESC STRUC8 R! u6 W# \, k; M( v5 d
     LimitL DW 0 0 r* I$ U6 c# ]) _, a$ e
     BaseL DW 0
  W- l/ @, u' z4 }. A4 I, G9 j" w     BaseM DB 0
/ B  f" _4 O$ N- G$ D5 m+ ~5 r     Attributes DB 0
0 K9 W5 n2 \; q6 W* U0 y) ?     LimitH DB 0
8 x- N' S! p$ u1 _, B6 Q     BaseH DB 0
1 y- B! \$ y, @+ v. A! x0 b5 |DESC ENDS
; v  E% O1 R+ o9 @$ V( f# `  H  {0 i" \" S
PDesc STRUC
, |! C) c9 a8 Q     Limit DW 0
1 K' M( d, T9 `5 n  X5 U     Base DD 0
4 E  d: L) N; n" y1 _) |# sPDesc ENDS* S" W* G8 l' D# Q

2 \/ y+ c  @; y# U4 O2 ]! \% ^, DGDT_def Label Fword/ e* P5 w; V' C  Z6 @
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
. ]: A5 N6 n* i; c" m+ d" aData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
" J# v0 q/ f4 q8 tGDT_Addr PDesc <$-GDT_def-1, >4 T- h- O( u# E! Y' |
* _1 k' G: a1 p. \7 c6 d; K: J5 P
Maddress Dword 08 T5 t* o! _& `+ {  b1 |7 ~

, H7 t+ a1 h5 P' P: o/ WDSEG ENDS
3 Y1 @& c, J( _/ W& h; |ASSUME CS:CSEG,DS:DSEG8 r# W7 V5 t  y+ t' Y
0 z6 L. K; [0 y+ A1 l$ H& ?
CSEG SEGMENT USE16'code'
& c1 V1 q$ C, C      push   ds
. l2 s, z; i; x) X      push   es9 ?! t+ g  W% F1 Y4 x
      push   fs
, N& F$ a# E, |% u: U, G2 u& l      push   gs
. {$ `+ h6 W  i      call   big_real_mode     
( ]" K6 |" `( a$ U. Y9 H      call   Get_Commandtail
5 i) Z% q2 R$ [2 l6 _# u" Y7 r      xor    ebx,ebx
: A% {( A9 G# T+ w7 b' \4 {$ U) }- O      mov    si,82h
8 A# e5 d" H6 p" A. Y      mov    al,es:[si]3 _, K1 M0 ?7 m- F, r
      cmp    al,'r'
' S+ J4 e/ V8 Z2 {$ }; i  ?      je     R
& B9 h& R, s# \4 P4 Y/ X6 v' d+ H      cmp    al,'R'7 k8 E, I$ v! s5 X+ J' K
      je     R
$ s, c1 w/ K+ j; a# `3 U. |      cmp    al,'w'- q4 f: t6 K9 A! v
      je     W# A; {4 w' k6 I7 {+ b: r& H
      cmp    al,'W') F3 d% S' ~1 j5 \% L+ U, O0 ?9 ?
      je     W          0 n) U5 X; \" H* g) \
R:
2 V( T3 L( }9 Z5 B0 t      mov    si,84h
" ^/ K' r  r- r      mov    al,es:[si]7 N& Z* ~- x7 X$ Q* f% y/ F- m
      cmp    al,'b'- v2 d/ D% L4 K6 `* ?7 j- r, b0 Z3 f
      je     RBT
, T) J" E( S, Z4 y6 _1 [& _      cmp    al,'B'
& n! {4 X: X( r* ], Q3 o% M      je     RBT
5 S+ T# j- H; x* D      cmp    al,'w'. q; J. Y* a; s' x5 }4 h) ?* p
      je     RWR2 R( V; C5 m) M
      cmp    al,'W'' Q' g& a0 \& E4 `
      je     RWR7 M* ~- P' h. N2 D- A2 g0 R
      cmp    al,'d'; n. b& Q9 Z* S! h1 V* ]
      je     RDR
) C! {& b( ?: I      cmp    al,'D'
# @. d9 \5 F1 N      je     RDR            
* ~3 y0 U! K5 Q6 AW:      3 F8 H% ]" a/ x0 R! N( j/ `: F" q
      mov    si,84h; i  m) [" V" p' R" n
      mov    al,es:[si]
) e: D0 m6 V/ ^( G- u$ K      cmp    al,'b'
% Z- v, S5 b- Y$ _      je     WBT8 M8 Y7 M+ g+ e* Z$ E( b. I- {! n4 z# B9 _3 c
      cmp    al,'B'; @. e  Y% N0 @
      je     WBT
" I$ [) q5 s! [4 ?  u5 F- g      cmp    al,'w'
; `* n# f. @  {      je     WWR# n* Z" }6 l1 V1 d! S; h3 s& D
      cmp    al,'W'* t" y) ]/ H" O' |& G% g) p8 q
      je     WWR, X, E! X9 @+ |4 C
      cmp    al,'d'
1 n% Q+ R: O& S% K      je     WDR# `. J# [9 a, z8 g; _: y+ [
      cmp    al,'D') |2 r$ X- Q" m. v: y4 J8 ]
      je     WDR
- U; H; _+ @/ @) \! RRBT:
6 B7 M+ G* D+ G( Q  k$ Q      call   PSP        
$ s% e0 \0 t! ?) z$ F$ R& k! O      call   crlf           
/ K' @1 `, N6 _  P- [' K- ]3 [      mov    esi,ebx
: {- C5 z4 x. ]% f9 m      mov    eax,fs:[esi]
9 q5 i+ `8 Z* e& R: L% k0 i      out    80h,eax3 a5 P% L1 s. y- T) e" Y
      mov    ebx,eax
& n! m* K3 g0 l( X  Z$ j( I      call   _8bits
1 D( e6 w: O% |% N* K6 l) _      jmp    Exit# f9 j9 @4 @" `  M1 p2 Y
RWR:1 s4 ]' Z$ u7 a
      call   PSP        4 s. {5 M0 \: {6 p
      call   crlf           ! H3 I5 M, Z& _8 H
      mov    esi,ebx* T) |: ]% m9 o( P5 s
      mov    eax,fs:[esi]' e2 O) J! }9 U' r$ _
      out    80h,eax5 N5 z; J$ ?+ n
      mov    ebx,eax
9 Q/ l# N- J: z! }, ^6 D$ s- Y& |      call   _16bits7 Z+ N/ R1 n' h: X
      jmp    Exit6 w, d7 a) R: b# G/ w0 [% A! c
RDR:7 u3 F; ^/ Q' j  N% U4 W
      call   DPSP        7 ~; ^! M5 o" h% C4 |9 d/ x
      call   crlf           8 b; S- K+ I4 A: X; P4 e5 @
      mov    esi,ebx4 t+ }% ~5 h- {7 u$ p( ]8 i
      mov    eax,fs:[esi]
/ h* z& J- ?9 ], ?0 t2 n      out    80h,eax
, S2 |( m* C, q$ _6 W$ p! D& L# h      mov    ebx,eax/ ?2 R2 B) X8 ~9 t  ]
      call   _32bits# P( k# P( L9 Z" J* O: N/ R) e
      jmp    Exit
1 }6 E, \# _5 |) J5 E: e;------------------------------------------------------------------------------------------------' c6 c( O" \/ p( f+ }3 Y4 ^8 ?
WBT:% b2 [7 k+ T. Z. D9 [
      jmp    Exit
6 J2 ~) t& t$ I% D( s' X9 [WWR:! l5 D1 f6 e0 a# O' @2 G
      jmp    Exit
9 J% [7 H1 w8 j: y8 e5 m, N4 l. mWDR:4 a+ \3 {2 A, n1 M8 l2 d
      call   DPSP
( |  L. q$ g" ?' h# d" }      mov    Maddress,ebx      6 F  E- O. B, c5 C8 Q" d; q9 n
      call   crlf, ]. C: U8 S+ M7 {" T/ D$ Z- ?( R
      call   WDPSP1 N4 ?& \9 y  Z- {
      mov    eax,ebx
- J" K+ n2 g% l) Z      mov    esi,Maddress          * K1 Y) d6 O6 Q" M/ f" l/ c
      mov    fs:[esi],eax' S) `+ @3 ^' f( X8 y1 T
      out    80h,eax  E. P; W! Y" B4 c' T
      jmp    Exit
1 ?; B( s7 f% u+ U: I;------------------------------------------------------------------------------------------------       - ^' o0 M1 ?+ n# h2 p$ _, c* X4 S
Exit:+ h9 A& H- E" M) s
      call   real_mode     
# I0 B7 m5 I) R% P) E      pop    gs
9 I4 `3 F, }4 U      pop    fs" g" ^; a, N! B8 T  f$ t; j- y
      pop    es
8 f5 r: K2 @# ]% @( N& x      pop    ds       9 I; Y5 b$ }  z! I. x' _2 \
      .exit
5 e" r# `- P( p;------------------------------------------------------------------------------------------------
& L) T4 h% r. l: Y, `big_real_mode proc near
4 g, P: }! x0 i& {      in     al, 92h9 Y% i6 l- }% q0 K3 s7 P# |; M
      or     al, 0026 r6 K* l9 x  ], ^& \; Z7 ^% _8 j, \
      out    092h, al
4 E' W% w! s1 F8 o7 [* |# P      out    0edh, al
) R$ z% D7 ~. E, C4 y2 m1 Q* b$ \# M      cli
, n3 m; q5 a, h5 I" F+ n      mov    eax,DSEG5 j2 J$ n# t/ t; k7 k6 [
      shl    eax, 4
# O0 d4 _6 U0 L1 q- s# Z      xor    ebx, ebx0 x& V3 z5 Y: Q) a0 V
      mov    ebx, offset GDT_def
4 y$ j7 d1 ^1 _' o! D2 p" ]      add    eax, ebx
, R* l; D4 W1 R! v" ?      mov    dword ptr GDT_Addr.Base, eax+ p$ k- [. l, @& v
      lgdt   fword ptr GDT_Addr
/ ~: r, y' o7 }4 N8 r      mov    bx, 8- i; U' _0 P, O" U
      mov    eax, cr02 S/ C7 ~' h! L( j3 J
      or     al, 1
+ }4 s# q# g( f4 W- Z% i      mov    cr0, eax. l/ L- a/ v2 |, j% D' R# \0 y
      jmp    PMod, G' U! w6 ^3 W; h. R$ }) }1 t4 d1 J
PMod:% l9 t4 y' m" |  I
      mov    fs, bx8 k4 _0 C: Q: D$ b8 o
      mov    gs, bx% W) ]! c1 z: d* q& D+ _% _
      mov    eax,cr0
( \6 f5 `* V) @0 M3 ^' j6 E* @      and    al, 0FEh4 R; z1 c, \$ Q0 {! m& q2 Y4 f
      mov    cr0, eax
* ?4 [( v  y+ v$ e8 `      jmp    RMod
% x+ P/ r3 ]0 ~- A7 C( T  J0 zRMod:9 y, C: c# D+ v7 n2 G1 w! r
      xor    ax, ax
  ~0 }+ B9 d7 e, V1 {8 r7 E      mov    fs, ax: N0 h, G' h& B. v
      mov    gs, ax     ) h- f* @7 ~" H/ P1 V4 ^
      sti     # f5 N. a- A* x* t. @# V
      ret
6 k* B  o& p$ M# T; Ebig_real_mode ENDP# ~. w" `/ @1 k$ j8 z
;------------------------------------------------------------------------------------------------1 C& v0 h9 }9 t5 q) F
real_mode proc near- p0 G3 l2 F9 R& d6 V5 y
      in     al, 92h
, g( m+ q! K  n" u, V; i4 k      and    al, 02
. b) T5 W  y. s      out    92h, al   
) P+ G; M0 R  @# Q& M1 g      ret
- Y6 b$ S) t! P! {real_mode ENDP
! L* T. N9 V+ A7 H$ F. g;------------------------------------------------------------------------------------------------8 k, ]/ q. c6 `, y
Get_Commandtail PROC near
" [8 D# R% _" l- S" q      mov    ah,62h
4 U5 C- O; o! I5 T! L% l& ?$ d      int    21h
# Q! u& {- n2 c- ?. y2 i6 o" k      mov    es,bx: f3 I. [' M9 z% y" D. i
      ret* S( p/ g4 ^# \. E6 h, P5 u: T
Get_Commandtail ENDP   
2 _! J# P3 K7 q' G3 M1 X! V;------------------------------------------------------------------------------------------------! L# ~6 T( @. A3 K7 H8 }4 O
PSP proc near9 A4 N/ F, B. h6 N7 K6 H  j% n
      xor    ebx,ebx2 j  ]4 M* D5 K! R) B+ T' J
      mov    si,89h
/ {- o1 }  p* g' b      mov    al,es:[si]1 D( }" ^" j+ v* F* C1 u
      call   Change' v  \! @2 M/ d/ h
      mov    cl,4
+ t& T4 H' Y2 `6 Y& e' i      shl    ebx,cl
$ Y- t/ o" A1 T. d4 K# }      add    ebx,eax
8 v9 w' x  p( k! D9 o+ z      mov    al,es:[si+1]
+ t0 b: q/ q3 u5 ]0 s, i, l      call   Change# A- e; j0 p) L& G5 h
      mov    cl,4
- Y% k* L# |4 n$ X$ s0 l8 I      shl    ebx,cl) ?% Z4 ~$ [9 W2 z
      add    ebx,eax& L  h# Z" d  u! F! @: D& C
      mov    al,es:[si+2]# ^2 q8 \4 j$ t: Q6 w* r+ d3 X
      call   Change
+ i& {* C$ f9 ?+ r      mov    cl,4
% n: w6 c8 X( m4 W      shl    ebx,cl
! k, _# K. w- h/ H; q* i      add    ebx,eax8 H& S. v3 I. S, A7 x3 X
      mov    al,es:[si+3]
* {( \0 J" d  |1 ?) J  o. M( g% R      call   Change# O) f$ `/ u) a# K% |8 j
      mov    cl,43 {4 W  D$ Q+ i3 l: F
      shl    ebx,cl
! s! v# T  V/ C2 z      add    ebx,eax4 n/ f  \1 f. m% G
      mov    al,es:[si+4]6 |8 y* R) C0 i% i+ \
      call   Change
. t" Q( k( i- V, V      mov    cl,41 H' K) }: A& C4 o9 |# r
      shl    ebx,cl  |9 `: }, C: U& {5 b9 ^
      add    ebx,eax
) f) L7 a; {" W; b6 S& j0 u      mov    al,es:[si+5]+ K( Y2 v% f7 M, X3 i
      call   Change
+ c5 H' r* j+ K/ S4 I, m. Y+ }# a      mov    cl,4; M2 B) H+ Y/ `- \6 _
      shl    ebx,cl
" B, n; ~+ q" E      add    ebx,eax
( m+ J3 ~8 L2 u0 d: x      mov    al,es:[si+6]
: a7 l, R  s2 I. w' @6 `9 c( T      call   Change
2 t. P8 Q& s5 j  O8 x) ~2 ?: R- V9 {0 Y      mov    cl,4
4 i8 I) ^/ H* ~# _      shl    ebx,cl
' {1 ~# P- G5 C- Z% B' n+ `! S6 M      add    ebx,eax, Z. u) p4 |9 g+ F
      mov    al,es:[si+7]# m7 K. f7 i9 N) `
      call   Change, `# w" R& Z# P# d% c
      mov    cl,4* Q: F$ k; e% ?  Z# O' X1 C
      shl    ebx,cl
1 w1 g$ u/ D/ N. A) v0 Q, u8 W) z      add    ebx,eax8 Z. p1 q" D$ ]9 o* P) I
      ret8 R- n' d. }' ]1 {/ C- e5 z
PSP endp
! P* a& N/ y& x  _( a0 n( ?;================================================================================================' z+ A; W) g0 Z( f/ S7 W9 j
DPSP proc near
5 X5 Y6 Z; `+ c: G- L0 ~+ M      xor    ebx,ebx" e/ \  I3 c: h6 {+ G
      mov    si,8ah
+ I  }9 z4 Z9 _      mov    al,es:[si]
7 E8 t) b6 @/ H% k* G5 T1 k      call   Change- N3 I2 C5 U8 j: z: T8 `
      mov    cl,4! g: S0 @; l0 T- L
      shl    ebx,cl8 g9 n! ?8 Z- d2 x+ Z
      add    ebx,eax
9 d/ o# w& Z& f      mov    al,es:[si+1]
/ f( W% R5 r$ `, b( h- V      call   Change! @8 D: U( w  o6 D- s5 |4 k
      mov    cl,4
- \" z* A& }4 @! {1 H2 g8 e      shl    ebx,cl
+ a9 k4 P( j# T& H7 d      add    ebx,eax2 x. W! |/ O. M* r1 K2 C1 E" q
      mov    al,es:[si+2]! C& _+ q2 \& w# J/ P8 Y
      call   Change! i& ~* R+ F" G0 N* p# m
      mov    cl,4% e+ g( W+ w3 _$ ^) D
      shl    ebx,cl( v6 i& e+ p. W- l" g2 V
      add    ebx,eax: p1 s( U5 W: \- [! o
      mov    al,es:[si+3]1 v2 E  M& V  ]6 A' g  S
      call   Change
/ p# g* A& h# |! q$ l4 F1 [      mov    cl,4
+ r+ x% n; \0 x9 S7 E4 W1 X; t) t      shl    ebx,cl! a2 k1 i  k) O1 A
      add    ebx,eax7 U4 I: B9 ]/ Q7 ^2 r$ ^
      mov    al,es:[si+4]
9 o; s3 e: @, z5 o9 Z6 _/ b      call   Change! |5 O8 i* j& L4 P& c
      mov    cl,4
2 m6 i9 B4 F* i2 ~+ U0 C+ ^      shl    ebx,cl
: ]4 C7 M& x. V/ `# w7 v' x      add    ebx,eax6 N. @- S. M, S% h
      mov    al,es:[si+5]
8 J' k$ _% ~2 r# c      call   Change
5 o' d" L$ Z& g; A2 T      mov    cl,4
% j- |' f  |, M9 a7 |: \8 W! h7 T) b      shl    ebx,cl' k% g/ a6 U* E; e6 [/ V
      add    ebx,eax
& M1 Z: w5 \6 ], X0 E) j* F" _- e; R      mov    al,es:[si+6]
8 r9 a* P# v" D, E2 S7 ?* _7 D8 ^      call   Change
5 N0 u, N; }( q8 M" `: N& h/ V      mov    cl,4
3 {6 K% p; m# p$ n      shl    ebx,cl
( j+ B3 e8 H% n- t6 t! L) E      add    ebx,eax
* j3 Y1 c& L/ V  j$ x      mov    al,es:[si+7]
2 W; e& {- `. {+ h- d: K9 q+ t2 \0 G      call   Change8 x- [7 m2 L7 S" c% m
      mov    cl,42 U  k; @1 b+ j5 x1 K* U
      shl    ebx,cl
9 Q' \1 p5 o1 _$ L& g# q      add    ebx,eax$ ?8 ?' V+ H9 ~% w5 O
      ret
, Z( k* R/ ^4 D; V- @$ ZDPSP endp* S  {2 A% i. {$ G2 B
;================================================================================================
9 U3 F& q' G/ T2 Z' G( V+ ZWDPSP proc near
9 t& U6 O' h6 n4 I+ I$ F, T$ Q      xor    eax,eax
0 [/ Q: E$ Z7 A2 N+ v, A8 N      xor    ebx,ebx
& K9 K4 R, N5 q      mov    si,93h
, a" {* d! i* M/ ~      mov    al,es:[si]1 z9 @' }% P9 m# |+ I
      call   Change
  D4 C. E) L/ a! U' z2 m. z$ V      mov    cl,4
: q# y: d" Q. p7 _/ ]/ Y      shl    ebx,cl
7 f9 l6 S+ }: }3 D      add    ebx,eax/ ~0 n- i! B  e1 K3 I: A$ x3 a
      mov    al,es:[si+1]
# P7 F: x0 L* N% r* l# l/ O      call   Change
. t) L  d5 `; a- K- |. ]      mov    cl,4
5 h" ]- _5 x; x+ R2 ]" s" K$ `! X      shl    ebx,cl
, A$ Q0 ?/ T1 j+ d3 l2 ?      add    ebx,eax0 O% f6 V9 E% J% s& b! ^
      mov    al,es:[si+2]! F1 f+ L9 o4 e: D
      call   Change
2 O3 P* W  z. r7 W: g4 q# j3 e/ [      mov    cl,4: w  Q% |4 [: Y4 ?8 J; G, b) w
      shl    ebx,cl/ Z3 E6 Z4 D( B0 W, ^# r
      add    ebx,eax8 T; s( @$ F4 E2 D- E5 v& \' D  ^
      mov    al,es:[si+3]
1 |6 h* R9 [, W      call   Change
( N  s% \" ?  S      mov    cl,4
" y4 X9 V# `- n3 b' o( D      shl    ebx,cl
2 D6 D4 `& `( n/ t& ^" i      add    ebx,eax/ W6 L/ x& D9 L0 n( V& {: {
      mov    al,es:[si+4]- [9 ]. I; F7 ?# M1 H: |
      call   Change' g0 Y+ r. y7 c" s6 X
      mov    cl,4. S' K5 A, ~  x& s4 y: H* O
      shl    ebx,cl
' F. w6 g$ Z7 M      add    ebx,eax8 n3 G* ^; P8 v: ^  z# O7 i
      mov    al,es:[si+5]4 Y# m3 a4 C- E
      call   Change
, f/ W6 @" {  M$ v7 t5 x      mov    cl,4
! Z7 A6 S: A8 t$ c      shl    ebx,cl
  b: y, P0 J+ L5 }& g6 Q      add    ebx,eax, l6 s  z, r0 D) J
      mov    al,es:[si+6]  E$ ^" l4 H) I1 k8 ~
      call   Change, O* u" o4 D4 G! F4 ~- U5 p
      mov    cl,48 E- W) \9 D2 l
      shl    ebx,cl8 k7 |4 l9 b8 _) `- M: u0 W
      add    ebx,eax+ I0 A) |% ]$ M+ p+ v0 ^; M5 g# h
      mov    al,es:[si+7]4 ?) u0 A/ [, D7 b% ~. f
      call   Change" s* W5 Q  i$ ]1 p. z. o; r/ D
      mov    cl,4# y  i8 u- n+ t* D; d# y* D
      shl    ebx,cl
1 Y: k; Q' z5 n      add    ebx,eax' G) f% Y3 v4 X# N  G- Y
      ret
, G8 R2 |& O0 X% T3 K4 Z& h. vWDPSP endp
  D, t) u. {9 b;================================================================================================
3 x- ^9 o& m! z+ q2 p/ ~0 [Change proc near: G3 X- ?+ o' t8 T! j
A:   
8 }% X. z7 l0 X% {6 u; J- m5 i      movzx  eax,al2 |/ O$ `8 T8 q/ J
      mov    edx,eax- Z. N8 ^' I5 Y$ U) D4 r
      cmp    eax,'0'            ' A  g: V. w$ S* o5 z. d
      jb     A) o0 m0 o/ O3 q3 X, k1 z
      cmp    eax,'9'            
3 m# a& _, j. N2 Z      ja     B4 k% S2 P+ r$ V9 E) }! J
      sub    eax,'0'
* m7 a+ A3 K3 O6 [      jmp    short E
/ L5 ], P* g5 ~+ c( w) oB:" t9 s% V8 A' L' C
      and    eax,0dfh           
2 ]+ D( t/ N5 Q7 ]2 g      mov    edx,eax6 g& C9 t9 u* m' m2 `! A3 f
      sub    eax,37h            2 ~9 @8 _* @. W$ N% @- R# f
      cmp    eax,0ah) D2 v6 q  i& Y5 m3 a* p7 L6 e  ~
      jb     A                  + X4 r" t, V  }+ S5 L7 Y
      cmp    eax,0fh3 u1 L8 a( }# y, O3 D' P
      ja     A                  2 d0 K6 u2 [5 r& W9 a3 ~' x3 [
E:4 @# X( O1 L: W
      push   eax      
6 {- ~9 m0 L, g0 K& p8 i: s      call   PRT               
+ e* ?5 V( y/ ~2 i+ E! L      pop    eax& [" r0 b9 A  U' Y
CExit:
/ {  M4 v# w! o6 Z, o( W. g      ret$ N* h2 G, v( I0 N/ s" W
Change endp4 U" A5 n2 }, D7 A' c
;------------------------------------------------------------------------------------------------1 W5 @; Y, R! x( N, w3 e( z9 d
PRT proc near' r& L9 U3 D3 I5 i! X) t
      mov    ah,02h% y; H" S# c; O; p2 I
      int    21h
1 u4 ?  E1 c& z7 ?% m8 Z      ret; Y3 \& A# B1 D' Q' z
PRT endp; q2 r6 J0 S% s7 H% s6 i' l
;------------------------------------------------------------------------------------------------
. X+ {" e; C9 M& \9 b" u. gcrlf proc near* V' E5 Z6 L$ e, q. c
      mov    ah,02h
& c. J' l- Y0 u& ^, u/ `      mov    dl,0dh& d+ \% H# T2 @
      int    21h$ [$ t6 {' ?5 R2 e! I7 H
      mov    ah,02h
: v/ C8 B8 }5 [# l- R1 n# E( k( w      mov    dl,0ah
  U# k8 P7 q8 T9 J      int    21h
* c& Y0 o9 e9 [. X! }" y' F% R      ret( K" m0 @2 B+ B. U9 d+ v0 o
crlf endp& R1 U+ `% j* ^: p
;------------------------------------------------------------------------------------------------
2 T" [; l1 H( S! I, h2 v_32bits proc near
' m! P" k8 X5 b8 H9 {  g% d0 e; G      pushad2 }! V2 n* a, R3 V) E$ o+ L# g
      mov    cl,4( |' P* p& \" w. t# Y
      rol    ebx,cl- e+ {7 g5 ~, w( f. A. ^
      call   print_4_bits
6 d2 T& N' z4 |- g9 ?7 i      rol    ebx,cl
" o4 n( |- b2 K9 Q      call   print_4_bits& d1 h) |# G6 m
      rol    ebx,cl) r% R0 p$ G) [! p
      call   print_4_bits
7 o& v; n3 n& B5 z; x      rol    ebx,cl
6 p+ V2 y3 J; m  [# F9 l      call   print_4_bits# a8 i( ^! [0 o4 q9 Y, v9 O) p
      rol    ebx,cl
2 S7 ^$ j8 y6 y# F! _0 R      call   print_4_bits
" Y5 O8 ?1 o0 W; a; }      rol    ebx,cl9 u$ T1 X% I0 \! Y
      call   print_4_bits
2 G- z. x' _0 l5 \! ^, Y      rol    ebx,cl! M9 @3 m# X4 @# J$ k- ~5 E) L. R; w
      call   print_4_bits
% w& q! d7 x1 p9 F6 V; O; a; d      rol    ebx,cl7 S( r+ D3 x) D6 z4 c
      call   print_4_bits
/ C: B" C1 m7 J+ {# _, @      rol    ebx,cl, \8 `8 Y# b- |& P: u
      popad
+ P4 B2 W, n6 Y! }      ret
+ Q8 K& z1 e6 h. l/ S_32bits endp
9 w9 s  u$ ^& u! ]: O;------------------------------------------------------------------------------------------------
) T) I! |( p# ^" e  X# S6 o  B% j_16bits proc near9 c4 y* ]5 i: q. e& t
      pusha        
; L& l3 `" J; ?( Q% i3 k: [      rol    bx,cl
) i. h( Z# b$ f! Y      call   print_4_bits9 z5 D5 y' |; s* B" w
      rol    bx,cl
) u( C+ D! `" {, W  F      call   print_4_bits9 w) d: @; U* Q. Z
      rol    bx,cl
0 l; l0 @; C& s8 c( p& n      call   print_4_bits
* B, J+ B* R: b/ Y# Z/ Q. o! {4 a3 H      rol    bx,cl
) @$ k; i3 W5 v! D      call   print_4_bits
. k' b$ R; g- ^3 N- p0 ^8 X      popa. t* J4 a% G7 k: a' Q
      ret8 P: r( F+ O. N( F! l; j
_16bits endp
7 m: \9 p: F* T0 V% V# C0 _: };------------------------------------------------------------------------------------------------4 L# X4 N$ X& ^* \
_8bits proc near
  a* P; ^* q' Z5 k$ p: T      pusha        
" c7 V: i9 e4 U" C0 V      rol    bx,cl
. y8 Z0 G5 W$ ]6 M; {7 p" b1 i$ R      call   print_4_bits
, X5 U3 X% {7 D  D      rol    bx,cl
. J" n. L* Z9 K2 D) q6 g6 y      call   print_4_bits
0 h5 R/ m4 u9 {& R) q: l      popa) F7 U3 t3 c) p* C5 }/ ?
      ret/ x$ B$ g$ Y2 O  W2 N5 T  O
_8bits endp: }) R, c5 q9 q! m( I
print_4_bits proc near
4 ^! S+ m' M/ n( H" b$ s$ A2 z      mov    dx,bx+ g% s$ g) e* r1 D! u" p% C
      and    dl,0fh
3 w8 h: M, [+ Z- ~      add    dl,30h
- h2 ]- F4 N& y5 x& y      cmp    dl,3ah6 C, d2 l0 _5 E! |% G' m7 J. y
      jb     print/ x( t( P7 g! w! E" |- T
      add    dl,7
2 |2 u  ^" Q" y- a+ F) t' l- g# Z2 Aprint:  % q; F3 p. }% l/ t& r
      mov    ah,2
) t( M" V, V7 @% {+ F. f8 C      int    21h" s+ C  y+ I, `# a2 I! a) k
      ret
6 Z- V! A% I. ~8 ]print_4_bits endp    6 p; W) F5 @; k: E) v" B2 v
CSEG ends) P2 u( }0 R+ r! Q5 S* x. C# ~
END
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2026-4-25 03:32 , Processed in 0.042310 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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