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

關於SEGMENT 宣告變數的問題

[复制链接]
发表于 2010-10-19 16:50:51 | 显示全部楼层 |阅读模式
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address): f7 H" R1 ^0 a8 s4 y

  R7 \0 |! Z; S9 O/ Z則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data': ]2 k  Y' Q4 I, O9 y( T
* B% b7 m  ~3 c3 d
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝  
& y' e4 N6 b4 r" f2 i* `1 |$ X' a: q+ f! O7 |% t( j9 [5 F  t5 B
.model small/ C& c& Y, S) \% v& b$ y# e
.386p; |& l4 z* N4 c
DSEG SEGMENT USE16'data' - H+ \7 Q" U% N2 `
' V1 x" E) Q* j2 N, y7 `: l8 \
DESC STRUC$ Z3 W: n: @( \% E3 T  U% K% P
     LimitL DW 0   I* \, ?& j1 F* r+ f& E
     BaseL DW 0 $ H  }9 X  ~4 c0 H! D, A  J
     BaseM DB 0 : c7 V: \6 t/ e& R0 M
     Attributes DB 0
$ d: p9 v% k# e: h6 U+ H; E2 O' p     LimitH DB 0 ; w2 }3 G  z4 ~) k) e
     BaseH DB 0
* G6 J. j6 O- a( O* ^DESC ENDS
/ U6 E- I) T- i- r7 g1 L7 @, T3 D+ w- P! [) a  h
PDesc STRUC
) Y# d2 z2 d+ ]0 F! U     Limit DW 0 4 H" p0 u' j1 j, R
     Base DD 0 ) p$ O8 t9 Y, n
PDesc ENDS, W9 }, d( E1 Y9 Y0 E

% T! M  d  C1 @: b8 T# GGDT_def Label Fword. x8 S. M* C' @7 q8 h) m
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>/ b2 \0 [& `1 k; s' {' |& W8 H
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>  M7 h: b6 [$ z$ D1 o( C
GDT_Addr PDesc <$-GDT_def-1, >
3 m! V6 Z" J# {9 q& Q5 i- p' V! N9 B/ ?+ Z3 ?( H
Maddress Dword 0, A# C2 w% z: ]0 z
, I1 i' ~+ Z# w- N5 n  p0 D4 ~
DSEG ENDS . A% h  [8 s$ F$ Q1 ?9 k+ ]
ASSUME CS:CSEG,DS:DSEG( A  c8 Y6 g! g3 l7 k5 _  w

* H. Q$ u) G. f- d' RCSEG SEGMENT USE16'code'
1 D& y. }5 ~8 [8 ^      push   ds) f- C; e+ ?3 h% Y
      push   es
" {- ^6 W+ ]$ b1 z; p# o6 b0 f      push   fs
) h  A. y8 v: I9 _1 }  r( g: Y      push   gs0 f9 \& r' j& A+ u& t& ^' |
      call   big_real_mode     ! k( A( Y, }: \% Q& [! b7 N% `
      call   Get_Commandtail+ ^: E. Y" ]" Z! a  P% ^. r: n
      xor    ebx,ebx
8 W. z9 e1 v+ I9 N9 n      mov    si,82h* W! |! K$ C( k. f5 X
      mov    al,es:[si]5 N2 p8 w0 M5 t: Z
      cmp    al,'r'' L1 p" T. f. E, H
      je     R
9 M$ `. O" g. z, ]3 F! h9 N5 v      cmp    al,'R'
( v7 t' g' ~- v! P      je     R
+ b' e  m! u& b0 ?3 V7 M( u) e      cmp    al,'w'
. |4 F$ |: X" M/ m$ U      je     W( ~, l2 z$ E' C) y
      cmp    al,'W'
- H( l* v- I/ E- u( N/ d+ v( _      je     W          - f/ c0 x  ]& H$ {
R:- y" M& K( R. [3 Q. i( W, R5 Z4 F& Z
      mov    si,84h" D, m. i8 y5 ~9 G9 d
      mov    al,es:[si]
% J' p, x( U. a7 ?) C      cmp    al,'b'
$ L2 f1 z$ C: q% m* `- P0 _      je     RBT3 n  R2 O6 w% U% F: L( o* S2 S
      cmp    al,'B'
2 D( n% u+ z) \1 F$ t      je     RBT
5 V8 i! ]/ v, N- P" h      cmp    al,'w'
" r, o7 G* @4 B3 i  |! ?7 ?: H      je     RWR2 C/ W3 C+ M5 M5 O, H
      cmp    al,'W'
  X9 f9 k# y7 |; ?& L' e      je     RWR9 [" w- r  T: h7 Q- b1 m$ z8 z
      cmp    al,'d'; R* J# ~4 {0 ]' l! D: y
      je     RDR
! C4 o) f2 f& A      cmp    al,'D'
" ^* f2 o9 x* }8 T      je     RDR            
, Y. ?& G+ c4 Y1 h  f" r3 IW:      ( W2 M4 ]; D  }' [% U
      mov    si,84h# N1 m* Z0 r( O) o( X
      mov    al,es:[si]
* e0 J6 p5 e- B. w      cmp    al,'b'! s; }' s1 Y, F% G7 d! U2 Y
      je     WBT
9 |1 w. j0 h1 `2 K# S0 n" F; P# D8 M      cmp    al,'B'* S2 G3 r& x+ d# r
      je     WBT& H/ N& B& |! P" B1 x+ ?
      cmp    al,'w'* I+ _/ n+ t0 _; h0 p. e
      je     WWR
8 `/ L& V6 q! n7 W      cmp    al,'W'3 m% K. _* G1 A. P
      je     WWR
# b6 Z$ U* ~' ?' ?! f- r+ I+ N      cmp    al,'d'
# |5 P4 j7 ?  H7 \6 D1 f) f      je     WDR3 [3 O* N% H, a
      cmp    al,'D'  A+ e( g) f, r0 W
      je     WDR7 i2 }' O, k% ^' Z! Z
RBT:
0 k6 O) \7 c3 T& @# E      call   PSP        
2 j6 }2 @  O4 U  G+ c      call   crlf           ) U, o& L3 O3 Z6 A- D7 h% N
      mov    esi,ebx
% j! K7 @3 j5 d0 b      mov    eax,fs:[esi]
5 V, V6 o( P- w      out    80h,eax
# A" g* k) r1 F      mov    ebx,eax8 [! y! N; L! w# {0 T& R
      call   _8bits
: e+ C7 F4 x% j( i: `8 W* q      jmp    Exit( i2 k- T3 o6 H" _0 s) [; `4 G
RWR:$ R: Z) K9 _: ~6 B: x# l
      call   PSP        # B- ?. q8 G1 s  n
      call   crlf           
5 H( c4 Z8 v$ W5 k6 n$ j      mov    esi,ebx
( {* {- B* r3 D$ m' t6 M* i3 S. H$ b      mov    eax,fs:[esi]8 y2 b( j0 ^) J0 E' ]
      out    80h,eax
9 @) e' p9 v/ g7 A- H' h      mov    ebx,eax
* P4 y+ b  K) H6 F6 f( E% D      call   _16bits; o) }7 |8 O) B* I6 l: _
      jmp    Exit
  V! F9 B5 ^- x0 x7 wRDR:5 J  o% c; @7 R8 J9 f9 O
      call   DPSP        4 E, G6 K3 e& b7 u" t6 n
      call   crlf           6 a) b* Q8 w# z+ W- x2 m
      mov    esi,ebx0 W4 n3 O! m4 l% W
      mov    eax,fs:[esi]
$ h2 X' j1 e( H- O% f/ ^      out    80h,eax# E  K1 u7 \/ s3 x2 G
      mov    ebx,eax
& T( R) q+ B& P; O8 A! v1 C, b      call   _32bits
; g* D" O% H2 h; ^' }7 s      jmp    Exit; n5 P: U% k( n! V- v, F
;------------------------------------------------------------------------------------------------
. [0 I0 X7 p. @" h, e: KWBT:+ Z1 Z9 F  d& L0 J4 E2 d: z
      jmp    Exit; f4 t: ~# v$ S) C* W# f
WWR:
' ]1 k, q5 c4 ]: p( O$ A1 ~      jmp    Exit4 q* ?' q; F! e4 x
WDR:" g( y( u1 m6 Y# q
      call   DPSP. u: J; j- g9 Z4 A, ?1 M
      mov    Maddress,ebx      " V: G# T/ J" \/ r5 [( k0 j) ]
      call   crlf
& Q5 G# \. ^  \8 }8 K% s7 ^      call   WDPSP
9 S( r9 s7 R/ z" q      mov    eax,ebx2 r! R2 l5 m6 P
      mov    esi,Maddress         
  A7 o6 \% I$ x8 t% h      mov    fs:[esi],eax
, }& J7 `: @3 I: v$ ~; V" R8 v      out    80h,eax$ w+ F8 c* s$ ]- h( B! _1 p* A" W
      jmp    Exit
* {( q" V' p3 y! f1 T5 j;------------------------------------------------------------------------------------------------       * r! _" x6 {& u8 ~2 }# P
Exit:
3 S' U  m0 b1 x! Y( G. I      call   real_mode     7 y) H" d9 ]- `; b+ {) O1 B
      pop    gs- g% L) @, }0 Y) M7 W+ W. i$ a" R" E1 ~
      pop    fs
- p; \; z; n+ Q9 ^! c5 ]+ X      pop    es
# r: C6 Y3 O9 C% x/ r      pop    ds       ! q! X7 ?! Q! t! F8 l" M: N
      .exit
2 ^" k2 U9 L3 x- G, a5 I1 N# k1 t;------------------------------------------------------------------------------------------------/ g) Z% r1 p1 [4 J
big_real_mode proc near
# J  m) L+ t4 @7 Y: ~1 ]' d! H      in     al, 92h$ \8 m, o3 u0 R/ t# {
      or     al, 0025 b1 _% u/ \/ o/ F7 k/ @$ ?- w
      out    092h, al: Z7 Y9 |1 C7 Y/ C
      out    0edh, al
" E( c( @: c4 M, r      cli5 q% o: ^0 B4 q& Z3 ^
      mov    eax,DSEG
/ c% D0 W, f9 R! h3 m. ^; c1 ^      shl    eax, 4
+ O: ^* \& q: q$ ~; K) H' u2 }      xor    ebx, ebx
( H) f1 t' \4 T: b6 @( }4 X      mov    ebx, offset GDT_def
) ^9 M0 C5 c- m% s7 E      add    eax, ebx
$ k# s% Y( b) [+ K4 Q; x" \- ^      mov    dword ptr GDT_Addr.Base, eax( ~* Q8 r7 e9 q' Y
      lgdt   fword ptr GDT_Addr
7 o# t( Q+ K1 |$ }( j      mov    bx, 8( X( ]- J! S1 C# _8 ^: d
      mov    eax, cr0( ^; ~6 f. w3 U2 W
      or     al, 1
% F9 |/ z6 g- A% j8 E5 T& U- l! W      mov    cr0, eax
8 ?+ Y/ |5 ?& J1 Q6 y      jmp    PMod
; o% d5 E: l. S. b* {PMod:" d+ l- G2 C1 i
      mov    fs, bx
% ?4 b2 l! {6 l1 D) I. F' S" n      mov    gs, bx; i' `/ V% H$ v9 X1 a
      mov    eax,cr09 r; Q9 y" h& M7 r% f, D3 B
      and    al, 0FEh
" X2 E" y; Q0 d4 d3 J      mov    cr0, eax
+ `$ x4 L+ p/ i  Q- m0 B      jmp    RMod9 Z6 d2 J3 o' S8 n; o
RMod:9 h$ F; i: |& c  H1 _7 t3 G- W- q. U
      xor    ax, ax! l0 ]' N+ s% `1 a/ G
      mov    fs, ax) S$ B; o$ t% Q
      mov    gs, ax     7 |+ e) y9 T5 A$ M
      sti     . {/ s9 L2 m, z: b3 P: l8 r# M
      ret
1 b& Y4 L, E1 Pbig_real_mode ENDP
1 T' i: H- d# N2 [;------------------------------------------------------------------------------------------------( V/ `% B# h6 ~9 i
real_mode proc near# p; P3 o* S7 x' r
      in     al, 92h' T( h, C3 k& l, S- w0 ~! D
      and    al, 021 K$ `6 L- }6 I2 v& n
      out    92h, al    9 `3 c. D, q1 ^3 c3 y* K4 u
      ret, D( G% J; G% Y* P0 S
real_mode ENDP" D6 f% n( `: o$ i
;------------------------------------------------------------------------------------------------3 A3 w2 o/ k. Z) }5 }4 W( Y' D
Get_Commandtail PROC near
/ g, ?: p4 F# _0 H      mov    ah,62h
2 L! p0 m% s2 w6 K8 N      int    21h  L  l$ h& z" V0 a/ h* G
      mov    es,bx
3 X/ v, c# c1 I+ @6 ?      ret
" b9 @$ _. u" Y& x! r: }8 gGet_Commandtail ENDP   
' ?+ P+ V' X- \+ G;------------------------------------------------------------------------------------------------, _3 B$ X$ s% e* ?7 d
PSP proc near
# b4 a9 q, c6 L      xor    ebx,ebx
: k8 D( J4 K" p8 C. c      mov    si,89h. M! J& L0 `9 E
      mov    al,es:[si]
0 B$ r8 N3 E1 M- D) ^7 O1 W. I      call   Change/ R3 h. d$ [  l( A
      mov    cl,4+ z: G0 |1 Y/ S+ `0 U& c! f! o6 L1 u' M
      shl    ebx,cl1 m) r; m$ R- {& C! b8 ?
      add    ebx,eax
* A  g$ K/ g6 ^9 u  n6 z      mov    al,es:[si+1]: Q, r0 l6 W9 s9 z$ g" J
      call   Change
" T0 D+ H1 {! b      mov    cl,4. |# r3 C: o, L9 C0 |# c+ I2 c% i
      shl    ebx,cl
7 L! o- [5 v- o% D" i: |$ t4 u      add    ebx,eax
6 f1 F  [! p! I. `8 _  X      mov    al,es:[si+2]2 N8 F+ V# _( A4 C$ R0 T, Z
      call   Change8 P6 y; O8 `6 \  e: e5 s
      mov    cl,4% u1 p1 y, g( x; Z
      shl    ebx,cl8 n! ^! W1 N2 t2 z
      add    ebx,eax
6 f$ s, p+ t. ~, Q# e3 Z      mov    al,es:[si+3]
! ~2 H9 j( v7 @; G; z2 G      call   Change3 o1 ~5 y/ [( I1 \
      mov    cl,4
7 i$ ^) g* ^$ j& r5 [6 h      shl    ebx,cl
! Q8 U9 L- ]1 l3 F7 ?      add    ebx,eax7 x+ L' D! d1 `! a7 |4 h5 B
      mov    al,es:[si+4]
9 q6 r- `1 B  r5 n, z! V      call   Change
, u) D% B! |' ^) r- `7 S      mov    cl,4
# K! `* g0 R9 @$ r! K; \( M      shl    ebx,cl
: K- \/ a( B/ o      add    ebx,eax
1 H+ O+ ^( J4 P" w3 Q8 c      mov    al,es:[si+5]
. L0 a4 e% h4 s) J, y. ^! `      call   Change" q0 z' o( e- w  w; S
      mov    cl,4
1 `) x0 }" X( I! ^. H      shl    ebx,cl& [7 {5 }- v2 t7 q! ?* L  o# ~
      add    ebx,eax. x0 {$ i" p- V! H" l/ m. l) k& s7 x% `
      mov    al,es:[si+6]
; Y( I- y! q' ~: v/ d, N( ]2 x& x! ?      call   Change( {/ F0 {' g5 K
      mov    cl,4$ z' ^1 }  T  K9 x0 T# S$ n) h
      shl    ebx,cl/ ^, v  [9 w; E) R) B. F
      add    ebx,eax% y9 y7 n! n9 n" e# \% h) x
      mov    al,es:[si+7]
& }' n1 z+ T- @6 m4 Z      call   Change7 V; a' e" {4 b
      mov    cl,4* x$ S; W( h! r+ f0 k9 R
      shl    ebx,cl
, i4 L& l) n9 K( p  I      add    ebx,eax" _6 ?! Q  f! n$ b. U1 ~6 w' [
      ret
+ x, w( c  `, C1 `& w5 S. ?PSP endp
5 N* I7 R& x* L( v3 `;================================================================================================
$ H2 Q3 `9 w9 O: S' d" B. mDPSP proc near  U+ \6 M: d! H. B
      xor    ebx,ebx
3 K4 }- M5 g, z1 G. h      mov    si,8ah
! b7 e% n2 U/ P      mov    al,es:[si]
3 ~" c" \, _% c      call   Change8 U9 D4 y3 E7 `
      mov    cl,4! A1 u5 b, S$ o/ U  I  t) Y6 [
      shl    ebx,cl4 t0 Q& g- g5 D- \
      add    ebx,eax4 |# Q2 C. E. y, K
      mov    al,es:[si+1]! R0 }% l% k: \3 f2 V3 Y
      call   Change
! H1 _7 I. N0 w# _3 J; {$ Y) D      mov    cl,43 a$ R$ |5 N2 W" ?& c
      shl    ebx,cl
3 N8 |; R5 C4 r/ r      add    ebx,eax
8 N, o3 \" g/ w1 |$ Y      mov    al,es:[si+2]
- O& M/ |* z, l, E9 o8 J, D      call   Change
& i- A, q6 t2 e3 X* n: L      mov    cl,4( n; n0 N3 Q! h3 p2 e2 Y1 g
      shl    ebx,cl
5 n& r9 X. G+ {' \4 |      add    ebx,eax
( r) P& n" |' K4 d% {& h4 J; s      mov    al,es:[si+3]* T: h; B; R  f$ U& z+ C
      call   Change
/ J% f) }! y) Q2 \7 w6 r& ?& q& z      mov    cl,4  d: }5 ^3 J0 L: U* e" w
      shl    ebx,cl6 W2 _5 D2 `. I" B" R% \
      add    ebx,eax4 d8 W/ F& |/ t3 X- Y
      mov    al,es:[si+4]
1 q1 S4 [9 O- K5 ]# [      call   Change
6 q* Y) |; V' S$ O( A9 E% r      mov    cl,4
9 t4 [7 i, R0 y! y7 e1 X. V      shl    ebx,cl: v5 i+ |8 a& M3 T# [) ]
      add    ebx,eax
' [- w0 Y$ H3 j  E5 k      mov    al,es:[si+5]
  y6 n9 c5 Y, W! X6 U: f      call   Change6 E; ~- H% H* E5 T) j& ^
      mov    cl,4
( s8 U# ?% n6 T/ K- h6 `6 f  N$ d, ~      shl    ebx,cl
/ Y! ]1 B0 b( a      add    ebx,eax; \$ T& ^, t9 c0 s% b
      mov    al,es:[si+6]" }" q+ |% U- }
      call   Change2 s3 |' V/ k; k! l# I
      mov    cl,49 |* c1 }& A, q, `
      shl    ebx,cl
$ a8 `2 ?+ T- [      add    ebx,eax3 S! Z; e$ M& r6 y9 U
      mov    al,es:[si+7]
9 E8 W& C3 T) T: ?) V2 c+ t2 O1 n. S      call   Change
, k% @) e4 h% _/ B( }      mov    cl,4
+ f2 y6 i1 N* Z7 q      shl    ebx,cl
+ p6 P. f0 Q1 ~# e* j+ U      add    ebx,eax7 Z$ A* M& M$ ]7 c2 D6 z, N
      ret) I' {. O. ^+ T5 C  R0 N+ n  f# _! |
DPSP endp1 {+ h# g% t, j3 S- p, D
;================================================================================================; J& |& g" ]/ @( ^9 N8 V
WDPSP proc near5 v0 \; p/ |- @: h$ I8 c
      xor    eax,eax
- x  U: H6 f+ e7 i3 {# U. ]      xor    ebx,ebx
: j4 n; e& [/ y- P4 o) L! G      mov    si,93h0 k5 w0 P: z" ~+ g
      mov    al,es:[si]
: i% S$ r. W5 u& b  T' [      call   Change
9 |  O# N$ ^  C9 j& \# ]/ _) [      mov    cl,4
4 ~6 L8 q$ a8 @9 S7 f      shl    ebx,cl
( w) K5 w/ x* y; y9 P      add    ebx,eax
* N$ P6 z0 x" b% k/ [      mov    al,es:[si+1]1 R8 o& |8 n0 w0 G6 W+ n2 U
      call   Change
8 \$ |$ r9 X$ K3 y6 W4 g3 I$ D      mov    cl,4; z2 @: ]/ q/ c9 d/ [
      shl    ebx,cl# p+ J/ E1 ^/ D* @2 c4 s$ f9 [
      add    ebx,eax
7 o7 s- m( I. Z# |0 `  S      mov    al,es:[si+2]
3 b0 C) a1 r% |4 D" y      call   Change+ {- }* b5 |7 i( D2 X# ?) X3 @' c
      mov    cl,47 M1 Q( _9 m2 X1 O& o0 g
      shl    ebx,cl
8 \2 ~3 Q  c8 C      add    ebx,eax  L0 c& L0 }& H5 X6 h+ i7 [
      mov    al,es:[si+3]8 ^: z1 H9 x" \7 {8 a
      call   Change# B3 T7 j; I$ X- i5 Q5 n2 X8 E/ F
      mov    cl,4, X# V% t$ `" c! |
      shl    ebx,cl+ c9 o5 p( ]& B1 K
      add    ebx,eax
  U& }" }8 _3 J, a* {      mov    al,es:[si+4]
% l! j  P8 e' x; C0 D4 P. r6 U& o% S9 n      call   Change
) K8 o* @7 T: X& Y2 X& q$ y- K      mov    cl,4
6 O; d. J/ l  @. D9 T2 m      shl    ebx,cl. \' F0 b% `+ L
      add    ebx,eax* S9 L3 D8 n* L8 ^
      mov    al,es:[si+5]
4 R5 `% V$ Y1 O      call   Change
' s0 i- m9 l: k8 T* j7 j; H& t. S( |6 u# E      mov    cl,46 J/ y2 f+ H7 \1 g+ R- R' S
      shl    ebx,cl
' {2 P, [3 u: M, T/ l      add    ebx,eax
5 N. J' S* y5 O8 W      mov    al,es:[si+6]
/ ^/ Z& @: h9 _0 w* v8 E5 h      call   Change: V8 \) ?$ n1 z& ^" |+ \* c$ M/ _
      mov    cl,4' |# U) \1 f! H4 ~( }
      shl    ebx,cl8 N, Z, o4 }# b( _# N9 A2 x0 D2 U% p
      add    ebx,eax) ~+ O9 e8 g, R6 x8 F/ d' w8 z
      mov    al,es:[si+7]+ l1 j+ q! C: S, Z1 z/ D0 y
      call   Change3 }$ X7 X6 u7 x2 a2 m3 T
      mov    cl,4
+ i4 X$ L) m$ A! F      shl    ebx,cl
* F3 B  m+ n: ?; S( b% U  I3 z      add    ebx,eax
5 I# X! I( N+ y8 g/ H" }' j; x: F      ret6 \/ `; ~3 g6 D( P+ d( R1 ]
WDPSP endp8 H) V5 ?0 g# v- E" {
;================================================================================================8 Q& b/ a! d# P" U
Change proc near
0 U; ~* |3 }* MA:   
  \6 z6 e: E' ^6 A- W      movzx  eax,al/ q/ Z% H8 q* _8 x" D* N) t
      mov    edx,eax) t8 `5 i$ D4 j4 M9 u, ]
      cmp    eax,'0'            
6 A  \/ z; t, S8 P+ c      jb     A# D; b* f; t" I2 C/ t6 N1 Q9 ]/ ]' s
      cmp    eax,'9'            
( f/ A+ K& ^8 O; ^  e  ~! T      ja     B
( n3 [" R* F7 G2 r* U      sub    eax,'0'
4 z$ F1 ?" c1 N      jmp    short E: {9 X1 M; c; z; G0 W* x
B:- h: f4 g% z! |9 `
      and    eax,0dfh           
1 {* I: R$ S8 C" Y: ^7 i1 Y      mov    edx,eax
& O0 W8 P% P& V  X; }: \, I      sub    eax,37h            . ^( _+ q! Q9 P/ d4 ?4 v
      cmp    eax,0ah
. n7 g2 D7 i6 `5 n) d! D7 ?      jb     A                  
, w* D/ B: c3 h: x& v      cmp    eax,0fh
* ~5 }" T% y- @6 u( u  Z      ja     A                  # Q* i- l% }% q9 @/ T
E:& {% |' H: j6 L8 v  J4 X
      push   eax      
8 N+ p/ v7 D' n* v; z# d2 f3 m      call   PRT                . L) h7 |1 V1 a
      pop    eax2 W5 ]) E; M: l, `
CExit:% v3 Z( z4 V/ k. g
      ret& ], B3 }, Z: w. U
Change endp( C4 a# B' U, @3 n9 f- [
;------------------------------------------------------------------------------------------------4 c. }8 N# ^) a8 d! s' V
PRT proc near2 W4 V$ j8 |( E9 q( i6 N9 i9 H
      mov    ah,02h1 N* B. h( i* p
      int    21h# Z& m/ Q+ r0 z/ z; Z
      ret
" @9 |: R; l9 _PRT endp
1 g$ O& ~( L0 R4 T! K5 d: Z;------------------------------------------------------------------------------------------------* f3 J6 I! A5 n$ U& D) [! J
crlf proc near
6 Z: u( N- y9 q      mov    ah,02h7 f( V+ G2 p0 f. t+ e2 u: v2 s
      mov    dl,0dh7 C& _: G3 U/ l9 k1 W$ S) ^
      int    21h
  ^7 _! T: H6 O2 |) g9 I4 i+ _      mov    ah,02h1 Y4 E6 U" M* D
      mov    dl,0ah
8 M# G( s- A5 Q; M' |      int    21h
- E* D4 f3 u6 u& W/ T4 f* {- @: Q      ret: R5 j  W9 o2 p. T: W
crlf endp( r* a3 D, H* y- \
;------------------------------------------------------------------------------------------------$ o! Q* W' f/ j* P" |1 V, h3 d" P
_32bits proc near
& z, X' O6 B$ \# c# z1 U( Q  ~      pushad
& W* p7 f* e9 H1 K  g# Z& N      mov    cl,43 V9 T+ o) H# e5 d. U1 P
      rol    ebx,cl" V6 z; _( y7 V0 L/ A" x' P& m
      call   print_4_bits: V$ ]3 P- v1 }$ N0 S9 `% V; E
      rol    ebx,cl7 s8 C! j# P$ z6 ^! ?9 a
      call   print_4_bits+ i: P$ Q9 m( p; M' A; C& T8 n
      rol    ebx,cl
+ J% h' g; U5 G* m3 v: {      call   print_4_bits
1 E. K6 W: [& [4 _2 |      rol    ebx,cl& \/ s# L5 I: d; W3 Z0 @
      call   print_4_bits/ K8 K  u( V" P/ Q: |$ `7 j
      rol    ebx,cl
8 N' T7 O! O0 m0 r; ~      call   print_4_bits
/ f- c6 X  A  S1 V0 l  a      rol    ebx,cl$ v% c" @- k: Z  b
      call   print_4_bits. V: U7 {; W# f; z1 Y- u, ~
      rol    ebx,cl
" g) h, Z* A" ]$ ?+ a8 Q      call   print_4_bits; h1 ?/ w+ I, x4 O# P+ J
      rol    ebx,cl' f6 \: ?( u: p- ?7 Z8 v* F
      call   print_4_bits
) q) j1 N( v7 o' r- B      rol    ebx,cl
" ]' X6 R7 Y0 m      popad5 h+ B4 N5 N4 g* |, H0 q
      ret0 k& k( Q! N4 g4 ]+ @, z
_32bits endp% a6 d9 U; D/ \/ Y. A- X5 x
;------------------------------------------------------------------------------------------------% Z7 n  m& d* u* a  K( K+ ~0 \- u
_16bits proc near) g% i* b/ n0 j1 j6 i& K
      pusha        ; U$ m! y' Z* e) I5 u: c4 B/ M# e
      rol    bx,cl
- _( t, b. ~5 u+ N' I      call   print_4_bits
( f% H% v' Z4 \5 N/ f' I6 y      rol    bx,cl
. N6 c; L. N$ h4 }4 ^      call   print_4_bits/ e8 Q' e( J- a' k$ q" q
      rol    bx,cl
8 h3 ^4 j$ q4 Q9 L4 U3 ]* F; ~' S      call   print_4_bits
) I: d  k' }, c  n+ a4 z9 T0 S, V      rol    bx,cl
; r4 \) s9 |' k# n      call   print_4_bits/ f% S' P6 s- {# M1 E1 Z/ ~
      popa, B" L+ `" H  Z0 U
      ret+ b( o8 z, d; z# a1 ^* p  L
_16bits endp) N8 M8 |) B* O% \+ R, ~8 z
;------------------------------------------------------------------------------------------------
, j0 w$ s0 @' Y, A9 i/ L_8bits proc near
" p7 I; F+ R; K. R3 E% i/ C% X/ @      pusha        # A- t5 @5 ?3 g" I" ?9 u; T
      rol    bx,cl, b" C! k) E% r1 }3 ~* z
      call   print_4_bits
8 E1 u0 X% g5 P6 w) b5 K4 L      rol    bx,cl  `5 e: L/ r0 k# H5 v9 k! e
      call   print_4_bits. N2 ^7 h8 U1 A9 B
      popa' J1 K6 B1 ~6 r: k8 J
      ret& _' L. X" M+ Q; h; N
_8bits endp& {8 J# F# v. ?3 Q9 m9 w8 R& F, W$ L" ?
print_4_bits proc near
- V) L9 x6 y' ]7 ~0 O+ i      mov    dx,bx
  s. _1 T- p1 g      and    dl,0fh
! z# S0 z" L+ y: E$ m4 l      add    dl,30h
* Q- Q3 I5 ^2 @! U; S      cmp    dl,3ah
! w* Q+ [- z( R0 N; u      jb     print! {) U) |; j% f) b8 N
      add    dl,7
8 [7 k9 D8 v9 cprint:  ' ?, f. H; C: G( o2 U
      mov    ah,2( u4 \4 C9 g5 D8 k
      int    21h7 r* E7 c3 g9 C0 f  ^6 s- _/ ]+ _
      ret
) \- `. f  H( C; l2 I( q4 Eprint_4_bits endp    # N6 x7 j1 ]7 V3 u/ U" `
CSEG ends
$ t: Y; ^! |0 `END
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2026-7-19 20:15 , Processed in 0.055406 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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