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

關於SEGMENT 宣告變數的問題

[复制链接]
发表于 2010-10-19 16:50:51 | 显示全部楼层 |阅读模式
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)
/ V5 V, }) L/ V, B
( j! T5 P9 h; e) u; v  f則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'+ K0 \7 N/ i/ z; f

4 g3 Q$ |& f9 w7 b% v) S7 \宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝  
# Y' u' j6 ^) P' f! \; V1 x
4 ~. ?) h* T  s: ^.model small6 y% E- k: i8 j$ m. D
.386p0 l! K  z: t8 M' V! s
DSEG SEGMENT USE16'data' : t' r- d# @" g7 ~

3 s) j' v0 ~& F) _$ a, K* XDESC STRUC5 W$ O* @# z7 B1 [& }
     LimitL DW 0
% i+ B7 F& [5 w! E( l! ~     BaseL DW 0 ( m6 l- R0 [' a: W
     BaseM DB 0 ( A4 W1 A! }4 n3 G  Y3 n$ G
     Attributes DB 0
+ y6 C7 y" H: J& }4 q6 _     LimitH DB 0 * M& \9 P- _8 T& ~8 X6 y
     BaseH DB 0 7 N, o$ }. l7 M
DESC ENDS8 j4 @; O* n2 G5 G' L
( n/ M" P3 r- f1 V. x
PDesc STRUC
5 \# D, h: h: s/ _3 M     Limit DW 0 # d" R. Z& w! g- Q: s
     Base DD 0 # q  V; V5 Y; m: {1 @  V
PDesc ENDS' G/ r5 U. y1 w; c+ V) Q

* n  f5 j/ q  i8 M1 h3 \GDT_def Label Fword6 P: Z. i6 X  x, U
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>3 H/ ?" n/ e- U  T( e
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
) v7 j; [7 V! F) mGDT_Addr PDesc <$-GDT_def-1, >* i7 s* k6 b2 r/ |% L

% V  h# r. I( e; N# h4 H' EMaddress Dword 0
$ b* z, `. {: T5 g! L5 g! x' \/ a3 n5 E  R) d9 }6 R6 u
DSEG ENDS * P6 j) V' F% i  B2 g6 _( m! l
ASSUME CS:CSEG,DS:DSEG
  I, ?, R$ Q9 s
7 U2 i- ]# H6 J9 E/ lCSEG SEGMENT USE16'code'
4 ]' Z) ^5 {4 C- L4 x      push   ds, ]# Q( q. h% D+ b% `
      push   es7 v+ a) R& c2 }0 O" I
      push   fs: P+ F% ?3 _8 F8 r! d7 ]
      push   gs. b+ Z1 y+ F/ N5 V, d7 O* H
      call   big_real_mode     5 ]$ Y) }2 I3 E" I2 j; e
      call   Get_Commandtail0 D, }; s8 j  F1 t/ p
      xor    ebx,ebx
/ e, F8 ^: F# d" O; J& N      mov    si,82h; F; P8 ]0 }+ V6 z; X
      mov    al,es:[si]
4 e1 l- D9 e' B2 v1 d2 q      cmp    al,'r'
1 z% |: f% q3 i* f      je     R' n/ e# m& y# ?2 O1 A" n, S; H
      cmp    al,'R'* ]- b# V9 C* }6 K: B7 i2 _
      je     R
2 x4 v, E" Y. E4 O. Z. i      cmp    al,'w'" H* N: h9 r  E( R, Z. m2 f
      je     W
9 r/ G/ ^+ F, }) ], ~, z      cmp    al,'W'
9 _+ E# h3 V# _9 i6 Y* M+ j9 G      je     W          7 m* S9 e- p! ]5 X2 P- K3 j2 r  [
R:# F6 @9 g7 K% y1 }- A& y9 T
      mov    si,84h9 O9 c/ Q( f! I1 J0 l
      mov    al,es:[si]' [' [, ]2 {6 ]" m
      cmp    al,'b'
  o# H# f$ i1 w7 P9 R      je     RBT
- S- [% w8 R! H: u# l, p      cmp    al,'B': a3 F1 a* H. C, k$ l# i
      je     RBT
2 O4 X2 ]. H( x. ~3 Y$ \      cmp    al,'w') B; d' b$ R) M% t' q
      je     RWR9 F# C: X; @; {4 B5 g
      cmp    al,'W'9 D8 X/ L$ U4 k1 d
      je     RWR3 {5 O; v) x0 f3 I& o, V% i( `
      cmp    al,'d'
6 B  }+ p, ?# [+ n" d8 ^      je     RDR* Z3 l4 [5 f2 }0 ]& u
      cmp    al,'D'; d: ^+ K. }0 j( D8 D
      je     RDR             5 x* m9 C5 Y+ I* Z- [1 p% }* W6 w
W:      ! D* P9 q4 `" b0 V/ J& d
      mov    si,84h
$ e9 c' p) y& j; ]- w2 g      mov    al,es:[si]- d) n( A9 v( p$ J$ b. @$ c
      cmp    al,'b'
& @! [5 d. h' I      je     WBT
8 ]" O- }3 o9 z      cmp    al,'B'+ D9 X6 t6 `" V- P  T
      je     WBT
, T: x6 @9 W7 L! \) M& Z6 f      cmp    al,'w'" \! ?" I  q  j2 t# x
      je     WWR! E% J9 ~9 O( C& }7 s- \# H
      cmp    al,'W'
! L- Z9 I* |+ l9 B( K( l  s9 f! H      je     WWR
; a/ ^/ v% Z$ q) g; ~      cmp    al,'d', r' C3 q! z' R# k. ]
      je     WDR0 ^, f+ @! U/ A6 x' e& b4 }
      cmp    al,'D'% o- j) X4 Q  n0 A5 b/ k+ w. S
      je     WDR
( H* S5 Z8 ]+ j9 O7 K4 t6 b- aRBT:1 a+ h+ D! n: P6 F; @3 {2 w- d
      call   PSP        
3 h' ?( a( H5 o2 l" G- \& x" ]$ V& d      call   crlf           * }% J$ _  g6 _5 w" t9 d0 I' V
      mov    esi,ebx  ?9 P. l$ l' a: C% R* ]8 v2 R/ f
      mov    eax,fs:[esi]( T& H* O2 c: ^' |2 F- b" [$ v
      out    80h,eax
' W( W' Z( D9 n6 D      mov    ebx,eax
0 I+ H4 z9 U* u, N9 c      call   _8bits
7 G0 C6 k5 g* r0 z5 q$ ^# X4 P      jmp    Exit
) |! B. s, j/ V' o" dRWR:
1 I' l; u7 W7 Y* C2 N      call   PSP        
! B) S& A  N' v$ e; b0 N, i2 V      call   crlf           $ B# E! R/ W( C1 j* Y# D9 g
      mov    esi,ebx* b/ g- f. Y" r* u9 K% E8 V7 l
      mov    eax,fs:[esi]; c; Q2 b, Z& E; b, `6 F0 Y: ~
      out    80h,eax( q  F2 L7 S  S; g
      mov    ebx,eax
1 t  M0 `: V6 D2 j7 e- G! D  E      call   _16bits; a0 _  F3 N1 L$ n/ I; j# Z8 b" _4 E+ ~
      jmp    Exit+ a7 V# a# i" M' U
RDR:
% J, V: Z- ?" j9 ]. G/ |      call   DPSP        
& m  T/ G9 y+ ~: H- b2 _0 P4 U      call   crlf           
) J+ T% [/ V$ j! V+ @      mov    esi,ebx, U& v* P5 m) z9 v1 |/ U
      mov    eax,fs:[esi]* [0 ~) C1 L3 I" _; t
      out    80h,eax+ t% X' a1 g3 u
      mov    ebx,eax
% L! p9 l# Q6 w8 R( s( F/ q      call   _32bits
$ g- W& l0 Y& w8 g$ J      jmp    Exit/ G* e( N1 V  {5 O4 F) p
;------------------------------------------------------------------------------------------------
* w9 B$ U5 a$ |& C% Y2 BWBT:
4 N+ A; t9 c+ {6 _, s1 a      jmp    Exit
! B7 K$ M+ S. @9 E# h( A2 F' ^WWR:2 {: `4 q/ @' j1 ?
      jmp    Exit& g. B4 S8 ?3 x
WDR:7 r9 c5 Y! s1 V+ a7 V1 q/ h; V
      call   DPSP
6 h3 N# r3 I$ L6 R      mov    Maddress,ebx      
  S4 q$ M' |7 F6 o* I4 C4 k      call   crlf# T( i$ n. \/ i4 S; ]! [
      call   WDPSP4 A9 [: V% j1 M* \8 ^
      mov    eax,ebx
( y  [9 T# D. M! O" P* E      mov    esi,Maddress         
) W: E/ Z; B; }5 Q1 K7 B' W! }/ v! u      mov    fs:[esi],eax; b4 ]- ]' [) V) G6 S, s6 @% c+ U; P/ J
      out    80h,eax$ k" r  u% M6 h0 t" F2 T
      jmp    Exit
+ `, O* _" \# `3 x  m;------------------------------------------------------------------------------------------------       . s* y0 n9 \$ O8 |3 {# A1 J
Exit:
& o0 X: ^+ [/ v6 U* A. e      call   real_mode     
$ r8 M( J9 v7 M/ q/ O# N      pop    gs
- M; Y6 j) |3 R" [4 v3 l" F9 r      pop    fs
! p) c( T, u  ~1 D      pop    es
" ~7 H$ k, L( s7 e) H3 {4 C3 W      pop    ds       4 u. Q- N9 E/ `* Y# g
      .exit
0 \, s- Q7 D; A& V, i;------------------------------------------------------------------------------------------------5 d- Y$ p" J  r$ i  Y( I# J( z
big_real_mode proc near) t( i. ?( W9 M0 j6 Z5 O
      in     al, 92h& P$ Z$ r6 h+ A) W$ M2 q* i; j
      or     al, 002
1 y5 {4 c5 @- D9 a* G, S3 e/ m      out    092h, al
; [% o6 K4 C9 L' q% y      out    0edh, al; ~1 p$ T+ i$ i8 B& C3 u
      cli( J* k0 ]* Y' R9 A! P) ^
      mov    eax,DSEG: i3 P1 q/ ?! G$ q  ~% E* ^1 L/ J
      shl    eax, 4* p! y- `3 H' i2 n# P, z
      xor    ebx, ebx
" B( Q4 A! `+ e7 k  u  M      mov    ebx, offset GDT_def" x$ E9 m+ N, ]
      add    eax, ebx
$ l: _) a* T; q$ b- q+ U      mov    dword ptr GDT_Addr.Base, eax
1 s; K& }' [7 f      lgdt   fword ptr GDT_Addr% V* z1 d" k2 Z# ]! b& E" G
      mov    bx, 8
& C9 d+ E1 L. Z, J5 X( G9 y' ^      mov    eax, cr0! @7 z% S; u% d. ?% G
      or     al, 1# E$ S) f8 `5 O' X& `  X+ B
      mov    cr0, eax- P0 S$ [0 j- O( G: s8 B1 j7 b
      jmp    PMod2 O4 Y* B5 ~5 H" h& h
PMod:* j5 ^! [& ]) V. H( F" h
      mov    fs, bx2 P/ V  H. U$ d  u* S: ^6 |
      mov    gs, bx
5 P& j; E# E  O6 G7 J3 o      mov    eax,cr0
7 P6 p$ X7 \2 f& a" P/ \; k8 u7 I$ n0 ?      and    al, 0FEh6 f8 B4 [) V% t5 @3 }3 f0 b0 d5 z+ C
      mov    cr0, eax
3 g, G8 H4 u2 g) D" D      jmp    RMod4 l- k& T/ Z! e
RMod:1 ], p( Z; J5 a: ~) i
      xor    ax, ax% |/ y7 f5 `, o" P) d+ o9 T
      mov    fs, ax
. Z& y) c) l8 o0 C  V      mov    gs, ax     # S# _4 D4 x; t& j7 T- `
      sti       N! s0 ?! x" b2 ?0 C2 K
      ret
0 k: N0 b5 H9 j1 c" rbig_real_mode ENDP7 t( K$ g( J8 V$ K, Z0 R9 C( z
;------------------------------------------------------------------------------------------------
# m9 W! F6 j- D5 w/ _( ?real_mode proc near
! @9 N% h. t4 @) N# [1 i0 n      in     al, 92h7 S: N- M; A5 @" k- y8 H
      and    al, 02
2 K/ V& y' I! M6 U" O      out    92h, al   
, ?% a& n9 X# i, D- y! j      ret
- J6 ^8 C6 C, h! W% Vreal_mode ENDP! n1 O" O8 [, K; Z2 w# E
;------------------------------------------------------------------------------------------------# s7 q$ _$ O, G* c0 o
Get_Commandtail PROC near* z1 j% g; L, M
      mov    ah,62h
- G. }* C+ o+ h, _6 r2 X; ~" ^2 o: z      int    21h4 P4 [6 M9 C; W1 R, |' v
      mov    es,bx
$ D( q) G5 e* Z3 Y      ret
! A4 ]+ i" P0 |% X$ J0 `Get_Commandtail ENDP    ! v+ B' H% G! }" z
;------------------------------------------------------------------------------------------------
5 ?5 i/ p) ]* ]2 }  ?) U& C& vPSP proc near" A. {. H( r* j4 X: M$ v- I
      xor    ebx,ebx
7 Q" {2 Q0 p9 p2 N' q/ w      mov    si,89h
0 j6 ^7 a- s  S# v. m# M# I$ k      mov    al,es:[si]
3 |  I7 c: O: r" k- h' l      call   Change* H7 `! R3 S5 G5 c) _' ~, N  B, c
      mov    cl,4
! s6 `9 I5 b3 g8 f& i( X      shl    ebx,cl
) e1 ?: H3 s) r3 D7 I      add    ebx,eax
# h' e* H: {& R. k: W: T; p. }      mov    al,es:[si+1], G2 R! |# b$ \) a9 X( N+ R4 J
      call   Change
8 t8 b" u. N5 C# R; S1 S: P( a      mov    cl,4& a3 S- Y: i1 [
      shl    ebx,cl) c% R& ~6 g) A) F
      add    ebx,eax
' m2 |2 x4 c, Z- E4 A2 L  ]. Q8 s      mov    al,es:[si+2]
- Z5 @8 t7 z* ~" n6 c9 G3 N# J      call   Change
8 d% e& [% `8 {' E7 z! @! c      mov    cl,4( ~( E+ J  a& f+ d; w4 J0 ?& U) T
      shl    ebx,cl
/ `+ O+ `, _% Y' [0 i' H- i; z      add    ebx,eax$ g1 I+ W/ N6 b( k# ^: V
      mov    al,es:[si+3]0 ^7 b$ m% ~" `% a9 v
      call   Change% h* r" h7 t3 t! {! [! s/ k
      mov    cl,4
8 ]9 q/ Y, h4 @- o9 W; g3 M      shl    ebx,cl
; ~( ^& Z7 t) z' W+ O. B$ j+ m: N      add    ebx,eax
) J% X8 t7 x$ ?      mov    al,es:[si+4]3 {; d5 R; C9 D
      call   Change
, ]; T: O' y$ m9 I! M* I      mov    cl,45 R6 ~9 N/ r' V# [/ R
      shl    ebx,cl3 h; p) z- a) \4 P7 d9 ?
      add    ebx,eax4 v: Q/ [- z9 G1 E  y3 R8 d7 b
      mov    al,es:[si+5]
" Y7 p" B: S& O" L5 F1 k      call   Change
7 e3 z& d+ @- b# s      mov    cl,4* Q1 }. u/ z5 ~7 d
      shl    ebx,cl
4 [2 b  K2 A, G; c/ z, K( J% a3 d      add    ebx,eax
  K2 E3 @& y) W+ x( s7 g, G  j0 u      mov    al,es:[si+6]
$ ?' e& J  f8 r0 c+ \: l      call   Change
6 O! c" |0 W0 Q. `7 |, \      mov    cl,42 k4 m6 h" j3 e, a; y' D* j
      shl    ebx,cl4 ^9 c+ u( a/ R1 i$ X) K
      add    ebx,eax0 w( L: u% \3 n
      mov    al,es:[si+7]
) d$ t/ \4 \2 W. S# _' ]- i. M0 s      call   Change- ~; V# w3 a# @& H
      mov    cl,4
0 t  d$ l* m6 v, h9 ^) ]1 W6 |! {! ~6 B      shl    ebx,cl& X+ b4 G, W% e; ~9 M0 D
      add    ebx,eax
9 d$ A0 G" w' y* L; \# b      ret
0 ~1 @. J3 l- s) lPSP endp- f& l9 k/ M$ N' o. `
;================================================================================================
; s+ g* p! V( H( V9 c7 @DPSP proc near. j( X/ G6 A# W2 T/ p  h, o
      xor    ebx,ebx5 P; ?4 J# I9 C. v* Z- W$ y
      mov    si,8ah4 D; ~0 _3 ~% ^, x3 y
      mov    al,es:[si]
) t8 |3 S' m7 [2 c7 w+ z2 s" G      call   Change
, O0 f. L% R9 C      mov    cl,4) f, S/ Y3 u; i( B
      shl    ebx,cl
6 Y8 r4 Q' ^9 e& |      add    ebx,eax4 Z7 o" x  f6 ]( U. v# p
      mov    al,es:[si+1]
( X5 e- y( ~  z& @8 m5 s& b* `      call   Change) ^- o8 W4 \8 P7 I' {
      mov    cl,45 w4 t' b5 H3 x4 X( [/ K
      shl    ebx,cl
& Y9 j% L8 E2 ^% E& B- d      add    ebx,eax
; y5 c! K4 x% ?6 F7 J) y; n      mov    al,es:[si+2]+ y* F3 R  V) {; A) S9 j
      call   Change
; `. M$ @2 f! S% [5 ~      mov    cl,4
2 C9 |: f7 A( b      shl    ebx,cl1 C5 w, ^) }' z  p- B" a- f& B' d: {
      add    ebx,eax
- l4 u6 u! l! J      mov    al,es:[si+3]
  D5 c, @+ O( |0 y+ X4 A: O      call   Change1 l* G, j) x8 \3 `$ {
      mov    cl,4; I0 i; y% F* g
      shl    ebx,cl! E2 P, j: w* |$ q+ W! W; D
      add    ebx,eax
9 S5 ]3 ~4 s! z% c" H% l& q      mov    al,es:[si+4]3 @" I! z1 \% s! t, X
      call   Change
5 U9 `7 h3 ~, B' w; w2 _      mov    cl,4
* d" X, f" j2 d4 |5 H- z      shl    ebx,cl
6 Y$ H- a6 ]- X* Y3 s6 r      add    ebx,eax
* s& N+ @+ U, E" e      mov    al,es:[si+5]  `* Q: y) N6 }0 `: b
      call   Change! X- a3 @, W( M" N8 K- Z
      mov    cl,4
5 D$ z, v7 |+ V( J" M0 P      shl    ebx,cl, w) j: A$ i8 ~9 H
      add    ebx,eax
' P/ x9 K$ z6 F$ X3 H6 z. n      mov    al,es:[si+6]
( k* j) M2 L+ F6 O* L      call   Change
# g* W, u' s0 Z( v0 }! D, l      mov    cl,4  T% h5 w; \: l/ q) u. ?
      shl    ebx,cl
# J. r! m* g# J& ]) y7 b; ?      add    ebx,eax8 z. I% v0 ~+ y+ z/ i
      mov    al,es:[si+7]
2 T# {2 v" V# i* i  @1 j& H      call   Change* ?8 Y/ X0 X" v& }/ L+ s! O
      mov    cl,4$ ~4 M3 m+ S" ~4 A* V* C+ D8 k% \
      shl    ebx,cl  p1 A( \/ r) k) h% M# \0 D& L
      add    ebx,eax
; s  i; B4 p3 z9 q8 d1 @      ret1 g8 }% J2 ?1 }
DPSP endp, d* ?( |( d& @3 x
;================================================================================================
; a9 N4 w3 E! {8 _. NWDPSP proc near7 l2 \# g* D+ i" `. K
      xor    eax,eax$ E4 _7 J* I' L+ n3 z/ l# u
      xor    ebx,ebx
. Y0 n; ^+ x9 B$ i0 J7 g' R( n# B# `      mov    si,93h, v' U) S0 b  b+ ^6 B
      mov    al,es:[si]$ ^/ e+ w' {" R7 U) h$ l9 b: s
      call   Change
& R; {5 |3 {3 p1 p) ]0 b      mov    cl,4) T* F. w. j  M1 q+ B% a+ _" w9 {# V4 Q
      shl    ebx,cl
8 t5 m9 z+ I- k" @6 s      add    ebx,eax" k  n/ f- Z9 _
      mov    al,es:[si+1]
: c% Y: {  O$ _6 X+ S% Y2 D      call   Change$ ^3 P) {- d% h. }' B4 \
      mov    cl,4
! w! g) j; h) F9 ^1 [0 q, u, r& [      shl    ebx,cl
* w- H( j, V' ^0 ^2 F7 j      add    ebx,eax& H5 t  U( m, k9 c" j
      mov    al,es:[si+2]2 x6 ]+ U7 l  U
      call   Change
/ x* N1 |7 @8 L3 R( l% Y      mov    cl,4
5 Y6 \. ]# F* ~% a9 w+ ^3 \      shl    ebx,cl
+ N$ {" z7 o/ h- v' M2 N' B      add    ebx,eax
) |2 j3 K* `- M: H8 B# L% r4 C      mov    al,es:[si+3]
7 C2 K2 `4 l& ~) j7 R6 a7 R5 J) U      call   Change
; S: p' j+ |5 b2 h6 t& o      mov    cl,4- b5 |. Z" V$ ]
      shl    ebx,cl
! w( A+ q- i5 v; d4 m& Y      add    ebx,eax( x2 G+ \( M0 [' S, }$ `/ z
      mov    al,es:[si+4]2 Z) w0 l2 P# ?$ x. e
      call   Change4 c9 D8 f1 u1 U: p
      mov    cl,4/ Z& C% h' g) y! S7 }- L
      shl    ebx,cl
( x0 _# J6 G" V5 p1 N8 Q( V3 c      add    ebx,eax7 v2 r0 n0 l2 V1 G
      mov    al,es:[si+5]
7 N  \+ p" G. A8 ^* b      call   Change& p& J$ J9 |" C
      mov    cl,4: W; |9 J. p1 U; U2 A) Z. |
      shl    ebx,cl
) h5 U* q3 Z2 }! b* w' Z7 H0 G+ U      add    ebx,eax& h8 v1 f! R. y; I; L% d
      mov    al,es:[si+6]0 a1 c6 T! ]1 Q: l
      call   Change
+ i1 \0 V+ \5 ~3 ^7 B      mov    cl,4" X9 ]; r# x. a' {2 h1 l1 k! z
      shl    ebx,cl8 J7 F- S9 l' u
      add    ebx,eax
: Y: w$ V: K) ?: R      mov    al,es:[si+7]
: c* M2 ?% h5 ?% W0 l/ e      call   Change
& x( k5 H9 U& K* B" n      mov    cl,40 f& m& ?% A- H- x
      shl    ebx,cl
$ T6 W% K, X9 h& O  ]( Z* P7 a      add    ebx,eax, J% `+ K7 O! A, V
      ret
2 Z% H  o7 W" q1 {. G5 `WDPSP endp  r/ |, }: a. q' Z( W" k
;================================================================================================
$ i: Y% q6 ^8 G, sChange proc near' N0 o3 T9 K2 ~
A:    % K" _& I2 l+ L$ b( s" Y- f9 L
      movzx  eax,al
! a4 G7 M+ X* h2 o! d4 [. y      mov    edx,eax  t4 H8 ]# T, q7 {1 p
      cmp    eax,'0'            
9 i7 e. [' O" f  V! ^8 ^% d      jb     A
9 N+ k2 v" O2 h( A# N      cmp    eax,'9'            ) i: {8 I5 o! T0 N0 {
      ja     B
5 b; e: `$ M/ t3 O      sub    eax,'0'/ `2 a( `( t: @4 Q
      jmp    short E2 y# h5 e* ]& r, D6 J
B:
' u. i! v6 K4 D+ M1 F0 L/ N      and    eax,0dfh           5 A2 o6 {. C+ p  S" G
      mov    edx,eax% d1 d7 }7 D7 y$ b  A5 e/ F
      sub    eax,37h            $ x! w2 L( z/ T3 Y3 |1 b5 A
      cmp    eax,0ah
, K# [% p  u0 `6 \. u, P      jb     A                  
  B$ u8 o0 J5 U5 ^* A      cmp    eax,0fh) P- ~. i4 X' S$ S
      ja     A                  
$ j2 D4 K3 n" f9 fE:4 l3 ~& {+ f. `) J- ~  E. v6 h; [" ~
      push   eax      
) w2 D: H8 b. U2 M; [" l/ |$ ?      call   PRT               
  }: j. E3 A/ [      pop    eax
8 v/ m6 I  j0 |9 t: l/ OCExit:( y. q; l: L; r- j$ }& X( s
      ret2 B7 G2 l2 |6 y. U- G# c3 z+ }
Change endp# U4 I. n1 p8 R7 T# W" N% g
;------------------------------------------------------------------------------------------------  C+ K$ f7 d  A6 ^
PRT proc near
* C/ P! ~: k- S      mov    ah,02h
( V9 m! k- f- L8 v      int    21h
3 q+ A: _& Q- g& F) V& R0 P      ret8 H0 G# [( t' W1 q# P# j3 H; |
PRT endp
. U0 I3 u: r' ];------------------------------------------------------------------------------------------------
" i+ p* a* a& \( @0 Fcrlf proc near
( C* h( G4 k% b3 C( p9 L      mov    ah,02h+ Q1 Z2 G0 G0 r& B3 U
      mov    dl,0dh) _. j/ }- w  H
      int    21h, ]4 W& m( |2 L! ]
      mov    ah,02h. e8 b/ a6 ~- `/ T* e+ n, e
      mov    dl,0ah
+ U6 j- X2 W+ @: L      int    21h
/ o) U( z" f* b. Z      ret; I* v. ], A  D
crlf endp
1 n* ^+ j8 t+ \! N% `" u. [& \;------------------------------------------------------------------------------------------------
* y3 h0 U+ g/ H0 v9 C( T_32bits proc near: y% M$ \2 C0 N/ [, |
      pushad
; \3 Y8 H* _; u1 N. A+ G( Y      mov    cl,4
9 a& t: Q" m! l$ L- [' [      rol    ebx,cl
7 w; Q: q' G# ~6 J- X. z' o0 U      call   print_4_bits
" {6 a% M1 Z' H6 ]      rol    ebx,cl
! c; N- Q- i! W; v* f. b# M      call   print_4_bits# y- z" ^, e  ]1 N6 {* D
      rol    ebx,cl0 D: O0 H3 D" c8 c
      call   print_4_bits
+ \9 k8 K& E! H% R0 X      rol    ebx,cl% ]6 ?& q3 z- ?
      call   print_4_bits3 S! j) a1 L$ p% T
      rol    ebx,cl  M( J% `, q; k( x- ?1 y! V* R
      call   print_4_bits
- f. U2 Y. Z9 `3 _/ g5 W% F; X      rol    ebx,cl
  a8 s2 q+ k0 K% w! F      call   print_4_bits
) h# ?- y: A0 c0 ]      rol    ebx,cl3 `; Z0 a9 \' I" k
      call   print_4_bits
7 i2 g: f. `  m7 q7 c. {, `      rol    ebx,cl
% D. p( F0 {& h' u) `      call   print_4_bits0 g; Q: d) i+ m$ i- ~
      rol    ebx,cl
1 h6 a3 v7 P# G( h      popad  \& t1 P* v; b1 j$ Q# r$ |
      ret
/ |( ]7 v# ^1 @2 T4 P6 R_32bits endp" |6 x  `. I5 X  `  f- u
;------------------------------------------------------------------------------------------------
. j; G  _1 \% d' k_16bits proc near
6 p' N) ?' J8 c% o9 T2 E4 T      pusha        
6 m+ E" j. X4 b& q) Y      rol    bx,cl+ e9 S% T7 J, N7 q6 B* V" V
      call   print_4_bits/ C9 N0 Y4 u2 p, p+ X
      rol    bx,cl$ n0 b) o: E! A- I- @! v" W0 t
      call   print_4_bits
! T6 H% E3 X* G4 Q% t) R$ q6 E      rol    bx,cl
) |7 n1 ]3 S7 Y$ D8 _! i3 ]2 d      call   print_4_bits
2 |/ H0 j+ U3 u) ]      rol    bx,cl
7 V9 Y- N6 G, P; H      call   print_4_bits( d; D' Z/ H% C9 b' @& T8 o- o
      popa
5 t- Q. I2 i) B# [( E# e. I      ret
$ U- H5 z" d8 X: F, ?, u% i_16bits endp
& p2 n* i) |$ R" b  ~% L% W;------------------------------------------------------------------------------------------------
$ M% `$ H  L, @' a/ _1 x! O* o- e_8bits proc near
2 p/ Z: l1 B( e; H) j+ T, m      pusha        # p/ V5 g7 s! G, X. [/ \
      rol    bx,cl
* N* p/ V1 l( U: i2 c      call   print_4_bits& \. p) \8 _7 T1 _
      rol    bx,cl
; A, F3 M; W! [* d6 l      call   print_4_bits
$ K- [- ~% M2 B' j& [2 Y      popa5 L* n/ n) y0 {7 ]
      ret
' v# T  _$ N6 O) f& Y& W_8bits endp
# n- m' v: H& @; b) s1 w7 `print_4_bits proc near4 w- V( w% j( ?! K% G1 K; O& V
      mov    dx,bx
) q0 R4 g, e+ `1 u3 l      and    dl,0fh
9 @1 P# w% k& B, X, [      add    dl,30h3 ^8 i/ _1 U& a6 F+ {) V3 j
      cmp    dl,3ah- k- C9 ?: U4 m. ?  L
      jb     print; a) l% {. `; o5 D8 M$ R
      add    dl,76 Z+ ]4 p+ |3 ~0 D
print:  0 V4 H5 n9 q3 X- y- X
      mov    ah,29 y5 x2 L2 I: v
      int    21h1 B- M* o& G" P4 Q
      ret* _, w3 F: f* r3 t* q# s" C
print_4_bits endp    ! V/ n& T. F' M' j0 |
CSEG ends
% t: b5 f5 v, H8 g$ E; IEND
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2026-4-4 18:06 , Processed in 0.464613 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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