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

關於SEGMENT 宣告變數的問題

[复制链接]
发表于 2010-10-19 16:50:51 | 显示全部楼层 |阅读模式
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)
. g. }3 P* y- l9 a, k3 d" b! n. ?* z! R* t5 R8 j# ^, E3 Q* M
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
6 [- ?2 e% p5 H: z1 o8 s
2 U1 o5 h: m. Y& y  }5 T/ V8 I宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝  
+ ?4 W" b+ A4 ^0 c1 G! g( p
8 B$ T  M* a( M1 t+ [0 y1 O* n.model small
4 t7 I; h+ ]7 B/ L- I8 V.386p
, j7 ^6 e4 y: a3 V8 y* v' j, YDSEG SEGMENT USE16'data' 4 r3 Y7 M1 S. t( C  ~! l

  G) m6 n7 h2 tDESC STRUC
( g; d7 v+ n1 e% y/ k0 x) h: D     LimitL DW 0
, V# D  y6 W9 t6 m8 r5 V& B     BaseL DW 0 * X2 N: W6 t' }6 H* S7 D# z
     BaseM DB 0
4 K, a. F9 g9 ^0 ]     Attributes DB 0
1 l2 E; b$ n. y$ i2 P* Y' [. [% b     LimitH DB 0 " f1 @3 W3 [( N4 v, T
     BaseH DB 0
/ `5 o0 [& ?0 l  SDESC ENDS
, N# V7 s- l/ E7 W, W) |. r7 \/ {" j$ _, o, w
PDesc STRUC# S; q, M8 V+ j* U
     Limit DW 0
' z# I1 l: p' G# s! k% M     Base DD 0 0 C8 k4 j( |; O, `1 x
PDesc ENDS
. m, E5 J; T& C6 j- C$ P0 b8 A4 M: B3 {6 ], _0 V: ]
GDT_def Label Fword; Z# B# i7 D# `' h! q5 e8 I
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
4 I0 N$ b# p: d  wData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
3 G+ ?: z# ~* G  y' g  DGDT_Addr PDesc <$-GDT_def-1, >
! u& o. K; w2 ~4 p2 b: r8 _9 i+ a; f' M  K  ~  C5 u& J9 L
Maddress Dword 01 s3 ]) _: f9 Y4 m, C
  R4 a! K& E/ Z$ x8 K6 Z; S1 Z
DSEG ENDS : C, [, I% r$ H2 Z/ K
ASSUME CS:CSEG,DS:DSEG* l4 G" M( o5 W, b
* P+ E3 c( P/ B5 G! s/ C; u
CSEG SEGMENT USE16'code'
. m* U' N! H3 V# p$ \      push   ds. L$ ?8 m* X9 l* B6 m
      push   es/ Y# [0 `8 V, x& }
      push   fs( _8 z4 X7 s6 ]0 Z
      push   gs
+ ?% L. n+ t3 q      call   big_real_mode     " C! H2 [7 F1 D) d0 |
      call   Get_Commandtail
  t& b4 i( D  l+ ^( B      xor    ebx,ebx
3 m# t# K6 j% ?. k  D& l- H      mov    si,82h) {1 r* z9 e6 ^+ ?
      mov    al,es:[si]+ s* D  |, W! e; M$ R
      cmp    al,'r'; R* ?( S: x4 m* V7 ~8 e/ j7 T
      je     R- K* i) w: v) Z8 E
      cmp    al,'R'
8 E- r' T  J1 C      je     R
, ^8 L& ^  b2 H! [+ f* X* t0 \' j' f      cmp    al,'w'4 J8 v  i9 ~3 @( g7 G9 A
      je     W
# W  x# R: X, w3 w- L& M7 c      cmp    al,'W'
/ y+ H0 [1 |) S$ w4 l1 q/ |      je     W          8 O& K/ j6 X, t4 C0 i* L0 {! |
R:# V! z- ]" ^3 a9 W2 D3 c
      mov    si,84h2 h; t+ x; l! f. T# V7 ?$ q
      mov    al,es:[si]0 W+ c1 P! P; r* }3 R
      cmp    al,'b'- q& U5 D7 d  ]* d
      je     RBT! P+ V: _$ A* u1 \* y: S, \& E
      cmp    al,'B'
2 ~  D- r& R; z$ q3 z; [' t      je     RBT4 @4 ?% Z6 }/ k" c9 S
      cmp    al,'w'
; O5 V) J3 Z: N2 n- \4 h6 E$ G+ N      je     RWR% o( q/ A6 ]3 A% g- M
      cmp    al,'W'5 G4 s3 I9 V# G' J1 c
      je     RWR7 j% p) G$ Z- m
      cmp    al,'d'3 `: L4 n7 C  j) S9 V
      je     RDR' z- G- `( r, \: r' A+ h
      cmp    al,'D'2 H4 Z! z8 o7 f9 x6 Z& N0 ~: f
      je     RDR             4 ~+ Z# B+ T% V" R. I  }% I5 T
W:      / W0 Y4 w- a8 T# B8 z/ W2 n
      mov    si,84h* d! S& v( W, }
      mov    al,es:[si]. V! e% X' p: e* y2 w' ?
      cmp    al,'b'
; n8 @/ ]# \! c) w      je     WBT
( x! y  @: Y: B. q: P) {5 A( Y      cmp    al,'B'5 E; l5 ^1 M: k
      je     WBT
* S! {7 K! G$ s. _      cmp    al,'w', U$ a' z7 D: K
      je     WWR
; k5 @, _3 ^9 R1 C      cmp    al,'W'
1 k+ N* H5 z; b: l$ `      je     WWR" u8 t, ^& A6 F! x% l1 \
      cmp    al,'d'+ p/ f1 u( }9 U1 Y* D
      je     WDR1 n0 c; n% ~/ f$ v5 V# ?
      cmp    al,'D'$ W$ h' U+ k# J/ w6 b7 A1 a
      je     WDR
& [; c5 L8 p. J) A3 Q7 {. |; nRBT:4 P; e6 N" }: a3 \/ f
      call   PSP        . e: \$ E- w4 U+ K7 }) i
      call   crlf           ( |9 q- Z0 X" ?2 x: z- l
      mov    esi,ebx
0 x/ @" b# S3 ]* N9 P4 a* @      mov    eax,fs:[esi]
% b) U& g: J8 j8 H0 Z$ E% ?; x      out    80h,eax
1 B5 O6 n' ^: n# ]      mov    ebx,eax6 l/ O% C* e- H) F' G1 s( L
      call   _8bits/ e4 f+ u, N# W; n. F
      jmp    Exit5 I# @8 i4 c/ F" e
RWR:# S& N' p& ?7 m1 F" F# g
      call   PSP        
& G, X- _& L% F1 F; ]      call   crlf           % O9 A1 `6 x, D; ^
      mov    esi,ebx6 s% m5 T9 }6 }$ |1 G3 y8 u! N
      mov    eax,fs:[esi]
% S0 w: p2 I1 h, W      out    80h,eax; l7 E+ o6 O. Z: a0 }
      mov    ebx,eax' b( {0 ~3 Q* Y
      call   _16bits
( }( q: [! P& d8 S' c% `; o) a      jmp    Exit. I1 o4 c8 u5 H. ?( ^  B+ E# c& p6 u
RDR:
% j0 ^6 l2 J: p9 e( K      call   DPSP        2 u% i( ?5 T# r( U. ]* ]- U0 B
      call   crlf           ; @$ U3 A9 k. w; F
      mov    esi,ebx
$ ?0 d, z  U5 x# ~! }- X8 L      mov    eax,fs:[esi]  L% S- q) o3 T7 }
      out    80h,eax3 A( `. Y- _5 q! Z" j
      mov    ebx,eax
  M8 _# q4 X6 g" j      call   _32bits
7 k! D* Q/ d% f3 P; O      jmp    Exit
+ k$ O5 t7 K" G1 C" h" A8 f  c;------------------------------------------------------------------------------------------------
; ~) {5 ~9 C: _4 S- v1 B" DWBT:
4 _  M4 L$ N# I/ U: Z3 F. K+ O  y3 I      jmp    Exit. a* R9 i: }! i7 z9 V
WWR:
, M( Z0 t* y: R6 b( p0 |+ q      jmp    Exit5 M4 u& l/ L/ K9 s5 S( O
WDR:
  ]! k: R  k9 r3 X4 D      call   DPSP; }9 p7 v0 C0 {. k2 Y4 r
      mov    Maddress,ebx      
7 y6 K$ ], |6 t+ l" j      call   crlf+ k5 u, N+ W; t, G7 N% a! |
      call   WDPSP
7 J. p; G- q* F      mov    eax,ebx6 N% z/ x- K1 V& ~1 m: i) I, v( S
      mov    esi,Maddress          & I$ V0 D* T% x  Y
      mov    fs:[esi],eax) Z; ]( K( w+ X
      out    80h,eax7 M9 |) \  \$ \* W: T, C/ c( c9 e
      jmp    Exit
( h7 B# O7 S3 Q- N, K8 N" N) g9 T;------------------------------------------------------------------------------------------------      
. ~, D- J( ], c6 _+ JExit:
$ F0 i. o6 p! [      call   real_mode     ' m* Y8 `- r1 Z0 r4 u
      pop    gs
, N) W  i( K& C# y( v% o# k      pop    fs- t! s* h& i0 i5 S' h9 v
      pop    es( \5 N* N1 U% a9 i1 V3 s
      pop    ds       2 w8 S8 i( Y! `0 B1 R8 Y: Z
      .exit
6 S+ t: g, B& \/ v;------------------------------------------------------------------------------------------------
  I9 _2 c5 p3 Rbig_real_mode proc near+ o5 L0 f! m: V9 x7 Z4 S
      in     al, 92h/ A. f9 v, _- N1 j+ S# h
      or     al, 002, a, l% m. {% J  U0 ]$ k
      out    092h, al/ K' G8 E- q. L3 t/ Q1 _( @% d0 K
      out    0edh, al& J- A/ a' r: t" Y, o# E0 V8 W1 h
      cli6 I9 I7 }, w# {  h  b: W, m5 H
      mov    eax,DSEG8 e# j) S3 Z- u! z8 f9 X& T
      shl    eax, 43 G1 m, y* }* o) j
      xor    ebx, ebx
8 o1 U& ^1 ^2 e: V% i& O      mov    ebx, offset GDT_def+ k: G" y' K) N9 E3 X
      add    eax, ebx
" y. u' r3 j6 ?/ g7 a/ @      mov    dword ptr GDT_Addr.Base, eax* c* V9 x4 n8 i
      lgdt   fword ptr GDT_Addr
" T4 Y1 w; I7 G      mov    bx, 8% @9 u$ i2 ?- T( _& N
      mov    eax, cr0
  s4 Y. F" Q, g% ]      or     al, 10 V. V6 `3 x# E7 f
      mov    cr0, eax
! y/ w6 E, T' h  H7 ^      jmp    PMod
9 v- j1 B# |5 ?5 B6 [PMod:
( ^  t# v& Y) G7 d' W) p5 r      mov    fs, bx7 x3 d1 I9 K) s' W
      mov    gs, bx
: y. q7 z! Y5 E, j9 J+ Q* [      mov    eax,cr0
5 b9 R8 J  _" j; v* }2 r$ e      and    al, 0FEh
/ Z6 c/ R( I+ F5 I/ g      mov    cr0, eax % H& ]+ e! T/ x9 h4 Q; m
      jmp    RMod% D' d  l) y9 e9 Z1 O: W
RMod:
; h. s: o% a; m; N5 j      xor    ax, ax
$ F  N( t% _$ z# g      mov    fs, ax1 S( r; L* i0 `
      mov    gs, ax     9 N: n" e$ Y5 X3 M3 C! T* G/ Y
      sti     
! r: m5 [- k1 x. t& [$ @' v      ret2 Y1 s3 f  k, r: V6 b% x: {, c
big_real_mode ENDP& T4 C  C9 Y0 o$ w2 {
;------------------------------------------------------------------------------------------------  M, w- x; T: m  G  J* M
real_mode proc near
/ P# c6 O5 [' M      in     al, 92h
0 E- O( r6 A0 L" {4 P      and    al, 02
8 Z) k6 n0 y0 m/ ?      out    92h, al   
+ c# ^( Y$ U3 j# u) y" u/ O/ r; c( z8 l$ `& T      ret/ |9 f' {. m" h* Z4 x3 Z/ x2 p
real_mode ENDP
1 p  @9 S* X' T: [) @& d;------------------------------------------------------------------------------------------------' A# E( E  [$ Y. ~& Z2 Q3 G
Get_Commandtail PROC near
5 z$ k. k# ^2 \7 ]" t- u      mov    ah,62h 2 I( [8 a" X; `  o" C  S  v
      int    21h
6 j( ^; n* \+ T+ s5 {5 H) M      mov    es,bx/ B6 T# z- |1 _+ ^. Q. _( H* w- n
      ret5 e; f  S& C" n2 N- W; W6 G& _
Get_Commandtail ENDP   
3 j' C) W. e  S! \* `9 Z;------------------------------------------------------------------------------------------------' K5 Z( q2 f1 Y7 H4 |1 ?; j
PSP proc near
- k; C" ~9 F3 Y. h+ C, O      xor    ebx,ebx
& @8 Q" E3 _! X8 f9 c      mov    si,89h. Z8 @- r" W. S; T
      mov    al,es:[si]# W) M% d" l7 x" q5 ^! |; o
      call   Change( j2 m3 s/ H" M$ ^! N3 d5 v4 E
      mov    cl,4
' \" N! {1 u2 q" ^  O/ J! L! _      shl    ebx,cl  V7 N: A+ z( u, d! d6 E+ e
      add    ebx,eax% m, M, K: e3 i/ y
      mov    al,es:[si+1]* |; ]4 F7 `6 Y8 {  ]
      call   Change* B8 G" _$ s9 a  r" }
      mov    cl,4
4 j- R9 x! w2 k8 x2 Y* x      shl    ebx,cl8 C3 F4 o1 `: j/ Z
      add    ebx,eax
" A7 ?5 ^3 a; o6 v/ H. v      mov    al,es:[si+2]
* m* j$ C, Q" M0 [5 ]8 D9 S4 z9 g" q# J      call   Change! t# T0 ?7 P/ s. a# b1 h
      mov    cl,4+ S# m7 \5 z5 E2 A
      shl    ebx,cl6 }+ c; g! O1 \7 h. A; M: r: F
      add    ebx,eax
8 C8 m6 E* r5 K      mov    al,es:[si+3]1 @, e, p4 b2 l' D0 I
      call   Change  X" {, J: B* Q3 R7 v" O
      mov    cl,4
! ~! K9 k! U+ R1 r' x      shl    ebx,cl
6 Q: x# A* h9 S      add    ebx,eax& y8 u+ L, @1 q. z2 w
      mov    al,es:[si+4]
9 c  o- m" k1 S. M  U      call   Change
9 o& S4 {7 R8 D# f! `8 d# o      mov    cl,4
( h$ \; |. [0 X, o' p5 P' W      shl    ebx,cl3 s# Z' ^  ]- E' a) v
      add    ebx,eax
+ _) p/ T1 E% G+ f4 U      mov    al,es:[si+5]
9 y% n& ?6 V' X% G# i1 ]      call   Change
  [, v9 z# ~2 C  N      mov    cl,4
% ?. A- k7 n  F) c. b9 ]' L9 [      shl    ebx,cl
1 P/ s: p' s  c      add    ebx,eax+ F* |" h  e$ j$ Z4 _- X
      mov    al,es:[si+6], s& \" L3 M* |6 X, H
      call   Change6 x* |1 s) i* Z0 o: [1 F& q! l
      mov    cl,48 D; r. L+ m  v* I; @6 U
      shl    ebx,cl
9 [- c% R& f+ z; H/ c! {: f      add    ebx,eax
  @2 L8 D- n$ w# W, t8 H, }      mov    al,es:[si+7]# T6 M2 A, {9 r+ C5 b8 \
      call   Change, M2 {6 I+ X2 o
      mov    cl,4/ U0 K/ U: n# d2 w; k
      shl    ebx,cl
* X* w. X9 S& i, ^      add    ebx,eax5 H  R9 \% O: R) l* k0 n+ Y
      ret2 u; E: A9 {& x
PSP endp! F8 S1 Y0 h) e' i% I; C! Z
;================================================================================================
4 f2 b( O( D: K5 j; EDPSP proc near7 ~- Y  [7 |8 h/ X
      xor    ebx,ebx) g( m  I* X. v% T) N
      mov    si,8ah$ Y" [) u. v$ N8 f
      mov    al,es:[si]
0 _2 p% H" i& Q* j# k      call   Change/ j- @3 @4 `* v0 k) O* |
      mov    cl,4" N8 Z0 e( s1 g7 u; H
      shl    ebx,cl- J% ?/ Z# R( Q" F% @& c
      add    ebx,eax
, P. ~2 o+ G  P- S! x  t      mov    al,es:[si+1]
( O, m- L( l7 H5 W% P1 `  K      call   Change
# T( O2 p4 q6 y4 ~. a$ g      mov    cl,4
+ j" `% U7 d& L4 l3 {( l- f      shl    ebx,cl
! _& L: a* {4 z( y! x8 d& n5 A: m! v0 b% p      add    ebx,eax
7 E6 w3 k' E8 g5 j" p: @! R      mov    al,es:[si+2]
( C9 P5 _" E1 i3 p( m! x( g" F      call   Change
/ n9 `3 E( A. O+ R      mov    cl,48 U. c0 B0 l& Q" m
      shl    ebx,cl
; R- m- |* I3 g: R+ y( v' T& \, H      add    ebx,eax
% ^8 h; G* a) y3 I; O; e+ n      mov    al,es:[si+3]) t7 C8 [7 o  g& v2 D
      call   Change
) I( m9 e- \+ @      mov    cl,4# k6 b5 Q' v" v% c; t
      shl    ebx,cl
; a* [% {% r) T9 ~      add    ebx,eax
" Z1 ]8 Z, K7 r( S( A' y      mov    al,es:[si+4]5 R3 ^3 z( z) i# g6 \- r
      call   Change9 [; j* ]% _' H
      mov    cl,43 r; A3 I) J9 [
      shl    ebx,cl
# y7 l  l$ S  V5 L/ `      add    ebx,eax
1 v: {# N$ ?+ R& J0 D      mov    al,es:[si+5]
5 x% L8 s: L1 y# E      call   Change
4 c# l- M: B1 @4 R3 M) O5 u8 ~9 j      mov    cl,4
. G- B7 I( e+ ^3 w      shl    ebx,cl
  q6 a& W, L- K' t      add    ebx,eax
% a6 N0 _' o3 S- X3 q      mov    al,es:[si+6]# `5 \7 @, k, Z1 K
      call   Change
. M$ `/ \$ w! C3 f+ I2 f8 {      mov    cl,4
* G5 f7 J2 y. y2 _      shl    ebx,cl6 e( r1 c. U# F% L
      add    ebx,eax9 k: X* o3 y- ]: E% \- k4 m
      mov    al,es:[si+7]
% C3 z  X; l; y2 N      call   Change
1 Z5 X: e0 i: j      mov    cl,4
# w3 X2 O% c: c      shl    ebx,cl6 y7 M+ s  a: p7 |- E$ L% g. b
      add    ebx,eax9 i- ?" z+ h- r- X* M  N7 D
      ret8 ?, c6 s( j* j" ^; U. c
DPSP endp
) s, p, q6 r8 g;================================================================================================
* X' F1 D5 ]  l! q* X  q- g# z, YWDPSP proc near, }8 ^) @. c" h/ N
      xor    eax,eax
+ a" g3 R1 t5 H9 r, v      xor    ebx,ebx
, X6 c) Z1 x4 E      mov    si,93h
- x3 b! u- N1 t. F      mov    al,es:[si]
/ Q/ n6 u  K. e  p& T0 y0 Q7 J) h' [      call   Change! s, L& Z4 d, ^3 f
      mov    cl,4
+ [* j: N* K$ C9 x5 G      shl    ebx,cl5 v/ O0 S$ e* Q  S& U: B- R1 b
      add    ebx,eax1 S2 O5 C- ?. I4 P" R
      mov    al,es:[si+1]) E5 D* V  [( `
      call   Change* @- N: s; t7 P6 H( w% p( d
      mov    cl,4
& l- ?; D3 D8 f6 d3 q/ b" F      shl    ebx,cl
$ ]* [' f  C/ u6 r8 g# l      add    ebx,eax& W; I& A) l: \/ X& H
      mov    al,es:[si+2]
& ]" r# R& l4 B" p9 N2 S      call   Change8 ~3 Q' F+ m- p+ L  b. `& E  j
      mov    cl,48 g7 J/ ?0 a3 `3 e* C8 l
      shl    ebx,cl) R$ \0 d0 X  W: x
      add    ebx,eax
- A' }# ^/ ?0 \9 j+ J      mov    al,es:[si+3]) [+ V' Q& _7 _
      call   Change% d" g# g  P: j. A) v  H
      mov    cl,4
0 W5 n1 u% g/ l# h3 W2 x7 I      shl    ebx,cl4 Z' c3 y- a9 J, b
      add    ebx,eax0 z% G3 J+ s& X; `; n
      mov    al,es:[si+4]; _! Q( ~/ r9 u
      call   Change& f. W8 K* |- p# j! s" k
      mov    cl,4  m* t: R! T; s$ o) w* d. x1 }
      shl    ebx,cl5 a7 @  q" y( H2 U% L9 b! _# E
      add    ebx,eax# y* M& l5 _) J$ t
      mov    al,es:[si+5]3 e9 o4 ^4 s4 R9 Q5 I2 ?. o
      call   Change
( S4 N& w5 K( _0 ^# w: Q, k      mov    cl,4# q* P5 f8 S' Z: C
      shl    ebx,cl0 e; X6 R2 o- F" ^
      add    ebx,eax
1 r# m+ g3 Z. W% c' A- z' `  k  n      mov    al,es:[si+6]
* ^/ R6 @1 w3 S8 V: M6 d# t# }$ ^2 p      call   Change; r2 n+ j* N* G3 G+ r
      mov    cl,4/ f& Z3 ~, K+ G# w1 c
      shl    ebx,cl" l) s3 _7 L$ g8 I9 T4 V6 A6 D' ]
      add    ebx,eax
, P( H. I6 S" T9 y      mov    al,es:[si+7]
+ z( p: [( {  F) |' f      call   Change
+ }% k6 @5 M/ ^1 |8 }5 G      mov    cl,4# s% X/ J" Z+ A8 b$ f- V; F5 Q
      shl    ebx,cl6 S. Q5 O  l- N% n
      add    ebx,eax7 m6 p* Q* M) ~- U  ^5 s: X3 D& l
      ret' ?! D$ H1 h/ V/ l
WDPSP endp
# i7 {$ M9 J1 h;================================================================================================
0 R& T) j3 t  G0 mChange proc near
! ~% T& o' q# K- a0 ^6 ^A:   
  Z& _4 O; b; A/ z' s      movzx  eax,al1 {2 r0 b8 o  |
      mov    edx,eax$ p: M" k4 W4 E
      cmp    eax,'0'            - v3 I# u5 Y( z2 S4 a7 w* _# Y
      jb     A
: Z# W; f4 K3 C      cmp    eax,'9'            
: D( ?  D! R, i7 x      ja     B
" K5 }2 v. \- C: F* R: g; |      sub    eax,'0'" E( c0 s5 u( K( j% o4 M
      jmp    short E* D, S: ?5 z! q1 a4 t
B:
+ _; ^, i+ O, B4 {' s, Q6 n9 |- d      and    eax,0dfh           5 e4 H: R, ]8 n
      mov    edx,eax
3 R5 J& q! O' a9 y! d      sub    eax,37h            
- w( }6 r; C0 {( G4 |, F      cmp    eax,0ah
3 Z- v+ ?7 y7 N! s6 d      jb     A                  : ^6 w3 P3 s7 J2 A7 E
      cmp    eax,0fh6 K- e+ b9 G, F+ k( O+ K/ {" d3 F
      ja     A                  
% a; `$ E# b" `8 [  l  _9 y  g8 gE:) N) z3 l1 j: z6 l% e
      push   eax       + a& k' j+ T+ e. a: i
      call   PRT                ( b/ j' \0 D8 T. {8 K( C+ ~
      pop    eax
4 w: H! ^- f9 K( W1 _CExit:0 o" q# q5 Z0 v% ~! A- A
      ret
: ], ?. k& {* H% h6 q/ WChange endp
( h+ t: A3 Y( E- y4 [;------------------------------------------------------------------------------------------------  c, r5 u  ?( V5 A8 i
PRT proc near
/ c9 @8 [$ b$ \- X: x5 A, o: B      mov    ah,02h' V# Y2 e7 e" C
      int    21h
/ [3 }" E0 T: h, R% ]      ret2 `, \% w4 ?; z+ K8 v
PRT endp
9 Z, T$ _9 C2 q, f;------------------------------------------------------------------------------------------------
  s( S+ a% O' _% Kcrlf proc near
6 Y) {2 ^4 U- ?( z# \3 H( j5 N2 r      mov    ah,02h
0 r9 a0 I* h( R; D, G8 K      mov    dl,0dh
( v( Y) @: v' H2 _% g) E6 x      int    21h- S" \& w) H' i
      mov    ah,02h4 C# E- S/ G& T
      mov    dl,0ah! Y  I: U: Z; w5 A
      int    21h
, n& P: x" Q& m2 s      ret; F- t% y# m# ]8 o# P
crlf endp
: a0 l/ ^9 o) i' p% ?;------------------------------------------------------------------------------------------------
. ]7 H6 `: w+ \- F2 f. m* l6 n_32bits proc near" u1 h* Z5 K% l7 V( z
      pushad$ k4 \' g# Y( R1 f+ {& ]0 N7 z
      mov    cl,4) {4 r0 q9 B5 M7 K+ w
      rol    ebx,cl
' R( n! W  R9 `, c7 t: y+ V      call   print_4_bits
8 e  n: g# f. x) ^- I, ~      rol    ebx,cl. |3 E; u4 D/ h8 R- m% z
      call   print_4_bits
/ x4 ~, W# {& ]7 @1 W+ f+ y9 X      rol    ebx,cl
, B5 m! C% v# l  u" `* e  k* c      call   print_4_bits% f: O1 t& V6 U% s7 T, u" j, }3 X
      rol    ebx,cl
" O3 }% `# X7 Q      call   print_4_bits
8 ?) q  @0 G. F! W5 O  K      rol    ebx,cl% ?* g: O2 D" ~$ W+ ?* P
      call   print_4_bits6 F4 o; A1 W0 V& B9 _) l5 P
      rol    ebx,cl
: a9 K. `& f$ @      call   print_4_bits
, i4 e: H1 t4 o' y; |      rol    ebx,cl
: ?) o) G) w" E- J7 i/ Q$ R$ }      call   print_4_bits1 m; G7 R$ h. b% q, v2 S
      rol    ebx,cl
4 G) }0 p: n. }4 c0 R) z" _; D      call   print_4_bits
: ^" S- Y  M9 L( ^1 D* X( u      rol    ebx,cl
" j6 T) J3 W; o4 Q) H      popad$ r+ v! ^/ B) W) p# W; Y
      ret" G  E4 R8 m& S$ t2 Y* a
_32bits endp$ c/ t4 m  r9 }1 x4 [) v& m
;------------------------------------------------------------------------------------------------( S1 }! o6 e+ Q4 \6 B
_16bits proc near8 L% @2 Z$ \% q9 C& r9 D! ~. e% h
      pusha        * E3 O; N7 a4 Z" ~' W; M" e) Q
      rol    bx,cl/ ]; b5 r7 s# C2 c# w  v
      call   print_4_bits
3 j$ N. Y, i3 y$ ]$ i6 d# d      rol    bx,cl5 w8 b2 W! ]& E9 T8 U3 f
      call   print_4_bits
( z, Q5 c4 |: K0 w( j      rol    bx,cl. g+ S; |0 w/ l0 s% n
      call   print_4_bits  `5 `0 C4 K. w. Y6 r
      rol    bx,cl
" d* X" Q6 v0 P% x: b+ o      call   print_4_bits
& Q0 g9 U" ~" \0 Y' \1 a1 @( y  H5 o      popa' s  G' w; B1 x, \8 ?% G) R$ J9 T
      ret, u# [1 w) A2 I/ |
_16bits endp$ r" H4 c" B7 I5 w0 k/ J
;------------------------------------------------------------------------------------------------. N# g8 i: W; K6 J) ?) g
_8bits proc near" E: P& P+ z2 W* ~1 @3 f, V
      pusha        
5 B1 R  K( P% q      rol    bx,cl" I) f; |, u( Z; C4 U. S9 l
      call   print_4_bits
( Q6 Z' K4 a! C4 g6 V: E3 H# C      rol    bx,cl% o1 X/ O2 ]- R! I1 s5 ?; x1 l
      call   print_4_bits; W0 b7 B- U3 {, w, c. \& n# W% ?
      popa& G6 Y  f! C9 A0 J# e- H
      ret" |$ Y+ h1 S  V- k4 p: j4 J9 E; I
_8bits endp9 s5 y7 X, L! \
print_4_bits proc near7 U, M. M7 s7 E
      mov    dx,bx
& h; h, M5 ^* f% u      and    dl,0fh2 M7 X( Z$ {0 Z/ U+ F/ [
      add    dl,30h: Z, _/ C- o1 \& B. Q# v# k
      cmp    dl,3ah
( K; M8 K0 H0 ?4 a8 q# X3 b      jb     print& V' [' ]+ [5 s; K/ T3 R
      add    dl,7  i4 S8 {" Q& Z+ o; |
print:  ( e! j& _$ _! G" {
      mov    ah,2/ x5 w+ E  W/ X; D5 ?2 d% g0 Y
      int    21h
% K3 w) T2 e2 U9 u1 q7 F" ^      ret
$ K- y3 n# T2 K, ^print_4_bits endp   
2 g0 n$ e3 P6 X+ U4 @CSEG ends* b" l# V- o8 F6 k& d- F
END
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2025-4-29 04:43 , Processed in 0.031965 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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