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

關於SEGMENT 宣告變數的問題

[复制链接]
发表于 2010-10-19 16:50:51 | 显示全部楼层 |阅读模式
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)
: P  t6 w. I. l0 z' c+ Y$ Y3 c( G& ]! F
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'2 H" d- s5 ?! x3 `! p& O
; B( H/ I/ I  X) h" E9 f
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝  - {4 \! m- X5 O& A0 }# i+ E2 H

2 p4 {( B' R6 Q2 T2 }2 s.model small! J) \2 m, Z. E# o
.386p$ b) r) x* d  _3 q
DSEG SEGMENT USE16'data'
4 P, a' W  @" X6 O+ Z- m6 {4 F4 z, D0 ~8 w4 l8 f, A
DESC STRUC( ?/ ~2 |% L7 n% A( n: w
     LimitL DW 0
/ y0 C5 O" Q$ N; p/ y# d# w! B     BaseL DW 0
# [. V3 z8 f7 u& f' E/ h( O     BaseM DB 0
% y, E: [2 M3 ~4 u! d! }     Attributes DB 0
7 ]! t6 S1 g2 l0 E     LimitH DB 0
$ j3 D2 e1 x7 `7 u( {* _     BaseH DB 0
2 L+ K% U3 P- \0 K( f: RDESC ENDS. q; x! j8 `9 _! {! `( L
0 c; ]( f: K4 {, g- q. d1 t/ n
PDesc STRUC
1 S1 o7 Y, K" L5 r' N     Limit DW 0
/ T7 g$ G# L( C3 j' o* ^, h6 i     Base DD 0
$ \# c  g2 U, HPDesc ENDS
$ p9 g; f* X3 v& F! M/ o8 v! R& {+ o0 q+ j% a" u
GDT_def Label Fword5 n& V6 [8 n/ H# ^. e1 A4 D& N
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
+ B# \+ w, ~( d4 s" [7 K, Q% J+ p% F( _Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
" o1 M* D8 r+ S- v; }! |GDT_Addr PDesc <$-GDT_def-1, >! Q3 `0 e8 B  K4 p
6 X+ f8 l. W2 X% m+ Y3 k4 f
Maddress Dword 0
; U( x( p/ T" I% G" Y; z& m: F1 g' D& E! c7 x' P, y& E
DSEG ENDS
' A6 V( V  j* y: R$ v' ~" kASSUME CS:CSEG,DS:DSEG) p1 o# w; f  P: i: I2 w/ K5 [7 W
7 z# I5 @, e3 `% `
CSEG SEGMENT USE16'code' - m, Z' q$ G0 l( h
      push   ds
+ L# {% O1 }8 K      push   es
$ D( {1 x8 F' |% I2 C+ N2 K      push   fs
- J  u6 Q/ l, K+ _+ i      push   gs
( I' Y$ ]% N9 z      call   big_real_mode     $ p8 L" E. q1 u; R& f3 ?6 |* L
      call   Get_Commandtail
. k+ {/ s! u& `* y% @! ^! Y      xor    ebx,ebx
! j; S) ^7 r3 a      mov    si,82h# ]% b; v6 M6 g* ^
      mov    al,es:[si]1 C, q  S* L( L
      cmp    al,'r'1 h8 m, ^) t# K
      je     R, C4 I1 U, b  F: ^9 D5 m6 a
      cmp    al,'R'
9 b' ?6 W; [2 g      je     R
; V; @- J& B5 z+ {+ z& h      cmp    al,'w'" k7 l  l  K( o3 `; s  i9 l
      je     W
* F) M! g& P5 {# r; ^+ r      cmp    al,'W'
3 Q" `+ ~. q/ J2 S% x1 _8 K1 ?      je     W         
# R, A- T6 a+ Z, T3 _R:, r) Y5 ?) H4 V. I% Q
      mov    si,84h# X% ^5 l4 ?+ N; t# @( o
      mov    al,es:[si]& j/ r; Z1 J: ~  E3 f9 d3 ]
      cmp    al,'b'
7 Y& {' l' C: d, k  n! F! D      je     RBT( v9 _: g: O$ I$ s
      cmp    al,'B'
+ p! E1 L+ ^  F9 T0 g      je     RBT
: ~0 t) z" r& D3 C5 T: x      cmp    al,'w'
7 O  h2 g& J: b& T9 w* B# v      je     RWR" j+ Z- a* v/ b. D3 i
      cmp    al,'W'
6 H/ M4 [) w8 m, B2 L7 Y      je     RWR$ x5 q% c# R( N# g) M' ^+ F# [
      cmp    al,'d'
) M  ?& b! L) b! l      je     RDR
! s6 J+ C* T% o      cmp    al,'D'
" C$ C* [2 X/ ~5 V& K+ K% q      je     RDR            
; B& w- @. R$ |- gW:      
4 }1 J% p( U( p& E) M5 p- o      mov    si,84h4 @0 [; z* ]) z+ ~/ C
      mov    al,es:[si], \! F3 x- R; s- C
      cmp    al,'b'! Q7 m. L# S0 x5 l! k* I, C
      je     WBT
" a. B$ ~1 W4 t2 E      cmp    al,'B'
' h$ a0 q# C9 X, A- f+ A      je     WBT
) v6 f/ R! i) I! e% N! X2 B" f0 Z' \      cmp    al,'w'
( P& o: S2 N, t8 g5 i6 i      je     WWR9 Z2 x* v3 r% R8 J+ ~" ]: o- L
      cmp    al,'W'
7 w& t6 |5 s# ~" k9 a, ^) b2 ]      je     WWR
9 A% b0 D; F7 {- g      cmp    al,'d'
: }3 ^% Q) O7 j0 {6 L      je     WDR
7 M& H& s+ V  O# `. G; t      cmp    al,'D'
1 k) N' o# S7 `' j0 `' v6 {      je     WDR* T& p" V( g1 h# T7 q$ ~  t% G3 w
RBT:
/ k0 @4 \) ], X      call   PSP        
4 z4 _7 W6 y, Q6 f      call   crlf           . j* c, _4 L- p% u1 \- f5 Z/ C
      mov    esi,ebx
9 X1 s. O0 L; ^% u: z' j7 i. [      mov    eax,fs:[esi]) Q' C6 o1 m( k3 B3 E. L1 E3 e0 q
      out    80h,eax
$ i% E* n7 r2 w# [! [      mov    ebx,eax% t/ C0 M# c4 O9 @. F/ }5 _8 Y
      call   _8bits
1 M! g6 Y; @9 O      jmp    Exit8 Y8 E2 s8 V- P; E, n4 [
RWR:9 f: y' v5 p' ^
      call   PSP        
& H, S, H  g7 m. S0 T5 ~" x# Y1 R7 h  t; \      call   crlf           1 A+ H% X5 X5 N  O) S- v
      mov    esi,ebx
6 y8 z5 h8 s/ X) W& \6 H      mov    eax,fs:[esi]' Q: k: _. B7 j) p% w  e
      out    80h,eax
. ~4 @3 q# f1 d: T- P" ?      mov    ebx,eax* v) f9 {( B. s) a2 l
      call   _16bits9 i, r) ^2 I4 t6 U- g% j
      jmp    Exit
, F6 B! }6 t% q/ _" Z9 GRDR:* \3 F4 ]% z! J0 R
      call   DPSP        ' m: o. N! C8 D) B% d
      call   crlf           
: \: V' L) t, X6 w7 ~      mov    esi,ebx
) l1 P/ @* N; n: o: A3 ^+ z      mov    eax,fs:[esi]" U9 M) ~/ D& g( X6 L% j- Y
      out    80h,eax
' k) g; z) N' }4 X  `& |1 G      mov    ebx,eax
9 o( H3 C; ~: T; M) I: f      call   _32bits
+ J) L  g6 R( Z; F2 d8 A3 s, f" |      jmp    Exit
5 z% n+ @& @" x$ [. L;------------------------------------------------------------------------------------------------
- [) }2 P2 m' F" I7 K) JWBT:: w5 a; `3 W; h! Y3 @
      jmp    Exit2 y7 x+ T! A3 S. j+ v# ]* |- i
WWR:
: V( L7 c4 ]0 \) X! H, m! a: f6 t6 q      jmp    Exit
" w3 ^' e/ s! r4 R) oWDR:
( z8 F( q# `! o4 r9 H; M5 ^& s( y      call   DPSP
7 d" ?. {& Z" K; L, T) C      mov    Maddress,ebx      
% f4 a5 f1 R( L! }      call   crlf: M. J4 j* R4 \- @& a* z
      call   WDPSP
# Y# Z" Z" f% Q  d% s" M      mov    eax,ebx) T9 j+ X, ]+ d* y$ A5 t# x
      mov    esi,Maddress         
- S  x$ j! G, A( t/ F      mov    fs:[esi],eax7 d4 L* [) g  @- w- h# `6 s" N
      out    80h,eax4 x9 ?" H, `0 i# x8 u% q6 q6 l6 p
      jmp    Exit$ a  n2 v, i8 K+ A* Y; [0 ~
;------------------------------------------------------------------------------------------------      
+ w$ @# Y! q( o* x% P9 d# ]+ u# nExit:; K/ ^" G1 G/ j1 b) T4 r
      call   real_mode     
$ I8 S1 {# E  Q, b: X; g      pop    gs
1 K# O9 i8 f! ]7 p) N% V      pop    fs/ q7 {+ }1 O0 E( t. V! o
      pop    es% O7 @1 X6 H- \0 j: F! J
      pop    ds       & \4 ]! [7 j1 @) `; _; Q
      .exit
; P' M! q( i. b0 o' B2 p;------------------------------------------------------------------------------------------------5 J+ Z& g- |' f( q7 {$ M
big_real_mode proc near
% i5 _1 c+ N9 J' s      in     al, 92h
! j5 O3 F9 p6 [. F) b! L      or     al, 002$ ^% ?; B; {. O
      out    092h, al
* i3 b2 ]/ w/ L      out    0edh, al' W" x" B3 k2 C* q: x1 ]
      cli) j3 c( n9 g0 n7 Y/ ^
      mov    eax,DSEG: Q5 [9 d9 ?- o5 S2 w
      shl    eax, 4
  P% A( D7 H5 P+ X9 t; W  B      xor    ebx, ebx) @" W% R  H% b* G8 j! c
      mov    ebx, offset GDT_def
6 z) q3 Y( p4 m4 i" v8 @; J      add    eax, ebx
, I  O( ^( L$ z0 ]" ^5 A2 A, N- N      mov    dword ptr GDT_Addr.Base, eax
1 j9 I5 s; z' s* ?4 k. e      lgdt   fword ptr GDT_Addr
% h+ N* ?3 w$ f0 @7 Q0 f; c      mov    bx, 8
( K8 U% b# l  N! m% A1 @      mov    eax, cr0, j& _, S5 L3 ^: c* |$ {* p+ |
      or     al, 1
8 b$ J; f$ _! k& T/ P* \      mov    cr0, eax
0 Q, J2 M8 q: ^2 ]: W5 e+ B      jmp    PMod9 q) ^) Z  J8 D  y3 |) d; o6 m
PMod:
+ y1 {- T6 m* |1 C1 M# P6 t      mov    fs, bx0 ]6 Q, i# w! I$ T1 T
      mov    gs, bx; ?% S/ p' X3 h
      mov    eax,cr08 L( M/ Q* g3 f
      and    al, 0FEh2 {6 X/ q6 v. G3 ]! J7 {
      mov    cr0, eax 8 A$ t7 q0 j! B( a& r
      jmp    RMod* {7 ~7 B3 e$ r4 o
RMod:6 d; |3 u4 r1 S  S
      xor    ax, ax
1 Y4 n; ?6 Y# q& H+ P+ k      mov    fs, ax
0 w" z. w& L) ]/ n) i( G$ \      mov    gs, ax     9 X- P$ @. W, \+ b; y
      sti     ! p, h  ^3 p+ [. s- i% r# ~
      ret
* U8 t- Y0 |" j5 r2 M! Q2 D  Sbig_real_mode ENDP' F/ }8 E: h$ ?0 z% k1 m
;------------------------------------------------------------------------------------------------' h  |% s3 u; {! l6 g( X) @
real_mode proc near
/ A/ |& }% d/ g      in     al, 92h! B9 ]9 k2 W1 Q6 e7 e" r' q* x
      and    al, 02
- j/ E, [/ e6 [$ U      out    92h, al   
; E) c, v5 h' E1 {- U' D      ret% D( G% l$ b( x4 s! m5 O; v6 D
real_mode ENDP* h3 K1 z9 h7 @# K6 f
;------------------------------------------------------------------------------------------------
6 ?5 N+ c+ v: V  fGet_Commandtail PROC near
! p) O- I( R& A: e, N      mov    ah,62h
! p4 z! q. R  U+ c      int    21h
. B  @$ N" j8 ?0 r+ v" V! \      mov    es,bx
7 u- s# W* \+ O# y6 U' C      ret; ~& |! I% l& O8 [- Z# V) r6 N9 T
Get_Commandtail ENDP   
+ Y% S2 H, l% x' };------------------------------------------------------------------------------------------------
8 [' q% T0 N* E4 ^. l7 v( FPSP proc near
& `4 a9 E5 I& q; S' G      xor    ebx,ebx
$ a# Q1 X9 w! g( H* e$ X! V9 T( D      mov    si,89h5 T1 |0 O* t, ]4 d) d5 k, J( x
      mov    al,es:[si]
# a9 e, Q% b, u; Z+ l      call   Change$ \  y1 }# p, _4 _+ m; P" n3 g7 K" `
      mov    cl,4. o: u7 t& O$ E4 p
      shl    ebx,cl
/ R. r" r( W3 y3 F5 w1 f      add    ebx,eax
: w3 g. m: {/ @, \  P* s) s      mov    al,es:[si+1]- R+ B" P) Q. f- @  }
      call   Change
! x" |$ M# f$ m+ N8 |      mov    cl,42 a0 p1 w+ M5 B7 Y
      shl    ebx,cl9 O! J5 A$ Z- V' J
      add    ebx,eax
, t" H& ^8 J6 p- S' C9 I      mov    al,es:[si+2]2 _! l4 K6 w4 x4 w7 p
      call   Change
# y! @# }' R1 p4 q5 r/ h) J      mov    cl,4
& j" ?! C; y+ U5 {+ l; r      shl    ebx,cl
( q7 ^* a) y7 R; t8 w# N) f      add    ebx,eax
8 e$ c; f3 n+ H) v" f      mov    al,es:[si+3]
8 z1 C( X0 {5 m1 T: o      call   Change; R; J- }  u& h* \8 x" T9 E
      mov    cl,4, i  q/ ?* z1 D* ?
      shl    ebx,cl9 Q& b" h5 X/ b9 r6 }
      add    ebx,eax  K* V% A0 u: J2 N; T5 J% [# y
      mov    al,es:[si+4]
1 ~! z2 ^7 q1 ?1 Z      call   Change) y) v8 Q1 M# m& p2 t, I- {
      mov    cl,4
) J+ C0 m& R3 Y* \" ]& }) e      shl    ebx,cl5 \. d9 j- d- w' v. Z" d4 D' C  ?8 Z
      add    ebx,eax7 t$ M3 v% K5 i9 A5 J4 P% s8 m: V
      mov    al,es:[si+5]
9 a5 ^5 p6 y& X6 v7 R* F/ q+ k- \3 v      call   Change5 s2 p* b7 v: l! F' O
      mov    cl,4
9 o1 a( ?( c1 b6 ~      shl    ebx,cl. {0 z$ S  A2 Z" d- V% @% h3 e
      add    ebx,eax+ T  x( h) p) a* }5 Z4 I
      mov    al,es:[si+6]
* J) s( w* N  z* u& [2 t, t      call   Change
0 V$ A6 n( c$ S" [      mov    cl,4
, `% d$ x5 v' o, M+ E4 A      shl    ebx,cl" w% N9 w$ r. B, E
      add    ebx,eax4 ^% w: n8 k* x" ]: h; t: y' V
      mov    al,es:[si+7]6 k7 N9 J+ b! @3 j6 Z
      call   Change/ o9 w% D; n; i6 O
      mov    cl,42 A( N9 l: B5 X6 l' Q8 ?9 ~! T
      shl    ebx,cl4 j$ c+ ^3 R7 |# m
      add    ebx,eax
- _/ [0 e( D9 P( R2 T7 B6 h      ret
& B" \( X2 W1 VPSP endp
: m4 m8 k& ^5 C6 {9 ?, a  f6 D' c;================================================================================================% Q2 D2 }& W6 j$ ~! W! B
DPSP proc near
  `8 R$ a, |! ^$ H# p- |& Y      xor    ebx,ebx# `  C- J  b4 K- M! D- q
      mov    si,8ah$ h: C) V8 }! Y' _
      mov    al,es:[si]# `. p# r7 w" I
      call   Change/ U, Y5 j& k6 x  r
      mov    cl,47 }0 G. p1 h1 E' O: G2 @0 e
      shl    ebx,cl
* l/ h) o0 s1 `8 K$ w      add    ebx,eax
/ y) x" X5 V4 ~  x      mov    al,es:[si+1]
# V) C5 g+ F4 s  d/ m' e+ ~$ Z9 B9 a      call   Change; Y; ~2 @: T5 f( I; @
      mov    cl,41 D% ^' o  [  r
      shl    ebx,cl1 I  N9 F3 G5 y( D* o5 t- [
      add    ebx,eax& O, {7 N$ N& F! t- k3 t
      mov    al,es:[si+2]
, L3 k+ i; U# p- q      call   Change5 I2 J: _3 R1 z- o6 |2 @
      mov    cl,4$ Y% R3 z. N( p; o5 M/ r3 j
      shl    ebx,cl0 o% r$ B* d# D' k. S5 W/ b4 o! U+ W
      add    ebx,eax2 J+ t$ `0 E; J& D! v( G+ B. ?
      mov    al,es:[si+3]
4 i5 B/ o7 ]2 n% n      call   Change
% N4 z+ {9 b0 S$ r* z' X" |      mov    cl,4
- }: b8 N5 `+ i& k      shl    ebx,cl
' ~$ x& y  ~% l! l2 F  [      add    ebx,eax, f4 N3 e! m% U9 B7 A7 \# s
      mov    al,es:[si+4]$ g- |6 b/ X; L8 E! L, B1 C7 {
      call   Change
& _4 E$ d7 I9 \9 R      mov    cl,4
/ A, M$ T) P! l- C) \      shl    ebx,cl
; E) Q, ^: z1 v% P; T. ?9 h+ n      add    ebx,eax* s5 r7 V# x5 ]# L- ?' j
      mov    al,es:[si+5]
0 W2 o" P7 Z4 n+ v      call   Change: ]. x& \# \, d. e7 G
      mov    cl,4
# C& u) }3 y* t  P      shl    ebx,cl( z* q+ l2 b" \, W
      add    ebx,eax
  o& X& h: c% L0 u- u4 a      mov    al,es:[si+6]
5 G9 g* ^- t& n) [1 i8 S      call   Change4 T; D7 b) I2 V: K3 a/ d* J
      mov    cl,45 [, h8 Z7 F9 C* ~
      shl    ebx,cl0 r7 m: O5 G, ^' R+ l
      add    ebx,eax" R. r3 N& J% A3 e
      mov    al,es:[si+7]6 J7 c' s0 f) i( A6 F
      call   Change0 |3 d# E# \: o* S
      mov    cl,4& Y) g1 b; g; }% `2 c9 G% Y. z
      shl    ebx,cl
! O  z( b& o- J3 E  \! k      add    ebx,eax
4 d8 Y( V3 A' _# Z) c1 [2 Y      ret2 Z, a2 z, L0 _; k$ j+ s1 B% d
DPSP endp
# a2 S, b- C% ~2 n. a;================================================================================================
$ B' T, @; `6 T  F3 i% j, F  o& OWDPSP proc near5 A0 [: |; e. D( {' S
      xor    eax,eax- j, _5 F$ ~8 @2 i: @* l
      xor    ebx,ebx* i' z  ]0 l- A& o) ?/ Z
      mov    si,93h
1 h3 F  |4 N. D% Q      mov    al,es:[si]
8 W" B' q: _9 T( I; G8 R) V      call   Change
6 x+ m8 z# G# X      mov    cl,4* L1 R8 x5 E' c  S/ L: ?
      shl    ebx,cl7 L9 N2 l; Q. z" i; Y
      add    ebx,eax
5 l$ S* D' S, q3 Y7 Z- t" _+ }) h      mov    al,es:[si+1]% \2 _" Y! j* \+ C4 a) ?4 v4 J
      call   Change3 Y0 ]  u3 {0 U
      mov    cl,4( _( O% X. Z8 [$ x( _$ |
      shl    ebx,cl
; P1 U7 j" u- R- h( p: o5 f* Z1 S- j      add    ebx,eax
) p' g$ r; o4 D( [      mov    al,es:[si+2]4 Q+ m' o* v+ W# e
      call   Change0 F% I) C. W! ?) h; t& b
      mov    cl,4
3 F7 |6 l% u2 D. l4 T0 v$ u& [% f      shl    ebx,cl
; I% b) g( K- B$ E- k! \5 R* K      add    ebx,eax) s7 l% t- V6 k' W4 q0 t4 L
      mov    al,es:[si+3]5 _+ H% ~3 {4 G% o
      call   Change) q9 F, s; @* i. T
      mov    cl,4
# z5 Y& {* l7 o6 N      shl    ebx,cl/ u, A( N. N8 C  R; p
      add    ebx,eax; Y6 m+ h. d  F0 C/ V- i! H
      mov    al,es:[si+4]  _* t) C: m+ l  k0 Y
      call   Change
& h( l, W2 s' d- M1 K3 ]2 i      mov    cl,4  s& L# g' L" l/ m; L. z
      shl    ebx,cl
! [8 Q, f2 Q  d$ k      add    ebx,eax
: F+ d! N4 L0 k) Q# m% j      mov    al,es:[si+5]
4 ~0 N+ z. _* ~  M* s      call   Change9 X$ A7 {$ I; y
      mov    cl,4
/ u& j% h5 s4 i7 s3 g3 K      shl    ebx,cl$ x  ]. o; @" F0 v( z. _
      add    ebx,eax
; r+ z, e. w, v* n. Z6 C2 k      mov    al,es:[si+6]7 c. ^% |2 L3 v1 J7 Z6 g: S/ y! |
      call   Change
6 _1 i) H  h$ J: h; j( Q. }      mov    cl,4
3 j/ g: P/ n* x' P$ G      shl    ebx,cl0 J, s- n6 I" l' V$ M
      add    ebx,eax
3 P' D/ N- P+ a3 v  l0 Z, c      mov    al,es:[si+7]( r7 d/ G" A- E
      call   Change9 R$ q9 d2 z, j, G
      mov    cl,4' }0 S) B9 p# t; L# `8 r
      shl    ebx,cl1 _, e' l' G2 @8 w! O
      add    ebx,eax
$ R8 I+ b6 B' M6 k0 k      ret
/ n4 Q6 A5 L+ }5 s; f) GWDPSP endp
+ J* w& f" C* A* S! z2 r;================================================================================================
3 N! V, s1 ]5 _' P: U7 GChange proc near2 O: c( {; g+ }+ x" X/ d% ^2 P
A:   
; Q! |  C: J6 o6 {4 o; x      movzx  eax,al
+ X. z) y0 y3 n% X- w- x      mov    edx,eax: ]' w( ?0 t  y& [6 B
      cmp    eax,'0'            4 B- A5 V2 Y" D/ D2 q7 R" w3 T8 d
      jb     A, A9 F& i: e3 \
      cmp    eax,'9'            ) s0 w2 i6 q- l  {0 T3 @4 T
      ja     B7 m3 [0 w4 ~# G) K
      sub    eax,'0'9 h, m8 w- ?4 x( |
      jmp    short E
& ~# T2 D; z) `' m# g& Y/ m. KB:3 l! F8 |: L2 U' X
      and    eax,0dfh           ) h9 J& k5 |* S
      mov    edx,eax' v3 \+ B) Z( p% x7 a
      sub    eax,37h            
+ O+ S7 C' ~' Q8 n. M      cmp    eax,0ah( R# H; E2 d" y$ ~
      jb     A                  3 d, n7 U3 G* X
      cmp    eax,0fh& K/ ]& Y3 n" u' c- x
      ja     A                  
0 y; y7 r# {; n8 ?: w. e9 {$ TE:
% _9 [" K' C6 Y& z0 g* X8 @      push   eax      
* I& [0 q/ i& a$ ]+ s) U- O      call   PRT                8 S! e! \7 ]6 ]$ o1 a% `% F: {& d( k; [/ y
      pop    eax
7 F' e4 Z$ r' t+ W  KCExit:& X% B$ h, }: g8 I$ t5 u
      ret
8 C. j/ ~) H4 c7 O5 i/ h7 u" }Change endp7 q8 Y: V1 l2 I! p
;------------------------------------------------------------------------------------------------
5 S3 ~  u+ ^* h& ?2 d5 H: iPRT proc near
+ r9 }1 V( o9 e+ ^0 X      mov    ah,02h
* x; T. h9 D. l4 l      int    21h# B& P& f+ ~* c3 d5 V: F
      ret
; b* w, L1 e" h, [PRT endp( D1 Y( d0 u: n3 K/ T
;------------------------------------------------------------------------------------------------0 F5 D" f6 X6 c5 k, f/ Y
crlf proc near
1 M! `/ A* N, ^      mov    ah,02h
# L9 ?0 U* p9 P, J  F7 C# G. S      mov    dl,0dh0 u5 A6 R% T: d2 Z: x
      int    21h# ~# a- L# Q7 R+ V  p
      mov    ah,02h
) F9 q  {4 z& t2 d7 c  _      mov    dl,0ah
% |, G% R( }% b' s* a3 q5 M      int    21h
* v9 o6 V9 ^: E6 \% Y      ret- m) s+ Q0 a& Y  ^# E
crlf endp
1 ~9 Q4 ]+ d' R;------------------------------------------------------------------------------------------------. W0 F! D) x6 Z- a
_32bits proc near
( ^2 L( v0 ^3 O4 u4 H      pushad
9 z1 O3 b2 y3 E      mov    cl,4
/ }! w0 o5 {" n) F! b, O      rol    ebx,cl0 C6 O* `  J; R. E
      call   print_4_bits  I  N% O2 F/ X5 q4 `4 c9 i. ?
      rol    ebx,cl
7 t2 j, ~* S* o( K; W! R      call   print_4_bits
- u9 @2 @6 {; @- o5 D8 U/ n, u      rol    ebx,cl
) i  H9 K' }' r! \      call   print_4_bits
, G" ~3 V0 m& J  `+ B      rol    ebx,cl. f6 f* i6 O) o+ M8 I3 \& r
      call   print_4_bits
7 d4 @! R5 |1 j: \$ i      rol    ebx,cl
! q) r$ R* O) _$ z. G! k( ]. m- M" Y5 ]4 c      call   print_4_bits% v8 D  G0 A* X; a4 e
      rol    ebx,cl
; {5 ]0 R: C! J& m* T; _) ]  k* |      call   print_4_bits
' s& E: d4 b+ e& f3 X& o      rol    ebx,cl, S, B9 q0 b; ?; w' ]
      call   print_4_bits
9 n' V5 `3 z  I4 x      rol    ebx,cl! N( R, C# v% |  x8 q
      call   print_4_bits) \* @0 y; z) X( V) o7 X
      rol    ebx,cl( I( a1 V$ S$ a6 z% y
      popad4 U0 ?/ J6 R, i! q
      ret" w1 }' k4 }$ L3 w% C) Y4 @" A
_32bits endp
" T% K( l& L9 [) ];------------------------------------------------------------------------------------------------: A9 B; W8 \7 x: M6 N& ^- B' F/ ?- G
_16bits proc near( \- s& L) C) [( s$ V# G
      pusha        
9 t; d# X% k* _1 J  ^; Q; t      rol    bx,cl
+ P: @" {& x4 [      call   print_4_bits
' o, ~! f; [* `1 u& S4 x      rol    bx,cl1 u4 A& a+ _- k: F' z: \% N) V( J
      call   print_4_bits
. ~) ?% w- J( w6 Z% ~. Q      rol    bx,cl
2 t: n" i, [) n  a: j3 X9 s      call   print_4_bits7 G0 o* ?$ C. w2 [9 E
      rol    bx,cl, r- ?4 |' q- H2 y7 b$ ]& |* @9 @
      call   print_4_bits5 V0 h: i8 M9 l) u2 W
      popa
2 F6 y4 O" e2 i      ret
# R3 i, i5 l' j8 s_16bits endp
2 h  O( C" H$ ]! ~: v9 |5 l;------------------------------------------------------------------------------------------------
- m! J4 u8 X' _3 t/ Y$ Q, A_8bits proc near3 ~) X: J2 h! B4 A6 J$ h8 q
      pusha        ; a4 n# d; m( y3 H: [5 |* y% R- U
      rol    bx,cl! L9 E5 a( I2 w' J. t
      call   print_4_bits, G) a7 q$ }% O/ m  ^5 _
      rol    bx,cl5 y( d4 c' ~% [; h7 E# y. M4 `
      call   print_4_bits
' n0 s) i3 l0 H& f      popa5 x6 I7 o, A$ d4 D
      ret) r- r0 a2 e' B0 |" U7 ^/ e
_8bits endp" Z6 W! r. K5 G% Z( l, Q8 `
print_4_bits proc near! N3 E2 H6 \+ [3 q
      mov    dx,bx8 W/ F, M% L1 X" q* ]1 w
      and    dl,0fh4 P% p% ~  E- F. R
      add    dl,30h. K. X6 |6 J7 Q
      cmp    dl,3ah& p/ M+ H; @* g4 `+ Y$ s$ U
      jb     print
3 r7 Q  ^' W9 p; i. g1 \$ h( z4 q      add    dl,7
  P/ M5 f4 B( j" J' F2 ~* n0 R$ uprint:  
0 o3 n3 n$ H, J3 i$ Y  M      mov    ah,2' g( d. |/ [* Y5 P5 l! c: B* F
      int    21h
1 \3 P, E4 }' x& \; A      ret$ y: U9 Y5 @% @
print_4_bits endp    $ Z) D. X' {  {6 u
CSEG ends
/ x" f) X; w& j" X/ d3 OEND
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2024-5-19 11:19 , Processed in 0.019492 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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