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

關於SEGMENT 宣告變數的問題

[复制链接]
发表于 2010-10-19 16:50:51 | 显示全部楼层 |阅读模式
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)! x4 h2 h. ]1 v) O* y) _7 e

) j0 F1 a1 b# x+ V$ q" E4 z則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'5 D7 s% z. }- h6 u0 T+ x

. b2 }2 F' i- |6 |! t' m6 F! j6 J宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝  
' m) ?( H# ~( {, ?; x
' M3 ]* ~7 f) e% p.model small
; O4 B, j' G7 _.386p) Y+ ?) {1 S0 w% s
DSEG SEGMENT USE16'data' & f, [( a  Q& y/ u; x% n

) [9 f: F+ t" b% J' z6 p& XDESC STRUC
2 g- q7 K- v8 F# U/ B     LimitL DW 0 0 x6 v) B& |) Y, I4 D
     BaseL DW 0 * D  U/ h3 t% [6 e+ O5 i4 P
     BaseM DB 0 ' J3 h, U1 M- I0 J+ h. m  U' I5 c+ Z
     Attributes DB 0
3 }: }) a+ N# Q$ X- L( D. b     LimitH DB 0
7 F; R: K4 V( ~/ r9 `9 S     BaseH DB 0
( }7 v1 G5 y2 t2 W5 }DESC ENDS- Q' O4 v7 a+ s2 S3 g1 t' O' B
0 d6 O3 n& K6 B& E5 g
PDesc STRUC' m8 E9 E# F- d( h; C' m5 ~: J
     Limit DW 0
! D! i0 H, B) m$ b: D2 N     Base DD 0
3 i, W; y) U2 BPDesc ENDS  Z1 \1 u, p$ E0 M% G: r

- |/ B3 g7 {: \% ~2 F. M3 qGDT_def Label Fword
9 l: U5 W: \; {) YNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
; Q* l& }& B: c3 O! h) VData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
1 m- U: z/ }' x2 D, A, t: `" MGDT_Addr PDesc <$-GDT_def-1, >8 A+ l& g. H2 n- O

& |5 H6 L7 T" k4 K1 yMaddress Dword 0
7 v. w" @: U$ V% C. y
2 D( [' u. O$ q$ d- S0 J9 W& {DSEG ENDS
1 g* X# L: ~' w+ d( pASSUME CS:CSEG,DS:DSEG
. A  D8 b" V8 d2 ?. J# i
3 ]% B1 u$ I6 D5 W: ACSEG SEGMENT USE16'code'   j. \: P6 C- O% c- M4 Z& b
      push   ds
' b. k2 Z- p. I* u, J3 Q/ o      push   es
' H" A, |2 P/ ]; J      push   fs, o9 H, L8 R+ }8 L5 C
      push   gs0 \3 K, r& e6 r  S) F
      call   big_real_mode     $ W& f- \$ C1 o, L9 r; X6 T. G
      call   Get_Commandtail, @3 v: O- d7 S
      xor    ebx,ebx0 |; L  ^* U2 ?$ w( v
      mov    si,82h  X  m- J! B% j' Z; v
      mov    al,es:[si]  m, m1 G  k1 J
      cmp    al,'r'
( k) }  I) I; E4 c3 ?* }6 A      je     R
# j! `: }. s5 {' m! F9 p1 a& n      cmp    al,'R'
+ O4 q# R7 D/ ^3 Q      je     R
) ~2 P, x$ n9 A. U      cmp    al,'w'0 X% O  u# m/ x# j5 C" L: r. _
      je     W
0 ?8 m5 o3 O. s' A" g2 _      cmp    al,'W'- f$ B' x9 i, D/ q. j3 m
      je     W         
) M* n( w5 B8 a; ?2 YR:3 a+ e( s7 @- p" p
      mov    si,84h
4 u6 S" {8 |3 {  H  Z9 S- m      mov    al,es:[si]
) M) K2 P2 Y( y% O      cmp    al,'b'& ~) J; @% D5 P" }) C! W+ j
      je     RBT
2 g1 O% m( X5 e6 I( a      cmp    al,'B'
3 I; w. I6 V0 Q$ N6 Z! i& }4 O      je     RBT, H6 t( f" G& w# R- [" x
      cmp    al,'w'" B) b( i( q3 y" A
      je     RWR7 {9 H+ y' w8 S% E& X
      cmp    al,'W'/ q# Q( G$ A* j. _9 ~+ q$ K
      je     RWR0 t6 v  R* D: k# _# G
      cmp    al,'d', b! j4 Q$ E7 e( e; m7 w
      je     RDR
3 v, \  ]4 K/ E& @3 P/ ?; h      cmp    al,'D'
. K& S0 x7 f# {' J% e" H) d      je     RDR             6 Z( b6 r7 w7 r
W:      + A4 i$ B0 q6 d8 N! e9 Q/ Y3 p' J
      mov    si,84h+ u* A7 M% [" c4 a* E) Y% s
      mov    al,es:[si]9 t# R) e( z9 s9 H6 T
      cmp    al,'b'
3 X& r0 }. O; o8 ?$ b      je     WBT
, _$ f* f. c6 B2 d7 w+ O      cmp    al,'B'. k! M, n5 o. l9 K4 e
      je     WBT1 x7 _5 W* b, w/ V8 @. A
      cmp    al,'w'
7 o# A7 _& c2 ]$ ?      je     WWR
- E' P% e9 \9 M0 f( p% H6 W6 N; S      cmp    al,'W'
- J9 _* Y8 ~* T. a1 g4 y4 `      je     WWR7 |4 p! R9 L# J: p9 s$ F
      cmp    al,'d'
  F) x/ {( O2 z7 {" W+ D4 l      je     WDR
) d3 I# y& N- v& F- K      cmp    al,'D'
' U& C2 r. j4 R, \      je     WDR" p: X: I$ Y, O# M
RBT:
+ M. ], b2 d: j- B, @9 {      call   PSP        " B: `0 ^& z# M, b! i7 I/ G
      call   crlf           6 a% q5 p, q6 i# ]; m
      mov    esi,ebx
# V- O$ t( _# J' J; a      mov    eax,fs:[esi]
& X1 Q& }9 O+ a      out    80h,eax
- N% J+ r2 D; v" _      mov    ebx,eax
' W) a: H( @7 R# _! ]4 z      call   _8bits4 o: m: y) m" ~3 D( ~
      jmp    Exit
" H- w( x2 h- |RWR:+ a' t9 C8 F: C5 \; W5 M
      call   PSP        
' P! q$ v# N" I* W" I/ \/ \4 s      call   crlf           
7 ], I- f  X. u      mov    esi,ebx2 Y( o3 N. T4 Z+ e* b: m8 K2 R7 j7 b1 j
      mov    eax,fs:[esi]
& W! C" v2 E/ `0 {8 b( D! \      out    80h,eax+ L1 ^" j) i) y5 R' D3 m. w
      mov    ebx,eax
2 E! R4 P* ~0 X9 D$ `$ f* v. J      call   _16bits9 T' `0 C, {9 J& i: H; Q7 o
      jmp    Exit
/ v* H  P9 ]. A( t0 f! vRDR:
9 f, h6 R3 `5 ?6 T) V: o      call   DPSP        . Z7 R: C; x# ?3 _( Z
      call   crlf           
& k  x% ^! x7 n5 ]      mov    esi,ebx
4 @0 c2 H. L% \8 N' ^- q% t      mov    eax,fs:[esi]
* Y+ P8 E8 e& B  J+ P+ v6 e7 {" ~      out    80h,eax
0 E0 R1 x; P+ V      mov    ebx,eax
3 i2 u" u, J  L5 q. ^( ]      call   _32bits
4 b! U) }! ]- e  Z      jmp    Exit' h, l9 _' [# w
;------------------------------------------------------------------------------------------------
" e+ l  @9 d$ @+ J! _, T# VWBT:
* r4 C) D# [& \3 z  \4 T' q9 H* \1 c      jmp    Exit$ W0 C; a1 R3 ^. X3 s  r
WWR:
8 R! Q- g  b9 r- z; ^. k      jmp    Exit/ x' `! r  b9 _4 P
WDR:
9 P0 L0 j) D5 i* j) i      call   DPSP
) q/ {  ]" x1 y( Y. P& r      mov    Maddress,ebx      1 a+ O$ r( V- x  g
      call   crlf
" t* ^3 k8 X/ K      call   WDPSP- N) l2 n. I+ r
      mov    eax,ebx
; C3 {- h! L( z  ^0 P! e  l  b  }      mov    esi,Maddress         
4 x+ l: {' q! Z! ]' @1 |5 E      mov    fs:[esi],eax
# e$ w8 }& J, Q3 N8 Q; H      out    80h,eax7 b& p# E, z8 k- W9 g% @) S
      jmp    Exit
9 D  e& T5 o! Y. z;------------------------------------------------------------------------------------------------      
% ~/ K( z7 r8 V7 A0 cExit:
4 m( Q! x2 z5 P0 d5 E      call   real_mode     : m3 ~0 a! z" C
      pop    gs
; g. s' x( T' Q2 a1 M      pop    fs
9 K- O  H! y# R; \& n# f6 O- H      pop    es8 E) i" Y5 E3 z  K& E4 X
      pop    ds       # `7 }6 Y  H* e, Z; F! t
      .exit
5 ~* V6 w1 \2 Y( E;------------------------------------------------------------------------------------------------' X" S0 [  i. q, u; a
big_real_mode proc near6 [% o, _; M5 A0 {/ p4 o
      in     al, 92h
2 {1 x; M8 H1 p1 M9 I& ~# |      or     al, 002
, H6 J( h# _' {9 Q" p. v$ }: W; a      out    092h, al+ W3 N1 x$ T9 Y0 U. k& i
      out    0edh, al
% i  R0 y: x4 W% y' a8 ^2 H) F4 G5 k* I      cli; m; k4 [; v3 p9 ~+ J9 p
      mov    eax,DSEG
5 N9 b5 l; U& o      shl    eax, 4
9 a  j( c# Q# s      xor    ebx, ebx
  y8 h& `3 _! b- i  k$ M      mov    ebx, offset GDT_def
* l5 W. N0 I6 t* P      add    eax, ebx
2 J% l  x$ ?# B3 M* f* w0 Y      mov    dword ptr GDT_Addr.Base, eax
# X$ e, Z3 Y) O      lgdt   fword ptr GDT_Addr
6 t1 T& L* l+ h/ Y/ i- k' W" H, t: J      mov    bx, 8
6 R9 a% B2 `, O1 r; g      mov    eax, cr0
0 F7 w2 c) |: ?) Y- Q- G( S      or     al, 1
$ y4 t- o8 T/ T      mov    cr0, eax
, M: M: M! H3 z      jmp    PMod* Y# g- W5 B" D
PMod:
. t9 A) n/ E6 a. o( b$ H      mov    fs, bx
6 `) b2 O# l: J" ^      mov    gs, bx
, {7 H  }( u8 M$ h      mov    eax,cr05 d) `0 m8 a! ^5 M
      and    al, 0FEh
$ v6 T  P2 P7 O% i      mov    cr0, eax 9 y3 l1 P2 }+ w2 |
      jmp    RMod! ]& ~" O5 M3 S8 H( A* }# S
RMod:) K% w6 B3 ?6 L' g* Z4 {
      xor    ax, ax
! O9 E$ [" I) w( a      mov    fs, ax
( t* Z9 _& [$ L      mov    gs, ax     : R! y- Y) j8 ^
      sti     * O( C7 n. I. X0 d
      ret
9 j8 U) c! D9 H% Y0 @( fbig_real_mode ENDP
4 ?3 j3 u, w% j: V;------------------------------------------------------------------------------------------------  Y5 N8 h: l- A+ O( V; D
real_mode proc near4 x% V/ Y! G' @& J4 l& y
      in     al, 92h- u0 g7 W6 @: F8 }
      and    al, 02
0 F( j. ]7 l/ q* X6 c      out    92h, al      f9 ?5 p+ Q: D7 M; y
      ret
$ c$ l4 b0 L9 p2 g; Greal_mode ENDP7 y4 R! S6 h+ `
;------------------------------------------------------------------------------------------------! F) i" P% F; N" R- b) V
Get_Commandtail PROC near
5 Z1 F: {. i6 F5 |- x6 E      mov    ah,62h
1 F; l/ ~. f6 c5 X! S. m      int    21h
$ P2 n) O, Y( J# X/ T( E      mov    es,bx# X* W( [  M/ P  e
      ret
( R; W/ Y( [! S0 W: s/ t# ]Get_Commandtail ENDP    9 I( e, X5 G: X8 m) V) p
;------------------------------------------------------------------------------------------------5 Y0 l' M& g  L
PSP proc near: [/ M% R: S* v  G
      xor    ebx,ebx( Q. C9 }% [# ?* [( M/ d) Q
      mov    si,89h
+ B# O  k" p' W- z" E- U8 X      mov    al,es:[si]
; o! h9 H  V# N* N      call   Change# N6 r9 ^  }/ T
      mov    cl,43 f. Q4 }1 }  E# d& ~% w
      shl    ebx,cl, T  S; W7 V( R/ N+ \
      add    ebx,eax8 D8 W' B6 d1 g( f1 o4 P
      mov    al,es:[si+1]1 m7 n, h4 r8 S5 v" t7 @
      call   Change4 |  Y6 M; O$ p9 D( |! a3 G/ O
      mov    cl,49 o' Y2 b- n( ~+ N
      shl    ebx,cl
# x0 ?7 h% A+ S' O& i      add    ebx,eax: [3 d' n, Z, R6 s
      mov    al,es:[si+2]
& I& O# N2 h4 V3 @# ~( r7 I. N      call   Change
: J1 j/ {; G3 W% k) u9 o9 g      mov    cl,4$ i* A. f( R; Z+ P
      shl    ebx,cl
# p0 W! Z# B1 ]( F3 z* N/ A      add    ebx,eax
3 q" I+ |8 D& U- u* e      mov    al,es:[si+3]
1 l. i2 B+ c' ~) [      call   Change7 n# S" }9 s6 `9 k1 X3 G* m0 r8 T- Z
      mov    cl,4
, i$ g) f& _, i: }7 Z; F5 m( Z$ ?# ^      shl    ebx,cl
! R7 x+ n! K9 b. V9 c      add    ebx,eax# p- l( H. H8 {1 p. L
      mov    al,es:[si+4]
4 g. t  U; u- U      call   Change7 l8 T. X1 e0 E/ G9 O
      mov    cl,4
% i! X9 a( W* d& P; i      shl    ebx,cl. Y! E" g$ X1 S$ N0 ?
      add    ebx,eax& U, {1 Z' S4 ]2 H- t
      mov    al,es:[si+5]
) l: D& t) g# r+ m+ x" W  J( A      call   Change& z7 X2 \* O# b
      mov    cl,4
4 V. G+ Z  ?' a7 b3 C' h: Y* Q9 d      shl    ebx,cl% X! S7 [3 ~! S
      add    ebx,eax
: d+ Z% L) a. A, _      mov    al,es:[si+6]: ^7 E0 m9 B9 |
      call   Change
9 k( G8 V7 R3 }- V3 p      mov    cl,4+ A! \/ O: t5 ~( a1 m0 `
      shl    ebx,cl
: T& Z( {) E6 B# s      add    ebx,eax; k: r8 U: j6 ]4 P; Q$ ~
      mov    al,es:[si+7]
5 x' J! `+ R( k- p      call   Change
. P. a! P# Z0 {* j# c7 o2 F! u+ l      mov    cl,4
( c$ k% l' ]7 V0 c$ J% f9 z" i' H% T      shl    ebx,cl$ x; `8 }" X% i" G0 [
      add    ebx,eax
# c- p* a$ ~( C; ?  Z( `  T      ret7 W- m% V0 M1 q9 R
PSP endp
* U. ~& A7 Q: R, s% r, i5 i7 e7 P;================================================================================================
* w; Q9 ^4 B5 q* t' F- l. h' R5 RDPSP proc near
& b! b( q$ F' R/ a0 l3 ~      xor    ebx,ebx
1 Y/ _4 p) I* [- B  [: a5 G      mov    si,8ah
. S" b$ Z: R0 R, v1 ^5 D; A      mov    al,es:[si]" s" D' ]; X1 f6 p
      call   Change
3 T( R! p: ?2 U' U5 t* m      mov    cl,4
& h1 y1 P" K9 ~( ?      shl    ebx,cl
9 {7 T% Q' g( `$ m5 D" x' Q      add    ebx,eax
" b' H0 M. y, p4 ]      mov    al,es:[si+1]
$ G& ^7 ^" f# D6 m- ~) o      call   Change' e3 A, Y" L; z+ d( o
      mov    cl,4# ?# H* P- I, ~3 h" E, e- J
      shl    ebx,cl8 Q) z$ x; n% e  T
      add    ebx,eax* p" j6 a1 F1 D4 s, {( c/ y: [! |
      mov    al,es:[si+2]
1 S8 T+ [, U$ I( W, v      call   Change
5 ]; f' f- N6 @5 R      mov    cl,4
& J  z3 s/ I( z7 z: M: M, a      shl    ebx,cl& m' P, b/ x' O
      add    ebx,eax
' m2 Y4 ]. N$ v5 Y, W- i      mov    al,es:[si+3]4 ^* w! G( `& m2 q( M
      call   Change: ]+ C4 b  z$ J
      mov    cl,4
& E3 J+ a4 Y, n; V      shl    ebx,cl
9 m" U8 Q# U4 h* g      add    ebx,eax  E1 r5 s$ i( m  `) ?4 R
      mov    al,es:[si+4]
& S1 M) y4 a+ X( `      call   Change& [. B7 n! w( x# Q7 B
      mov    cl,4
- ?( q6 ]9 _( E& f      shl    ebx,cl
: \( |; v' R% Y! w; H9 j      add    ebx,eax! z/ S; Y& P. m+ Q+ D0 b3 j
      mov    al,es:[si+5]
- }1 k* ^7 M: t% \3 V" B. q, G      call   Change
/ g& ~' R3 [9 ]5 ~      mov    cl,4
/ U* o2 D5 j, M      shl    ebx,cl
% e, t& K: L9 o+ W# c      add    ebx,eax
4 \, O. I! S; l% ]' _6 ]      mov    al,es:[si+6]
) J3 A( d5 o% t6 h8 ?( [7 U      call   Change
6 w* s6 x7 T' }5 p. j2 ]7 b1 k8 ]+ |      mov    cl,4
( s# h- g) J6 h  t( @8 q3 d  K! D      shl    ebx,cl
2 x( E( y5 M" y, ]: t# j      add    ebx,eax/ `. N" Z3 _+ C3 c! @
      mov    al,es:[si+7]+ E$ W+ ?$ j+ A- p
      call   Change
' w1 _: T+ |( s+ \      mov    cl,4* S' W; R/ l+ T7 L2 W) L( t
      shl    ebx,cl/ x" s+ h9 l: j9 l# b
      add    ebx,eax
! J( q$ Z7 f4 K      ret
# o/ U2 g. M( A! |5 pDPSP endp% x" X* a2 P2 T4 p% E4 W% ~
;================================================================================================( J; C$ r4 k; u% F0 q( N
WDPSP proc near1 N" A( w7 @+ S8 Z" `2 L7 }3 q
      xor    eax,eax3 l8 ~+ g# T; Y+ s
      xor    ebx,ebx
  j$ X+ Y& a' `3 e$ [2 [" N      mov    si,93h
  l! t0 }$ g8 }      mov    al,es:[si]
% m, y( z  j2 V& q      call   Change
" g+ v$ ^- Z/ e6 z7 n. g: S      mov    cl,42 a3 w6 ^5 E9 l3 r% F) V
      shl    ebx,cl
2 ^2 j1 C/ D0 L( w) Q& g8 B      add    ebx,eax; A2 D8 x& H5 Q
      mov    al,es:[si+1]) |0 [! v2 ]+ ]/ I1 x8 {
      call   Change
! x5 n/ m7 w3 V. C2 l2 c) k      mov    cl,4
' y1 O1 F! w1 W      shl    ebx,cl
+ \2 ^6 g2 `6 m( a  f" s) L3 B      add    ebx,eax9 _$ }8 h2 R* L! o
      mov    al,es:[si+2]
" r4 v; h! R9 P- `8 Z8 e3 X5 ]      call   Change
5 H7 S. g& n) z      mov    cl,4
, n/ j+ a9 m# A  {* j      shl    ebx,cl& d# e9 O: `$ t5 y, \( ]5 i$ M& [
      add    ebx,eax
( W8 I1 v$ s, w+ t2 x4 G; U      mov    al,es:[si+3]' k- Q5 f+ A3 L+ h
      call   Change
# u$ }. n9 f1 ~- r" X      mov    cl,4
6 A7 P- S1 J" R) R1 ^2 a1 ~+ y) o      shl    ebx,cl* Q& |3 E6 U. j3 c1 k! l
      add    ebx,eax
# B1 `* j1 A+ c7 f# ?7 D, u% k      mov    al,es:[si+4]
4 `% ?/ c9 O) }& S: q: B      call   Change* B8 M% T0 _; o3 t
      mov    cl,4
+ w; ?3 Q, e3 c8 n      shl    ebx,cl7 N+ l1 ?* J( |2 ?
      add    ebx,eax
- F, Q* p' u8 y1 S) T* s$ A      mov    al,es:[si+5]; }! f' t) M0 j7 t  H% C' L
      call   Change
# p8 y( E9 @9 l! i& C" n- x      mov    cl,4! ?' F! k& ?5 O0 ~
      shl    ebx,cl- F" f% X+ O: E% K
      add    ebx,eax
: G; F1 {7 ]' Q, W      mov    al,es:[si+6]8 S9 G' |, X3 M3 s
      call   Change6 I& |' V  k4 U; o. p8 `8 K8 ^
      mov    cl,4
/ V2 I4 l4 B% S/ v      shl    ebx,cl. r6 G4 y. l) U( {1 l" y
      add    ebx,eax
5 ?' j8 F) v  ]7 Z# ?      mov    al,es:[si+7]$ V5 G* x4 ^5 F! ~
      call   Change
. @# j- _, W, H. s/ ~      mov    cl,4
+ \% A0 F# m' B4 W# P* q      shl    ebx,cl6 K& L$ q  X* O) i
      add    ebx,eax$ G8 Z+ d& W$ `5 k  n9 E% A' s
      ret
( I6 Y( G+ q; vWDPSP endp
6 r/ {* ?4 m( ^9 O;================================================================================================/ Y' p- a$ h; Y0 [3 L, A
Change proc near; ~7 l7 m! ?( @7 u  n7 Z. v
A:    7 j( d3 B2 w( Z% s2 \3 f
      movzx  eax,al
" @* _  C9 S  z% S- [: K8 a3 j      mov    edx,eax
* r7 L% e! n/ a$ m+ F  ^      cmp    eax,'0'            - b+ ?5 W, o2 k, y, D( j# ~
      jb     A! ?" L' W4 H8 b6 J
      cmp    eax,'9'            
% o0 e9 w# C7 d! f      ja     B8 c; a8 H8 {$ y3 I" p
      sub    eax,'0'6 v9 Y: Z( f) K% ~8 y) R
      jmp    short E0 I5 l0 l! }& F: s1 Z' u
B:
3 d9 G& x; J; ?, R% w1 B! ?      and    eax,0dfh           " h4 Z. C: q- L0 G$ A2 b
      mov    edx,eax
. u+ Q. n- U7 O: K      sub    eax,37h            ( I+ Y5 n# V: W5 U
      cmp    eax,0ah5 R# _) d6 C. {7 O2 ?
      jb     A                  5 G/ T/ K3 Y' ]
      cmp    eax,0fh1 M- _( i# `. N, l; F  ~6 ]7 \0 c
      ja     A                    z& a# J% v( {
E:
3 u6 [6 G, u$ E, F* x1 F* l6 g      push   eax       + R8 s& k: Q. }
      call   PRT               
8 a  W: x- y* l' L- r7 R7 }0 l      pop    eax
( f0 R: y" n9 y; b: D1 K6 @CExit:
( t  R* ^6 H+ }# ^  ~+ F      ret/ l$ T" }6 A, T$ B  |& N
Change endp
8 l5 W6 E' b: a, E2 G' |- B* P" H;------------------------------------------------------------------------------------------------
8 x% B( h0 q" [4 k3 |# dPRT proc near/ h! U! b4 H+ d8 Z
      mov    ah,02h% F8 N/ ~, j0 {7 p" C- ~
      int    21h
7 B$ @* C% \- i" j- P  l, ^0 _      ret' {  o  E( r) U$ B; ~
PRT endp& @( Y) X6 D: i5 k. y* Z
;------------------------------------------------------------------------------------------------, O9 I* E: b. o
crlf proc near
& E) I" x3 P, C. l3 Q8 `, v      mov    ah,02h# s5 f2 R2 d. F3 k
      mov    dl,0dh
5 `% h' l3 U/ j3 i( O      int    21h
4 @; Y1 J4 [& x0 D      mov    ah,02h1 b5 m' S! d0 E& m$ B
      mov    dl,0ah. _0 i: K% x9 P" Q6 S7 V! _8 f
      int    21h' R3 [4 j" w) f* m9 m
      ret8 E, n! y' O$ g
crlf endp% r' U9 [4 E& M3 X5 s
;------------------------------------------------------------------------------------------------
" u% X, M3 N/ x8 Y0 a: i8 Z% ~_32bits proc near" d3 U" T$ R* M- J+ j& T! G
      pushad8 y" T; d+ {' ]9 B8 u% ~9 E) h
      mov    cl,4
/ W$ ]- ?$ m8 P      rol    ebx,cl* o2 y0 E( V! [  {/ I
      call   print_4_bits; k* Y* |6 ^% M" Y
      rol    ebx,cl
7 Z$ m9 F9 d" [% h: s" }0 C      call   print_4_bits
1 g- o/ o$ [" Z( J5 r      rol    ebx,cl) b- t# M( W3 T/ P* i
      call   print_4_bits
' i* \! ^: s3 T2 x; q# p      rol    ebx,cl
% X+ X& Y, u1 j) s& F& Q# c      call   print_4_bits. k5 c. B" C: P+ A
      rol    ebx,cl
; H* F& H, U5 k, ^# z      call   print_4_bits
+ k/ L8 O+ x. g+ s- _      rol    ebx,cl, e7 L. p+ n$ Q" C. O; s4 F" x
      call   print_4_bits
* I  _0 r; C' \/ d+ c      rol    ebx,cl2 m' t/ L# J  b+ [( t: w/ s
      call   print_4_bits
2 p' f$ P9 i* x" k      rol    ebx,cl
0 h( R! t7 X  q$ K2 C8 g      call   print_4_bits
, k: w6 S" P: T, T1 B      rol    ebx,cl
$ U7 z( l2 V* k! Z      popad
0 p# Q  s2 v- l1 r      ret0 Y1 W* O. k! G2 _4 b- p1 E
_32bits endp& e; ]' \) B3 n' Z$ F. I
;------------------------------------------------------------------------------------------------
* u  Q$ L" R- A1 i2 g8 y3 u% C_16bits proc near1 F3 R7 i1 a  {( P/ g% e/ E
      pusha        
4 R; Z( K7 Z. }0 w( o0 U- [      rol    bx,cl
$ P( s! _6 \  @+ D1 |      call   print_4_bits
, C+ h  m9 ]' g! c3 A      rol    bx,cl. R2 w. z- f6 j% s7 p) B1 {
      call   print_4_bits
1 ^: c7 T" r) P/ A8 z9 G- @$ ]      rol    bx,cl
% j4 y2 b5 x5 H      call   print_4_bits1 v" K. d& v: B3 V
      rol    bx,cl6 L. t9 ?. X* O4 N: u* u, B
      call   print_4_bits
" ]# y. t5 w% `+ F+ v5 ?      popa
5 p) t$ N; p4 a) _, D      ret
5 `2 a' r. H( j1 P( G, Z/ S_16bits endp$ R2 C' r1 u% Z+ C8 M
;------------------------------------------------------------------------------------------------8 |! c3 j- Z  ^' u
_8bits proc near
5 _, q$ d3 b$ Q) ]2 b$ C      pusha        ! N' `8 N. C, z$ T* O) y3 P" [
      rol    bx,cl
& j3 A! y5 \+ G+ R( I      call   print_4_bits
. u- w/ j7 W! a- M" k& p' g      rol    bx,cl
8 l( R! a& M, J7 {      call   print_4_bits/ O) ^. X8 z' J5 `3 _
      popa
! R2 r8 W; O% f& |" q      ret
9 {5 I9 e! \5 C* y_8bits endp
; {  m+ l# K" i" X) zprint_4_bits proc near( k6 c4 T0 O1 G. ?$ w1 c
      mov    dx,bx1 h3 H3 Z7 Z7 S! t, w
      and    dl,0fh% n  c( R& H$ z0 l! B
      add    dl,30h
* e% w/ n; j+ z1 x! c      cmp    dl,3ah
* u. }/ p/ P/ q& ~      jb     print
2 K- L) q3 n7 \      add    dl,7
- m2 z% M4 e) f2 g; Q2 X# qprint:  
, s, A# a, [) X8 D% P2 z' k      mov    ah,2
+ E" A) y' ^4 o: ~: @      int    21h( S+ S1 V# P9 L1 u. \
      ret" P* q1 [3 E) Z8 \+ `
print_4_bits endp   
: a1 K$ L- q# M' TCSEG ends5 q& L  c: H0 B. J
END
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2025-4-12 06:47 , Processed in 0.033559 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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