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

關於SEGMENT 宣告變數的問題

[复制链接]
发表于 2010-10-19 16:50:51 | 显示全部楼层 |阅读模式
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)
, l; o+ |% d, C- c% G  X0 ^7 {) V
! B+ M9 y3 t5 ~9 f1 _" o* Q$ l則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
* m9 t* K) C9 p4 j
) m( ?: O8 t% R* }) e+ n. z宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝  
, f: o8 a  j, q& Y4 b
4 B9 h3 p$ y' L9 u0 f.model small" o% g$ b, o# n5 g% z* J, r( q1 X, G
.386p+ c/ u2 h5 \3 K  o" D. Y5 l
DSEG SEGMENT USE16'data' ( O: a$ ?+ V$ [; X! v% e: B1 b% K

$ y9 n8 K( y3 I" Y2 ]) N' \  PDESC STRUC' k8 M6 ?( K/ l% x( t, x0 d+ O
     LimitL DW 0 / k+ W% P& {( j# K
     BaseL DW 0
$ a9 |1 _$ C6 W9 f, }; X$ F# W7 _" v( a4 n     BaseM DB 0
! z. S# h' G; E7 C9 R     Attributes DB 0
. T; ~4 }7 U# I4 C     LimitH DB 0 8 O/ k% X1 E  W! K- x$ a
     BaseH DB 0
7 k9 b# X) ~" {; H2 @$ A7 ^DESC ENDS
( n( x6 P3 e* \/ p+ m. f: m4 o3 G( m( ]$ P
PDesc STRUC
- o7 R0 ~7 C$ L1 Z     Limit DW 0 & p9 n  y8 `( K  D% ]6 f) e7 T
     Base DD 0
  f+ i3 d- ^! UPDesc ENDS+ Z+ J0 j  R5 v) J+ c

5 i/ A* F2 f9 B8 ZGDT_def Label Fword! x1 x2 r. z! g0 O7 Z$ n  S
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
- q4 b0 ~. e9 bData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>. M0 U9 K. i: n
GDT_Addr PDesc <$-GDT_def-1, >+ D, r: X' S# k8 r  _0 B

8 M% Q, O3 w' H7 [. L( {# rMaddress Dword 0
7 r/ [, v3 B8 Z( q: Z8 t
6 e+ D4 J; ]+ n* U8 u# VDSEG ENDS . g0 p5 _/ ~6 u0 X+ Y
ASSUME CS:CSEG,DS:DSEG
# ^. ^! {; M  Y8 c9 o5 y
! @3 {. K7 q. ]7 c0 U( ~8 cCSEG SEGMENT USE16'code' ! Y8 ]' i) G- B/ c- E' P' d
      push   ds
. C  c! c  ]; J5 ]! k, w" G      push   es
) d* z& t: a- j7 J* T      push   fs% Z3 Z, b" Y) N4 M" x1 i
      push   gs
% Y/ J% L0 F) A' B" \5 R2 d0 L      call   big_real_mode     
8 A# K4 V8 j% k, `4 Q0 L      call   Get_Commandtail
! N7 s; B+ F2 Y, `3 u2 f2 g      xor    ebx,ebx
/ N) n' C: V. N, d$ K% Z      mov    si,82h
1 G9 j, f( }( n! I+ P3 N      mov    al,es:[si]
8 o" t% s; R0 V/ @8 J5 ~      cmp    al,'r'* Z7 ?4 W4 X8 ~( E$ _- \0 t
      je     R
6 e1 v5 V: t; l' s      cmp    al,'R'" a3 a1 {& o/ M
      je     R
; `2 u4 c6 j& m2 u      cmp    al,'w'
' f2 z+ b" @, {* N/ U0 e* n1 L      je     W
1 i* W" P. e  c2 V! v' S      cmp    al,'W'. V6 u1 E/ G3 v' [5 m
      je     W          8 z) m! S. r7 \* }1 Z' b  l
R:
, L8 @# B0 E! k( |6 e# D" d7 t      mov    si,84h
( N( g- O' Z. B      mov    al,es:[si]* t0 u! U  x6 |5 I* l
      cmp    al,'b'; y5 h& B. S5 N' t4 f3 T  ~5 _& E
      je     RBT
- {! H- M5 t7 P5 Z; |      cmp    al,'B'
, \. B: D+ V: y5 G1 y" j      je     RBT% u; p4 z$ q& I5 _' R9 T
      cmp    al,'w'+ b1 A& [2 d3 y' H4 N& i
      je     RWR
  b9 @" @) R0 l: k8 q3 D0 p  H4 Q      cmp    al,'W'
5 y# K  f' g2 Q7 U1 U& q      je     RWR
7 a% N/ y  T4 T8 Z      cmp    al,'d'
# _# b  R2 G% ~! m9 h; f$ T" L6 S      je     RDR
* b) g8 G1 ?  j9 b! M/ @* U& B# Y      cmp    al,'D'8 K% O* I) T2 w3 w. }6 |5 R
      je     RDR            
* L! W# y) ?: M# m: ?  r* ^W:      $ i- C" b9 l+ X" Q. k
      mov    si,84h! P% c+ a! ]3 K8 x4 F, S& X; R
      mov    al,es:[si]
  Q& `; R2 M4 h% b& z      cmp    al,'b'
4 S- |4 [2 J$ `- U) D: S- a8 t      je     WBT
3 a; R" C, x; F9 ~8 O+ X8 Y! o      cmp    al,'B'
% ?7 I9 d! i' i" Z2 k9 J      je     WBT
4 p  c5 ?. e$ @4 V0 N      cmp    al,'w'
* c  E2 X/ F% M7 R. m      je     WWR4 l- y0 f5 X6 [! u; s
      cmp    al,'W'% ^/ S- |* _8 C# p. ]4 U- f
      je     WWR: C4 \4 Z3 C" u8 S4 p! o
      cmp    al,'d'
" Q; F+ O2 u/ S* J      je     WDR5 R0 z$ }$ P& v4 r$ I8 k: d
      cmp    al,'D'
& [; {: a* [* ^      je     WDR
! F2 d, m7 ?, f  K0 tRBT:
3 f4 Z* B0 P- ^9 L* [: Y9 ?/ ~/ E      call   PSP        
& R! w6 w7 E* S9 N% s# I      call   crlf           % v$ x  M0 R1 s- V
      mov    esi,ebx
. V) c7 X+ `1 Z" [) p, w      mov    eax,fs:[esi]8 h+ G! d6 u2 o& O4 v
      out    80h,eax7 g9 i; }$ @* y3 J2 P0 M
      mov    ebx,eax4 U  j/ ]0 v2 k( Y
      call   _8bits! j/ ^5 a& v2 G' e- m. I" j5 L
      jmp    Exit# l) ^, @4 r5 \. V
RWR:% L% ~$ z$ s/ ~, M: \& j
      call   PSP        1 C3 Z6 z& w; i2 {
      call   crlf           $ J3 g) R" \4 \1 ?
      mov    esi,ebx
+ @, w/ ^% Y" O3 f- d      mov    eax,fs:[esi]
) U, r3 U$ s4 g8 a4 y      out    80h,eax
0 E  H. I% c6 c6 X1 D$ r      mov    ebx,eax
- q: Y+ W/ N8 q% g  ^9 e6 B  R; D; }      call   _16bits, g9 m7 k* U# T/ P# E
      jmp    Exit
! j. [3 {: U! GRDR:
! k7 a0 J7 w" N! W. F3 s7 W      call   DPSP        
1 N* h! [& |/ J, f# C, F6 n: a      call   crlf           . t% p, i7 Q9 d8 {
      mov    esi,ebx
/ p; Q$ e+ f" Y9 |8 Z      mov    eax,fs:[esi]
( m6 T. t# r2 `+ o7 z1 ]: c      out    80h,eax
. n. h8 H. D' u( ^6 r0 S      mov    ebx,eax
) c  d4 Z/ `4 W+ ]5 f# a( g      call   _32bits
$ r* I( c2 X4 j( K" `* M      jmp    Exit
) ]+ y& y+ L: x  g5 f' [5 z' V;------------------------------------------------------------------------------------------------
: z( n; f( p$ w2 {$ I" RWBT:
+ M6 r) s) M  a) b( ~      jmp    Exit7 ^( }2 n& ]7 i0 @. u- T; L: j
WWR:
/ o  o% X# u7 e2 J- i$ U      jmp    Exit2 p$ K. M0 z+ ?( i. o
WDR:
7 f, A6 P/ ?+ L" d" V/ Z! U$ i      call   DPSP; R; Q1 w6 I8 U' T( M
      mov    Maddress,ebx      
/ q" T6 N/ x' T8 P/ v4 ~3 k/ `$ x& l0 S      call   crlf
# b7 f# L% K$ b. a3 w4 M      call   WDPSP
; w- q& p2 q) ]  l      mov    eax,ebx
5 V) T: g! t+ R. c9 ~      mov    esi,Maddress         
0 Q9 Y  W2 J+ W* o, x& P      mov    fs:[esi],eax2 R1 R3 y5 |' \: }9 D' R# T
      out    80h,eax) L, d0 |* @7 J& Z& l# W0 i1 ]
      jmp    Exit3 A6 @! I( U/ q% A5 Q1 D2 g
;------------------------------------------------------------------------------------------------      
: {9 e% ?1 V# T0 @Exit:
/ f5 a: k, [& t8 u5 `4 _* M2 @      call   real_mode     ) {+ b. a# j) n9 a1 X1 L, x
      pop    gs" u. e: s$ T! r* I
      pop    fs
! d1 O3 A$ G: x9 K2 w, K      pop    es
  Y9 k1 u2 E  F      pop    ds      
  Y$ I7 Q9 Q% k* H# R  U7 G      .exit! T8 u, G/ R: X! F
;------------------------------------------------------------------------------------------------  ]& k" f! S# R. l+ G" ]/ p
big_real_mode proc near
0 X- c, Z% j, U$ Z7 u5 c      in     al, 92h. y9 n3 F) ?& A( w% r# K  o
      or     al, 002* ?% B; h7 y* x7 L5 u
      out    092h, al7 p. v5 C9 l8 y# b& F, z2 V
      out    0edh, al
; u4 q! w0 z! j/ |- D      cli, G- K5 d3 j( t
      mov    eax,DSEG* S2 i7 N! s* o  V1 L: d! a
      shl    eax, 4
0 A  i9 Q, H9 E/ X6 h: D$ j' _/ R      xor    ebx, ebx
9 G7 z5 v' b' k" @- g7 E" v      mov    ebx, offset GDT_def4 e  t1 f) r. q9 h' w8 P3 ?& j* H% I
      add    eax, ebx
* I; B) R0 ?3 e+ D/ l      mov    dword ptr GDT_Addr.Base, eax
4 {' B# a3 v% U7 D( a/ O: y      lgdt   fword ptr GDT_Addr* N5 W; u" G( R4 V% y
      mov    bx, 8( E- v$ L1 O" u- |
      mov    eax, cr0
! H/ K, _0 V/ N      or     al, 1
% B8 m! r2 J" Y- r      mov    cr0, eax
$ i% C# c9 W6 i1 N& l      jmp    PMod
4 i0 z; l9 L( M  ^) H' {. fPMod:
/ G! p% i+ f; j0 G8 W7 a      mov    fs, bx
  a! r3 a0 q+ l- c) l6 w& `      mov    gs, bx
- [9 l" V1 f% m8 H5 I& G: R' I      mov    eax,cr0* k. [# \* R. r$ ^/ O" k
      and    al, 0FEh& k4 d" C; a& [, ~. f4 V6 @& @
      mov    cr0, eax 7 R) S/ ~( f) |8 s4 H
      jmp    RMod  ]/ [  j: n7 w6 k* P: X1 s& X: H/ _
RMod:
+ z6 _6 T, B: q2 N# [! J0 F      xor    ax, ax
( D: W; x( j7 A: S& i& Z& S      mov    fs, ax
( m( j( ]! D/ z5 Y( t9 S* w      mov    gs, ax     
% O( z- O7 r, W% d* `" Z, l      sti     ; N9 g5 c' ~5 t4 i3 h
      ret
& i( a6 e: T. M4 @1 ]% \# X( y- Sbig_real_mode ENDP8 y0 }0 W$ |" k9 r3 n
;------------------------------------------------------------------------------------------------
" L4 W, d4 n& I8 m+ }6 ]1 Wreal_mode proc near
' z" F9 \4 {% \# H7 K9 V' J' ~      in     al, 92h. w; T) }. K: Q. X, h
      and    al, 02
, c: i  N0 z% J9 S      out    92h, al    , A+ R' r" n+ Y) N( A
      ret
2 g* f5 q8 a- E" j3 sreal_mode ENDP
! W  C4 C+ o5 P; y% l/ V3 C;------------------------------------------------------------------------------------------------6 ~0 S' N1 A' J$ N2 g: M# o
Get_Commandtail PROC near; ]0 D! S% `& A
      mov    ah,62h 1 x% l/ u) u; u
      int    21h& B3 Z4 [, p6 i! o* D: J6 Z
      mov    es,bx7 p1 x1 ?7 T0 z
      ret, r% j4 u+ \) C9 N7 P8 I
Get_Commandtail ENDP      a- N( M/ G8 Q$ ~9 d  t
;------------------------------------------------------------------------------------------------
# H3 e( w: C, t" S) o; cPSP proc near
* e# I: ]2 `2 S, ^1 Z      xor    ebx,ebx
: D. g# A: }) t& p  T1 e      mov    si,89h# {# Z; z+ s! c* X7 O. M
      mov    al,es:[si]6 a/ D# j# R+ {+ x) V
      call   Change' ?/ R) I( o: N& K* J: n/ i! L/ I4 u
      mov    cl,4
' {! t7 H# @( k, n0 G0 B& ~      shl    ebx,cl
6 {, U5 _% K6 j2 Q$ M      add    ebx,eax
6 K0 T' \& o& d. y      mov    al,es:[si+1]" e$ `7 d% V2 z2 }* Z7 s
      call   Change+ N, N( ?6 R8 ^
      mov    cl,4
, D' Q1 S0 i1 @0 p; m. X2 j      shl    ebx,cl
* d+ q- k8 C% V2 L+ L# S& b      add    ebx,eax8 J3 G. |( X. `8 d* }* n5 a
      mov    al,es:[si+2]0 t+ S1 B/ ^3 P5 R* [5 H
      call   Change
$ `# `: g8 N2 q( \1 `7 }# k% }: |8 t! n      mov    cl,4
; F0 H3 `3 [  v$ Y/ Z! A      shl    ebx,cl; X) `8 q! s8 {* F- L0 F
      add    ebx,eax+ V0 B& |* r3 D: I0 M
      mov    al,es:[si+3]! p+ ?3 T% B& Q0 M
      call   Change
8 j( O: D! Y9 ?3 `% k      mov    cl,4
& ]+ f- p+ [* H7 `      shl    ebx,cl
4 u# q& A$ ^) [% \1 Z      add    ebx,eax
) o2 s( s6 L7 l      mov    al,es:[si+4]
2 C) c! z( s3 ^3 a      call   Change
! {# ^: d$ [5 w      mov    cl,47 F# e0 C) h9 H4 e- d, c
      shl    ebx,cl5 C6 [5 Z* l+ b/ g( v1 }
      add    ebx,eax
1 J, r/ g( A4 t) R6 T      mov    al,es:[si+5]' k: ?, p& `& y4 Q$ N
      call   Change3 V- f' f; p/ |8 _. K" _
      mov    cl,44 V7 p/ Z6 v6 [4 z6 H0 E
      shl    ebx,cl
( y  Z5 ?: B5 W+ x6 ^      add    ebx,eax
9 ^; \. ~; b. C" _4 [      mov    al,es:[si+6], U) }8 Q" Y  g9 G* Y
      call   Change5 o( H3 B+ R% O
      mov    cl,40 y* W4 A  j4 N% C
      shl    ebx,cl1 r+ H$ \" V: X/ _. f* G. L) q. M: R- M
      add    ebx,eax, }) Q% ~& l9 Q( P4 {
      mov    al,es:[si+7]( O6 o' j) Y* q$ u/ E0 G* ^
      call   Change
  L2 N" h9 W) J6 {      mov    cl,4
+ q6 O2 w8 J- }; f' r1 D      shl    ebx,cl5 x7 `! d2 j/ @% K/ I9 q: @
      add    ebx,eax' L  V, D' q; B$ m
      ret+ Z4 f( Z/ ~( r" B# v  `% `+ G1 D
PSP endp
) ?4 c9 ~, }$ l# \9 R$ G* ~9 R6 F;================================================================================================# Y' ?- I! \9 w& f( n% [
DPSP proc near
  E. h6 u1 K) ]/ A# u4 G      xor    ebx,ebx
$ p# l! D& ~' h* Z. P7 n) H      mov    si,8ah
. A7 z0 I3 ^0 T3 n4 ^% `: z      mov    al,es:[si]
0 T; ]$ c  @$ O/ U      call   Change
/ p* O/ N) O4 G' _4 B6 L5 N% N      mov    cl,4
3 E/ O& L0 l+ S8 r, Y      shl    ebx,cl- @& _( u. x. A9 H: o' P" r7 \
      add    ebx,eax
1 j/ X0 Q5 U) n# ^! o1 c      mov    al,es:[si+1]
/ C4 R" F  R( W' `2 R& B: n      call   Change
1 Q' x; {' z4 R8 Y% U2 W      mov    cl,4
& S' r5 }2 V1 Y8 b2 h      shl    ebx,cl3 ^$ T  J" x: m
      add    ebx,eax% D+ }& G! L* [. l
      mov    al,es:[si+2]- ]: v  N* C3 k6 Y- t+ f! Z
      call   Change7 |2 t; h3 `) c' W( Q. b; d
      mov    cl,4
, M- c/ K9 v6 L+ s( Y+ J4 j      shl    ebx,cl
+ U5 w$ [3 E! i! k2 g, E9 R# @      add    ebx,eax' e4 r& C; f/ T9 S7 \2 o2 z6 O
      mov    al,es:[si+3]6 p' U( X$ [3 p8 I6 U5 x
      call   Change
& E# z. K* j7 x# N      mov    cl,4
& ?) t+ M( W+ @4 U      shl    ebx,cl
8 m) M" S5 [, V& i      add    ebx,eax
% t4 Q& s# }3 K0 p" _  K+ N# k4 Q# k8 A      mov    al,es:[si+4]1 \- l$ P7 |% ]" y
      call   Change
! d" X# W, P+ {& \% H% R      mov    cl,4
; C$ V9 I5 M0 K9 k: ~8 t      shl    ebx,cl7 v# D/ k! Z9 a! a
      add    ebx,eax
- ~5 `/ C0 W% M, g' O% j      mov    al,es:[si+5]& j9 p. ^) d7 y6 t3 s
      call   Change* F0 \. b% }: _6 ?* |! E2 U4 b  M! w7 C
      mov    cl,49 p8 f  b* {4 o5 I6 e" s
      shl    ebx,cl
. e& H2 f# ^+ b5 q9 r      add    ebx,eax
3 Q) [1 n6 |8 V- i% T5 o      mov    al,es:[si+6]- v4 `7 W7 n9 w7 [7 G
      call   Change. V% c, k, v6 p0 s; n( E- ?
      mov    cl,4
2 x' X: l" Z4 x      shl    ebx,cl, }, B9 f5 l! O* b2 [/ I0 S( ]
      add    ebx,eax
- c  Z: I  o/ ^% D5 E8 t2 A+ d      mov    al,es:[si+7]
6 s! |6 y/ ]  J0 s      call   Change
9 P6 G! w1 \1 O9 N/ R! a' P      mov    cl,4+ C" L  |( j8 F3 k+ S3 T
      shl    ebx,cl" v" D5 b. m7 }% A( s4 [3 |# T
      add    ebx,eax
& n9 c  U8 Z5 Q: e      ret5 W9 A/ p2 B6 K8 h( F6 d  n$ e
DPSP endp1 \- B! a# D  x# G
;================================================================================================
& O  |) {" m5 [/ X0 {# DWDPSP proc near7 J5 U6 A, S( R& N
      xor    eax,eax
, t" C& |3 U- H% P      xor    ebx,ebx$ n- A1 ?$ b+ Y9 C
      mov    si,93h8 Z( |" a- b0 Z! Y& Q: T+ m1 G
      mov    al,es:[si]3 ?6 P8 X( z- C# T4 O2 I
      call   Change
5 a0 |( P, g% m% X      mov    cl,4
! z) p* B. p% x# ?  b" |6 d      shl    ebx,cl7 v( g- [1 q5 G2 J& X
      add    ebx,eax
6 C2 b3 J1 F3 Q) S  X      mov    al,es:[si+1]- O& [4 i: a/ b, z/ o3 _3 }! M: l
      call   Change
) s/ B* g4 p+ \! c0 c      mov    cl,4
2 f" \. i$ p; y& F8 t0 M* {2 L      shl    ebx,cl
- C2 V* ?7 G& Q0 Y' S7 w/ v      add    ebx,eax
2 w/ [4 a. n) [' Z      mov    al,es:[si+2]7 D: B0 d: m3 T4 A, _
      call   Change1 @* ?- u! ^, D* p) d. f
      mov    cl,4! E0 y2 Z6 z, V# p- ^% f
      shl    ebx,cl$ z# O8 F2 b8 D; N& C/ J
      add    ebx,eax' f/ A/ @& Q4 U- h9 P
      mov    al,es:[si+3]
" `0 Q% A( H+ ]- U      call   Change
( @3 {1 Z& n" b: b$ h. ~: b+ y9 l      mov    cl,4
5 _, W4 h$ f5 L; K      shl    ebx,cl
* i/ n# A+ W+ b0 ?% L$ T, c. y      add    ebx,eax% }  k1 ^$ d% H# g
      mov    al,es:[si+4]  I8 h9 M9 [7 h$ Q2 H7 k
      call   Change& o7 e9 _1 ~0 O+ r$ ]( M2 m" j2 D/ }
      mov    cl,4, }- ^+ J' W7 |4 d2 I; |% F' @
      shl    ebx,cl3 N% ]9 M& ?" y# I4 T3 q4 l/ k
      add    ebx,eax$ Y7 Q8 P' Y/ a  {
      mov    al,es:[si+5]
2 H1 m8 I, W" A  L* F      call   Change
% k& [5 p0 _4 r/ ^; D      mov    cl,4
9 H$ i6 _  P" i7 m4 E7 B. @: V      shl    ebx,cl! E$ }2 v/ q% \
      add    ebx,eax  j; B  H; A% U1 _/ m5 M! b
      mov    al,es:[si+6]) d1 b; b* ]0 O) r' k' ]6 v: V
      call   Change5 U: w  Y( Z' `- e7 m( T% N- }
      mov    cl,4
6 b6 e2 V  {& N3 ]: g' v5 g      shl    ebx,cl
# [7 X, i! x' X4 F, }; Z      add    ebx,eax/ w- h4 p: z4 H& [3 h
      mov    al,es:[si+7]
* E% b+ D' f1 {" M      call   Change
, ~9 H. A/ t9 ]: f      mov    cl,4
( N# }7 c/ z: ^" |) m1 i3 t7 J      shl    ebx,cl
/ R+ g- J( P, C2 f+ c/ w      add    ebx,eax+ `5 r+ Q$ O; L) v$ S4 \6 D( y
      ret
* C$ A% \( G& J$ u' }0 U0 R3 sWDPSP endp
) T5 R6 T7 `# A2 i  O* Y$ b8 E;================================================================================================
" h/ ~* u; q4 {1 P+ n- w4 vChange proc near
& Q/ p# G5 b0 r0 g" EA:    3 T$ u4 |& t) `# L' U
      movzx  eax,al
* c$ e% I- r& p3 c2 b      mov    edx,eax
! i. T5 D0 n' l9 x/ A8 L      cmp    eax,'0'            4 i% u, A2 W9 j  Y
      jb     A3 p& Q' L0 F5 A7 P
      cmp    eax,'9'            
! S. V7 j$ {% e4 J+ d5 H) F* l      ja     B
5 C7 r( p$ Z& L. G  O6 i      sub    eax,'0'& V% \+ E$ V- a) G& o, ~
      jmp    short E
2 P+ v* I4 v" H$ M6 y1 o, ^, dB:! }  N9 q" V8 t4 J- x
      and    eax,0dfh           
/ {7 E- c6 }( l" g9 p' @$ L      mov    edx,eax
7 b7 m& ~  h0 ^      sub    eax,37h            6 Y; k4 F. v/ a
      cmp    eax,0ah$ m, ?$ {% l6 @
      jb     A                    L6 s( F# p/ c, D8 d4 ~
      cmp    eax,0fh
- z0 }" y6 V' q, o, w      ja     A                  
2 o: l. O% F9 w; }E:
+ Z0 t# k% W7 G/ P8 ?3 ]( Q3 h* ^" w      push   eax      
8 V; G# w6 o+ j- C" T  z) P8 b4 T      call   PRT               
7 I7 {; t# U, v      pop    eax
0 m2 X% w1 n1 f* ]0 FCExit:
9 p/ _& }4 a# e1 K1 v" }      ret
* l& U/ G) ~9 V6 p9 Z$ A1 mChange endp# V; f9 \. G8 o3 Q2 E8 y: z
;------------------------------------------------------------------------------------------------
1 s+ G$ z1 q8 s8 \* w% I6 _' ]+ ZPRT proc near5 u' A# v5 O  Z6 M
      mov    ah,02h
5 X& d% c% h* p' N4 {      int    21h. M' t  l: O  g+ P' D
      ret9 P. {3 b( z* w4 F8 @' s; c# ^
PRT endp! }9 J; T" J" {
;------------------------------------------------------------------------------------------------( g1 Y: L& k" F& H% ]  G
crlf proc near# Z- L  t/ O( b" {
      mov    ah,02h
% s0 G2 O$ L% R9 ~/ C! x, \      mov    dl,0dh0 B9 x! V3 k0 P
      int    21h5 O+ p: D" \+ F! T+ m* {
      mov    ah,02h
+ {+ O8 G- V# x      mov    dl,0ah% a0 r9 |1 c( s  u4 s; O. s
      int    21h/ B: |/ d: b1 F5 X# {8 z% l0 B3 y
      ret6 {# y0 U) v* K; Y5 C
crlf endp
* o% W( @+ j; q) ^: w" Q;------------------------------------------------------------------------------------------------$ t' t# ~' C3 n  A9 L' C
_32bits proc near" |  `5 E4 t# R! P9 H
      pushad8 _& Z3 }( @7 |& g  n
      mov    cl,4
, k8 r7 L4 r" S; t2 \      rol    ebx,cl  o8 T- S: d+ i* y- E
      call   print_4_bits
, c( ~! a+ S# _# h# e5 G      rol    ebx,cl# L- F9 f* M) V9 G
      call   print_4_bits" P, b4 J' _5 J8 e+ {
      rol    ebx,cl7 G0 c0 p) l4 S" l- Y
      call   print_4_bits+ p( k3 V0 z! e8 \0 ?- O6 M
      rol    ebx,cl7 L& j4 A1 ^% r9 E
      call   print_4_bits& Y! M; w3 e/ y: N! T4 |* u* p4 g9 K
      rol    ebx,cl; T$ p# b* m* P) e0 q; q6 e# ^
      call   print_4_bits
3 Q+ k& r3 t  z      rol    ebx,cl% |3 k* g  t2 j$ J" y; h- ?
      call   print_4_bits
, B4 ^- ^6 o; ?% Y( q( f) g      rol    ebx,cl5 z. i/ Y0 T% j) g
      call   print_4_bits
( ?7 h0 ?1 X" G3 H      rol    ebx,cl
3 p1 U" Q; O# L6 M+ c      call   print_4_bits
% ^8 P4 e6 x8 `      rol    ebx,cl
% M* l! h. e! f% z. H7 Q7 i" ?      popad
2 V$ w4 O& m) M7 G$ x      ret
4 }- ^4 D! A, l& _, m- z7 T& Y4 }_32bits endp
3 j/ ~/ J" ?6 J1 e4 j+ `6 [; r;------------------------------------------------------------------------------------------------
$ o1 R* B$ ^* c. }* Q- K' A0 Q) }_16bits proc near3 ?2 d, j" J$ G$ B
      pusha        / g& z$ R4 ?: v  b
      rol    bx,cl
, Q1 ~6 i% D; g      call   print_4_bits
% C% o- h( n/ e) p) t& Q0 Q      rol    bx,cl  y6 x% `" U+ K7 z  i
      call   print_4_bits
7 N' J) q' `9 T      rol    bx,cl
6 [" z( [4 t' O/ A( f+ d2 _8 O: {      call   print_4_bits
8 E$ N$ k% ^( T: Q8 P; F( W2 M      rol    bx,cl$ O' a# J9 R5 V
      call   print_4_bits- {0 x% l5 q) m: B5 d
      popa
$ U4 w# R% @3 i5 Q      ret9 D8 u9 @. c4 S5 \% q0 c
_16bits endp4 F- {4 ^( A+ w, H% S5 j
;------------------------------------------------------------------------------------------------
+ g1 D/ C5 i2 V/ V/ y_8bits proc near) Y/ O7 W: \9 e0 h% }! `& S4 R! n
      pusha        
9 W' _, @/ t9 m; Z( E. Z2 x) s( E      rol    bx,cl
. |- x1 K6 e3 o! @* A& o      call   print_4_bits. C, v' e2 P# `9 R: v6 F. |) K& }
      rol    bx,cl
9 A9 v2 K% F7 u# [' g* q4 V+ n      call   print_4_bits
# [4 G8 [& p: X2 g6 w6 x: ]      popa4 p- O& v. c! T4 }  Z, S" E5 ?  ~) u
      ret
; W6 B8 h) d! U& O9 ?7 g! d_8bits endp! j4 G$ v7 y/ i$ f0 v4 `* E% ~
print_4_bits proc near5 M- I5 {7 F6 l% n2 D2 Q: v
      mov    dx,bx5 f7 G$ w- I5 }6 A3 w  j
      and    dl,0fh4 W1 k& Y- L( f
      add    dl,30h
* r/ l  r. O) {9 C      cmp    dl,3ah
# R& R3 j4 V& ?      jb     print
) V; F% ?4 b0 {      add    dl,78 ?7 d( P1 }& U: U# F5 v; l
print:  
! S4 F- ]" u5 Z- j% i5 p9 _      mov    ah,21 R& K9 w9 H0 I! C. q: G) B* j
      int    21h& T# F9 M! ^6 t. g9 |
      ret
  r0 i$ a3 `! M3 q2 ?6 w! r% Gprint_4_bits endp   
! A* U+ ]2 m/ U( T  _- ECSEG ends* m7 F$ H6 X' ]% w6 F
END
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2025-6-16 12:10 , Processed in 0.035579 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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