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

關於SEGMENT 宣告變數的問題

[复制链接]
发表于 2010-10-19 16:50:51 | 显示全部楼层 |阅读模式
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)1 l: m0 @) M. \& N2 ]: Z+ f! `6 |& w

, |" m! f5 ]# ~$ @1 r6 l則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
5 [- t2 {, [; b) [8 M6 \, |- y& [9 ]5 K; V, t7 F. E- N9 S: w  G/ S
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝  0 W4 b" r% t' M. y
, b$ D# I; J! L/ k1 F  g
.model small4 t: s( p9 s5 n
.386p$ ?1 k  C' x  K
DSEG SEGMENT USE16'data' 7 i4 P& Y/ C- a
6 P0 S' G( B* w! O
DESC STRUC; k+ ~0 c2 p9 g* ?- |
     LimitL DW 0
* @, T% G1 h7 w+ z; u+ T& ]+ T$ {) I     BaseL DW 0 0 M$ W& k2 x7 Z  N- Z8 R% |
     BaseM DB 0
. u# S8 m0 j6 x! g4 K8 [8 w+ T; t     Attributes DB 0
* D+ [1 f# ]9 q* G2 w0 P' L1 k- {) J: Y     LimitH DB 0 2 `* P, ~: x& O* _& N* {( E
     BaseH DB 0
+ q, g, @0 g6 z9 k* F/ b0 K" LDESC ENDS9 S  o0 ?# g/ {+ K* M

- n/ ?2 v6 ?. G2 bPDesc STRUC6 U; i% V) e) j
     Limit DW 0 7 U( A; S$ r! C0 C1 U7 M  x0 y
     Base DD 0
4 h6 j( x# P, [: cPDesc ENDS
1 l/ `# F+ N% ]2 I$ G1 f' L$ w% i; L2 y$ `! y# ]
GDT_def Label Fword
2 m" m8 w$ B0 G9 [" hNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>4 {" \' x1 ?; {, y- v* U" c; \# _) [9 s7 D
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>3 g- w5 @% I  C/ H+ p. u3 p7 ^
GDT_Addr PDesc <$-GDT_def-1, >& s& ]6 M9 N6 s

2 j3 m0 B- Q; i- H, yMaddress Dword 05 C8 {: I" ]# j: {$ ~) k7 u9 d

* ]+ W" y! p3 zDSEG ENDS
; Y( |) P: u" I" G8 ?8 C/ d9 GASSUME CS:CSEG,DS:DSEG* Z+ F; @* `0 R& G1 s) h4 r" s
5 B7 [" F6 [( }6 N, E
CSEG SEGMENT USE16'code' 3 s) y3 b. U" K# M0 }
      push   ds
1 t# H) R+ Q* z& y6 X      push   es$ W- ]! c( t+ [8 s  ]/ D
      push   fs
0 M3 t3 |+ j6 g  U9 i. v      push   gs3 i- H* M7 I0 S7 E
      call   big_real_mode     , k7 N5 T% A/ L( l) _. Q
      call   Get_Commandtail8 D$ k* ^+ G" o% Y8 |
      xor    ebx,ebx
* E5 ~4 T! f9 c( A      mov    si,82h
0 \; _7 G7 ^* K( }  E' t      mov    al,es:[si]6 q/ j# @9 F+ M, d' \8 H. Z
      cmp    al,'r', n6 C) t) `! K4 |& R) b
      je     R) D, V5 s* r1 d* H
      cmp    al,'R'0 \* h$ l1 V! U$ `" M/ `
      je     R
/ [: [2 z3 ~. b7 e- w1 c' X      cmp    al,'w'+ f+ b3 {/ [  G# Y
      je     W
# _4 f/ q+ V2 J; `      cmp    al,'W'" q2 u; ~+ M9 \! c( {5 a
      je     W          5 e" ^5 E9 L) P# i, V
R:- q* \- z4 V7 r
      mov    si,84h0 k! ~& t4 f. ^9 Y" d
      mov    al,es:[si]- h! i4 l/ [4 I' u9 B5 J- ^4 L
      cmp    al,'b'; }! {" _2 V4 E' [' @# Z& x$ h1 M+ N
      je     RBT
7 Z9 o# S* ~; X7 b9 g      cmp    al,'B'
6 j3 O( K" |, R2 ]: Y' d      je     RBT
) Z& e6 ]1 G( h  N$ j* Q9 O      cmp    al,'w'$ U1 m! d( r$ M, e) U
      je     RWR+ i) n9 X9 H3 A, I% ~; s
      cmp    al,'W'4 q& Z7 b3 V" {. Z% |
      je     RWR
7 p/ i* j) N& r0 X9 ~      cmp    al,'d'  i8 L- M) W# Z* U% h; O
      je     RDR8 U$ ^' p2 e" m7 {  q$ z  U
      cmp    al,'D'7 Q5 x7 G: q8 \+ ?7 Y, ]* l$ F
      je     RDR            
9 }% V- }+ y1 o! p( A1 b4 OW:      
# o8 o5 s4 l* ?- v: Y      mov    si,84h
: b* `9 R. ?' c2 T      mov    al,es:[si]
  m- w/ x  ^' d8 W      cmp    al,'b'
% |& j2 m3 K) ^2 D' _7 C4 j      je     WBT$ {5 i& u* M* W& G
      cmp    al,'B'1 `4 R# l* i. o3 K. {! u( ]7 y
      je     WBT
' j, w$ x" {" Y+ g$ A8 n  j      cmp    al,'w'
) d/ M  u& k  a  X" d7 q* o      je     WWR
( S* p- v& \0 \/ u0 }. D& g      cmp    al,'W'+ J  r" O4 d# a  j
      je     WWR
+ m8 K" P" B! G- E7 c      cmp    al,'d'3 d2 J5 A! S% g0 Z7 k& o, s
      je     WDR0 S! O% E! p* t7 l" |5 l
      cmp    al,'D'
% v! k% F1 s: a- `$ F& }1 f& F      je     WDR/ ^! ^# A4 m1 m2 R" Y
RBT:
! q9 t9 H9 Z3 v7 c! z      call   PSP        
( U9 t5 W5 Q. F/ R7 }  b. D* P, C      call   crlf           % ~' {% K% p9 ^+ V) l9 d
      mov    esi,ebx
& j! F' m* [9 T      mov    eax,fs:[esi]
' i! J. }+ L: i1 W3 U9 D      out    80h,eax
  P7 G' k* P# ], {+ Y+ ^, ]      mov    ebx,eax
5 O0 \; [9 V6 s8 g6 K# @5 `      call   _8bits
  ?3 y  r2 J' f- {      jmp    Exit, t+ p- ]& p3 \8 v" B- f* f
RWR:
2 ~0 Q/ U5 C& v9 y  M' _5 r      call   PSP        2 i+ |/ q+ |% |9 s5 j! F
      call   crlf           
" {3 t8 a* h" p5 X# p# u( {      mov    esi,ebx
- l+ W4 c1 f4 x0 O6 g      mov    eax,fs:[esi]8 O% _/ w- I) X& A. d, u+ [3 P5 |
      out    80h,eax
- C" n  c2 n  x2 g8 I      mov    ebx,eax3 N  l( S0 M( w# ^  v! q4 q
      call   _16bits
; m3 e% M7 s+ x( X0 b      jmp    Exit7 m" |- \5 R4 a$ k6 W3 z. ?
RDR:6 z1 a: x% f2 q& U1 G; L4 Q
      call   DPSP        
( b" B6 `& {) @      call   crlf           
. X2 E" c( h1 f      mov    esi,ebx7 l2 x- J1 V1 N- k3 u
      mov    eax,fs:[esi]0 u; J* G7 N; q1 O% C6 N
      out    80h,eax
7 C1 G6 _5 U3 a0 Z$ L2 v      mov    ebx,eax2 R" `- K) U: y6 h. p2 ?) W
      call   _32bits1 Z# Z3 X. O0 m+ j( v2 K: c3 v
      jmp    Exit
3 ~1 C1 l! C: t% n7 Y8 C/ o;------------------------------------------------------------------------------------------------* ^' I1 a! U$ I# O/ {, s( p
WBT:
8 n7 }7 d5 V8 m1 R7 X( F. @      jmp    Exit
' N1 F$ O! Q/ i( ]2 rWWR:- ]  X7 Q: M, Y' {4 {' v8 _
      jmp    Exit
$ d; d$ p6 u  r$ T; eWDR:* X5 \# Q. L! s* w" w
      call   DPSP
6 ?& j0 L7 ~7 e/ @( x      mov    Maddress,ebx      
: O; X* x: d9 f      call   crlf/ U$ m3 r) P% e9 P9 t
      call   WDPSP
- M3 [  A" E6 B, q9 T% f      mov    eax,ebx
$ L$ O+ E, L8 s9 d      mov    esi,Maddress          0 ^2 O  b7 {) C  f' P
      mov    fs:[esi],eax
& ]% B' m5 f. R+ ?# M% v      out    80h,eax
: C5 y* J* X  z+ {8 ^# P# {      jmp    Exit' |, c2 F4 s& f9 S0 d9 S* p& ~0 q
;------------------------------------------------------------------------------------------------       / Y& t* \' v! [9 D+ r2 ?
Exit:8 |. A0 v* q* t5 U4 y
      call   real_mode     3 X. Y3 j8 v4 |6 s/ x& H/ x  n
      pop    gs
! _# s, P; M; A5 P* @% e! |1 y) g6 e1 B      pop    fs2 ]6 C1 t( Q3 S9 c* b! B: l
      pop    es) g; _7 y! W8 O) [+ R* t' p
      pop    ds      
) F+ q$ C, X6 G4 p) [      .exit
  ^# e  `3 f! C, S% B# w8 X;------------------------------------------------------------------------------------------------% H1 B3 g$ L' V% C4 }# W
big_real_mode proc near. n" R# G* O' Y6 B7 F1 p
      in     al, 92h, N$ m0 d- ~! f$ A
      or     al, 002
! ]) \1 J3 g* f2 e- d      out    092h, al4 }" I2 K: t3 G. E) {' Q4 |
      out    0edh, al
" H) `5 l$ p0 @      cli+ ^& l1 d8 w4 f+ A, Q* }' a! S5 p
      mov    eax,DSEG
8 m+ k3 v3 H. T# k      shl    eax, 4; y& l, n% W( s' W7 Y
      xor    ebx, ebx
& t8 a6 m8 l8 y# L$ X2 O      mov    ebx, offset GDT_def! ]' e' Y! c# p9 z- k& r! N$ _
      add    eax, ebx
0 @2 U" K; x/ X9 L2 f      mov    dword ptr GDT_Addr.Base, eax. q" t& A1 J3 u! }, m4 W2 V
      lgdt   fword ptr GDT_Addr
% h: a$ r0 d4 u+ [, s      mov    bx, 8
% o/ o& K& M6 c1 K6 t! H      mov    eax, cr0( F. x& f9 v& {7 ?9 l! x1 O+ I" K0 T
      or     al, 1
* D: I7 a; |" F# z4 h' p. J      mov    cr0, eax
( f- D! T& A6 e1 F) g3 F      jmp    PMod
2 y% t8 I2 y  C% _1 BPMod:
- k# \" v8 C! I0 _* T( Z# w      mov    fs, bx/ S( ~+ |, e% s# R6 s6 y0 M
      mov    gs, bx
$ \" I. z) @: N; w- P, |7 y      mov    eax,cr0
1 C* T/ `6 L  T" z6 t      and    al, 0FEh
3 y. g2 s  v# Y) Z' P' U      mov    cr0, eax
6 f( P2 T# w# ^( Q5 L1 ]      jmp    RMod3 B8 @" W; p8 U$ K. P7 e
RMod:$ k% x6 r, U- a
      xor    ax, ax
  S$ {6 O4 M) w' z. k. J' L  L8 j      mov    fs, ax& h6 I  s( g" C& _
      mov    gs, ax     
' c7 E' ?2 N, |      sti     . `% c' y6 Q1 H. Z; k5 k
      ret
2 }  k& ?* E" y: W1 l2 \big_real_mode ENDP7 {- r  [7 R. Y
;------------------------------------------------------------------------------------------------
2 {1 W4 v& Z! B/ w+ Z- l5 wreal_mode proc near
( j. d  _7 G5 P4 q4 ?- _$ X& Q2 [. @) x      in     al, 92h, b+ A$ @: X; J" }. s. q
      and    al, 021 _! C# U3 h* I9 X
      out    92h, al    9 E) _* Y! L2 ^5 ~6 F! N( L0 j
      ret
  H( d: x2 I8 l$ y" n! p! H8 nreal_mode ENDP
. F5 r3 t' k- r;------------------------------------------------------------------------------------------------' ?4 O: l# u. \3 `( X. R! X4 J3 E* X
Get_Commandtail PROC near, ~8 G2 r1 ]/ g7 k
      mov    ah,62h
( C! g* |% `5 i( o* v' H5 T      int    21h+ R3 g& w3 }" i4 y; j
      mov    es,bx
/ P5 t6 w" ?  q) h      ret# X+ L9 V! A. V4 k4 N% N0 A. ~
Get_Commandtail ENDP    4 b% t" K9 H4 C. `' y8 Z0 ^
;------------------------------------------------------------------------------------------------
$ o8 u, J# L3 h; M( YPSP proc near5 R! {9 Y# v2 c6 g% U
      xor    ebx,ebx
& e2 R, A1 b- s6 y5 u: o0 b      mov    si,89h% l% k9 _* @( C+ \
      mov    al,es:[si]: X! y. V$ w" ~
      call   Change
/ C, m. o) J+ X: P      mov    cl,4
" r. Y, f( V% @3 s      shl    ebx,cl
% P4 M3 B; M9 ?      add    ebx,eax
" x' R" }: t3 ?- i  }. G      mov    al,es:[si+1]
% B5 }; H& S) Y) n3 j' q- v* _      call   Change
- R% L5 m- G  Y/ B' E      mov    cl,4
: l5 _9 k& Y' a" a) \: f2 _      shl    ebx,cl  A; R  R$ y! u! z: r
      add    ebx,eax8 i+ Z+ r6 A& ~2 X. ?
      mov    al,es:[si+2]
" o* K5 I, [' y  ]* ]4 p      call   Change
5 o1 i' P" z" E! B  l; T      mov    cl,4
) y! K  j8 G# j4 S# H      shl    ebx,cl+ h# B# j. s: h( _
      add    ebx,eax
! Y9 z  q) p! n# c- x      mov    al,es:[si+3]
# l) i/ \- c- G8 n5 K      call   Change2 Q- t8 N# H! c
      mov    cl,48 w. x( V6 W7 X. n2 c
      shl    ebx,cl
0 f& a/ `% l6 P+ b* @      add    ebx,eax
( v9 D; W! o) F      mov    al,es:[si+4]- J) E) M; G2 n6 i" k. |! ?
      call   Change
7 G5 S+ D. L' P, o      mov    cl,47 n6 Q/ G7 T: d4 n" L5 j: h0 K' C
      shl    ebx,cl
9 C9 W2 s. X+ P( w' L8 d+ T, Q- K      add    ebx,eax
3 ~3 t; H2 M: M! J      mov    al,es:[si+5]; M2 b; y* b2 b0 U, h$ ~7 ]
      call   Change+ ~4 \6 Q( `" z. _2 Z+ v
      mov    cl,4
, J: q! X6 p& `% x- n8 Z; \8 x1 E' W      shl    ebx,cl* l) }$ ^/ w. c) |
      add    ebx,eax
, X- o' Z; Q  z# U      mov    al,es:[si+6]* Q% M# S& u  B+ m9 w% Y! r4 p9 ^
      call   Change
2 Y2 H* \( Q. P      mov    cl,4
! s+ Z2 ~, [" T      shl    ebx,cl
/ y. e+ u& f$ k      add    ebx,eax/ l. [' J) {% [9 h0 ]0 }" z, B
      mov    al,es:[si+7]
+ I/ _$ i$ J* T' T& ?! k# q. z) B      call   Change) p, H1 _  d1 J$ e8 l0 `0 q
      mov    cl,4
/ r( x0 z5 Q" Y4 q      shl    ebx,cl
# d3 C/ E+ f$ N& C6 f/ N: m5 i- O& p      add    ebx,eax, |4 L) F& e! C7 R4 Y
      ret
  L- ~9 @, ^; r8 cPSP endp
- ]" C4 ?$ @) ~9 j/ N0 G' Y;================================================================================================
2 k' [% @- t9 M6 m* f* mDPSP proc near
/ U8 Z& i, C) ]" J  x6 c- e& k      xor    ebx,ebx
# s8 |" S' a1 d# {      mov    si,8ah  Z" J% ~. r5 e# R5 \
      mov    al,es:[si]' h7 }! @" r5 T6 z+ W
      call   Change' C& {2 I" p: R$ f& W! g3 q" {% p
      mov    cl,43 Q8 t0 s) d: V  B8 A. [
      shl    ebx,cl
3 M6 q6 F& f# `0 |      add    ebx,eax
6 @. X9 y3 ^3 c# Y0 G! N* \; h. o+ i      mov    al,es:[si+1]
. N# l. g) y4 t- ]      call   Change- g% @2 J# t! N' O. q2 J! v/ `, ?
      mov    cl,4$ {3 `8 u- g1 K/ l4 @2 R8 X0 x
      shl    ebx,cl
- Y! B& e- M/ R# e1 g8 U      add    ebx,eax
; d& _( O5 H- m      mov    al,es:[si+2]
/ }! B  U$ L' o  M9 u$ R" G4 o% S      call   Change
6 w6 q+ O* n7 {8 t      mov    cl,4
8 H2 W! \, m4 `; d; }      shl    ebx,cl  }! c# D+ I3 p! s% C6 o9 T
      add    ebx,eax9 }+ c2 v6 }  I2 T7 a
      mov    al,es:[si+3]. ?, O: ~/ i; G  D( {
      call   Change5 H8 O! w( i& o4 d/ z
      mov    cl,4
: W' H3 x6 x7 t- }. S      shl    ebx,cl- I1 K9 P$ J- @; Z8 s+ e% x! ~
      add    ebx,eax
1 a5 Z! b1 z5 Y/ j0 ^0 n      mov    al,es:[si+4]" h( F+ K" B% ?+ \
      call   Change
" i5 F' g% T, E      mov    cl,4
. X9 d2 o! w) [      shl    ebx,cl3 m' L/ W1 j& H( h1 b8 f4 o, P
      add    ebx,eax6 |' p, [, g: K2 M- P# B
      mov    al,es:[si+5]  K% i% P" v1 k) E  D2 V
      call   Change
; C" z2 ?$ e/ [; i1 E      mov    cl,4
2 v2 U( K* q4 v2 w2 O0 n      shl    ebx,cl8 T! c! |6 W  q: N" v1 p  Z8 k! i$ ^- |$ P
      add    ebx,eax, L0 ?2 H9 v- a! j! \& T
      mov    al,es:[si+6]( {/ O8 u6 E% Z
      call   Change
( y6 M9 J' B5 P" K; L      mov    cl,48 r4 N) T( F4 e- L6 w. N2 c; B2 d8 c
      shl    ebx,cl
) D* \+ h' I2 A8 y# g( @      add    ebx,eax
6 Z. T: v8 @! q- t. l      mov    al,es:[si+7]* j' |, B( h3 }- x6 W' d
      call   Change
( u7 l0 S" P3 y! Z: }$ B+ a- G      mov    cl,4
( B; x. w( B5 Z) g      shl    ebx,cl- \4 u3 ]# ~. J5 \8 \
      add    ebx,eax
! R8 W- F# P. T& O$ t* P      ret
" E* A9 h" ~8 A- r. w$ CDPSP endp
7 J. ?3 @' F8 x;================================================================================================
/ E1 G0 _1 B& O/ xWDPSP proc near
7 I* v" T+ {& Y2 p, R% u      xor    eax,eax6 O! r& J+ D. q7 J, c
      xor    ebx,ebx8 G  C6 `. S3 b4 [& x
      mov    si,93h
* Z- L% P0 h) L/ j* F& j, I- j      mov    al,es:[si]7 @6 T/ D4 J. x) q8 Y- y6 C- @
      call   Change$ I' D/ F6 U1 g1 S/ h$ |
      mov    cl,40 p: P. ]2 @$ |! f% t* `9 y0 i/ e
      shl    ebx,cl5 ~( O- Z- M0 G4 J+ W( S# E
      add    ebx,eax1 G' r4 ^2 Q* I3 G# [* Z! Z" ~
      mov    al,es:[si+1]  Y& ]) ?9 J3 i
      call   Change
* y" r" I$ [' Q      mov    cl,4+ T  J' l+ h5 I
      shl    ebx,cl
3 n; K6 U0 O) V& H, U# u      add    ebx,eax5 w1 V$ W4 T2 m  @, D) k! G+ C
      mov    al,es:[si+2]- o) L7 ~0 p$ G. d
      call   Change
$ f3 g! u/ t! R: R$ |/ p      mov    cl,44 `0 X6 j2 u: y3 Y+ Z
      shl    ebx,cl
/ R$ A2 }& M+ I$ ?      add    ebx,eax  Y: f8 s6 y6 {" g* |& @7 q
      mov    al,es:[si+3]
/ Q: I$ I( O, ^  q$ Z      call   Change. W: I8 [5 S9 g& V
      mov    cl,4# M% o# N$ W2 F; J9 U
      shl    ebx,cl
" \; m) \$ g1 y9 `( C. ?4 V8 ~; p      add    ebx,eax: x$ ~* }1 b( ^) I, X1 q
      mov    al,es:[si+4]
  h& m2 d! f% {, h/ Q      call   Change, \8 T; n0 v: n- o( l
      mov    cl,4- ]4 G  v- \) }3 L- b' k+ ~
      shl    ebx,cl
: l) J' F! A8 u4 B! D7 T5 v      add    ebx,eax
2 L! A  X/ S9 @3 Q% R      mov    al,es:[si+5]8 Z; U7 f: R1 f: e! _
      call   Change$ y5 A0 F$ W$ G
      mov    cl,4
$ E* Z; N6 d/ T7 K      shl    ebx,cl
) W- |9 Z* B2 R. O4 A      add    ebx,eax
, ~9 ~% B, u1 h      mov    al,es:[si+6]' F: r  P: b$ [" N- h" T, Q* q0 {
      call   Change0 N- h5 J. u: B$ m( o  r  i
      mov    cl,4  y, t6 X4 g, l' F% h3 F0 P
      shl    ebx,cl
( Z: G# D. s( ~, W, j0 |! c      add    ebx,eax
7 B& m, R/ q( N9 U( j      mov    al,es:[si+7]
) \; H6 p0 ?# `! c: t9 w      call   Change
) h/ m! i  Q+ M& Z( i' p" {      mov    cl,48 Q9 Y5 d4 j5 E8 F  V
      shl    ebx,cl3 Z4 I* }( }1 O& j7 W3 l) ~6 Q
      add    ebx,eax
! z# U" b! c! C+ v6 a  K      ret5 E4 h5 P7 {: n$ q% Y- R
WDPSP endp- x$ K7 O5 Z7 i4 w
;================================================================================================: C1 |9 B, \3 ?( S/ ^
Change proc near4 x6 g) Y& n! H, @5 Z, T8 J
A:    # p. m. N) B  S
      movzx  eax,al
) R6 Q& e6 k; Q. f$ q      mov    edx,eax
! f( u$ Y! f1 N      cmp    eax,'0'            
" b) `8 G8 J$ Z8 d& V+ f      jb     A5 K2 V- v4 J+ G! _! ~4 ?
      cmp    eax,'9'            2 L8 L7 Z- V1 N
      ja     B2 w- @1 \& U$ ~
      sub    eax,'0'
9 {4 `$ w% m0 s' D6 @, Q      jmp    short E
% @  O1 m8 ^0 H, bB:, `( j8 @; B/ ?* N
      and    eax,0dfh           * B4 o( M- `; ~( m# G
      mov    edx,eax
' P3 c' ?' ?! s2 p; e+ y& [      sub    eax,37h            
& f& G+ C4 i( N( M% R0 @, {6 Q      cmp    eax,0ah0 b& [( @: ?7 P
      jb     A                  8 k6 j3 C! l* {+ {* D4 M
      cmp    eax,0fh
( w" j  F) \6 q( U# L: J" S7 c      ja     A                  
8 W+ `/ _( c& [+ K) WE:1 U  I, ^1 N  k9 J1 m0 N
      push   eax       , }( N7 B0 n) Q
      call   PRT                ' K0 l6 X* b2 `% u
      pop    eax; W: z& p& V9 N8 l
CExit:
/ M" U2 t9 D, T) Z      ret0 s( s6 l+ F+ b/ D! R
Change endp$ J- Z7 ^3 j" V- m
;------------------------------------------------------------------------------------------------- R9 k4 W; }+ z. s
PRT proc near( i' P. C% Q* @" Y" |( s: Q$ T
      mov    ah,02h
  L( O7 _& C- ^9 n& _% |7 c      int    21h
7 G/ x1 i/ @2 e/ X      ret
+ X1 w+ f- j* G* r5 iPRT endp
6 G1 V. y9 P  H* S& z; P;------------------------------------------------------------------------------------------------
4 B( p: e" \; J) g/ A: Fcrlf proc near
/ s) P$ T& V, `8 U! b      mov    ah,02h
) `# J8 p3 O  s2 X1 A. O      mov    dl,0dh+ {  m* M% Q2 s! O) n0 Q. T, G
      int    21h( J6 h4 X. H, a+ e/ M
      mov    ah,02h: N. s  C1 D) o& z+ a) i
      mov    dl,0ah
$ F; }# g6 G; a7 @8 \; V& s0 P4 Y      int    21h; t' {1 v+ Y& ~0 M5 H% d1 K
      ret
3 H( z, q. }! o6 n: x" J. l4 mcrlf endp% S/ @' G; f( @5 O
;------------------------------------------------------------------------------------------------: V9 S: m0 h( ~# O
_32bits proc near! K$ r. ]7 g. j. b( U/ o5 R
      pushad
6 s1 ?7 _& }! {      mov    cl,4
* x' n7 ^4 u2 Q( P& X/ T* |! `      rol    ebx,cl
9 u6 Y4 n6 X7 _3 }4 L6 Q; Y7 N      call   print_4_bits9 t) [/ _/ y9 d2 v& m; i4 K
      rol    ebx,cl
( o( [% ~; I. A1 Q5 F      call   print_4_bits
& g* x! N6 ]6 q$ o      rol    ebx,cl
" r# E* c3 W6 N4 t+ k& C5 n$ E      call   print_4_bits: {- y6 {) S5 v* c  O& E
      rol    ebx,cl$ m5 x0 c2 ]+ r7 z* j4 D! o* ]
      call   print_4_bits& \" h4 T* C) s/ ~* n: }
      rol    ebx,cl
2 O/ H* v4 s* v& g      call   print_4_bits- ?* f6 k7 g9 X& Q8 F$ W
      rol    ebx,cl0 h: |5 z% e2 d, X% B. K0 d
      call   print_4_bits
4 d& k$ E9 _* h( a$ |      rol    ebx,cl6 |$ a+ i- K) ~" A, T$ p: N
      call   print_4_bits2 \+ ?% k* ]: b9 |
      rol    ebx,cl" k9 @1 q3 t  y1 z
      call   print_4_bits
' C2 L& d9 R4 h- m! Z0 V      rol    ebx,cl) M3 R9 L' Y, s+ }' y+ X: _& N0 J
      popad0 d$ y7 H! g$ I$ T3 a& {# q/ d
      ret$ G0 S7 I4 m* \1 k
_32bits endp/ L4 ~* y- [/ s
;------------------------------------------------------------------------------------------------" M7 D9 s) i0 y' j  `
_16bits proc near
: e$ O8 }0 @# u; x+ {* E$ k      pusha        
1 a) q# |6 K* Q; Y      rol    bx,cl
- a0 J- r. x! h$ N) t% @      call   print_4_bits
: f5 }8 X. E. Y8 Y0 j) z      rol    bx,cl) f1 x+ \+ g; p% G
      call   print_4_bits
! o  p( h9 l  x# c7 E% Q. R      rol    bx,cl# ]! m  v0 A& X0 d: i& B
      call   print_4_bits
  L) l: I9 D" G# Y  ?+ o% ^      rol    bx,cl
8 e. X* ^# f* X1 X' L, \2 d' ]  S* J      call   print_4_bits
9 H& F! @& q/ a3 V( y6 ^( t      popa
1 F, S$ K6 Y% W; L& ^      ret5 ~2 j) E/ o0 i( L
_16bits endp  c+ Z$ V+ M' n/ L6 U( ?; q
;------------------------------------------------------------------------------------------------
3 M( b$ X  f3 k/ ?_8bits proc near
: h* L1 a# Y2 E# W+ U4 b& R      pusha        7 S& z3 N/ G3 H( v
      rol    bx,cl
! j8 }3 V* z# b( Z8 |' @9 S. q1 f      call   print_4_bits( |8 r- A7 k- X0 C8 B+ R+ e
      rol    bx,cl
. a/ Q( \1 D2 m/ q* I' i* H. d      call   print_4_bits' [3 t5 M; }9 ?  Y" X; @+ d
      popa0 F! ^& ^+ Q, J5 w9 e) c$ {7 h
      ret
# W6 C! l% b; b  t" K. h. V_8bits endp2 a# a4 U+ y0 ?3 s
print_4_bits proc near. a% G8 a/ [* E" }+ F; [8 S
      mov    dx,bx, ?: r9 [2 M6 j5 t  i. c
      and    dl,0fh/ ]) ~, A* @# n5 C& T
      add    dl,30h2 |8 N) B4 w* a
      cmp    dl,3ah
1 c& [' a# P$ N9 d7 I      jb     print
' L5 G: B. E1 Z: H6 {( H      add    dl,7
- J0 a$ S7 q8 E) bprint:  
7 y2 J* ~/ V7 I0 _3 g      mov    ah,2
  }5 ~! L  o( V0 \# Z      int    21h
4 |: B4 I7 X2 q* ~, u. h: y; z      ret2 W4 Z5 C; {2 F/ O0 L
print_4_bits endp    9 i9 P1 D! S- _! Y7 Q! R' p
CSEG ends8 K7 b  G+ B& O4 [  `
END
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2025-2-19 05:55 , Processed in 0.127913 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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