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

關於SEGMENT 宣告變數的問題

[复制链接]
发表于 2010-10-19 16:50:51 | 显示全部楼层 |阅读模式
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)
) E3 d/ }. T) H) _. d/ b# v5 [3 T, p8 |! ?
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
# I( C9 g9 Z* p( ?
0 F2 e5 S) C. q7 `8 u7 h4 g宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝  5 T# O0 k6 Y( H- \: p

' @. \. a6 ^1 m+ i8 U.model small
3 T+ L* b! B* D5 {4 e/ V$ T! j" i.386p+ K7 m. ]7 V# g; W
DSEG SEGMENT USE16'data' - C% L+ g7 O2 y/ M
" c9 F) }( R# ]; R
DESC STRUC/ r3 D9 `& P( E2 j5 ^/ e) y9 o
     LimitL DW 0 4 g3 ]2 v, O& f4 k) U
     BaseL DW 0 % d% [1 N% H0 X+ J" N
     BaseM DB 0
$ s: M# P* R% _8 q: `. d6 |+ ]6 N3 e     Attributes DB 0 9 ~2 r8 S- `* z6 V
     LimitH DB 0
& i2 J# `/ i/ o9 M, R     BaseH DB 0 . f- j; ]& B1 C
DESC ENDS: _% {0 i( \2 A! L$ V, e+ n4 x7 N1 Q

( b$ K# i/ Y: P" n' ePDesc STRUC" ^% p6 l- ~0 o# \7 _. }
     Limit DW 0 3 V6 _. x" \7 n
     Base DD 0 % X) b, B6 B6 w, W1 X- e" b
PDesc ENDS& I& F# V! E; X! [4 W: F3 \
- s8 D* H- h, [% y$ I3 m& p
GDT_def Label Fword7 Q$ e) l& ^- F6 C
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
- [1 L6 q+ p! t% G! G1 ~Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
. H- ^1 g! [" ?- hGDT_Addr PDesc <$-GDT_def-1, >
6 ^6 p7 ^  X0 _) K# c8 k1 h# B: X7 T$ ~
Maddress Dword 04 Q; {" f9 H, M/ H
/ j2 U6 g$ Q0 }
DSEG ENDS
* I" u1 {" x' h8 nASSUME CS:CSEG,DS:DSEG0 s  C* R7 s. [' A

& g8 b: {% q$ ~+ TCSEG SEGMENT USE16'code'
1 |3 e" P1 _, K" A      push   ds2 R! A1 v6 f- q! {
      push   es0 j/ f8 O0 Y3 f4 x" M, E+ N1 p  @
      push   fs9 O$ \% X4 ]8 c3 u' n! \
      push   gs2 o# V0 t' U7 P: Q% T: V
      call   big_real_mode     4 g* e0 `. B6 R+ W7 R2 Z& ^, A
      call   Get_Commandtail
$ H$ E$ h! V$ b" P, P      xor    ebx,ebx
3 ^, w- b1 z9 ^  a      mov    si,82h# ]5 ^3 a( v( e1 g9 D& f3 B* ?
      mov    al,es:[si]
1 P" s" s6 K* O$ Y& L5 E4 D0 Z      cmp    al,'r'
$ [. Z/ R$ o0 Q( {8 L1 B      je     R
5 k; K5 f1 @4 p4 @( R/ O      cmp    al,'R'- |) j3 D  v* ^
      je     R
3 D/ \2 C# M8 O+ P) t      cmp    al,'w'7 J' g) Q$ N+ }( H7 W9 E
      je     W) s5 ~5 O, K8 \5 |- ^7 {
      cmp    al,'W'4 A% T; U+ o: J6 i- Q- {
      je     W          - ]3 u$ }( A; N" Z: E
R:
( p" `0 n( J* k      mov    si,84h( H$ b0 ^  z( B1 `& ?- \
      mov    al,es:[si]7 ?8 M) ?- q% r6 B; w( |
      cmp    al,'b'4 U7 A. o) k0 @* V# ]0 }- `
      je     RBT
. H4 H& F$ {! X5 A, R$ a      cmp    al,'B': M/ U. M4 s* G  T. ^
      je     RBT
( ~+ [. S4 m" z9 S) @      cmp    al,'w'8 ~; K# `/ H- s
      je     RWR
, v$ Z7 x4 P! Y; f$ H0 C9 q& O      cmp    al,'W'/ O$ v' S5 }0 F  ^$ s8 v! G
      je     RWR* @% c: |$ U5 J4 }
      cmp    al,'d'& t9 d9 M; Y' {0 D, v* O
      je     RDR
- h# z; N9 _' m$ a$ S0 i6 k9 R      cmp    al,'D'! t. y8 X% K* C
      je     RDR            
* A& |/ k  Y1 d: r/ S& _W:      
& z: r( l/ O& E; T2 F* J# c      mov    si,84h/ E9 v6 K/ [/ N6 Y$ X- b/ \
      mov    al,es:[si]1 P+ b$ u2 @* G
      cmp    al,'b'3 V8 s- M: ]- E4 c- W6 z
      je     WBT
! O! U! }9 x! m8 W      cmp    al,'B'
* P3 `5 I4 Y% O/ U- C& L9 o      je     WBT
* ]7 i9 w. X" x# |$ d2 J      cmp    al,'w'1 a- o" a- g2 u3 t# t* M* I
      je     WWR
+ _2 @0 y, p9 U* B      cmp    al,'W'0 ?9 Q  C, k% _! B0 f0 K$ S; h8 s
      je     WWR8 [2 {4 k8 ]& s* |
      cmp    al,'d'
" _- q& k" O' y4 P2 R9 l      je     WDR% ~3 v6 ^& u7 u8 t7 V9 x
      cmp    al,'D'5 K9 w" \& `3 j) K7 r! X
      je     WDR4 G( ?' x2 U' c( B/ u
RBT:: ^& w! Y* A% m" O7 M
      call   PSP        
3 Z6 M, ?- z7 U6 F      call   crlf           8 y0 i# ~! g/ F* f4 l% V: Z+ f
      mov    esi,ebx; u% b' z- n( L3 G# U- i% N
      mov    eax,fs:[esi]% b7 m# z2 y; D
      out    80h,eax3 F: Z( \" W  k5 s
      mov    ebx,eax: ~/ @5 d; F9 ~8 ^1 e
      call   _8bits" {6 Z! i1 u3 Z
      jmp    Exit/ w; M* U6 k' x! z/ L( V* O
RWR:
  L$ J. l2 {. B7 A% d( \, ]      call   PSP        7 k$ @. O; s6 d/ w
      call   crlf           7 u  X2 }3 S( I  r3 |; b; l' J
      mov    esi,ebx
" P1 x6 q6 o" i. {" u      mov    eax,fs:[esi]4 D7 d* f2 E! R
      out    80h,eax
- ]" p* P3 U" {2 L* C- U" h      mov    ebx,eax
, [' m% J; P2 e; d3 F      call   _16bits1 f, I/ ?# O, |4 ~. b+ O
      jmp    Exit/ B# n4 J0 Q2 z( X# y# R8 o
RDR:! ~; I2 |! D/ b+ X7 L
      call   DPSP        $ G. d" d2 _' T$ \% a
      call   crlf           2 U. P( u/ e% {9 i, U7 p
      mov    esi,ebx
" \5 w7 H) n4 U+ P# L# R      mov    eax,fs:[esi]9 b# F2 }+ N, D0 Q1 S
      out    80h,eax) W& ^' M4 X4 V8 f' ^
      mov    ebx,eax. b! y. \. W$ h8 Y& L8 F
      call   _32bits
# E; _$ x6 R$ \3 f5 p      jmp    Exit) b. M0 w8 s3 M( v; V- s$ j
;------------------------------------------------------------------------------------------------: c- u$ h- T' U! S( P. n$ U
WBT:
1 H+ N6 h1 J# r& v% [' w& ^0 k      jmp    Exit- o# E6 ]/ n% X- w% S" c4 m
WWR:
3 A' }1 B1 n6 P9 y      jmp    Exit* [- a) X2 X* x5 b! ]& m5 P/ w
WDR:' D0 A$ ]+ C9 d8 o
      call   DPSP
* K9 O  G0 c; e3 _( b      mov    Maddress,ebx      $ W& g9 e* P) \' w( U# Y; I
      call   crlf
+ X% |. Y1 R  r$ `/ ]2 k1 w      call   WDPSP
+ ~! R8 q' J9 ^! j      mov    eax,ebx1 |# x5 p9 m+ ~& T; O  k* B* L
      mov    esi,Maddress            {- ]; z9 c* J
      mov    fs:[esi],eax
$ @4 j. |( \4 l$ C6 @      out    80h,eax' B  X: f7 g! u
      jmp    Exit
1 w2 F  o0 R, _3 K, m% ];------------------------------------------------------------------------------------------------      
; m; _- u! J9 E* aExit:: u3 ~5 l+ r' B5 F0 f
      call   real_mode     5 m3 J3 T1 b# \- i2 i4 w
      pop    gs
' j. [+ j6 V7 F      pop    fs
1 Y2 G: f1 X8 c      pop    es
( v# `0 j; j! _  P2 @      pop    ds      
) a; b! e  F; J- q  k, V# g! ~      .exit
& `, r* q4 V1 H8 B7 o$ I) ?! z;------------------------------------------------------------------------------------------------$ L  a$ h- s3 R  A/ T
big_real_mode proc near
2 p6 d) a1 z7 r1 m/ u      in     al, 92h$ r9 g0 }. W  h
      or     al, 002
1 a3 c) {7 g3 }4 b$ Z  @; F      out    092h, al
- H% y. [. J$ D6 b; a; D' \      out    0edh, al* ^9 J$ M" T1 v/ L( ]( N
      cli
! ?& m  l, X; J9 S2 Y# ?$ N, x      mov    eax,DSEG5 @1 G1 o. z6 }! ~! U+ _( x
      shl    eax, 4+ `# n: Y: d- l& i2 Y* H: F
      xor    ebx, ebx, K- P$ |) E6 C: `; y
      mov    ebx, offset GDT_def
# j4 m# ^& l7 j3 G! `9 O; f8 {      add    eax, ebx
9 C. l$ L2 V8 v* m9 d% g      mov    dword ptr GDT_Addr.Base, eax
7 q  ?5 E7 \% e3 h) p& E      lgdt   fword ptr GDT_Addr8 E# c, N6 H# f( ~$ s
      mov    bx, 8
* F* y# W. [' _$ b; w9 m7 F: |      mov    eax, cr09 B) W4 P( ^1 W; d8 M2 `- L
      or     al, 1+ d+ ?/ i( }% D1 p+ `+ f
      mov    cr0, eax
4 d! m1 |$ P" \5 @3 Y6 ]      jmp    PMod
7 [% `6 F) }( L- S4 x5 t' aPMod:
& m; t& P& I6 r1 _6 {      mov    fs, bx0 D& s5 B- G0 [# R0 N
      mov    gs, bx
3 L  H6 q% ~0 t% x& U& [6 n. H      mov    eax,cr0! n" U2 B$ `% s" g; e8 H' B, z# f
      and    al, 0FEh: q& g" U2 k2 }
      mov    cr0, eax
/ [0 b9 x; A1 N0 X      jmp    RMod; Z: X' h# D( g8 m* S
RMod:
" u6 N* v: K& \, f; r; e. b      xor    ax, ax
; A, y5 l" o+ w( \      mov    fs, ax
8 ^9 T5 M; ?# J# j6 ?      mov    gs, ax     
3 c5 y  M" p- Q" \  L      sti     
+ ?9 ]2 Y3 @' ^* |% q) P' u' R      ret/ ^/ v1 l* V( Z9 P+ g! O2 F: i- q$ _
big_real_mode ENDP! z2 \- D4 C& e( t6 b) ?4 g$ t
;------------------------------------------------------------------------------------------------2 M1 B+ H- Z+ N) [4 E+ S
real_mode proc near. `) e5 p3 k7 [$ r. A4 J: `
      in     al, 92h
5 O" {# B. v4 I# q* v/ I; R      and    al, 02
( d% X4 G7 z/ u- G8 B7 S. N      out    92h, al    ; i4 \' {7 q- {2 w2 K' F6 q
      ret2 d; Y- z3 r! n8 Z
real_mode ENDP6 L" K+ g/ e2 l% E" n
;------------------------------------------------------------------------------------------------. r0 V$ ?7 d5 a+ C9 ]
Get_Commandtail PROC near% d3 r0 G# d5 L$ U
      mov    ah,62h 2 k" P- r7 `# ?4 T6 O9 C5 _* k
      int    21h5 i7 A$ R0 S! R
      mov    es,bx
' }. _" o8 E1 ~4 i- g8 P      ret+ z0 s2 i, q) R# ~, h9 ]( n. F) P
Get_Commandtail ENDP   
9 z7 y4 H6 P% K& C" n5 z! b# E8 w2 f1 o; d;------------------------------------------------------------------------------------------------0 H6 D% m9 l' K/ F" Z/ w
PSP proc near
# O6 |1 L7 e2 n( C/ n      xor    ebx,ebx
1 V+ K) e: B& M  _2 }( b1 P      mov    si,89h
  @& M! Q; Z# A+ X9 o' L) d      mov    al,es:[si]
" q1 L/ q# W* V2 E      call   Change5 `, o6 C  K# ]0 d/ }
      mov    cl,4
7 b% @" V% L3 {+ R, N      shl    ebx,cl
# s/ S% m5 A& f7 }3 U/ n  c      add    ebx,eax
) o9 l: `( I9 J% g  D      mov    al,es:[si+1]
( H4 ]- u* G( h$ f: K5 S      call   Change
. Z/ i4 d! b" E3 b- h5 g      mov    cl,4
6 t$ z7 q# V7 E# I# o      shl    ebx,cl% q$ d: [% x5 \
      add    ebx,eax, O* Y! P; H5 t5 R! ]( A4 r" e
      mov    al,es:[si+2]
$ ^5 u" y" I" `6 i3 \3 h      call   Change
1 u  {# I9 w# b' }& }      mov    cl,49 l' \0 F* t2 q2 {- e, ?7 I  o' Y3 {
      shl    ebx,cl% j) ^: j0 r: ]
      add    ebx,eax2 O9 Q) z9 }5 v) q3 }0 J4 S
      mov    al,es:[si+3]! N+ j6 Z7 O% x+ p3 }* O9 p
      call   Change+ i. P3 A1 V2 K4 y- ~+ A, ]2 [
      mov    cl,44 {- ]$ ]: A. x! }9 `* E0 Q
      shl    ebx,cl
9 s& o: J# Q+ ]* _2 l% ~- |      add    ebx,eax. a; Y+ I- k' L
      mov    al,es:[si+4]1 S3 B5 ]1 V; t2 U
      call   Change
3 Y1 Z* ]  A8 o( }: Y" \9 C! s      mov    cl,4( ^' O3 v$ B" h) o4 M: L+ p5 a! n6 Z& ]' P
      shl    ebx,cl  t& H9 o, Y; m. R7 N1 H- u. y( I
      add    ebx,eax
4 B, G$ H( n  _& f0 }      mov    al,es:[si+5]
) ^* H; p" v" _      call   Change3 o/ e2 R9 m+ r) C- `4 _9 Y& m
      mov    cl,4
" x- M2 W" D) |* {! R$ P/ G* E$ I      shl    ebx,cl
4 z; v5 `, ^; s* b$ p      add    ebx,eax5 H! ^0 _* {3 L* T4 q
      mov    al,es:[si+6]  ]  C2 m, {3 m" N- |) I  B
      call   Change
% {  L+ @/ @) ?0 k) @8 g) D* A      mov    cl,4
: C$ D  h/ x( a      shl    ebx,cl
8 ]) R0 o7 {' R- S* a5 a      add    ebx,eax
' [& k0 {( c% @" Z4 @( A1 E3 J      mov    al,es:[si+7]. C3 X1 a  }% S2 h* `0 p3 C2 @( ?0 X' @+ l
      call   Change
2 m, b7 g6 i! U: m# r; K3 y      mov    cl,4
) N) m% U" [" ^+ S+ L; Z      shl    ebx,cl
+ ~8 x4 b4 ~. J      add    ebx,eax
; s2 h( e6 ?/ d. _      ret- _) [# k7 j4 b8 R% g- x% _" l1 j
PSP endp# r3 b5 ~, B' E' t2 k
;================================================================================================+ q# K7 c- c7 j, R, H2 C
DPSP proc near2 B+ w3 B/ j0 D. A/ L0 {, Z
      xor    ebx,ebx
" a" Z+ J8 H" ~2 Q      mov    si,8ah0 f! o& @$ F# J* _* L
      mov    al,es:[si]
+ R1 a8 q* D5 x+ s8 y6 T      call   Change
/ s9 P$ _+ j3 r9 h      mov    cl,46 \/ v  K* q% v
      shl    ebx,cl* g$ w* F& |- W
      add    ebx,eax" O* j0 a9 F9 a6 s4 B4 H6 [
      mov    al,es:[si+1]
0 v5 O) C& G* Q      call   Change: ]. ]' N8 ?: p! ^% c& i
      mov    cl,4
0 Q5 i; x. ^0 j" C4 w7 a      shl    ebx,cl
+ v1 t& V: S0 m0 d      add    ebx,eax
8 a5 r0 y+ e4 c: O# W% J      mov    al,es:[si+2]
! r; y9 H$ n# u# f      call   Change
) ^6 p" s3 O! v$ X1 Z7 F$ Z0 I% w      mov    cl,4
" B) H, r9 E( h9 i8 J1 y      shl    ebx,cl- u; _0 n  c4 U0 ^/ U6 Q2 a* f  |
      add    ebx,eax
+ ^6 W) m. x# C# S      mov    al,es:[si+3]! ^' n! B9 ]5 [& I
      call   Change) {6 `' k+ ]  E/ E: [
      mov    cl,4# E2 d6 C+ S) h( {6 `( p5 B
      shl    ebx,cl1 ?6 P$ m) E& r$ z3 t& U
      add    ebx,eax* X2 e3 K. G2 o" e4 p# H
      mov    al,es:[si+4]
' ?, U# p2 ^' ?      call   Change# r( F# w/ F( \6 p$ C+ [
      mov    cl,45 _7 n: `' L  s' X
      shl    ebx,cl
& E) Q( i2 y; ]5 _+ B      add    ebx,eax
3 ~  z1 D8 k. \: \5 {      mov    al,es:[si+5]
5 [9 N+ G, v$ C+ z      call   Change6 g  {, G) `2 j3 v$ E. {9 H
      mov    cl,4
. G" `; d& Y  P& |  i      shl    ebx,cl
4 X! U& U6 z' l6 `) E      add    ebx,eax
+ d: i0 Y* Y+ J  X( `7 {! \  ^8 C, q+ U      mov    al,es:[si+6]
+ h3 f  R" Y' C( h* k0 t' P      call   Change
6 g& v' q* f3 ^2 z, a      mov    cl,4
. l% d5 m0 j  w, \+ L- {# _  {      shl    ebx,cl
; o) g: j7 Y& u+ \  h3 Q      add    ebx,eax
' o1 D$ |  K, _; Y" i* P- s2 B. m) W      mov    al,es:[si+7], k- w% g# R& r/ r! G. K/ z0 E
      call   Change' t( s7 C% e0 M# P$ A% }
      mov    cl,48 [) \3 B4 I  S2 [3 K
      shl    ebx,cl* o+ Y0 a" D7 a4 \
      add    ebx,eax9 W9 k+ X. S" f
      ret
$ M7 t# r: Q7 m2 t/ l$ s% t+ QDPSP endp
8 I+ X- ^, [3 b1 E- ]+ J% B# {  \, F/ J;================================================================================================
# K, M$ h  y! X# E) nWDPSP proc near+ p6 P! w5 }: E! U3 x' s  @
      xor    eax,eax( {0 ]) I2 ]6 j, R, U
      xor    ebx,ebx
. i5 ^4 P1 K, A  N( r      mov    si,93h0 ]3 G1 J7 L2 I/ ]. f9 r
      mov    al,es:[si]9 ~# T# N9 g" b# o, g' R. G9 ?
      call   Change9 |4 u/ J& ^+ E
      mov    cl,4' x" v' T9 Y! v, F( S, v$ A
      shl    ebx,cl* H+ V' }* m8 T. u1 Z
      add    ebx,eax
' m9 Y; e8 \) I1 S2 {& ?7 R' Y8 |      mov    al,es:[si+1]5 K# O" r/ }& z7 g% _
      call   Change3 R' q4 k1 y9 r4 q  \1 F
      mov    cl,4
. v/ _- R0 f2 _) N9 q      shl    ebx,cl
- r' Y$ D) N1 V      add    ebx,eax' F; i. c( f, m) @2 \1 y
      mov    al,es:[si+2]
& R  Y( `; u6 R      call   Change+ g( E9 F% C3 y, u, l6 E* j! v
      mov    cl,4
+ s- D; W8 P6 I2 w; @2 j      shl    ebx,cl' O# F; V* H/ {% Q
      add    ebx,eax, i" u. m3 Z& m- [$ D. Z
      mov    al,es:[si+3]: a5 }. f( w9 C- T6 u* J
      call   Change
/ F+ C9 ~1 ^" G2 [$ Z; a7 [1 B      mov    cl,4. x+ `/ c/ f1 L* E1 A
      shl    ebx,cl0 h! Z9 {& G0 d4 q; m/ l$ g
      add    ebx,eax
8 W/ V* \! A5 @. z& Q- ]& p0 h      mov    al,es:[si+4]
0 u' ?6 ~4 z' j" b4 p      call   Change
% k6 g1 X: A3 l0 ^      mov    cl,4$ X3 J3 x( c: S4 s; D4 L  M
      shl    ebx,cl5 I5 t- m* O3 h$ \) B9 M( m0 I8 u; c7 @
      add    ebx,eax  D0 ]# E$ u9 G% F! _, L8 z  H
      mov    al,es:[si+5]# U" {. ]1 w% j. m% p
      call   Change
1 O# R" A9 K8 Y4 [" k( q      mov    cl,4
) g  W" ~" d9 a3 }      shl    ebx,cl4 k/ V6 Q9 H( f$ N
      add    ebx,eax& F8 T! J; J! b; s
      mov    al,es:[si+6]+ P" T4 ]1 f- _! Q- o) Y
      call   Change- D' I$ F/ o# u, Y
      mov    cl,4
+ N# e% x% A( k1 m' S      shl    ebx,cl* r8 ^3 J) \) f. ^+ t! }# v
      add    ebx,eax( S5 i% v3 i9 c% B- l0 O
      mov    al,es:[si+7]
' G7 _/ C0 ~) X% |) u      call   Change9 t3 |* f0 ?* ?" A
      mov    cl,4
' B. P9 W1 }! G# @5 X      shl    ebx,cl7 t; D" m/ Q5 |% W
      add    ebx,eax
$ I, {1 G& [, q% v; s      ret
8 {( a# p9 K' `/ TWDPSP endp1 Z: a5 X" Q1 z& N* F) p) f6 N
;================================================================================================
$ K. D& b' J: p. SChange proc near% w8 Z% d. J' X* r7 `* V: S* ]
A:    2 L' W! \" D. I2 o
      movzx  eax,al
6 g- {+ B" Q! {) [      mov    edx,eax
, L5 l: c5 ^, p6 \      cmp    eax,'0'            * E; e: R. {" {4 w! P
      jb     A
. ?$ a- M& y2 X; i$ B      cmp    eax,'9'            3 Z$ E( r! e+ ?3 }# M
      ja     B
4 E8 V5 J+ ~6 L' x  Y1 l% ~' h+ j      sub    eax,'0'1 n# C& `/ \8 z$ c/ v
      jmp    short E  u6 {2 d6 V" b& p# Z8 Q+ D
B:
5 H2 |% t: J- P- ]" r      and    eax,0dfh           
- Q6 o) Z( `5 I$ @      mov    edx,eax
/ @4 ^3 Y: Q0 w% ^, k" `' g      sub    eax,37h            
+ y6 M1 l3 C$ b      cmp    eax,0ah
4 K* c9 D5 d1 h3 C) Q      jb     A                  / K6 N4 i6 |% l8 L+ C# |' K/ p
      cmp    eax,0fh
6 {8 m( |# e7 N) p, }      ja     A                  
# {) |" E7 z9 A* T6 }( sE:
8 d) _! {+ M) F6 W) K/ O' W/ _      push   eax      
- |2 I3 V! e, ?& z1 ?$ O      call   PRT               
% J  b$ A' l  i9 i7 j" |$ ]      pop    eax
/ y2 q" P5 l5 J. YCExit:
, D: H# Z% a1 ], l2 [" D      ret* I/ \$ F0 M/ X/ l: S. ^
Change endp
5 ]! o+ a" d. p& Y# t5 z6 {;------------------------------------------------------------------------------------------------8 G8 y1 h9 D( E& Y& H" J" C: d7 c+ K2 G
PRT proc near" A) Q" }# L# O
      mov    ah,02h
, }+ B3 G" n+ d/ j      int    21h; i8 W6 j" W7 E$ I7 q+ M, q
      ret
4 c8 s, G8 d. c, `% p, J3 b/ xPRT endp/ p0 n( a+ ]: _8 Z8 b9 j
;------------------------------------------------------------------------------------------------
1 S: s# j; m5 M" y1 L3 e: r& }* n7 Jcrlf proc near
, m# T/ H, `  c7 T1 X* W2 }      mov    ah,02h
4 w5 @# E! t6 u1 K$ U$ D1 P6 i      mov    dl,0dh3 S) B) L1 q) y! @! F! P7 Z
      int    21h) Y/ y: n9 P3 {
      mov    ah,02h3 J, |: {; o% v) U# T
      mov    dl,0ah
/ F2 A: r7 K  |2 ^  T      int    21h
( w3 H/ x' U& d      ret# B) ^0 V6 |0 i0 C3 t' L
crlf endp
2 s8 o9 h2 y5 v0 j6 k. \: {' j;------------------------------------------------------------------------------------------------
* c# Q! c0 f8 _, V_32bits proc near
2 C! m4 S- T7 b  m+ U. e3 g      pushad
* d% |3 o' |/ h2 _  W      mov    cl,4
* ], T5 a8 E/ ?      rol    ebx,cl
8 g6 d% j/ s+ `, [      call   print_4_bits/ c+ L5 L' B) N7 S' |
      rol    ebx,cl  j: K. t$ g, E1 W( e
      call   print_4_bits
, Z: a6 a: ^. k0 O; j$ {: N      rol    ebx,cl# X# R1 {2 p, f( d! F
      call   print_4_bits
: N  k& P! P2 u- `9 I$ U* a& J      rol    ebx,cl7 A. `4 q0 `& ]* o
      call   print_4_bits
& l8 S& E  s3 i. ^      rol    ebx,cl
, H8 A8 L' ?& n" `      call   print_4_bits
% [8 m2 `- I2 `  c) U$ ?4 V      rol    ebx,cl6 ^+ H5 q- `8 ?
      call   print_4_bits7 j( J0 y8 i( S7 G  [
      rol    ebx,cl5 E# d5 s0 Z" g3 ~# O7 T! y; z
      call   print_4_bits
8 h! J! e, J# V, Q5 J      rol    ebx,cl( Z( L- A# C6 L, ^+ W
      call   print_4_bits
+ M. h8 |1 j& l* \$ z+ y      rol    ebx,cl' }3 y& Q; T/ c! N+ |& w
      popad6 ^, a$ D  z8 Z! x9 {/ k
      ret
! e  Z/ Y; o! c# y_32bits endp
2 E2 `( K+ P6 w;------------------------------------------------------------------------------------------------
3 \8 E) p2 |" A  Z: i3 p  G_16bits proc near
5 A( {* H* f4 R      pusha        
! B& g; b/ I, i# ?+ _8 B- |" g      rol    bx,cl7 G; L$ z" k% @* T
      call   print_4_bits8 X8 s0 Q! h2 G1 \5 d; K! o
      rol    bx,cl
- i, W! Q  J9 A. ~' U      call   print_4_bits
+ Y, i4 ]2 Y  b* y# m      rol    bx,cl9 y. c, x1 p! _7 g9 M& m
      call   print_4_bits; ?) f1 E0 m/ c* F* P1 t
      rol    bx,cl
- I6 h; s" i2 f, @0 j      call   print_4_bits
" n/ @+ {2 {6 ^2 [4 |      popa! E* X" z; ^! ]
      ret
& u" S4 _  o( e% o_16bits endp
! |' I* h+ }# f, T;------------------------------------------------------------------------------------------------+ D5 ?( o( F! Z
_8bits proc near
) v/ e* s7 e0 A' g, o' Y8 d      pusha        
9 Z. Z/ |& z" q2 Y1 y8 @4 S5 `      rol    bx,cl, p# F$ k3 r& A5 O; q7 ]* P
      call   print_4_bits% q& \2 R) _3 D4 W5 o" ]. b7 [% N9 l
      rol    bx,cl
, y/ [. |- F( W/ K( W8 ?      call   print_4_bits: [5 Y, d6 ~& z0 T/ _' T2 w, {- i" k
      popa1 s! N! _! d1 \# w) @+ \6 a; o
      ret
. Q- Q# P% ]3 T* i6 L3 e( }) t6 W_8bits endp
1 p6 J8 N6 G; G) Tprint_4_bits proc near
: n. S4 x+ k, F' m+ Z' w% d& H      mov    dx,bx
5 R& M, ]5 A* Q* e4 I& o      and    dl,0fh5 |; O. f1 m  ~! B' U. T
      add    dl,30h
, K: W# s( O8 ]& b9 N! V( z      cmp    dl,3ah
! c1 O& H, O4 ?. c; P9 H* Y5 b( R+ J3 A      jb     print% }+ L$ u5 s3 w
      add    dl,7
: S4 @3 h3 L8 Y# e6 rprint:  ( D, y/ ^+ r( }$ D
      mov    ah,21 a% Y$ Q# C; {, p% U- w
      int    21h
1 p4 K; j+ e- E$ j, m( l/ o      ret' q2 m# Y) o' ^( W* n
print_4_bits endp    5 y7 H5 M, H% U- ]
CSEG ends; w4 [, R' {' W% H, `% _
END
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2026-4-26 16:50 , Processed in 0.044272 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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