|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)
7 J3 w5 m( K* v3 J9 K+ h
- d5 i, W) D5 H/ ~1 u則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'2 Y' q. Y" o0 ?, W1 V& _
& n# s4 n( y% l/ V+ [
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
' u7 ?2 r2 d# e! \2 O/ E0 Z% ]3 t- \& E+ J0 f0 Q( K* @& ^, O+ G! ?
.model small% y N% c/ k. N; j B
.386p
1 t3 U# g& _4 t7 C2 lDSEG SEGMENT USE16'data'
* p$ `7 o% |0 }* Y. I8 N
6 T( g/ r1 I p; V/ V4 z$ ]! SDESC STRUC% T; V6 `" E( d( o$ K7 z
LimitL DW 0
0 y# c+ L D: E BaseL DW 0
0 ^+ \/ o3 J/ {) k9 I BaseM DB 0
6 o' N& q+ u x/ P Attributes DB 0 , s/ K$ ~; O2 x& E2 S6 N8 k1 b, n
LimitH DB 0 8 F7 r: y8 B! T; b2 N
BaseH DB 0
* q0 K$ t# x; @8 T6 p" aDESC ENDS. ]& z. { h* ?. b$ R
3 R1 N& ^8 c q, F; N
PDesc STRUC
! }3 ^% r4 x: M9 q8 t Limit DW 0
; z1 [9 y7 o6 A: V; K2 d/ l- x Base DD 0
4 O/ n" X q; Z1 x! K1 WPDesc ENDS0 K! N. Q, \/ f# i3 w _: u2 h
6 U3 y$ l. X3 ]+ B5 o+ Q, P" ?GDT_def Label Fword
7 z. R' _7 o* @Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>. Y. ]2 i. [2 J! _6 A: O
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
9 I" H; x0 s3 P* GGDT_Addr PDesc <$-GDT_def-1, > R$ |0 P/ P8 i* E- N
9 N, f" g0 O7 O. q$ B4 S5 R+ p1 x
Maddress Dword 00 w6 |0 g" z8 z
, Y( c( R$ T! _/ n! W, Z, ?DSEG ENDS
. c( Q- g9 r* ]4 |8 e: k f' x( rASSUME CS:CSEG,DS:DSEG
( S) }1 d( w8 W! h5 G" W$ P: O# {+ @& W: ^) m- W# Y) c
CSEG SEGMENT USE16'code'
, ~0 H% m. M5 G4 {" p! n% k6 b push ds9 h' L; f" u( V' S+ l+ V" j
push es9 \% w3 x! L7 }$ P, [, t3 j
push fs
: W6 I. v9 _5 ], @" L) W push gs
5 N7 x" r1 P2 I0 S+ { call big_real_mode
; G' q' z5 w9 a# {2 x3 s call Get_Commandtail
( Q2 V# h: c! R8 E xor ebx,ebx9 ^% r4 ^9 ]! A: `
mov si,82h
8 Q4 t' _5 A$ \ mov al,es:[si]- s% a' ]2 g9 l5 |/ w% L. K5 R" f
cmp al,'r'7 _0 ~4 U+ s1 T; H+ ]
je R
! a* V1 y R8 T! g8 [3 p* i cmp al,'R'( U9 P! @( m9 d$ E) T5 ]( A
je R& [) l2 I4 P0 x+ c+ b
cmp al,'w'& J M% R, o7 |
je W
* D+ \; p$ x5 }# W0 o# d7 u cmp al,'W'
, U4 _/ l: Y. \ v0 Y# J' Z je W
1 ~3 b a& q8 I' {$ n) hR:6 q; Y6 M: d6 S2 a7 _ Q7 }
mov si,84h
5 M) [4 Y, ~% x8 L mov al,es:[si]4 S: k8 V( [% y0 H2 ]/ Z( q, i" Q
cmp al,'b'
) u( W- Q" D3 i4 `: z. q) R0 T je RBT
# S7 y' b! q9 @# H cmp al,'B'( D4 U }( `* E' D- \. T8 L: f; R
je RBT
* c% [7 B: o4 `8 X4 H( ` cmp al,'w'
" u1 |- D0 y7 K- `( B \- ] je RWR7 ~7 K0 I; S/ Q- h% Z2 r0 Y" l3 A+ `9 Q
cmp al,'W'" u4 e9 L7 F5 j# O% o
je RWR( |" w. y, P' U4 B) k5 z V
cmp al,'d'
; P. q7 z# Z. D) V' b je RDR
, h0 g) P! n/ Y5 M9 u% l. P1 X cmp al,'D'* o" c+ ?. F ^; _; h9 U
je RDR
: j8 A4 ?; X6 U1 O T. x& g5 Q3 PW:
* z9 Y$ Q: h+ \5 V mov si,84h0 N& f6 }, z( a' S+ |
mov al,es:[si]
* K+ k6 e5 K8 e$ B( o& X% ^ cmp al,'b'* @6 b! c- B' O8 b1 O+ ~$ u" q( a9 C
je WBT
3 w! i s' q/ G cmp al,'B'
6 H9 a5 z7 W5 N: G; ~9 _ je WBT* A2 g/ D5 f0 K, `9 p4 H
cmp al,'w'
, l" `" m9 l7 |3 y6 M je WWR
: |/ y* p0 F( X cmp al,'W'
, i- g$ e% _2 }# u je WWR; J6 l6 X1 }, h- A/ Q" E6 |, P
cmp al,'d'
9 W$ z* ^2 Z. C9 V je WDR* A% Z: M7 k- v$ E5 j( @- c
cmp al,'D' [4 a; _$ m2 W v, z/ C5 E
je WDR1 ?; J9 ^9 Q( s
RBT:1 I# [% u6 D" _
call PSP
& M5 E0 K, f+ p6 X/ s1 j6 x call crlf . H- V* _0 W& p
mov esi,ebx* m/ }. R! _5 ^
mov eax,fs:[esi]% }0 k4 D* U, p) \7 C0 M6 a, W/ s
out 80h,eax' M) m$ p0 m4 J: R! ~2 @) Z8 ?
mov ebx,eax
# W y5 B- z0 F' n call _8bits
- T7 W7 j/ n8 ] jmp Exit( V+ U+ Y7 ]* K4 S" T+ ~- ~7 h
RWR:* P# z2 v y. I" r& b
call PSP / y! Q' m+ h% }* Q4 w. @- x
call crlf 2 J( ?9 x; J; X4 O q! U8 v3 g
mov esi,ebx
) X+ L) b, m2 f: o$ t5 a mov eax,fs:[esi]
* K4 U. q, U7 O# q2 [$ u& L out 80h,eax
& e1 n9 h. w/ H) m2 } mov ebx,eax, U" D6 u' }# p1 u
call _16bits- [3 t# i% _& m& K/ C# r& n g
jmp Exit0 @9 _1 r. R q, z
RDR:1 o, ^& ^! T3 S- q1 b7 ?8 U6 s
call DPSP
W* c9 E% i# H# t% q call crlf 6 z' H$ r$ y( T% }4 W6 a
mov esi,ebx
& N, V: |& N$ P K Z mov eax,fs:[esi]
. \6 l0 j( c c! z/ G! G3 u7 F out 80h,eax
4 h3 O6 z8 ~8 e9 b mov ebx,eax" S* D/ g4 @% a. _; @
call _32bits
5 W) f9 b: Q' B* y$ C jmp Exit8 q! h- ~ F, {% u3 T
;------------------------------------------------------------------------------------------------
: k- e' \1 v( x9 PWBT:
9 c' ^. t+ X1 N5 ^3 m; ` jmp Exit I3 }% l2 c V6 d4 E r" V$ M
WWR:
8 Q9 w- P2 V# w4 f* f jmp Exit
% i2 h/ N( ~# F+ M- G9 A; ZWDR:
6 i" J1 C: Q) w call DPSP0 W) G+ Z6 P+ K# `
mov Maddress,ebx . _9 C! S% D3 I+ Z4 z
call crlf
. z- Y0 v- [; r call WDPSP$ _" W7 \' r. i* h* ?
mov eax,ebx. I+ q3 Q; v* L* M' Z
mov esi,Maddress 2 F2 W. G7 t' |3 d1 q" m8 g
mov fs:[esi],eax- g- b6 A% e" R! J
out 80h,eax( O+ K& Y. O1 U) T/ B
jmp Exit
. W& J" h# D5 _: m' j9 |;------------------------------------------------------------------------------------------------ ! y/ b" p! u1 x' R! h6 q
Exit:
3 g5 K/ l( g5 g( A- R call real_mode
4 z' P: f* w1 y; E# \4 W; w/ k$ h pop gs/ {5 [; j9 G% |3 H# v
pop fs
6 B+ E' |2 P7 A$ m pop es
( Z; v! I+ O; T; C! W6 g pop ds 7 s) H! }# d9 |8 B1 ^, z8 ?$ ~& q
.exit
( s: Y, U( m' _/ g;------------------------------------------------------------------------------------------------1 x2 n% Z$ S$ L5 Y/ Z
big_real_mode proc near
+ t. E1 y/ r1 q9 W9 Y in al, 92h* t0 S" J0 n0 }5 X9 L9 k( \: n
or al, 002* T4 P( c K; m6 C, A( L
out 092h, al$ M: s1 G* A9 ^, f% b
out 0edh, al
. B. N4 u3 f4 n* N8 t0 N0 I) W cli; C/ X. P% d/ C: n: z; U
mov eax,DSEG4 a" j: G: X1 e* ~& l! b% N
shl eax, 4
R+ y9 w" T2 q4 F5 u7 M$ M xor ebx, ebx5 f( {* ~9 ^- Q: @1 M' U
mov ebx, offset GDT_def
- \9 x% z: |( B8 H5 T% O9 ~8 M add eax, ebx
q2 P3 Y! ^+ o' n { mov dword ptr GDT_Addr.Base, eax4 d- Z. S9 H. F9 q5 h6 E# V
lgdt fword ptr GDT_Addr
, ?& ?3 V; X1 [! A! p8 Y" k mov bx, 8- a, |( b9 v0 O$ O2 x
mov eax, cr07 n# Q$ j1 Y9 ^% u# _& v7 s
or al, 1( y( E/ W$ y7 L6 P' G
mov cr0, eax
4 j8 a! ?8 D' z4 J' H8 w# k5 \, g jmp PMod
+ Z7 L5 ~$ }: N/ f* cPMod:
3 {! |1 @) Q' ^9 l mov fs, bx
# g7 H& ]# S6 g7 T mov gs, bx
; }( s) S; ~# v$ D mov eax,cr0
, j1 r, g I+ M4 c4 x4 U and al, 0FEh
5 v; f5 T4 M3 u X" | mov cr0, eax . C8 C7 f7 d4 D0 X1 o
jmp RMod
, @: j0 X p( V0 a! G0 YRMod:
2 W4 j/ V& R7 ^* `# p5 } C xor ax, ax
7 x( e+ U' B5 m mov fs, ax: H8 v0 p% ]+ n* G3 }
mov gs, ax
3 [# V9 w! T [ c3 |2 r sti
7 E6 i$ s- g/ p0 N6 S; n ret
0 q9 I- t" W5 }- L$ j. Abig_real_mode ENDP) e* \7 `2 B9 c3 _0 Q! M4 F4 v
;------------------------------------------------------------------------------------------------
9 t" Y( M& w f, X; mreal_mode proc near; d( ?3 F$ ^6 Q9 C0 j
in al, 92h5 A y$ d5 N2 |* Q: b
and al, 02
( c+ T; `: @* j3 T3 s% [ out 92h, al 6 `& L0 {1 l( a2 w0 x
ret
( ~% D, C% [ l, oreal_mode ENDP5 D+ g3 i3 i$ m3 d# q" H
;------------------------------------------------------------------------------------------------
9 o+ z( t4 L3 ~/ PGet_Commandtail PROC near
( `2 i/ G4 c: i) L Y' i @ mov ah,62h
, s5 t" y' ]0 j7 J6 R( j9 _ int 21h
: N! `2 Y. k1 M mov es,bx
8 h' h) [* j x. e7 f ret
7 _4 Z& L* P+ w W3 E# U1 V4 EGet_Commandtail ENDP 8 |( I$ M( X0 w2 T! ^) h8 O0 t
;------------------------------------------------------------------------------------------------
' P5 b$ H* i0 Z1 U0 y( ^PSP proc near
* J' q2 _7 O7 B. i4 m: p xor ebx,ebx0 W/ e3 l: k# }) \0 E# P C
mov si,89h" [- B! E' @1 O* z
mov al,es:[si]
/ z1 X& M3 H6 v5 ]+ m# A call Change
% F8 u/ [. D' g% J* d4 b/ H2 d/ a mov cl,4
5 W! U9 n: i+ F shl ebx,cl
* O: w: b; ]+ A* u add ebx,eax
. h; M) O4 M) U( m mov al,es:[si+1]
( p0 }. `0 t: B9 z% Z: N call Change X, d- @- y1 w# y1 N, ^
mov cl,48 s, v# E v. [/ Z \
shl ebx,cl
n" X/ A# `- M1 B& F" ]. U" [ add ebx,eax9 t2 A; c) w$ O+ b3 v% i( _
mov al,es:[si+2]
2 o- C2 z3 c" D call Change
: q" R# C$ ?7 ?& `2 P mov cl,4" q2 k, a' L% d1 a
shl ebx,cl
! l O2 @8 r4 L: o7 u' b2 M: f add ebx,eax
' p- \+ z' h v" b O% W" P mov al,es:[si+3]
- O& J# U; F# j3 k8 P C call Change% Y$ n; B" i! [/ A8 D! D1 m
mov cl,4. E2 H2 m/ g# H+ X$ J% t
shl ebx,cl: J. d- p! [ f( T7 m
add ebx,eax% o. N1 f3 @: C6 z y( H
mov al,es:[si+4]; k! H z$ k+ j7 w
call Change' g* y- x6 @0 j; A8 ]/ j
mov cl,4
" Z$ `% ?* ?6 I4 l shl ebx,cl
# U8 M9 I1 B9 U; R add ebx,eax
# V; O- `. Q& r1 U$ A mov al,es:[si+5]
+ q+ m5 \0 [4 t1 E( A! k2 ~/ i call Change
+ G( H" O* C) s mov cl,4
! h) a' u% D8 _% r! j" {; B. ~ shl ebx,cl8 n4 |6 Y( I- S
add ebx,eax- o& L3 R8 w( u K4 K- K+ v
mov al,es:[si+6]+ ]; g% u4 A' }: P; ~0 `
call Change
( x* l8 S2 ]5 D8 B mov cl,4/ v8 h, h/ U3 p' J- v9 R1 C0 R
shl ebx,cl
( j+ k0 Z9 `) y& G add ebx,eax
6 H2 c( \- b" K, q9 h3 u% _4 i8 i mov al,es:[si+7]
8 c3 d1 F J. O+ I. A! }- Y call Change2 O' {) y! [6 \, u% A
mov cl,47 y$ O8 D2 C: s. Q/ B5 L+ o+ h/ F
shl ebx,cl
) u, V4 A' S$ y3 [. a: x$ i3 J9 O add ebx,eax8 |' Q5 B3 t5 ^- {: N4 R
ret8 B. Q% Z. n# o% W7 m. ^. v
PSP endp5 h0 }- j$ C& }& w
;================================================================================================
. Y/ s% ]- n! @/ TDPSP proc near8 t- M X( O/ A/ a, }+ m
xor ebx,ebx
% o4 f7 w* o/ v/ X, C mov si,8ah
8 y& W Z/ Q# O5 x c mov al,es:[si]5 v' C. p/ l1 q; m4 I6 P, @% m
call Change5 L0 x! A7 e$ l. Z
mov cl,46 E4 C/ J' b" x& g9 M/ K% x
shl ebx,cl4 u/ W" j: A, [( ~# `, [' g" ?9 i
add ebx,eax I3 t: s% a( j* A6 Z Z' {) O- g
mov al,es:[si+1]: F0 I) Q+ k+ W* f( i1 S
call Change
% D3 Q. r6 \3 j: w mov cl,4- \5 V; K& q9 y
shl ebx,cl, G. f! Q/ x3 z3 U8 Z
add ebx,eax
. w6 u3 Z/ W9 G/ g6 G9 C9 Q mov al,es:[si+2]9 V* A) D8 S. U* {& H
call Change% F" `9 @4 ~, w1 f+ U1 T- M- p- S
mov cl,4* m; R; h$ B2 ^2 v* S
shl ebx,cl
# s* C& N: W9 G add ebx,eax
: [, j' p1 o& O mov al,es:[si+3]
! {5 C1 y, U$ U call Change7 ]6 w4 D8 S5 ?
mov cl,4+ w: J/ W7 }3 o, u, ~0 N
shl ebx,cl
4 f4 p4 Y' F/ V( p' q3 i add ebx,eax
4 m7 M7 ~: Q$ a# K$ a) _ mov al,es:[si+4]& V) V! P1 z6 j1 }
call Change4 B8 ?# u/ J5 u; a ]' P
mov cl,4
! K" K3 C" \# f1 g& b6 i( V shl ebx,cl
" w% A% p8 C2 T# q! @/ c add ebx,eax
5 P, M8 m) K }0 v2 Y mov al,es:[si+5]
! e n/ j- _7 w5 Y4 k* ~ call Change
0 U$ O" N+ Q" t" G: F( Q4 Q% I mov cl,4: E6 A: Q: d) D. G3 F" [
shl ebx,cl! ?% O% t7 m# ^" E: K& ^, Z
add ebx,eax
% w v9 Z: T1 x* e9 t4 G- [ mov al,es:[si+6]+ E5 D8 l9 ^5 K
call Change* x5 M9 u0 \& ~/ m- j; |
mov cl,4% ]" W0 t1 }1 O* a: z
shl ebx,cl
5 J( x! {# u# z/ A add ebx,eax
4 O% ~, W$ m* V ^ mov al,es:[si+7]
. j/ T- \* T7 G; L call Change. P/ r' C+ u( K, F8 D0 x
mov cl,4! W5 u5 b0 S$ p% l' R
shl ebx,cl: a6 c: A+ v! I$ m, a& i
add ebx,eax
: m, [- h, z$ N/ @8 c ret7 n/ `) _% ]" D" g( A6 ?, G8 i8 Y
DPSP endp. @( H/ b8 s5 x5 P
;================================================================================================* b( b) e' e( q4 g8 F2 k* r- ^
WDPSP proc near2 p/ J t/ r# P& {3 R
xor eax,eax
0 E0 ]% r4 Y" C L* F xor ebx,ebx# c5 s4 u6 L# m5 y% v) g* P
mov si,93h9 O4 i" n# Q5 n3 L) ]1 @/ k
mov al,es:[si]7 e/ G" {0 ?, M$ m# ?
call Change' R- J5 p% ]- W! T1 ^8 H
mov cl,4
' Q1 P5 R! `1 D Q0 I0 b shl ebx,cl
( u# B4 I& n, k& F: L2 ? add ebx,eax
% N# g. h; a! u N) P, [* V! C, n mov al,es:[si+1]0 J+ E9 f+ Y4 l5 Z! N+ \
call Change
/ m9 K7 e/ L: R7 v5 s mov cl,42 t! P9 I; V+ ]5 I% A. {+ Z1 r C
shl ebx,cl
+ r( F. r+ v Z. N. `! m add ebx,eax6 `; Z( `( x' b9 K+ @; t* }1 t
mov al,es:[si+2]
$ Z" A( T* Z2 W" g2 b call Change8 f# z3 `& S3 a8 j7 ~6 A' e
mov cl,40 _; W2 T! X/ j: g9 L% L* U2 R" a
shl ebx,cl
1 i3 Q7 m0 C1 g add ebx,eax1 ]% R d) B- k; k' G
mov al,es:[si+3]
+ {/ a2 b. G8 |8 |" k call Change* j, }) I8 d& {9 f4 J
mov cl,4
5 W0 u1 s; {& [1 F G$ u shl ebx,cl
+ [5 W0 g. |( N, E; D9 x4 ]7 P0 \ add ebx,eax
z+ H: K8 y" t" A9 Z- C1 @ mov al,es:[si+4]4 S2 e( a3 e! ?3 }0 f. r
call Change2 w5 a, ]/ s: l$ v
mov cl,41 y8 T4 x! z3 a; x3 }
shl ebx,cl9 k/ \) B1 a. H
add ebx,eax7 o5 W8 J% p; }7 \' M' J+ P- i
mov al,es:[si+5]8 E# y! t$ A. C/ X
call Change
) ]1 c; r6 O0 Y mov cl,4+ X; Z% S+ Y( E
shl ebx,cl
* o( l X( e" t; m+ N! r" ?7 J6 T add ebx,eax
3 P, Y$ j9 K4 r mov al,es:[si+6]
. d, m2 C+ c& r call Change, O2 ]7 S0 f% F- |$ s$ k
mov cl,4% G# I' ~9 S$ I
shl ebx,cl' \1 s3 d: h$ e5 \0 o3 O9 \8 @
add ebx,eax! w, \3 N, Z: W' c6 ^) a( N
mov al,es:[si+7]7 G$ U) n6 z1 S# |$ k+ h# G4 L
call Change7 D: K' X/ l! V$ W: n& h
mov cl,4
& p& n G- f0 _- z4 P" u shl ebx,cl
: x( v0 U% H: ?7 h1 h, x4 Q# I add ebx,eax
: Y& R8 m7 f, I3 h7 m0 w! D$ A ret
* l& h& E9 n ~: |/ D- CWDPSP endp
) r. g0 u. G, V. d- S' z' q# H- D;================================================================================================$ \- y. j$ B$ {4 E
Change proc near) w& Y9 P5 [4 T6 t+ m J* E* x
A:
5 M" A. t8 R! n0 P0 P6 B# h movzx eax,al2 Y5 E6 ]0 `- S0 ]1 H% H, }+ a
mov edx,eax- c4 J2 b! c6 x$ n
cmp eax,'0'
5 \, H. ^* E- N& ` jb A
3 c4 S9 @5 i+ f. c( x cmp eax,'9' " J- W/ N$ ~) s/ o a
ja B' n* b5 }% W$ \5 ~* _
sub eax,'0'
5 q% p+ A3 J3 b, c3 W4 _# v: U3 n- Y jmp short E4 I5 p& Q) y8 ^/ C
B:
6 N3 \' ~; i, O) f& Z and eax,0dfh 6 S$ K1 ~2 u: n
mov edx,eax9 m! a4 ?$ g' S: n; B6 u! O3 R5 W- \
sub eax,37h * h+ e8 N" j5 n" G* O7 Y
cmp eax,0ah
& M0 z0 G8 }0 u- r9 }2 z jb A
! s( j9 x3 R1 r* I7 t cmp eax,0fh
, V1 M; c; R+ }3 q ja A % x3 M" e! O" R
E:" }/ ]6 D# `/ }8 M D7 c) @
push eax
; o4 v' j# I+ Q) P9 D call PRT # ^; z; e7 K0 G1 e- E% O0 ?
pop eax& O, s. W4 w) K
CExit:
& h/ @% g5 C6 | ret
y' }$ v2 ?) jChange endp
" A+ l: c2 J( l;------------------------------------------------------------------------------------------------, }8 O+ z9 X4 v. p
PRT proc near
4 \+ q3 m* b, w* n0 O mov ah,02h
) J# e6 o/ _ {. q* P; [ int 21h7 V4 v$ m0 ]9 V& r) ~' B
ret
Y( g2 g3 j4 K( t" @3 F# t- C5 ^% BPRT endp
# Q( R# K# W$ l: w: `$ |+ p;------------------------------------------------------------------------------------------------, C/ }6 \% d) y3 T( f: q
crlf proc near
7 R9 R. a, I- {" v mov ah,02h
" u+ E& X% [3 p6 N' w, T4 J mov dl,0dh3 p* x5 Y) o+ t
int 21h. J1 R" U) B5 D/ m
mov ah,02h3 L: o8 Q, p3 V1 T+ c+ u
mov dl,0ah ^! I. o7 d t
int 21h; d. n0 B2 ]! x3 t
ret
7 {, I& i0 `6 t3 l+ o) p: [crlf endp
0 t( m! S: H& X, A" p0 s' F;------------------------------------------------------------------------------------------------
2 c3 z X/ Y6 i }$ |$ P2 Q- D4 Q( ?_32bits proc near
% K% J( y/ o K6 a7 g# N pushad
$ ^" J9 d$ g* X; X mov cl,4
7 R. l" M+ p) K rol ebx,cl
* Y# j9 M* d$ J+ e7 R call print_4_bits: ^. V- e/ ]& X
rol ebx,cl' k2 n( C# j. b2 G3 t
call print_4_bits
?: ]2 U4 ~! D U4 I' ^ rol ebx,cl
9 F' y! H0 g8 N$ x9 w2 w call print_4_bits
/ n7 B' p- Z1 @, R j rol ebx,cl
- |* w F; x9 [, N0 p2 ^ call print_4_bits
% j \2 t( ?8 C rol ebx,cl, n; f& |: N, c; N) j+ ^
call print_4_bits& ?+ y) `% I) T' T
rol ebx,cl
+ @+ H- T4 ~+ ?( } call print_4_bits* R$ K }) F+ |. N1 u/ Y
rol ebx,cl
$ J3 y( i: a' m& a, m+ V call print_4_bits* ~- _ N6 }2 j
rol ebx,cl
* l! b! a; k. B3 N2 h0 }9 p call print_4_bits1 T% H% D/ i c7 P+ z+ C# {
rol ebx,cl, W+ u2 X; r" ~2 I$ G& l
popad
! W2 v! h4 H# `. | ret% j0 B! O M. N9 A! z3 \" ?' P
_32bits endp) Q. }6 B7 k) n' k( i
;------------------------------------------------------------------------------------------------
0 a2 |- l1 Z$ @_16bits proc near
0 C8 b! r+ N) l pusha - U) j% h% {" Y; ?& \& z
rol bx,cl
8 s0 a3 H9 L! w( ~ call print_4_bits, N7 t0 L- f0 J r& n3 p' R d
rol bx,cl
+ X6 ~$ I( o5 k. O l call print_4_bits. ^( t. z$ B; X# K
rol bx,cl9 \! t4 l+ E; x ^
call print_4_bits" g8 _+ n' D+ V+ a( |5 Y& ~" o
rol bx,cl6 m9 t0 ?3 h9 H- Q4 U
call print_4_bits# S2 u% {3 _( d5 A
popa
7 K. p+ o$ W0 ` ret
' P0 s' F3 t8 z+ e_16bits endp
8 J) [# z; u1 w# j. [;------------------------------------------------------------------------------------------------ B# q- c3 O" I& L$ T# P R7 ^' s
_8bits proc near
2 L1 n( k0 {4 |% m pusha ; x# H9 g( o" Q
rol bx,cl
' e* `+ w, y* x/ `0 {& N! u2 F8 v# f call print_4_bits
; X8 a' \! B) x9 |$ @& M$ J& |% b rol bx,cl
4 m9 X0 D/ o6 f- h call print_4_bits' F y6 n' x: S% K( g8 j
popa! t7 L3 f+ k/ i, V' ?$ `
ret" L4 e# n" B c8 E; y+ {4 x
_8bits endp
$ f- b6 k: o* j) |2 o2 Z+ N2 oprint_4_bits proc near. p$ ?- ]5 n$ V" V8 ^0 X
mov dx,bx! ]6 z2 J X# [+ M8 t7 a
and dl,0fh6 f: f' F/ N1 ?) a; J8 {
add dl,30h
6 k# a4 j0 v2 T$ H- ~ cmp dl,3ah( d( q; v3 y3 k J# u' ~6 \
jb print3 t/ @& o! b5 ]' R- T( {
add dl,7
# U! V1 }# _) F4 X* y3 [/ a! D+ Y9 @print:
. O+ f4 S4 F0 h- `9 f4 h mov ah,2
B" t2 q+ ]: D) L5 A' }9 ] int 21h- E. M+ Q( Y& n. a5 v9 R+ }' s
ret, x" E7 f# f* ~. T. s
print_4_bits endp
& Y2 C6 D c9 M- C; K" m4 yCSEG ends
% I5 U" }. h" _" F4 P2 O5 a" D; KEND |
|