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

關於SEGMENT 宣告變數的問題

[复制链接]
发表于 2010-10-19 16:50:51 | 显示全部楼层 |阅读模式
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)1 _0 c  x+ j$ i: R

6 M% P) E$ y1 R& P6 O; J則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'" k6 T, _$ V& b. |- m9 Y

: a/ ]  e6 Y0 F宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝  : |% P% q1 {2 \/ ^
$ p# H% p! k5 ~3 d8 S' h
.model small
# l- L" K4 V- e- B( t.386p
, a* [6 v7 K* B$ R2 o: yDSEG SEGMENT USE16'data'
  v/ [7 E, w# Q5 {  y. t
8 ^9 u* i0 X9 L: b) {DESC STRUC
" H- S+ k. E: `2 V5 k* Y     LimitL DW 0
3 |/ B1 x# J2 w/ X5 O4 I: E* w0 L     BaseL DW 0 - b( A, W! j" [* `% S" W
     BaseM DB 0 ) M: ~; B2 ?7 s. K
     Attributes DB 0 " D" {, O2 C/ h7 a
     LimitH DB 0 0 q5 ?7 [% N% o4 A
     BaseH DB 0 " P! W' p  v( k# k! n" j3 v
DESC ENDS) V* O! {- @) S) B1 L0 {; i6 K

# ~; `1 u. W1 j7 V4 mPDesc STRUC, b6 V% \/ A# e' L: U" X
     Limit DW 0
( i4 o# z! ~5 {2 H' S$ S  N     Base DD 0 : s/ b* c* d  n/ y/ \- P0 A' Y# O
PDesc ENDS& F' Z$ }7 E# \/ X/ j5 g

3 g' z- O& y6 x* GGDT_def Label Fword2 B7 k& v& U' p$ H! o0 q3 s6 J
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
) c3 Q# B9 S$ ~& y# T% \1 T; LData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
0 a  |" w/ x9 m' VGDT_Addr PDesc <$-GDT_def-1, >9 N+ i9 w/ k) T) Z

8 a6 ]# |* t0 r; o' YMaddress Dword 0
% X$ \( X; H' D
; |$ y$ R" f9 |; p5 _- K* fDSEG ENDS ; o4 Y/ k7 }/ S$ ?- G9 ~
ASSUME CS:CSEG,DS:DSEG; g0 l& x8 U1 P) x  P+ C

- C1 k; J9 N6 u. O# i- ]CSEG SEGMENT USE16'code' * B% R' F0 o3 C3 f) C
      push   ds
5 N' U; l9 r+ f$ R4 m3 j      push   es
7 x$ N4 D0 V5 R% m      push   fs5 o7 a" k8 i2 C. P6 d0 _3 A
      push   gs7 s* D6 x; H8 Z! q: t
      call   big_real_mode     
9 k2 z% a4 X% F- I& s      call   Get_Commandtail( q1 b# e1 F* P/ }
      xor    ebx,ebx
7 U9 b$ y' y, E; N8 X      mov    si,82h9 L1 f, M, G' I! `) \1 ?
      mov    al,es:[si]
4 Y  h$ `$ L- O% M/ M7 L      cmp    al,'r'- v9 v5 I$ {* e, h7 X  x
      je     R
4 M$ t) d$ H; m* ?8 F      cmp    al,'R'
6 M. a" J0 h4 E& i8 _      je     R2 J" S% ?, G& V+ g4 o
      cmp    al,'w'0 D! i2 i$ N  F- a
      je     W
; P6 c* U& {2 w3 w      cmp    al,'W', `" j2 E. l+ V; b
      je     W         
! ?- j' F! u+ K% w: R6 i: \! XR:
1 K) m# M6 `/ @4 Q% G      mov    si,84h/ I0 Q1 `& `) l/ w3 J
      mov    al,es:[si]
8 h- w* W/ B# w6 S& u8 E1 X* y- i1 `      cmp    al,'b'
; r/ {/ }. F9 X      je     RBT6 w( M% D% O/ |" i, f' ^, N
      cmp    al,'B'  y' y7 ]/ A* V  x  d( Z4 Z3 G4 U
      je     RBT% E  r" w- o* S& h
      cmp    al,'w'8 p4 L( C  L2 v, V: r
      je     RWR
, Q8 M  _8 t  e! e- F      cmp    al,'W'
% }6 w" _4 F& E) X, z; h* n2 q      je     RWR
6 u4 ~9 ?& D* W$ l/ y      cmp    al,'d'
4 A" B* S/ M; E! J      je     RDR) G# P6 ^4 m& B/ ?# n2 P: {# x
      cmp    al,'D'
/ Z7 R8 \/ X) E6 p      je     RDR             & O! {% Y# ~. h" W9 C6 p: U! H0 M
W:      
% x4 {& o) o8 M% U( y      mov    si,84h. M( u6 Q' T+ i; y9 H) t" d$ s
      mov    al,es:[si]) o1 T0 |8 k) m- a3 J
      cmp    al,'b'
4 v6 ?6 O0 G6 g& d6 N: I- O, v! |      je     WBT4 i, ?, e# X( A, [( ~/ O4 q1 i. t
      cmp    al,'B'
$ T2 X3 z* f6 u- M      je     WBT
8 f  s) \) Z/ n4 d2 {      cmp    al,'w'0 ?+ d& f  k! B" Q
      je     WWR
5 L6 Y" ~9 t  r      cmp    al,'W'8 C+ o) R( `; l$ b
      je     WWR9 a9 A/ s. `0 `
      cmp    al,'d'& s, y7 j# s2 z# q* T: Y
      je     WDR0 h, d  d$ c3 q( k
      cmp    al,'D'
- X8 l' |. L5 b1 ^      je     WDR- Z$ X* N: P, P2 Y/ D# g5 i
RBT:/ f1 h- J* ?! {1 f
      call   PSP        9 D+ b8 i; m! x5 d: l1 f# G
      call   crlf           
" v" r; ?4 s' i) a' D0 ~; O* ]5 E      mov    esi,ebx; Q6 |# z3 B" e2 C; f. H* U0 k3 Q6 w
      mov    eax,fs:[esi]
/ {( y; C$ R9 C- @2 X/ p! j      out    80h,eax
  h1 z2 v% a. e4 r: p, |# O/ `      mov    ebx,eax
) Q- ^+ s8 u7 ]9 K" o# i      call   _8bits# p* @- t, }) o" T5 E' s9 Q$ [- _
      jmp    Exit3 V. N2 P. M7 d0 Y% r. x% K
RWR:
! A/ s8 `* \2 n* f  Y) w' p      call   PSP        1 Y& w+ `% e# I5 @
      call   crlf           2 i' c2 }- @% n5 v# R
      mov    esi,ebx9 b% x! M1 J1 @/ ]
      mov    eax,fs:[esi]
$ A7 w& @8 {# d1 k      out    80h,eax8 c, T. P( r; B# J6 g, g4 y6 C3 t
      mov    ebx,eax1 U% l: W; ?% `( l$ ?. a+ }3 T* T
      call   _16bits
5 l7 i5 S! O$ v$ f      jmp    Exit
+ O, [3 i- y3 j3 @1 P" f0 {RDR:
& M- A) C- Z, f& H4 _# e' [3 J  ^      call   DPSP        
3 f$ m! K3 B4 P/ ]3 p4 L! F3 t4 O      call   crlf           
4 K" R% l( V, r% D: m$ Q      mov    esi,ebx. f6 m% @3 C! Q5 P5 z* }
      mov    eax,fs:[esi]
/ s2 h9 _7 B* e      out    80h,eax1 H) z6 q2 y2 M" C0 B) u$ c! {
      mov    ebx,eax  D/ l. l" B0 T& y5 r1 \  [
      call   _32bits, L: l1 M6 h! C% |- o/ j# t
      jmp    Exit5 Z! }& q; N+ o6 T  z( k8 `- b3 v( B
;------------------------------------------------------------------------------------------------
+ o9 f' u7 Y) j5 @0 i3 w) g# `7 p2 bWBT:
( q* c. Y( w7 e0 o      jmp    Exit
$ W+ z( f4 E7 `" G' w  _WWR:; s+ |0 R8 Y( ^2 b
      jmp    Exit; S' P: ?  y& f' v+ a+ e
WDR:# q- }0 b( n, m9 Y/ t4 k
      call   DPSP
. D' Y! g9 X$ ^# g' C& L2 H; g      mov    Maddress,ebx      / a9 m7 x5 {. C' D  k" ?. Z3 p/ F) Y
      call   crlf
$ n7 W3 c8 R' R) J$ \      call   WDPSP
0 P( }5 f( h* E: e      mov    eax,ebx+ q- ^) x7 v2 v8 @
      mov    esi,Maddress            B5 h' o! D9 ~* B( S0 T8 W4 T
      mov    fs:[esi],eax
$ T, r3 |0 q5 X# `$ m      out    80h,eax$ M, r2 ]& X- U
      jmp    Exit
3 y3 ^+ z9 c5 m( X;------------------------------------------------------------------------------------------------      
% B/ Z) S, u! F/ P2 _Exit:
9 x- Y. u$ V1 q8 `+ j& ^. ^      call   real_mode     0 l% L( \. f! N
      pop    gs
, ~) a5 w8 E5 V; X7 ]% t      pop    fs
- C6 R/ U3 `- A) ^" C; V0 z      pop    es5 q; O) D0 A& W6 q6 h( [# g
      pop    ds       % G0 z9 m" |9 o- M
      .exit
& z' H4 h2 ^7 _" w7 \;------------------------------------------------------------------------------------------------
4 Z% h: B) j& k# tbig_real_mode proc near# q( T7 z- V; g' }8 T  z
      in     al, 92h, o9 o" a6 ~$ T3 ^4 I( c$ d
      or     al, 002
  F# D2 R9 ?+ U# ^) H      out    092h, al# f. p0 t# S% r. C- L
      out    0edh, al
( a0 e+ F- _( v1 U' Q3 l      cli
1 B# a8 _! T, ~      mov    eax,DSEG
2 ]  k3 V5 k7 _* ]3 y8 O      shl    eax, 4
2 \; [/ _6 X0 }$ a, _+ K      xor    ebx, ebx
6 y8 z6 U) `2 B* m1 i7 S      mov    ebx, offset GDT_def
6 e0 l7 v. ~; D: w8 ~$ p/ W  y      add    eax, ebx- E) B  Q. k" v5 E7 z
      mov    dword ptr GDT_Addr.Base, eax
; |& M9 p/ G1 a2 E% C6 _2 E      lgdt   fword ptr GDT_Addr
# ]) v. a5 E7 o4 w7 V( n5 c      mov    bx, 8, v% z6 o0 F& H  @0 z
      mov    eax, cr0# m  F; B# x6 Z
      or     al, 1+ d  m- ], D: A0 G: a' P
      mov    cr0, eax
7 `3 V5 E7 w$ w( a2 l/ ]      jmp    PMod4 d0 v: R% c5 w: O0 @  t
PMod:6 U4 h. x3 x) T, ^, o8 s
      mov    fs, bx
* e4 r6 q: y& b4 c5 Y5 @" a      mov    gs, bx1 y; o; D) E9 t8 e& [$ H
      mov    eax,cr0
0 X" r3 t5 J% D4 d" M      and    al, 0FEh7 ^& w( B+ h6 |2 ~% g7 m/ q
      mov    cr0, eax ) r4 j3 |- ~1 J. z  \
      jmp    RMod
5 i6 ^( i0 ^& E4 Z% gRMod:
2 c, s! J4 s& h. V# ~8 ^      xor    ax, ax1 }* ^2 ], S0 l" b  \  A: @
      mov    fs, ax( V, I6 m. J& n$ E( S
      mov    gs, ax     - x8 q1 i# d  R
      sti     # J& `4 u4 `) Q# `) t2 S8 j
      ret" v: J% @2 c" M6 q# N+ Q3 {
big_real_mode ENDP
; @$ N1 b. H8 ]5 [;------------------------------------------------------------------------------------------------. A6 W0 I% D" x4 S; N. g: O8 c
real_mode proc near
& d# q4 H5 |% c      in     al, 92h
& j1 I) W% V* M" s      and    al, 02& w- v' g: S4 H
      out    92h, al   
2 `' \; a0 E; g      ret
  Z/ f; v* w0 ^, S' ?) _9 \5 R. qreal_mode ENDP
4 ?( W* Y* @6 |2 N;------------------------------------------------------------------------------------------------+ z4 O6 h. l* Q  S
Get_Commandtail PROC near
; F' \* W. ^* M* r      mov    ah,62h , u$ `% ]' e5 M( a* j
      int    21h
6 Q5 I  l& T; w* N      mov    es,bx2 }0 Y" m' K6 ?& b/ @5 i
      ret
# B3 P" d" o, o/ X. o4 p: i, T+ fGet_Commandtail ENDP    5 U4 g/ C6 Y% G  F6 g# y6 u  E/ k
;------------------------------------------------------------------------------------------------# d. H4 G/ w9 B8 l& L: Z
PSP proc near
# _' P0 v) d# V* ?2 i' b2 c      xor    ebx,ebx% `: r# b- |. T" U  f" W* b
      mov    si,89h
8 A; ^7 w+ P# W2 V; R+ R4 w1 d/ I: F7 w  S      mov    al,es:[si]6 S  I9 E. R! ^
      call   Change* c% \- U! y. e1 w2 |+ z+ K0 E
      mov    cl,4
9 p$ F9 f9 y9 d+ f7 I5 v1 F% e0 B      shl    ebx,cl4 d* h6 b, [3 s% r% N
      add    ebx,eax! Y4 D' {  ^% D8 L5 f( |
      mov    al,es:[si+1]( M6 e3 A0 c. U9 Q; J+ n7 p% y
      call   Change: a1 I& `  U. N1 L. w2 P
      mov    cl,4$ E# L/ ]* Q( {& c9 Q6 e/ T  d: Y
      shl    ebx,cl
& l* _9 x. F% T      add    ebx,eax, C# x% l8 @9 c8 V: G" ~
      mov    al,es:[si+2]
5 a" f+ `4 D  |: y      call   Change
  W: E1 T4 J" s/ ~9 r3 D4 P      mov    cl,4$ y1 {% G7 y: h+ O9 F
      shl    ebx,cl. a1 O8 ?1 ^8 [
      add    ebx,eax  @. w8 W8 K# x. F6 i
      mov    al,es:[si+3]
: [0 E4 t9 f8 Y6 {      call   Change: p- e3 o. e6 v
      mov    cl,4( D% ?7 m% y" j% k/ I  S  P
      shl    ebx,cl
1 [1 I, H- w* i! `      add    ebx,eax$ C/ P& ]$ Q, r$ q; D7 S& \
      mov    al,es:[si+4]! C7 Q* v  {8 |& T
      call   Change
7 _* C0 ]% e9 o( ~      mov    cl,4
! a' ^5 X2 b; o0 ^0 d, L3 y; z/ N      shl    ebx,cl. c$ r) ~; q0 ?# `6 S( H8 z* E* ?
      add    ebx,eax- j. _) Q6 d# h- o+ k
      mov    al,es:[si+5]( j4 K, }' a& Z3 s) m+ \
      call   Change) r  B1 m9 ?" R$ J( O# h
      mov    cl,4" N" h0 _' C5 e6 U; P; o3 U( H3 O
      shl    ebx,cl
7 Z6 \7 m+ a; u, C. L8 y$ s+ E0 E+ F      add    ebx,eax$ o) X/ `, W1 M7 O# E. p- N$ Y- X8 u
      mov    al,es:[si+6]
3 l1 m8 y( m3 k$ f$ b      call   Change
+ V$ X9 z& T6 [      mov    cl,40 j& s, q# T% |, q! m2 j
      shl    ebx,cl5 w- W3 @4 Z7 M  \
      add    ebx,eax
' j3 n" H; ]! C- a* c. m+ V3 C      mov    al,es:[si+7]
# M/ f- U* A4 {+ G& u      call   Change/ ^4 r* v# P% P; `% h1 {, p
      mov    cl,49 E1 x4 _# `7 W. i
      shl    ebx,cl" D% n6 j0 R. L" A
      add    ebx,eax
# r, T* M+ p# }* ]4 d2 H      ret
0 T% Y4 k; R8 mPSP endp
8 v* a( A% e" _;================================================================================================
5 k6 f" |# L( H8 ?" {( l  u  xDPSP proc near
2 r* i9 D, Y# `      xor    ebx,ebx
( r; q3 N/ F3 t% J: `$ D! T' U      mov    si,8ah
. w' a$ ^2 }6 D; O/ P      mov    al,es:[si]
$ B2 {4 u8 I) q$ D$ p      call   Change
7 p! F) q$ W0 I      mov    cl,4
9 `2 k, A  r5 l- ]      shl    ebx,cl
% K7 O! n& Q$ z, D! d1 U2 O      add    ebx,eax9 ~7 c; ~8 W8 P
      mov    al,es:[si+1]
5 e+ T# R; ~  B# z      call   Change
0 N8 R* g3 N1 m+ m# t# D% n      mov    cl,4
" c4 b8 D- P# a- E# B% c, N      shl    ebx,cl
6 q( a. ]  L/ h# l9 Y      add    ebx,eax
, b; {' B' ~. g      mov    al,es:[si+2]
- H; u7 [$ ?2 h  A$ r+ y      call   Change& b- u3 T9 C  \- {- _+ A
      mov    cl,4
* x+ l6 R3 m  R6 d      shl    ebx,cl3 n7 n0 i  y3 b% {
      add    ebx,eax
% f; \9 s' s" M# U      mov    al,es:[si+3]
5 v- w5 Q5 J2 Y7 k9 r      call   Change3 m3 C+ f/ \. E9 b6 }
      mov    cl,4
  G+ I4 P4 X: z% ?/ f      shl    ebx,cl
9 G: M) X( E: X. s5 p      add    ebx,eax3 a' W( P9 t  d$ G$ L4 r5 c
      mov    al,es:[si+4]. ]1 S. ~7 j/ I+ t# Z$ v$ {
      call   Change! P# D/ t$ ]& h4 r
      mov    cl,4
9 b/ x; {3 |. H+ \      shl    ebx,cl
  W* Z# ^; P3 t+ ?3 p( _      add    ebx,eax
6 E, z* r% z* N0 @      mov    al,es:[si+5]+ |. M1 K, j5 W0 `/ [  v- Y
      call   Change
/ a$ Q1 G1 |8 m& z. k* o( G      mov    cl,4. D0 P7 Z& @" R1 Q. z9 j
      shl    ebx,cl
  d: B5 n7 F- f      add    ebx,eax5 ~) ?1 }5 Z* I' r
      mov    al,es:[si+6], C; T& y4 F% @' j6 T$ @/ E
      call   Change
' U% b& c5 U) S. h      mov    cl,4
3 {$ a# t! k1 f! N      shl    ebx,cl( F9 \1 N* C8 J$ V! }% S
      add    ebx,eax- }: W) |: R# p: y
      mov    al,es:[si+7]
: H6 ]) n- A, W( l' s) C* Q0 y      call   Change0 U8 H' d9 v" V
      mov    cl,4
/ y. e; u. {( h, R( A1 h      shl    ebx,cl
/ W6 x" `. c+ k* a. N; \! f* g      add    ebx,eax
2 i! P, n. j3 _- G; ~/ E+ D8 q      ret/ x: B8 F* @& p4 h' H
DPSP endp
* @( ^7 ]% e1 G' W;================================================================================================
, e$ C" a! f7 k! fWDPSP proc near
/ D4 R- Y- @2 F5 \; Q2 p      xor    eax,eax
" n1 y6 d9 P! X% s1 f$ v1 k- ]/ F      xor    ebx,ebx/ }* ^! j, I( r$ A
      mov    si,93h
% K6 L7 E# o1 o6 n      mov    al,es:[si]! g- T% H/ y+ j2 f/ W( a  f8 `2 \8 k# M
      call   Change
' P" i/ `7 T' W8 x6 R      mov    cl,4( }6 G; i1 }* W8 _. D
      shl    ebx,cl6 W" ?4 h* R' I+ z' M; Q* g3 L$ Q2 S
      add    ebx,eax, A% \, y6 X& D) U+ ~: x
      mov    al,es:[si+1]2 @* @+ w' |0 J
      call   Change6 ~1 D$ D' q. A# w( _" r3 b
      mov    cl,4
) ~9 F3 e9 X& [  U) m      shl    ebx,cl: n) R4 }/ n# N
      add    ebx,eax
( }/ q5 S5 e! E; T/ j      mov    al,es:[si+2]4 G2 T* v  `1 h0 B0 u4 D5 K
      call   Change3 D8 C7 l4 T! L6 i
      mov    cl,4
. N6 j5 ^, O; s* s( o4 \      shl    ebx,cl& _" n+ T* `: t5 N
      add    ebx,eax
9 ?5 ^% a. p. E, `3 a8 ]" O      mov    al,es:[si+3]( R# T# Y, L0 n5 F& i
      call   Change, B- j2 p1 O3 b$ A8 S# C
      mov    cl,4
5 z+ N6 s& N- o& t      shl    ebx,cl
" b' |. A7 w4 J+ ?; z      add    ebx,eax1 I6 r- ]& P1 G' R: Y
      mov    al,es:[si+4]% A, J- E  y1 ]2 F  h  N- v
      call   Change7 @3 [/ s, b! V6 N
      mov    cl,4- m" |/ T* b8 Z$ E
      shl    ebx,cl
. ?- ~- s, n  U0 N* K  j1 H  y( Y: ~      add    ebx,eax* n9 }& e  [% \6 d
      mov    al,es:[si+5]1 j5 O' {: A% S0 f) @% y
      call   Change9 w/ ?9 D% R# o+ ], ~8 R
      mov    cl,4
8 w3 A* d+ u! `6 S* v      shl    ebx,cl4 O3 w4 i% F* m# e
      add    ebx,eax
9 a3 w# B, {2 ?  V8 [8 E      mov    al,es:[si+6]
/ f4 X! s7 w( [8 _      call   Change
# I, l. M+ k6 t2 U( h& X& r      mov    cl,4
1 a  g. T% K1 a+ W5 f      shl    ebx,cl
( D6 r! ~, X# x- n1 \/ V( f! }      add    ebx,eax% Y+ Y% v, R! ^  n+ b* G) W
      mov    al,es:[si+7]
2 r6 T/ q& i8 r* y  b4 S+ K      call   Change5 L" V. G* ?3 J4 w# z0 t* V3 w& M& }
      mov    cl,4
8 k2 q5 ~! ~# C      shl    ebx,cl! P! X2 {2 }: d' d  H5 }8 N
      add    ebx,eax
: g0 p% J  m5 j3 w      ret' ^' f' g9 G2 o$ }) `
WDPSP endp& ?+ s6 V$ B! K+ f0 \" W" J; Z" I* P
;================================================================================================, j) [' K5 n9 S4 B- _9 f8 l8 T
Change proc near6 a8 o+ T/ M2 T
A:   
3 _3 d0 B' M1 F- i1 @+ S      movzx  eax,al
3 m2 y1 E. W& a9 |      mov    edx,eax7 f# Y! ]- |0 W6 n5 Y8 H
      cmp    eax,'0'            - N0 ^3 M+ a! _
      jb     A
! a1 [" p; `* \3 u* Y% w      cmp    eax,'9'            . `, g& E1 b7 H2 x# ]4 o
      ja     B7 F# n1 U  o5 {2 B
      sub    eax,'0'
% U( q9 X* x7 s0 t6 I3 U3 j; z      jmp    short E
! B2 N& [7 M& _- }B:# E; ]  i# ~8 A' N$ F* k, X
      and    eax,0dfh           $ w( y3 X7 E9 q2 h
      mov    edx,eax
- T% Z8 h. R* x% I$ X+ Z1 s8 R      sub    eax,37h            
7 }9 ~% X# D9 k3 I      cmp    eax,0ah7 g7 Q0 C3 ~" a# u8 g. x( @( t
      jb     A                  
/ Q# r1 }- ^6 ?( h/ F: Q: Q      cmp    eax,0fh
7 C6 s( P& {3 y$ ]/ r. S- Y      ja     A                  8 d' a( O. R$ d0 |/ ]
E:0 @8 g9 u: E* B5 i" u
      push   eax       7 {, n' i4 w9 B; o
      call   PRT                : W7 K! r$ v; q1 [5 {5 r
      pop    eax
* u9 @( A8 C1 l" F/ u0 Z- YCExit:
) t+ y5 @+ W, q0 P. Z3 j      ret
6 G: g+ F$ ?& d# k9 tChange endp
, G, E5 p- w9 T& @% U+ i& b;------------------------------------------------------------------------------------------------) B! ?, [& d1 N2 m
PRT proc near
; U" t3 R+ F  o0 r5 ^; c% e) v      mov    ah,02h
# W. ~1 @" G! I* [6 J5 c      int    21h5 Q9 d% }6 J! a$ j
      ret
6 }8 r5 F2 L$ z8 ^& J( NPRT endp4 P& r3 M( [8 h8 j1 U6 x
;------------------------------------------------------------------------------------------------
( Z- }  z5 N$ b, O  ?crlf proc near9 b" g, p: U, j* g) k7 h5 I0 [
      mov    ah,02h3 r; g3 f- n4 B; t! N! a( t0 F/ a
      mov    dl,0dh% Y5 q; t( ^4 e6 N& b
      int    21h
$ m: |$ ^% r  W% I& H" X  r      mov    ah,02h# @7 g" @+ n9 i, i
      mov    dl,0ah  [; s& @( A1 l9 r
      int    21h/ H1 e4 i2 y5 G. Z
      ret( d/ H( @+ R5 a; h1 |- h
crlf endp
7 o; J( t. e, C2 I$ f. H;------------------------------------------------------------------------------------------------
% M. ?' o+ ]- N7 r+ __32bits proc near  t3 F. b# @4 d* z6 T$ z7 l
      pushad
9 o/ Q1 x8 l* e      mov    cl,4
1 a4 b: p. v; U      rol    ebx,cl' k7 h4 ]0 x- h$ ?8 T4 `0 V
      call   print_4_bits
( x0 w8 F4 J/ h5 Z" e0 k  k2 u      rol    ebx,cl: T3 O, \7 G6 \+ G
      call   print_4_bits, P, N2 i" R8 L) Y
      rol    ebx,cl
5 X) v) H; m7 b      call   print_4_bits' @. f# U( }# Z; a
      rol    ebx,cl
2 B2 W  |# ]3 @& {      call   print_4_bits
2 `0 }; z# z) j1 F, F. A* ~/ ^      rol    ebx,cl
: w" k1 }, S# V% R3 L8 ?      call   print_4_bits/ e2 ]6 j# `0 \1 b3 w, i  B
      rol    ebx,cl
# ?# q4 S( R# |6 w4 ], c3 i* _      call   print_4_bits
6 P4 P! U4 M7 C5 G      rol    ebx,cl
$ t4 W7 R' ~8 d9 i( @      call   print_4_bits8 o8 w: S. M1 `
      rol    ebx,cl
4 |  ~5 o; q' d9 W" ^      call   print_4_bits
2 c0 H1 i# S2 c  I7 T" R& d      rol    ebx,cl* _- e/ [) }* b: i+ @" g9 `
      popad! Z; u$ @! p( Y: W0 T* _7 x
      ret
2 ?. c! A" E) F7 q$ z$ j_32bits endp- X! C7 f) l, q7 A: P: q7 n( ^; K
;------------------------------------------------------------------------------------------------
$ n: t' {0 x9 [0 M1 b_16bits proc near/ J* ?& G; n( O" h7 V# Z
      pusha        
/ t# p) z1 [+ G6 c: k4 X; O      rol    bx,cl
# z1 B: W6 p% H4 e      call   print_4_bits5 f0 }( z- e& h) f+ B! I8 {' L
      rol    bx,cl+ z8 t0 G# V2 @/ Z- X6 R: u+ d
      call   print_4_bits8 Q( c$ |( b/ ~1 [; z0 r
      rol    bx,cl1 A. N! h% Z5 _8 U& J
      call   print_4_bits
( @) V5 s0 }- O1 c1 m; u1 l      rol    bx,cl
, e, X2 Q: S+ H* a2 K      call   print_4_bits& ?! M: q$ I" v8 H
      popa
9 m# r7 S* c( O$ j      ret
! I6 D- D8 }8 U5 ^' g/ |* I: n_16bits endp3 @* Z- v- s9 |) l9 g: G9 G
;------------------------------------------------------------------------------------------------! Q' B+ y) F# B# x7 A* m# F
_8bits proc near% P- R$ G6 I% C7 s; O" s3 ~
      pusha        
  a( j$ A+ D  a& L* ]      rol    bx,cl! U* `& K0 M2 w- `- P7 `) u, ^8 _9 y
      call   print_4_bits
* N! ?4 K9 g+ h# P8 ]# w  c7 u      rol    bx,cl
) t9 d+ W! F! V( [& ^' ~      call   print_4_bits
6 m* o& }8 l9 d3 V      popa; ~  |7 f3 q' z8 w
      ret
- d: _3 \3 T; P1 W_8bits endp$ c4 T7 J& T: }, o0 d8 T
print_4_bits proc near
& b6 n$ L. g: [4 }5 a      mov    dx,bx
- R+ A" X/ \$ u4 p. X- i5 O      and    dl,0fh/ @9 j' P0 d9 ?! \
      add    dl,30h3 j# k! k3 g: [" n" L" u" A8 V
      cmp    dl,3ah0 Y$ P) g( O% h1 u0 i# c
      jb     print( E' |% ?$ y$ w0 j
      add    dl,7
9 f: t5 N) D! M% R( }1 [print:  
9 ^. r( K  A8 r" B* {" G      mov    ah,2
8 k: D1 i3 O8 T* `) Q      int    21h
. b0 I( B( d4 B+ m" N      ret3 z' {( v4 S* U7 j4 Y7 }
print_4_bits endp    $ E! l) |( _0 c- p) m. [- S
CSEG ends! [  z1 K- H6 Z- z" x
END
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2025-6-14 04:58 , Processed in 0.037144 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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