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

關於SEGMENT 宣告變數的問題

[复制链接]
发表于 2010-10-19 16:50:51 | 显示全部楼层 |阅读模式
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)4 _( _5 ^- i( o' M( }! X0 g1 C
  |' Q+ h1 {- ^9 k/ x7 a3 }1 s
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
4 p: z4 t- _+ X- E! ~3 R2 \& A0 G; M; J3 U* |: f
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝  
6 o* x% v7 |, S8 N
; L/ H) A( ?6 x, u) J7 i8 T' ?.model small* U; |; z! b# g5 |6 d* B2 B
.386p) R6 J& n3 R, O: r
DSEG SEGMENT USE16'data'
5 o: ?: C: v1 v9 ^6 O5 N6 w$ Q0 r2 [' ?
DESC STRUC' D9 f; y, I6 }" h% |  v8 o
     LimitL DW 0
6 q( h2 g7 W; `3 ^9 W     BaseL DW 0
% q& q! R! V) b* c3 L     BaseM DB 0
6 E6 q" F8 M. u6 l% R* Y  G     Attributes DB 0
$ e3 z1 V1 _: ~% R4 V     LimitH DB 0
8 Q3 h0 \2 B" A$ t$ C% d9 H     BaseH DB 0 0 |! ]6 l% \/ Y. b( ?; G" q
DESC ENDS
3 B# d- r# B+ `2 g) j
' F" H& B+ n( y+ X% I4 L' Y5 ?PDesc STRUC
0 }/ U5 Y' p4 E0 Y+ H     Limit DW 0
1 T; I+ Q& N: S     Base DD 0 2 c7 d# `% P7 \7 n2 A
PDesc ENDS2 y3 D3 B5 {- A) w
9 f+ @2 @  `7 M
GDT_def Label Fword
/ P5 A: j* h* v7 nNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
, C8 W$ v. B4 M! Q9 ~8 f5 zData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
. _9 G8 Y6 q. u0 Y+ s* u* l% I; D& SGDT_Addr PDesc <$-GDT_def-1, >
/ {! t1 c  B' v: J2 J. z6 E$ c- U3 D
  u4 v1 U# A$ E( _3 g. F% @9 b( b- oMaddress Dword 02 Z( B9 I' Q$ {5 }3 }) R

5 E# T6 J7 e1 ?, t/ g, k1 V# k; TDSEG ENDS 5 t& C' T9 _9 R$ g* P" ^
ASSUME CS:CSEG,DS:DSEG
3 K% L& ?+ z. o, ?' }' k6 N7 y
" g$ R" X' X* f! c# J  g, ]+ iCSEG SEGMENT USE16'code'
! v  E$ H6 F" B: l  r" |! T2 }6 t      push   ds
& y: p  ~) }  w# @$ |- k% U      push   es
9 }; W  S; m3 _$ O1 r( m5 s      push   fs7 Z/ S6 N" w9 N. y4 L2 V( F
      push   gs' ?9 F  c. q% Y0 k1 a+ v: |3 j
      call   big_real_mode     
0 H; l& d+ q$ G- f0 N6 Z      call   Get_Commandtail
" |6 m% X! C$ x5 P$ S: |5 ^. {$ Q      xor    ebx,ebx
" C2 h1 B: c) X, n( @" k      mov    si,82h
/ N; F, I7 ~- N$ d: D7 {2 Q      mov    al,es:[si]& ~; h$ Q. P" J0 o+ i+ @; p
      cmp    al,'r'3 j" ^" ?) ~/ o% N$ n
      je     R
1 C: F; H. p/ _; _1 D      cmp    al,'R'
, x% |: K! e3 |0 n; P( z$ E      je     R" b' W0 T7 N" j
      cmp    al,'w'5 H/ z2 A. J/ e$ N: Y& {
      je     W
4 N' a' v8 n* w, U+ o# Z( n2 x      cmp    al,'W'+ Y  |, M1 s! ~. z; R
      je     W         
+ ]8 |* _3 Q6 ]4 j/ o$ aR:& w4 E) D0 T/ O5 K3 s8 R; R
      mov    si,84h$ `% e/ r, z5 P* \+ n8 H8 J' `5 }( `
      mov    al,es:[si]
6 K# l$ q* h8 S2 T      cmp    al,'b'
# |' ]1 u; {3 Y! p0 l- g; m      je     RBT
" ~! M. _; v% p      cmp    al,'B'  r# t5 w. D% x' U% E# E% {
      je     RBT- i. t) g1 E. O1 Q$ H
      cmp    al,'w'
( l( I# W) h$ F      je     RWR/ F  o7 c9 D% [2 `$ n- U7 E
      cmp    al,'W'0 t* r1 D5 Y- v4 L
      je     RWR4 R2 t7 B, [, e& ]. }7 y
      cmp    al,'d'
4 n( W/ s  \3 l' ^9 k, E  ]      je     RDR
  d4 S9 L* R5 g# p. v      cmp    al,'D'5 ?8 |$ p9 C$ H
      je     RDR             3 p/ _7 ^. x$ f3 r* F
W:      
& `: \6 ~* ?% p- s0 w$ E8 P      mov    si,84h
  j( d, ^  t# B' {0 s% G      mov    al,es:[si]3 f  _% K; A4 G
      cmp    al,'b'" A/ `# P  I" I9 T
      je     WBT
* l* U* Z' w2 L0 z! R, [      cmp    al,'B'
1 m. X7 q2 w9 b      je     WBT6 |6 \3 _6 f# A2 q. \
      cmp    al,'w'
0 X) U" i* i# u) y4 S      je     WWR( a" {% r1 M, Y9 D: C6 K- O" ]% Z) e
      cmp    al,'W'7 ]- y: G6 e! o. }7 N3 ]
      je     WWR( h$ K5 a1 D( g0 _  o, g- H
      cmp    al,'d'
2 n) _& y( a; t! ^! m; h1 p, y      je     WDR- T. i4 ?- M8 Z: ~
      cmp    al,'D'
/ z% o$ g7 p! |* g  z      je     WDR
( I. G6 b+ X  \RBT:- `; D/ r6 `8 I2 O6 Y8 o% c. z, r( o) U
      call   PSP        6 c6 q2 ~6 ?3 j* {9 C
      call   crlf           
  e0 ?' V" w. x! ~  N; l5 m      mov    esi,ebx
; i# t( T8 l* F! W4 Y: ~( o( N      mov    eax,fs:[esi]7 @% G7 E; g; l( S' q3 t# H
      out    80h,eax
  J9 s1 B7 F6 O2 h: w$ n8 l      mov    ebx,eax
0 D# F7 z( j: q: k      call   _8bits
+ b# E( _+ B% I# C' @% Q- H* G8 P      jmp    Exit5 _7 u! T& p1 ^+ h7 H* I
RWR:
& K# q$ ]; ^4 e1 U# Q6 `      call   PSP        
2 w0 h2 V1 X6 N      call   crlf           
+ [5 s' H' U3 x$ p% E      mov    esi,ebx! W2 R9 T# c* l- G# N
      mov    eax,fs:[esi]
2 }9 |5 ^$ F. X, d6 y      out    80h,eax- l8 L, [' I' P- @
      mov    ebx,eax; ^" W* [6 ^% \  ]: ^
      call   _16bits
% g. W- i4 K5 }      jmp    Exit4 w3 f3 x$ k0 D8 }$ y# z, \; L
RDR:1 `5 ^' Q- Y+ `$ U
      call   DPSP        2 {. O0 @" Z0 k$ |3 T0 O8 n' s
      call   crlf           , K+ b% E- o* P5 `4 S
      mov    esi,ebx
- m' T% D1 ~% o) W6 Z      mov    eax,fs:[esi]
: W. \; Q5 U( ?" N. V      out    80h,eax
( L0 Y# M$ Z7 @) C* C      mov    ebx,eax
0 g) m3 Z- `5 Z) h3 _3 U      call   _32bits
: z0 Q7 G2 m/ n% `5 B. u      jmp    Exit
! b, N" F9 Z$ I/ @0 l0 C( l3 P;------------------------------------------------------------------------------------------------
% t: V! o8 J' `" A2 a6 @WBT:; g* I: n' m+ O3 z' i
      jmp    Exit
4 ]( k* a0 i5 lWWR:3 c" @/ |+ ]: t7 O! T) N
      jmp    Exit
4 K$ x4 ~& D4 n4 x) NWDR:" I7 ~8 P- H0 \1 L- W2 ?5 t6 b
      call   DPSP
' M+ p# k/ W4 t1 |" ~& ~- N' W      mov    Maddress,ebx      , j# A+ J( Q. N& a9 }
      call   crlf
0 Y$ M; p/ l. }% O- {8 W      call   WDPSP' K" r6 g! S: C  x% l
      mov    eax,ebx
5 E0 `0 r5 Q5 B      mov    esi,Maddress          , M* Z; y& L7 \2 l" N
      mov    fs:[esi],eax8 D/ \7 N+ i9 j9 j3 J+ q1 K7 E
      out    80h,eax
+ C- v; k  H% U1 O+ H' n      jmp    Exit
0 e& v' j7 c8 O: \3 Q- v;------------------------------------------------------------------------------------------------       ! M% s- X$ t. k1 i, D3 m. m( k' M
Exit:! Z* I6 B' ?( Z+ _
      call   real_mode     , K  c  _& H9 _/ G
      pop    gs; G! t1 U7 f) O$ L5 \8 g
      pop    fs
- e" A% V, `/ x3 O% k% R/ w      pop    es
  u0 y9 e" }9 ?* a" x3 ~      pop    ds      
7 K- K- `( R3 p      .exit* l4 Y. v+ Y- u' W3 c/ ^
;------------------------------------------------------------------------------------------------. P0 }+ ^/ L1 H$ f% l9 F" Q& M; m' p
big_real_mode proc near& i( E  O6 K5 [# B6 w1 U* b
      in     al, 92h% v1 h. s" w( P( b* p! x$ [
      or     al, 002
: N1 R0 K( u$ r. A- _4 }  }      out    092h, al9 C& [& Z, O6 p* ^
      out    0edh, al
2 W5 E7 p* A* i2 U      cli
, k8 T# Y' T' g, o: e; b, d) i      mov    eax,DSEG
* O4 Y( D3 V- r      shl    eax, 46 U! U# D% D& x3 U+ x3 b, g1 H
      xor    ebx, ebx8 }( p3 ~1 t1 J
      mov    ebx, offset GDT_def8 ]5 r0 r6 _1 a, D$ Q
      add    eax, ebx
( f: D9 L9 D$ F' \      mov    dword ptr GDT_Addr.Base, eax7 R& \, F2 J! q( @1 ?/ R8 r
      lgdt   fword ptr GDT_Addr" L% H' ^) \( E. M8 F1 V4 P+ s
      mov    bx, 8
! J" u' u. @+ d7 i( Y2 ]3 n! l      mov    eax, cr0
! d1 s! E( {0 U3 b% V5 \  l8 z      or     al, 1& |5 p" c/ X8 `/ x9 g5 t
      mov    cr0, eax
3 ?" q' H9 s9 V      jmp    PMod
. e, V; _3 ?" m' zPMod:( Z/ F0 d% n; R. K: I3 X
      mov    fs, bx
, X! V* b9 g1 u: I      mov    gs, bx
# Y, v6 Y2 ~# q) N+ S      mov    eax,cr00 i) \- f. L5 ]4 l) _' y$ P
      and    al, 0FEh
' I* V' d& H$ h" u/ n9 I      mov    cr0, eax 8 p. P: k, h% R3 w, c7 z
      jmp    RMod
0 j# J; q' E9 r* D0 e2 ^RMod:
) \" z% |+ f7 Q# t$ }) T9 |, H      xor    ax, ax
5 g' L1 U- u+ k( I; @. u0 w      mov    fs, ax) R- F& i8 ~+ U
      mov    gs, ax     5 T; {0 e2 M4 U
      sti     
4 ^+ K. F) i& S4 H      ret4 a7 W7 k+ P) |" j& T
big_real_mode ENDP
7 |% a9 S1 W6 y  u;------------------------------------------------------------------------------------------------
+ o, c, B% c" s3 Areal_mode proc near
4 |, O" f  v) U      in     al, 92h7 `: Q" X+ i7 n& |" @) h  t
      and    al, 02
* V+ j& t+ R  `( g6 ]2 a* d      out    92h, al   
% y2 B. x1 n' ^, o# q% A8 Q      ret
% X6 j0 N  x* G4 C/ Ireal_mode ENDP
( u1 P; @+ v! @: B;------------------------------------------------------------------------------------------------& V/ E/ g0 O( o& c
Get_Commandtail PROC near  F" C" A, N8 M) p: j
      mov    ah,62h . t! M6 S# y: f# U& R
      int    21h
2 q+ x; H" Y1 B6 A      mov    es,bx3 I1 K6 l. f6 O7 u% Q
      ret5 H8 d7 i# j. K) P3 T1 T; A
Get_Commandtail ENDP   
( I( \( \6 d9 W  Z3 P- V;------------------------------------------------------------------------------------------------4 T% O; @) o$ a0 U
PSP proc near3 A1 J$ l0 j5 B6 y) H9 a
      xor    ebx,ebx+ g9 B. V3 e( z, C. }
      mov    si,89h9 W' c3 D* c0 U$ n3 @1 z; N
      mov    al,es:[si]
$ R* W) \# {6 G  z) l9 v$ a      call   Change
: T: K, B( B: Q      mov    cl,4
7 W/ A2 x/ N9 q- B2 V0 B* Y  o      shl    ebx,cl
7 `4 M9 w3 ?! j      add    ebx,eax
4 E  R1 i' Q. K! z& M% i  ?" H/ R& a5 p      mov    al,es:[si+1]/ L. U2 v7 b' G+ L/ h! z
      call   Change# V/ v$ W5 b" _  {: o6 @  g
      mov    cl,4" g: z) \9 l9 c7 a5 j* C- H! G# W% o
      shl    ebx,cl' Z8 U* p& e  i
      add    ebx,eax
3 ]2 _3 M  {# w! q  b      mov    al,es:[si+2]
/ v1 Q% h" E. J( P3 Y+ o! f6 H      call   Change1 h9 B* f  `4 }: P; A  W- Q" Y  k3 g
      mov    cl,4
0 n* u& r" |8 L, _* {      shl    ebx,cl) X1 j' v  _3 g5 `, ~  g. ]/ C
      add    ebx,eax
% y: M5 ?/ x+ d+ c      mov    al,es:[si+3]
" u* ]. a; `8 {      call   Change
! n  K0 a9 C) g7 Q: C/ T' L      mov    cl,4
$ a7 A3 B, P/ m/ N3 P      shl    ebx,cl4 D5 M7 A4 q; b: i  v+ k" F
      add    ebx,eax! v; g" {( w: V
      mov    al,es:[si+4]
; z8 g$ U1 O# n5 I+ Y: d$ @      call   Change: J4 m. L" y- a
      mov    cl,4+ m; g1 y# `7 x
      shl    ebx,cl, v' l& Q3 @2 P5 A7 m3 x' R$ \
      add    ebx,eax* r5 r: b. [, |/ S4 o% i
      mov    al,es:[si+5]
5 j& q! ^4 w* Q+ y* d      call   Change
, l* D! Z- a1 Y; e/ a      mov    cl,4
) E* u( z# t7 F7 \1 l      shl    ebx,cl
/ K6 b* I# L# d; b0 _" L      add    ebx,eax: D& O1 L+ @4 Y
      mov    al,es:[si+6]: N# }2 z5 Q6 ^& l
      call   Change. w* l( E) Y/ p) ~* g
      mov    cl,4
# T) M; @( n2 [% n# c      shl    ebx,cl4 |- i* Y4 c9 l
      add    ebx,eax$ }6 X( C8 Z) i9 R  u! b( w% W
      mov    al,es:[si+7]
+ |8 j" P; S9 z+ d7 G5 Z: K* Y      call   Change* u3 T. ]& M3 x4 e' _
      mov    cl,45 W. R  T) V. d/ J9 }' P
      shl    ebx,cl
9 r$ U  P* y( Q$ \: u      add    ebx,eax8 a: i. R5 D$ A7 p  Q. f0 a, @  m
      ret$ ?% \  C/ d" F# l) _
PSP endp& S0 {- k+ t/ K7 K" B1 E
;================================================================================================; {3 J+ L% K# `( B8 r9 V
DPSP proc near5 p5 C6 R- g: I7 o
      xor    ebx,ebx
$ C# m0 P' r+ v* L      mov    si,8ah- ]4 F9 b: }# R+ z+ `
      mov    al,es:[si]3 D8 v3 _$ Q( w# I) F* b
      call   Change
6 K: E/ g! J( A, Y1 \9 A' k      mov    cl,4/ C2 V! U3 Q! g! `, F7 H- _& b7 V
      shl    ebx,cl
, G* h+ E$ ?% Y* \4 R      add    ebx,eax- Y2 T: b6 M% \! p8 {
      mov    al,es:[si+1]
% ]  J/ m0 p' g+ r8 p      call   Change
7 ?# p7 |2 Z/ j7 |' x/ a2 P      mov    cl,4
" I/ C: Z+ f5 ?$ ?      shl    ebx,cl
# G, x9 z/ G- f      add    ebx,eax
2 U) o1 i$ o3 R; ?7 B6 p  b0 l      mov    al,es:[si+2]
: K. f! I, N& y) `5 g0 `9 N* s      call   Change
/ s) Q' f+ v5 r% C* ]      mov    cl,4
' I% \. z4 w# o2 H      shl    ebx,cl& v1 z" P/ Y& g( S9 ~: }6 C
      add    ebx,eax
# j/ S5 u; L& T- k+ `3 s2 k      mov    al,es:[si+3]; Z( N3 _2 e  ^, ?% }; z* x
      call   Change
0 G# h4 \! G/ i      mov    cl,4
# j) w! I$ E. S: d      shl    ebx,cl
( X% @1 @8 j( A* `5 M! X      add    ebx,eax1 L' X& W* _+ h2 k* w. Z# ~3 X
      mov    al,es:[si+4]5 Q: n1 U  `( C% c! ^- Q/ r& B
      call   Change
+ h, y8 }7 d$ B" N7 q. Q) `! L  d      mov    cl,4  }! i5 L9 m5 u) Y- _" P
      shl    ebx,cl
7 t/ Z( @: c7 @: o) `1 X      add    ebx,eax
4 G6 P, o+ y( o+ h4 Z4 p; o4 V      mov    al,es:[si+5]( i/ F7 N# _0 Z* ^) K6 b+ c$ O1 `
      call   Change/ U( \' `; E% J; d2 W
      mov    cl,4
% G4 g  }$ w4 D7 `* l      shl    ebx,cl
# Z5 ], A7 f' n' {- u2 Z      add    ebx,eax
! j- ^9 }5 ^; ^4 j, S, S  F' k: G      mov    al,es:[si+6]- S7 D' a* e" L# u% Z
      call   Change
" U, Y7 w6 S8 b1 }6 O5 g! S      mov    cl,47 b) ]* ?8 `- @
      shl    ebx,cl
) @$ ~' [/ O$ J1 f      add    ebx,eax( H5 @8 E. U( ~* T3 v9 B
      mov    al,es:[si+7]( _" I- l2 T' z  ^$ X* D) _
      call   Change3 S8 f* s$ i8 X
      mov    cl,4
: l' l2 I7 f2 X# I      shl    ebx,cl
# P! X& b- H) q: @* A      add    ebx,eax6 R% X( N: N6 ^. q
      ret
* b, A! F3 h9 }) O) w0 pDPSP endp& ?8 P: K5 {" X; [& U. J( f
;================================================================================================
6 e& }- B+ z; g$ O* \9 jWDPSP proc near! B" L# Y) \2 f" l% z* s. {
      xor    eax,eax, D+ n& P- [& O, d. h+ E$ A
      xor    ebx,ebx
5 b& J$ l) u8 Q4 G      mov    si,93h( _" W+ }; v3 S; ?% P
      mov    al,es:[si]0 p& s7 d* M7 X) V% D
      call   Change
" m9 G2 E& a9 z7 G      mov    cl,4  T% I3 ?  w3 X6 ?8 D
      shl    ebx,cl4 n" y  _" W+ b4 C) O) \" H- m
      add    ebx,eax7 k0 w3 Q& Y% q: i1 J' }: v8 T& g& z
      mov    al,es:[si+1]
/ C( B4 D& y1 }8 Z/ K      call   Change7 v) z8 {- @; Y9 `  P! I$ b
      mov    cl,48 q  L/ _) r; N
      shl    ebx,cl
! J# S0 ~' L, \$ N3 d0 ^      add    ebx,eax) F" B! g4 Q7 [" \) t+ @% H" T. _: h1 x
      mov    al,es:[si+2]
  t. u0 x. [; ~( ^  o# g* z$ Z5 W      call   Change
* d" M$ ^3 K4 Y9 q7 D) Y- u8 s      mov    cl,47 W- A& N# U' q, g, K
      shl    ebx,cl8 r/ p/ q: Y" z4 O7 M# ~
      add    ebx,eax
  F8 T% @' H+ A, C+ G7 u% [      mov    al,es:[si+3]
! m9 K# K( W( `0 I8 ?! {* p      call   Change) v3 O+ A% ~/ Y% Z% \/ v; e
      mov    cl,4
3 P' X7 S! ?5 c* B, Q- c      shl    ebx,cl# N& J4 B* i! `+ ?2 F; O( L! `
      add    ebx,eax- U, B& p2 y" N. N
      mov    al,es:[si+4]
7 m- j0 U7 A! V$ \& y2 ?      call   Change& l4 a5 \# f8 f" H4 S3 c
      mov    cl,46 J0 \4 q' D" p  R% Y
      shl    ebx,cl
7 U/ n8 A" j! J/ S0 H- {      add    ebx,eax
* |+ U; M5 {) ]0 k/ W0 i0 M      mov    al,es:[si+5]4 d1 U3 {  V' N* \% ^" f: Q6 d* z
      call   Change
) M8 q$ R# a8 Z; u1 v7 |, _5 o      mov    cl,4$ F1 y  f/ @+ `1 A7 y7 B! d
      shl    ebx,cl
: d7 u/ t+ I: O* m      add    ebx,eax
% J5 \% N; k9 o/ t. _      mov    al,es:[si+6]
7 j- \; B- W$ r      call   Change$ G- ^) x% j- E
      mov    cl,4! n$ _/ f: o1 A6 {
      shl    ebx,cl
( n. z2 q' L% x8 L, M      add    ebx,eax1 k4 _$ \! U# f# A9 ]2 x
      mov    al,es:[si+7]
$ Q; p' l8 C  m8 a! i1 ^/ {: e      call   Change
/ l9 v8 A% V" X; E1 V1 k      mov    cl,4
, Y# Z/ F% K/ I2 X$ o4 q      shl    ebx,cl# m) `& D$ d( f& v# R/ H" s
      add    ebx,eax( M) ]1 \: i& Q6 R2 R
      ret% E$ F- U! |5 h& _8 J
WDPSP endp4 J. j' ^( S& A7 O0 U! N) D' E
;================================================================================================
, R  X/ [$ r7 YChange proc near
0 |- ]: L1 g9 G/ t2 XA:    ) @4 N. h" w+ |3 n8 L
      movzx  eax,al7 m, V+ j! X$ X4 Z5 k# T# ?- Z
      mov    edx,eax
  h; n& N1 E/ j      cmp    eax,'0'            
4 k: c7 V' |  B- f7 k      jb     A
  F$ g  |" G" b5 ^      cmp    eax,'9'            
$ u' W; w( {) @: d9 q      ja     B6 C* W) J0 \! c  s1 I
      sub    eax,'0'
' Z1 r! J1 k0 q+ s      jmp    short E
1 K+ n6 a* I3 \& {/ }0 B/ BB:
$ v2 n" S  h# m9 s/ h      and    eax,0dfh           ! p. s! L0 j8 O( h2 D
      mov    edx,eax
' Z1 C, x5 k" |, p. R% Z+ c4 v! ^      sub    eax,37h            
( s7 D+ ~, G% M! {+ N      cmp    eax,0ah
3 C) ?- D2 y8 [! L5 W- T      jb     A                  
; l) M. P) T9 j* G4 Y2 H7 m  m$ z      cmp    eax,0fh. @% g! K7 g9 c) p
      ja     A                  
/ u: t& B3 w; J4 u/ XE:
/ I/ z# l" ~. L      push   eax      
5 ]2 ~( ^' R; D# Q% q2 N# F/ S      call   PRT               
( ~3 g+ K3 B  i( p+ r7 N      pop    eax
9 J9 ]0 B6 Q& e+ l" |, n5 m; r9 uCExit:
& ?+ [# T8 J" P! U      ret6 u* k, N& H3 K% V
Change endp# p% E; o% Q& G* g; }
;------------------------------------------------------------------------------------------------
; x8 j& A# G/ Q6 r" cPRT proc near9 Y1 k# q: ~; K7 {6 N# y  N
      mov    ah,02h
& U/ ]% P/ i" m5 M      int    21h1 e! P2 h' \/ x: K4 y
      ret6 @9 |5 z. s) R$ o2 i! X
PRT endp0 y9 p  Y2 S* y8 L
;------------------------------------------------------------------------------------------------
. Y) j7 X9 C7 E1 v3 R0 q5 Kcrlf proc near, y! P1 X2 B2 s! L6 d, g* ?( B
      mov    ah,02h
. ~& z- e) ?* b# Z7 T7 P$ c      mov    dl,0dh2 S9 a9 P4 u) ^7 Z( K6 w
      int    21h7 }# W: a9 n  K4 k. ?* m0 L( d
      mov    ah,02h
* F, {( }/ b2 h) _' ]! }3 I      mov    dl,0ah
! f1 h4 u: b2 x; f" b) L$ K      int    21h' S! K% d5 A5 ]0 m& U/ @1 X
      ret( ~+ k8 E8 \0 ~, N
crlf endp
! D5 s  @# e# T' a" _. Y' n;------------------------------------------------------------------------------------------------
; w: H5 p: B8 H_32bits proc near4 q9 N. D( V0 R5 Z- K' T- X# E7 ^
      pushad% b; R+ P* n, ~3 r6 X' [: o. L7 K
      mov    cl,4
9 G% V6 a, K  W0 V$ l      rol    ebx,cl, d0 j% E/ G/ G" D/ U; n9 M0 d/ V
      call   print_4_bits
) r; M! R( Q  }      rol    ebx,cl& u& x7 A9 v7 Z$ g; f
      call   print_4_bits8 P5 P9 E4 y5 V( |! H
      rol    ebx,cl
' O- s8 d6 j  Y, w: Q! A3 I. J      call   print_4_bits# d  j* j! K: W( J8 T4 {
      rol    ebx,cl$ w; r  D0 C5 r5 P9 K, ?! S
      call   print_4_bits, q' @2 u1 l5 Z, C
      rol    ebx,cl" g9 v+ u; b) }* K
      call   print_4_bits
$ ?& H2 q4 z1 N7 Q( o  A      rol    ebx,cl# V; `4 X  {# H% S& ]# b" ]- |
      call   print_4_bits
- w1 x2 U5 d; `# U1 C( z& ]7 p      rol    ebx,cl( n  v$ v( |; Z( ^
      call   print_4_bits$ r  y. F8 a. f
      rol    ebx,cl+ q, b" E, W3 T, f* F) i! A. H
      call   print_4_bits! N) Q: w1 t. v
      rol    ebx,cl
8 e' A$ ^) w. y( k6 N' q: D      popad
' |( c5 x( X: o2 M* ^+ D; M      ret/ `: T5 K3 |. N: A) g' |
_32bits endp8 f. c1 S6 m0 p7 ~, N8 f( U4 @
;------------------------------------------------------------------------------------------------1 t, T9 @; m: m( G8 k% x4 I
_16bits proc near
  z0 S: s' P0 L      pusha        
/ j7 W& ~  O; d! w# u7 S9 ?( b      rol    bx,cl
2 f% ~7 H; u7 l4 h9 k" \      call   print_4_bits
" J: ^1 X4 Y" I+ {: t+ z. z      rol    bx,cl: s; x& n7 _1 w4 t5 \" C+ s2 g
      call   print_4_bits
/ }% I8 ]1 `8 Z      rol    bx,cl
5 X- f. }4 C( L" I      call   print_4_bits$ D5 v9 l" L) q0 g3 g0 y
      rol    bx,cl6 S) y$ d4 a) y0 j# g3 q, q
      call   print_4_bits0 S" r' ]% O- B: C: J
      popa
% W, F, H5 a& v      ret
" h% B- s) _# W; S_16bits endp
8 Z0 ^/ {# H$ F8 n# V. T; H7 L1 d;------------------------------------------------------------------------------------------------- ~3 x; j( H' S% K6 \) a$ E
_8bits proc near9 n, _' x, O/ E
      pusha        4 k! k' b" [1 S
      rol    bx,cl
1 r9 A. B& O! M6 H- n% T6 |/ A. {( n      call   print_4_bits
4 _& @/ \9 R6 p+ h6 s$ T      rol    bx,cl
  ^) E/ P4 M7 |8 `! n      call   print_4_bits% V3 m5 L  R. F/ }7 t1 v: r( s' G
      popa
  V# A; I. v1 Y' a      ret
0 u- w; o: w8 L' S* B6 w_8bits endp  r6 U2 }0 k4 a/ V
print_4_bits proc near1 O0 T8 {6 e9 a+ `; O# }+ @4 h5 ^7 L
      mov    dx,bx
) q1 ^; s0 h; V; l- f      and    dl,0fh
2 D+ ]3 |! Q- e' Z' b      add    dl,30h( v& Y. z' W: j3 \7 w5 d
      cmp    dl,3ah" b1 n6 n" J5 B5 O/ c# W
      jb     print2 W  }* H) z( q6 U1 ]' \
      add    dl,7/ I, T# B! h! K( @
print:  / u8 C7 d) f, Q) s9 ?1 N4 o
      mov    ah,2
2 r0 M: m2 L9 Y! h7 c) ?      int    21h# u! W- i0 D/ k$ ?) _# T$ B
      ret5 x* W/ }2 |) d" e
print_4_bits endp    ' r6 B9 h! K7 u9 p
CSEG ends1 t% q  I5 U- q& S( D# M: [) \. x
END
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2026-6-4 16:39 , Processed in 0.602052 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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