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

關於SEGMENT 宣告變數的問題

[复制链接]
发表于 2010-10-19 16:50:51 | 显示全部楼层 |阅读模式
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)5 Y/ n" w5 W9 U

1 C- x- Z9 B9 Q5 Z7 Q則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'( O3 R# s% `* l( {- Y2 W
0 `4 }0 _# I# o/ m' d
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝  0 M% Y6 Z% E- [

3 c% r7 L6 y" m.model small
  S* ^( ~. J: B0 {9 I3 Q. U.386p
$ [9 O- l, ~  P7 A! e$ uDSEG SEGMENT USE16'data' ) P3 w# |5 r* i9 g1 U

* c2 J( u+ R. P" I8 gDESC STRUC
3 ]5 A4 A2 X- q9 c/ N     LimitL DW 0
4 A! j* j( g8 ?     BaseL DW 0
  }) E) Z! M# I2 t2 @  V* z$ w- v     BaseM DB 0 " R9 D% m5 ~& R* d9 q2 G
     Attributes DB 0 " D! [0 p4 H  K  v3 m
     LimitH DB 0 * h' G3 B8 B4 k- O5 G
     BaseH DB 0
: G8 R/ M. E5 o- T  p3 L& NDESC ENDS# g4 g3 U, I# z" d

$ \" J( N  B8 h8 w, L; @/ c; zPDesc STRUC: C( H2 w; M, U1 a' o+ T' V: `" ]
     Limit DW 0 4 O0 m& q( z  ^$ W( b
     Base DD 0 0 X2 x% y: P9 f' Y3 Y
PDesc ENDS
' o2 Q# p( p8 W8 [3 j" }7 |( v$ \4 W) o- U
GDT_def Label Fword: i( X' l. M6 Z# c* ?
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>! _; l5 W4 d" M
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>* ]- y9 I/ _- H7 E$ k3 R  j
GDT_Addr PDesc <$-GDT_def-1, >
; q7 F9 f3 `9 e4 j2 m+ q5 h! j1 r; A2 V8 O4 @
Maddress Dword 0
3 X4 m, K3 v7 t# F
% [) |- S& T8 F- K2 C6 G' `DSEG ENDS & g2 P+ O& M# d( @
ASSUME CS:CSEG,DS:DSEG
! c0 _2 A  F1 i3 m5 i# z" ^" s9 J: H
CSEG SEGMENT USE16'code' ! h+ Q1 @" i7 K1 `( V
      push   ds
4 W3 c- [, e5 ?      push   es, i8 z2 q3 B/ t$ s; r
      push   fs+ d% L5 R" o8 F( W9 `) a
      push   gs
% O5 w& @& X' l% a      call   big_real_mode     ; v, z# r1 v8 U6 I  p9 j' ^  ]1 i
      call   Get_Commandtail4 _& f5 {# V. Z7 a+ @- V6 |4 ?
      xor    ebx,ebx
7 r& F% n6 E3 R6 j& A/ m      mov    si,82h; ^- j, q1 Y8 B) g
      mov    al,es:[si]) }2 E2 P, y! p5 r' Q$ U9 ]
      cmp    al,'r'. D  b: f3 c# `& S1 v
      je     R9 J9 h% S# u4 h
      cmp    al,'R'
0 d) c- h7 S- O' f! h! {      je     R. f& Y# b/ h& o6 r$ C
      cmp    al,'w'
! K& ?" K" g7 a      je     W: B# z' l- g& X
      cmp    al,'W': p7 ~' d/ ]. ^
      je     W         
2 w" }1 \( C' mR:5 G1 B9 F7 w: s4 I" g
      mov    si,84h
8 z9 ?7 Q# ?: o4 u) E8 h9 U3 H      mov    al,es:[si]
- L" k, g, M9 i      cmp    al,'b'
6 f  e% {9 [# i% s7 Z& A: X9 O! P      je     RBT
5 A- x3 r6 t, x" Q7 M9 [1 `: c      cmp    al,'B'
0 W. u# W0 Q; A8 Q& }" t5 l' p      je     RBT
0 e6 y2 G8 X' s# s/ K! ]  ?      cmp    al,'w'
5 V- t0 `' ~' u# ]0 U* ?      je     RWR# o" B" f3 U1 {6 i' V! g- k3 r
      cmp    al,'W'0 h0 X/ {7 i1 X7 M+ M3 p% Z
      je     RWR
! G% Z7 _. \. }8 h. F  i      cmp    al,'d'
. x* ]. B  C( \2 o+ u4 x; J      je     RDR
0 G% C% N- k2 O      cmp    al,'D'
7 U+ O- m0 d& l1 _5 @      je     RDR            
# i1 t: x8 g/ O) E# s- }! D# oW:      
7 \$ R7 p8 V" S# @      mov    si,84h* S% R9 @  a/ C) q7 T' y
      mov    al,es:[si]/ h3 a5 i5 `+ i! h9 u4 _; i6 o. [1 h
      cmp    al,'b'
+ M' G( I9 W0 C3 g# H      je     WBT
- v! ^, ?9 b  w( P      cmp    al,'B'+ s6 R" g6 o6 r6 O0 \
      je     WBT. {  b6 Y8 Q6 A1 F0 j5 n
      cmp    al,'w'
4 K3 E% q$ m/ ^* ^. Q1 q: Y      je     WWR
1 V) e% a  L) T; z; C* M' j      cmp    al,'W'; K2 e" m$ A4 w1 K" A* I
      je     WWR
% |: J1 `5 |5 Y6 m% q      cmp    al,'d'. Z2 ~4 X: D8 F; Z0 \4 i9 J
      je     WDR8 t. q) i, {( O/ l- J: O
      cmp    al,'D'+ o0 V+ a% K# ^7 H. n- o- `
      je     WDR
! R) o3 y! V. uRBT:
: F( Z3 H; ?( ?$ ^* r9 P      call   PSP        7 A, Z3 n  R( O! _7 a; P( ~/ K
      call   crlf           9 c. t7 w. Z( @2 X/ a* |! _
      mov    esi,ebx7 J6 e+ h( T- n8 P' O
      mov    eax,fs:[esi]
3 W$ F: S6 B9 @7 z$ r7 k      out    80h,eax4 U/ @$ v) {( o* ]
      mov    ebx,eax
7 l. j9 w8 i& E6 q      call   _8bits
3 `# t3 L2 }2 }7 K5 Z/ S$ N      jmp    Exit! q6 U2 \) h) T; {8 n5 L% X
RWR:
% \0 K0 Y' y/ E# Z& }      call   PSP        ; `" d% S. E1 E2 J: o! M7 J
      call   crlf           
1 ?' ~8 I* Z3 J+ E/ w      mov    esi,ebx
  r$ @4 R8 K5 g: l3 g9 W0 g; v4 Q/ P      mov    eax,fs:[esi]
! }2 _, s( A, X  p* i      out    80h,eax
) {0 D. `7 p+ @& H      mov    ebx,eax
5 z5 a  C# ?! @, v; O' C3 O; G" j) I      call   _16bits
' }3 H% x3 p( x1 `' o      jmp    Exit
6 |+ h) F2 J' T: Q9 }7 q0 _RDR:
& W: d0 V$ X5 t! X! }4 V      call   DPSP        
9 M: @7 ]4 r  o0 [      call   crlf           
  z) }5 b8 D+ \3 }# J) e, x, D      mov    esi,ebx
: c; \8 S0 a* I0 H3 k1 d2 {6 S8 N      mov    eax,fs:[esi]5 b6 ?3 ?6 v) K9 A6 t" L3 w8 `
      out    80h,eax
; `6 Z/ x& o9 c8 |6 S, e      mov    ebx,eax
% u- v, p) W5 d. e3 e) w" U1 Y      call   _32bits
. E. D( o4 N: F; u      jmp    Exit
" E" ?- G" X8 c6 T* q7 R* w* F;------------------------------------------------------------------------------------------------
9 [2 m( l% V' l8 U" WWBT:
5 G/ }; f7 k: K9 c0 I! ?      jmp    Exit* D& Y1 N# I4 K+ w! k  `& k. s+ K( L
WWR:) K  O: B4 l' y9 f( [/ ^3 `1 Z
      jmp    Exit
8 i& h; I2 X0 U8 Q% t/ dWDR:
/ e. p0 }( U: u- _5 I8 h      call   DPSP1 }; _9 }( g. u3 t6 J1 Q
      mov    Maddress,ebx      
( w0 U- R3 U& g$ {  v6 i- _      call   crlf
1 U6 H$ b2 C  ~0 u      call   WDPSP
) K( q  v$ ]+ U$ U      mov    eax,ebx
5 v4 M4 {& G0 ~6 N* m0 V' e      mov    esi,Maddress         
. ?9 `9 ^2 T' F! D, l/ L7 F  m      mov    fs:[esi],eax
: X: _3 e6 }2 {      out    80h,eax6 {* i; {, c8 q. U) f' L
      jmp    Exit
1 Z" M3 {1 C, c6 [;------------------------------------------------------------------------------------------------      
1 v$ N% v, h3 W4 a) o( G2 ?Exit:* h) n/ p2 l7 L$ u5 X5 ]9 e2 q; F
      call   real_mode     
; S4 @+ L0 C. c+ i- O      pop    gs
1 g. F+ i# v: Y2 o; h/ q: _% u      pop    fs% S# P1 a( E8 u+ P0 ~' F/ r) G
      pop    es
9 ~1 v) v2 f& U) H' w  u* T9 j0 n      pop    ds      
& a7 d0 z- o8 v6 Y/ R6 e4 u4 D      .exit
" L6 r' B5 o8 r& Y2 n+ V;------------------------------------------------------------------------------------------------, X* W* O) w4 y
big_real_mode proc near" C; q1 L- ~( n( `7 B2 ?
      in     al, 92h! `0 a* K& H, s
      or     al, 002
" n. o3 D3 S6 y2 T2 }      out    092h, al5 T" i0 ^5 U7 G6 T1 i- }
      out    0edh, al
2 A- e7 ~$ \. d2 R+ j      cli
$ r" W! \5 @3 m* P      mov    eax,DSEG# ^; _) `8 ?# ]6 f8 Z' M
      shl    eax, 4
) Y. f; R" E0 r6 T& B$ C9 N% H      xor    ebx, ebx6 G+ U$ G- ]* r( X! P: C
      mov    ebx, offset GDT_def5 y. J$ |$ Z1 e$ R2 h
      add    eax, ebx
6 V' v1 S2 Q1 o* @2 v; R, M      mov    dword ptr GDT_Addr.Base, eax
, O) {" q- g) o% `4 G* o8 B8 R      lgdt   fword ptr GDT_Addr9 P% b9 Y: q1 I9 T" B, s. t
      mov    bx, 8$ k1 E2 Y2 I- q% ^! }
      mov    eax, cr0
( m1 A# e; \. M      or     al, 1
. G( `7 f+ }' j1 T. k6 D8 |( B      mov    cr0, eax3 T9 `- [! P, x) Q. }0 H
      jmp    PMod) {. ^, ]- X7 o/ F7 r8 p
PMod:6 u% d) r0 t! d6 S
      mov    fs, bx1 z% k5 f5 q) s- ^" p  _
      mov    gs, bx
: W0 L2 l8 ]( N7 z1 q' e' h      mov    eax,cr0
0 n1 I  _7 X2 u3 j1 C' h% K1 v+ @& F      and    al, 0FEh- g% ^- M' _" ?- V/ o
      mov    cr0, eax
( V& R. K0 z$ b/ b8 H      jmp    RMod5 O$ H, k# |0 ]: F# ~( ]9 c) r
RMod:
9 h. \  E0 Q* |1 \! Z- M8 ?      xor    ax, ax& a5 m( d) u4 R4 c1 z7 k3 d
      mov    fs, ax
" [: _& g. t( \# Y1 \9 [      mov    gs, ax     
/ w+ E+ s& [& m, c( E      sti     
5 A* i# E+ j& S& K. ?2 n      ret# c% n  L& B: n0 L8 B; {/ d
big_real_mode ENDP  S% Q2 z; ^9 ^, c! Z" y8 }
;------------------------------------------------------------------------------------------------
+ L0 p) A1 h/ `# sreal_mode proc near
1 t2 v3 u9 \9 B      in     al, 92h
" u6 ]# d/ M' K5 [4 I      and    al, 02
2 s3 e. t, f- N      out    92h, al    7 R* m8 U5 r9 @; y; V$ ]
      ret. @0 i2 p4 ^9 a$ w& k0 `- C* K7 V; a5 t% C
real_mode ENDP$ |% q* g) T8 E7 K- j) M- e8 z
;------------------------------------------------------------------------------------------------3 Y" J& I1 i- K: m2 y& \
Get_Commandtail PROC near4 d" Y3 Y, i3 m9 ^3 ?
      mov    ah,62h , w" B9 X! y- h9 w. q
      int    21h7 m' S/ Z: d4 ?, C1 I
      mov    es,bx
' e# Z& `- L8 k! @) N% g' B      ret9 h' z# z* `9 |2 E2 B
Get_Commandtail ENDP    $ q' y' v& B1 m1 [+ T
;------------------------------------------------------------------------------------------------
- l$ a9 J! h7 ~3 IPSP proc near
& z( |4 h! ]+ g3 G1 C+ a      xor    ebx,ebx
! v1 ^: F9 d4 y6 c7 F) e1 K6 g. D% N      mov    si,89h
: _. z/ ^' E% h      mov    al,es:[si]' s) \( T+ e) l7 _! W8 |& i
      call   Change% e! \3 M) j/ G0 [# n1 Q) x' n
      mov    cl,4# s$ \8 S; s. H6 j  a( `
      shl    ebx,cl- s: A" ?: b; |6 W! X
      add    ebx,eax8 s% h6 q- j: ~+ f
      mov    al,es:[si+1]
% z7 i  r. M; |7 ~% H, ]      call   Change9 O2 \+ d( D' w2 Y
      mov    cl,4
+ W  W0 T7 `5 \! f      shl    ebx,cl3 v9 F% s2 \! `
      add    ebx,eax
/ F; ^# y2 |) O" w; _      mov    al,es:[si+2]
3 [3 J9 Y+ w1 w) b$ X' D( q( d      call   Change
5 b1 s2 d" N% W/ Q4 X* {' @  s      mov    cl,4/ g! K/ E; f& n: Y
      shl    ebx,cl
' v' r: K2 D& M      add    ebx,eax
0 y% n1 P1 ]/ a      mov    al,es:[si+3]
% p, n$ O* D  P1 u: F      call   Change% N: J6 E" t: O  [# [' F. O
      mov    cl,4
5 u+ j5 d) w+ P  P      shl    ebx,cl
; ?# B6 ^0 b- o: d2 G7 @9 F      add    ebx,eax
, I% H: H8 q6 ~0 k, a) F! U; T      mov    al,es:[si+4]
* b+ ]8 n$ ?4 D7 }& U6 H8 y, v2 d1 L      call   Change
* R0 I" F/ R2 k+ V, J      mov    cl,4
6 \4 w$ f3 N1 i& Q- ]; [( d% ?/ v      shl    ebx,cl. ?6 \  @$ y6 d4 y: @8 L5 Y
      add    ebx,eax
) x1 s8 u. [5 U, [. X: V/ J( M      mov    al,es:[si+5]
3 `# U) F7 [& W; i& Y      call   Change
4 }% Y7 Z4 o! G8 E' P2 k      mov    cl,41 ^3 ?3 ?* |0 Y% S# |
      shl    ebx,cl; h* B! U0 L! Z" H7 K! y/ R) i
      add    ebx,eax( x. h$ l( I. ]- |
      mov    al,es:[si+6]
- E9 l. t: Q3 i( `* B) y3 x& Y  E3 j      call   Change8 L( J( l) t/ W( F" w, Z0 B5 a
      mov    cl,4- N" E; p5 E- D7 s0 j
      shl    ebx,cl/ V/ \; o4 t& D5 m! ]' H  j
      add    ebx,eax; n6 Y6 S, ]6 N% X. H# r1 ?
      mov    al,es:[si+7]
" C" T. y* J4 Q* ~      call   Change
. j4 e$ m  s) i      mov    cl,4, W0 M" _- y8 c' p6 O, I$ a
      shl    ebx,cl. x: T7 G2 I, ?( c- E
      add    ebx,eax. u5 c, \( C6 s
      ret9 m2 m% k- t* s! g' ^4 ?
PSP endp
. e/ Y# r! q; w;================================================================================================
+ h$ s2 q4 ]; z9 u$ R+ tDPSP proc near
. ?$ u, H1 V9 V      xor    ebx,ebx$ Q! F2 I" k9 f8 T3 t1 L
      mov    si,8ah
. w2 Q" \1 {) e% }1 A" C      mov    al,es:[si]
$ ?4 J! p7 s& E$ f      call   Change
( P$ _% y" ^  j& l* ^1 Z7 g      mov    cl,43 c4 c6 s2 b; W, }0 t- u+ _1 C
      shl    ebx,cl
1 K& y  }" [0 V0 }7 X4 P: ?4 c/ C      add    ebx,eax
' j! @: _3 ?) ^( ?5 h      mov    al,es:[si+1]  z8 I9 {( C% S4 o
      call   Change; D9 w! G- L! |
      mov    cl,4
+ F( S, J  Q7 v" E. N7 H2 x      shl    ebx,cl* `" d" c. \4 j; m& \- p) _
      add    ebx,eax6 J% f! u( f0 Q% U/ h. d
      mov    al,es:[si+2]
) o7 K& x) N4 @0 j! D      call   Change0 z6 o( F0 A6 ]- N9 J4 E4 E
      mov    cl,4
7 n' z6 ]/ V* Q& {7 u2 `; T3 _      shl    ebx,cl
2 g/ Q' A8 I: o      add    ebx,eax
. @6 ~6 E, H: }; ?( B/ t      mov    al,es:[si+3]. [8 J* P, }9 O" {; `5 J8 N
      call   Change2 Y8 l7 U; P1 a  a" K8 `7 r
      mov    cl,4& [5 E# c& H* h6 A
      shl    ebx,cl
+ B; R0 D7 t6 |  A# Q      add    ebx,eax
' ^, a- S2 l1 F& h      mov    al,es:[si+4]* f1 C& f2 h5 V, V( x1 u2 g- D, P0 P
      call   Change
* v. _( K! n" Q7 Y) i      mov    cl,45 s0 V9 Q  Q  R0 v/ N$ E- Q9 i
      shl    ebx,cl7 Z7 U3 b/ b. f# l
      add    ebx,eax) D8 f4 D5 j( _3 J- s7 z/ ~) s' {
      mov    al,es:[si+5], y# b7 O0 X! X
      call   Change
( H0 F( S1 a1 {1 t; z, o5 E      mov    cl,4  r- R+ W- [! Z
      shl    ebx,cl8 H3 @& L5 S& Q- x: b7 j
      add    ebx,eax( F9 m. F) G$ O1 X6 g- F
      mov    al,es:[si+6]2 U( \7 x8 y% }7 Q) S4 z
      call   Change1 o7 F% R- B5 \" d' D
      mov    cl,4
) v- R% Z5 c# l$ b2 u      shl    ebx,cl8 R3 d+ z8 r  m( `; M
      add    ebx,eax
5 u% |4 W" g; e3 W8 ]      mov    al,es:[si+7]. V, e9 [) s+ f- o1 D& O7 G
      call   Change; P1 F; `0 V9 A+ ^
      mov    cl,47 y, H! X9 Q2 e+ G8 M. C( Q0 h
      shl    ebx,cl
/ r8 `5 J& f+ h      add    ebx,eax" A6 d+ w6 C# y2 E( F5 P% n
      ret1 q$ |' J* N! p3 }
DPSP endp
* \$ N; w) Z  o6 g;================================================================================================7 [' E7 {& j, }# q+ Y
WDPSP proc near
. X: F# s+ |! q% p$ L5 G8 e      xor    eax,eax' z4 _6 L+ B$ y
      xor    ebx,ebx
  H: B( c5 z& J/ m      mov    si,93h5 [$ w3 k* e" e: s
      mov    al,es:[si]
/ o* N8 [9 c  b  G; ?" P+ S      call   Change
4 x5 Q+ N! q* |# Q      mov    cl,4
3 J  `5 ?+ I7 M( N. X+ Z! ?      shl    ebx,cl+ U3 \- D3 b2 S1 ?
      add    ebx,eax2 G$ @2 C3 S6 P7 `
      mov    al,es:[si+1]$ r) Z0 B. O! i/ ^0 W
      call   Change( z8 O$ ?7 u* u( d6 ?+ f$ }  p
      mov    cl,4
/ F, x$ h, H; E- h' F      shl    ebx,cl- y/ g, o+ m" Y
      add    ebx,eax$ ~6 Y  `* g0 W2 [3 W4 x+ @
      mov    al,es:[si+2]5 b. j9 [' p% k) c/ u
      call   Change
2 [' v7 E1 A7 y& R      mov    cl,4
3 _8 x5 D/ B- R3 ?1 u      shl    ebx,cl
6 m4 }8 o3 P0 D& U      add    ebx,eax! E" J* @, r* |5 E; c. @! a
      mov    al,es:[si+3]: }, m: v$ j* c, a+ D: K/ L5 e) g
      call   Change+ G; A2 r+ z" h- m, v- b
      mov    cl,4
( M5 }0 u. w  }* F      shl    ebx,cl& W8 Y* `- d# J- D3 }3 ]
      add    ebx,eax3 M7 H- D1 n0 S& t  S5 M3 }! h
      mov    al,es:[si+4]* X' L! I' T  }3 S# U
      call   Change1 ~* P& |+ m$ m+ \2 ?4 x
      mov    cl,46 s. S( B' x; J, h1 T; U& y
      shl    ebx,cl
& @: G% H9 a5 l/ w- E- {  Q6 w* d      add    ebx,eax
) \4 ~0 n& Q7 A      mov    al,es:[si+5]
" O' }; @; T$ N6 Q      call   Change8 y' ~. Z7 W8 n. W) d
      mov    cl,4* j- ]; U6 E5 d
      shl    ebx,cl
/ f- X5 k7 D. L9 ?; }! o: g% L      add    ebx,eax
" P0 |8 K0 w, ^* h) X* r0 H! a# c      mov    al,es:[si+6]
+ O  ~" R- O  E9 j( R. a4 w      call   Change: A( J9 y6 G2 J9 t4 h
      mov    cl,4
" Q5 w/ J; D- j6 O- w( J      shl    ebx,cl
2 |6 m- J2 j- A      add    ebx,eax0 u; n  {. O3 ^% K
      mov    al,es:[si+7]
0 H' F  a3 ~- N$ x" J3 D/ m      call   Change7 d; \% ?* J' y, F; y3 O0 x: e1 U
      mov    cl,4" j- S2 [# G" Y
      shl    ebx,cl0 [8 y0 l  T: R3 b- C
      add    ebx,eax
) C3 Z; o9 B) q; k8 w      ret9 W" _+ ^2 j: [. \6 w8 h
WDPSP endp
" ]+ N) s  O. u+ N, \;================================================================================================
' u7 p: p. |, a" e% Z7 yChange proc near- o3 k$ H/ X0 \1 Z; d
A:   
2 _$ Z* B! g- m0 N- Z      movzx  eax,al6 w" Q' C: Y3 S& `: M, v
      mov    edx,eax
- t1 j: j, ~4 @9 H- R- ^7 c( U* Z      cmp    eax,'0'            5 P6 R0 [  s9 R6 `% Z3 [7 ~* ^5 m
      jb     A% o( S( k4 F# }7 y1 T1 o
      cmp    eax,'9'            * _. o! s4 W! Z( b+ R
      ja     B# z  o! d# \+ Z
      sub    eax,'0': {% p* B3 ~' M* q# B. ^
      jmp    short E
. z' d& r  d9 E% R8 OB:6 b" ^9 [# l9 I1 B& s" u% C$ N
      and    eax,0dfh           
3 s6 Q/ \# g& w5 d: P6 D: T& c- p      mov    edx,eax
( k; m  ]: J& F. T0 I+ c' o* k8 z      sub    eax,37h            
6 @8 l9 G6 Q! W      cmp    eax,0ah& o) L( n& `5 Q3 U1 g2 ~
      jb     A                  
8 E9 s" Z6 u! \: A      cmp    eax,0fh
, ?! @0 Z; V( B7 ?      ja     A                  
1 Y' u8 L- @7 `7 [3 X8 W1 {E:- S! r5 K9 o' h" P0 w2 D
      push   eax      
# @$ s. c5 Z- `( M+ |. j      call   PRT                1 v4 {# J: r# p( s& u8 E
      pop    eax
2 ~9 ~( j: ?& WCExit:
5 H2 X- F! l6 n" B7 |! c% h      ret
, N1 z6 M/ m' p. W& a# k+ IChange endp7 p1 f: a2 h/ i
;------------------------------------------------------------------------------------------------1 B# @5 a8 }7 f: L. ~' s
PRT proc near
# A  r, K8 @" D) f; J2 |      mov    ah,02h- i( h7 ?, [0 u7 t- k0 c
      int    21h
' n* n8 s4 z' `! N: Q; {      ret
" w) [: r2 N: Y, p, u( C9 ~+ h; a# N( |PRT endp
" U2 j# k, q4 g9 N;------------------------------------------------------------------------------------------------( M9 D9 R; H5 i9 }  M6 L
crlf proc near3 m. J1 b& B! h# m
      mov    ah,02h3 v$ I2 s2 o# j3 N+ q. C
      mov    dl,0dh
( i0 [( V9 h/ {) [! l      int    21h
. j* u: {8 |$ D+ a2 ]' b      mov    ah,02h
. y. q# b# z0 Y      mov    dl,0ah
+ f) n9 Y# p% s3 O      int    21h
7 r+ |1 o  y' i, N1 i      ret
7 F6 p; Q9 g5 p5 N; V. E, rcrlf endp! b* \: x" h: ~7 ^
;------------------------------------------------------------------------------------------------/ |7 \" o: f  N3 T! h: X, v+ a- Y
_32bits proc near( O" a, P4 K4 M
      pushad% \. a$ d+ H6 G& z
      mov    cl,4- ]9 C6 A+ U) a0 l; \' l  y2 |
      rol    ebx,cl$ n8 t0 A5 |* o
      call   print_4_bits
, h# D: H  I7 l4 i4 |7 L; a      rol    ebx,cl# j. C  V7 D7 K4 \
      call   print_4_bits7 n* L4 E! e9 ~/ m# E5 P
      rol    ebx,cl
- s! l, {* N# ~5 M0 X2 U& V. D. \      call   print_4_bits
+ \, n  t) T" J0 o& L1 |* p      rol    ebx,cl) M  P% \/ S0 a0 P2 T6 b' c! o9 e! }' Y
      call   print_4_bits
) |7 E. h4 N0 w# R+ o: t6 F      rol    ebx,cl
+ K. P/ l  g# f# O  J7 k0 G      call   print_4_bits3 u  p& b  _; x/ E
      rol    ebx,cl- \! V: C7 y  X, |
      call   print_4_bits
# f  k( q! \6 F6 x9 x      rol    ebx,cl
" D& p8 g) x/ {1 n; f- e* Q      call   print_4_bits
" t+ w$ C) F* w0 b0 [& t      rol    ebx,cl6 V9 z! {& e* R3 o2 v
      call   print_4_bits0 N0 z3 k) O9 B0 k9 J% D$ q. L2 F- B
      rol    ebx,cl
( m; u* J" i) m$ }: d" g      popad
$ O- S% `8 M3 a4 H      ret
  O! l% S7 d3 a& P" h( E$ v_32bits endp' b) A( R' f. u" p- ]5 ]
;------------------------------------------------------------------------------------------------
2 o% ]  O, o. q_16bits proc near
6 x+ x0 B( p+ H      pusha        " G9 F2 X) d6 E
      rol    bx,cl  }- X% D7 @6 y  s+ M
      call   print_4_bits
/ B3 n1 W( z" H3 A  j) Y# a) T, A      rol    bx,cl% U% ^0 f. \& [( x6 d( ?8 s) z  L
      call   print_4_bits6 d! o& n8 O; u$ z! h& V
      rol    bx,cl
$ p! o* Y* e( e' x8 j" L0 G      call   print_4_bits
6 M/ X: y( {/ y      rol    bx,cl9 i: D1 u' }- [) g% F0 D1 q
      call   print_4_bits
1 h- j- D/ g5 U0 w8 X  D& i      popa, B% X4 ]3 f5 H: Q3 Y" I  d1 X6 T
      ret
2 Q3 I1 u& F8 x5 q- |_16bits endp
- }; x% X+ b' u2 t% N) F;------------------------------------------------------------------------------------------------3 Q" T* O' B/ ~% [
_8bits proc near9 a* Y* Q" H1 _4 l* |
      pusha        
* X7 g! a& y$ u0 V9 }      rol    bx,cl/ f% Y# g2 b4 l# y; M0 Z
      call   print_4_bits% S2 G& @6 [* G# f
      rol    bx,cl; \, @3 U! r% [/ |
      call   print_4_bits
4 U$ [9 Q; T6 I0 F# x5 S      popa" N( L, M2 K9 X0 u7 R& a9 |
      ret
! M1 U. r) d' i$ K8 ]3 `_8bits endp
9 r; q" b% I0 M1 P/ ~print_4_bits proc near/ e; q+ y3 G. N1 z0 b
      mov    dx,bx
' q1 K9 \  z! r9 x) f3 ]      and    dl,0fh
+ l8 ]3 R! H7 a# P      add    dl,30h! ]2 c+ O) l% g/ e
      cmp    dl,3ah
& n/ F  |2 |1 K      jb     print
* s1 {1 L& I# N  z7 E4 W# s& Y. r      add    dl,7
5 e  d8 q3 O4 G1 u/ a1 yprint:  
: F* k. F6 g0 |  W# P$ @      mov    ah,20 t  V& [: ?. H8 b  \, [3 S
      int    21h  R" ?; b" X' m# g0 f
      ret
  B, e( G$ N5 O- M2 }9 C$ f( Mprint_4_bits endp    - A( X6 ?( f8 f
CSEG ends0 _, M( }( _* A4 W; O
END
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2026-11-3 23:14 , Processed in 0.160370 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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