|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)1 ]7 M# X8 n* @' I. v& E3 G4 M1 r5 b
9 @7 x; B% h4 I/ f
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'8 |- i8 ^% M P* C
/ A2 m w' d' [8 m- k) A6 M3 K
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝 8 o! e! U" f( v3 g! @
( ^: }" d; m6 _& ^/ V4 c
.model small
5 g$ s3 ~$ d- p- _/ Q/ X.386p
% {: f1 p% J- G# L9 E+ ]DSEG SEGMENT USE16'data' 6 q3 X* J/ u) {% ~3 P
" H! a" ]4 P! D& s) u/ d4 V- t( ~
DESC STRUC
: m! f- a& I7 h) h! x2 U+ d7 j LimitL DW 0
7 t* Q. H- n: N: ? {' N3 Y BaseL DW 0
i) s* N. C, y: z/ h BaseM DB 0
' u$ k7 L6 F8 F$ l2 F Attributes DB 0
' O( ^5 ?3 b& O. m3 p8 X LimitH DB 0
\! @$ L9 x$ `8 z) G) `2 b BaseH DB 0 6 F4 ~9 H1 Q7 A( t' J
DESC ENDS3 O. {3 F2 N# i
7 e: g# i$ Q4 B7 j; G0 D
PDesc STRUC0 ~" H/ a$ f' B/ O- g
Limit DW 0
. A6 l# x! ?, `* I* }0 ^! }5 n' L Base DD 0
, p' d. i2 w3 KPDesc ENDS; K: t( e7 E1 q" f
: Q! j( x2 @& ~GDT_def Label Fword7 ~ g# G* Y. i3 p: k
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
9 O- ^! D9 q( c% o3 k( ~Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>% V! t6 c6 T! p* J2 v9 l) V
GDT_Addr PDesc <$-GDT_def-1, >
+ K: R4 D: J9 x/ e/ S8 Z, \5 y* x( E. T3 E1 k8 R
Maddress Dword 09 I, Y6 K, T- h0 J5 P! W
8 t. ]7 f. r4 `DSEG ENDS 4 m$ Z; b, o7 f+ F9 ?
ASSUME CS:CSEG,DS:DSEG
( P0 g z. f4 ~+ |: O/ y" p0 d% p- z& U& E9 z. Q' E; r
CSEG SEGMENT USE16'code' : d: a0 X8 r3 y) a7 @& `) O
push ds
* C. ]1 i# r* u- d' ~ push es
# n# e! r- f" V* h4 p0 p) \ push fs' s2 w. C* Q$ W0 q* K7 y# a
push gs' i( S# N& H$ W0 f4 u
call big_real_mode 0 H$ V% ]/ k: x9 k$ \
call Get_Commandtail
: V4 P5 g; L5 P xor ebx,ebx
+ [* y3 X: n" c mov si,82h- _; t9 _, s: V: x$ \) T
mov al,es:[si]
: g" W' i# h* ?3 U cmp al,'r'
% B4 g+ d; L- T; X/ T5 A) X, f N1 P je R
) K, U. c; n) R cmp al,'R'" R( z8 l% p# m1 X$ v& x
je R9 Q, h. f3 B' Z! F
cmp al,'w'4 x) }! C; `6 }: N& @8 c
je W
- \; t+ O, u; {0 v7 o. G7 H$ t6 d0 @' v) u cmp al,'W'
% F( ]" n. P$ R# v1 z je W 2 Y1 z1 s+ t/ _2 r; d/ v2 @% o
R:- Z! e/ {- D) g- }6 H$ _$ ?5 l& U
mov si,84h
# a+ K: }7 L& u C: o+ p. ^+ d mov al,es:[si]7 m* u: ], D3 S% j# u, S: H
cmp al,'b'( D3 I0 F/ h0 t3 L5 E' k
je RBT5 V, a. p# c: W, U% O/ c# K
cmp al,'B'
$ F* ~$ Y! H2 M+ U2 M Z je RBT
& t( G/ o& u: G5 W2 z3 C- V' h# i cmp al,'w'3 K1 Z. ~1 Z: P0 v" ?0 {: e! f
je RWR \6 l) f# `8 q$ H, F* g/ X
cmp al,'W'
k) h; Q" H8 z. }9 a je RWR
. N. ]% S6 y% `! u; }0 I6 S& j" k cmp al,'d'5 W0 S* t. k# z6 P
je RDR
: i0 X8 _$ t# a: W U! r cmp al,'D'5 M+ m0 ^: q# g8 x5 m
je RDR
& x8 @& m* a! m- }W:
, e3 p) n) g7 x7 o mov si,84h
1 {6 p2 N) F6 {) o# i mov al,es:[si]
& d( A% ?4 c+ [* e5 w cmp al,'b'
6 {1 f. S4 n: M, T: w7 c' l je WBT5 s4 F: o) Y6 i! A1 N, @: s
cmp al,'B'( `) T. k& o' `3 @2 v A
je WBT
9 r# K* h+ y2 a. K( c( T6 F2 n cmp al,'w'+ T% M2 w, z# B' K5 W. i
je WWR8 p- W. Q, o! W
cmp al,'W'
) m9 x& d* w6 S je WWR
; L3 U+ r5 n7 {) q' O3 M cmp al,'d') i, G+ U1 q9 o% i: x8 f
je WDR" B: \/ ^4 e7 T) z
cmp al,'D'
c4 R+ o! z) H: C) y% q# u je WDR# ]# r# c. {" k+ \, C9 J
RBT:
% q, ~8 b2 A$ y3 T; |( J5 n call PSP
. r4 }9 v! r& U0 o* H call crlf
5 p) F& x' f) W mov esi,ebx# m' p, S! K. C% z `' n% O# u
mov eax,fs:[esi]# k4 Q U- G) _+ L; e b( }
out 80h,eax) b& ?) _/ Z, `! [. q
mov ebx,eax
+ p h1 o; X5 u6 J call _8bits
; |8 H# T& T1 F% P+ k, w. Y& K. | jmp Exit8 L! b1 N+ `7 ^8 V( ^( p# J
RWR:
- ~3 Y5 J' q9 J$ {, n" k call PSP
2 o) E. C: n3 `! e4 O) ~: ]: a# K call crlf ; J: F) j, G! r+ ]8 x1 R) ~: p0 o
mov esi,ebx
$ `6 _# f: M& P) F* W t# [ mov eax,fs:[esi]( x2 Y+ Z/ A5 w% C5 D& b+ n# `
out 80h,eax
% I' O- V6 s$ _- X$ X/ [ mov ebx,eax
+ e6 K1 k) i* a call _16bits6 _, [: k/ y9 a( C: }% {% ^ ~ E
jmp Exit
3 D; h6 M% V( g" H% I2 D9 KRDR:9 c. X0 ^: f- E/ N
call DPSP
; I! _1 y. f6 k( [) B call crlf 1 C5 M& ]# {3 _, {6 A& q4 D
mov esi,ebx
$ w$ Q; f! Z* D$ I$ K/ E mov eax,fs:[esi]
8 C# g2 E5 o. d' H V out 80h,eax& h+ V8 g2 m$ L5 B
mov ebx,eax+ C- f6 W. L2 N- J) e4 M
call _32bits
+ V# O& O( l8 o* v7 i jmp Exit) `* y" U& |) a H0 F. k
;------------------------------------------------------------------------------------------------
" L* _7 m& L2 N9 pWBT:
2 `+ O+ k, L, u7 k' n6 o! v jmp Exit
1 @- l, Y! o) y1 s j: t! d/ SWWR:
( l' z) _, N0 ^! z/ _" a jmp Exit
; i' K' @9 Q9 y+ ?WDR:3 |& {0 P% z0 `) ]
call DPSP$ A: B S( y2 a
mov Maddress,ebx 6 U3 f5 x$ G. L5 a, o) O) B
call crlf+ K% m }7 t; n9 y6 x. z" J6 H' k
call WDPSP
. J6 Q$ Z" y2 S% c; s, R mov eax,ebx
, C! r, P$ M1 t! e mov esi,Maddress
7 [0 A; K! ^9 G T" I mov fs:[esi],eax1 |3 d' a- o( |' k9 {" z% J6 A ]
out 80h,eax
( B! G% Z. v" c. Q# \ jmp Exit' H, n! v% H" H7 k
;------------------------------------------------------------------------------------------------ 9 ~' n, u$ s% J+ Z
Exit:
b8 B' l( u1 z( }) K# O3 c call real_mode ( s; n+ H( K- O$ N* n+ C
pop gs
) M" s* V: g. b: m/ Z& U pop fs$ w1 b) Q: |; S3 ^
pop es
) s S! D4 i- r! \. I pop ds
) }- i0 b1 i* `* \, I0 O .exit. z8 @% f' e( [+ y9 b# K7 K
;------------------------------------------------------------------------------------------------: O7 `" k& J+ H+ g# O
big_real_mode proc near
4 a0 a: g7 f% B2 R2 K" b in al, 92h% F% D5 H5 J! w- l3 v5 R0 J$ {
or al, 002# J/ a. v2 O+ j1 ?
out 092h, al
3 Q. R8 p- b& M3 D out 0edh, al2 {* r2 ?+ K2 i6 d
cli
( `4 p' D$ c8 t mov eax,DSEG
& r7 i: n( u0 A shl eax, 43 j" p& Q9 H: \5 j& Q9 y
xor ebx, ebx
4 d( }) k! `" V- l" \* L6 F mov ebx, offset GDT_def) Z, {1 v7 {6 e3 N' y0 |* r
add eax, ebx+ z4 e H, E2 {" W6 j# ]* m9 r
mov dword ptr GDT_Addr.Base, eax
5 @ c1 Y# Z" C, _( \ lgdt fword ptr GDT_Addr; |1 s$ x% O5 W G V
mov bx, 8
- l: F* C1 F! j6 S) c3 |" E mov eax, cr0
! X0 n+ ?" c8 {' O: J1 K" R or al, 1
2 D2 o& R4 }0 X. j8 U mov cr0, eax
f0 ]* o3 G: [# A. W jmp PMod+ G U1 a+ O' @9 Z B. A) d' |
PMod:
- k7 r$ p( N1 W! @) |3 g mov fs, bx- b; F& f' e6 i8 a
mov gs, bx
) r0 }3 c3 \6 e5 H0 i, ` mov eax,cr05 ^- A3 U3 j4 i7 }
and al, 0FEh0 h; S2 u% b0 d v3 Y
mov cr0, eax
% r1 T% @8 E5 Y* @' c1 }3 H jmp RMod
1 O/ _: R* |$ D' |2 d" d9 KRMod:) ]! A# ~/ y3 c' i, @3 I4 C
xor ax, ax4 ]: |# S# ]3 ^# u* |; b
mov fs, ax5 p3 o% K+ C N2 k
mov gs, ax
" {5 y/ ] `3 m5 W sti $ l$ S) r* e: X) f3 b0 ^1 }
ret% ?$ U/ S% D" j- M( Q& y) b! ]
big_real_mode ENDP( ]6 @0 k, e+ J! l: C
;------------------------------------------------------------------------------------------------
4 _) W5 L' f! K$ T6 ~ Vreal_mode proc near
; z7 U; L& c) h in al, 92h: Z) C* J! ]) T" A
and al, 02
) R0 t. j! `* g: M3 m* B out 92h, al 9 [: U* Q0 r5 d c r% N
ret7 ^+ e; K; ~1 V6 U
real_mode ENDP' b, Z5 D2 C3 c
;------------------------------------------------------------------------------------------------# E- Z% m ]; X* |/ S3 e2 d
Get_Commandtail PROC near* U7 h% `* {5 H
mov ah,62h ( H0 |. F& Z5 A7 O* ]
int 21h
6 V* |: A& y2 i# | mov es,bx6 z& C0 \3 W' i8 F: K, m$ x% m9 S
ret$ A% ^! C7 L) W" D6 \
Get_Commandtail ENDP 6 s% `6 W" g- \% t5 o+ W
;------------------------------------------------------------------------------------------------
7 I* D7 x2 z, N; \& T& `, j; x( hPSP proc near
8 O, a7 }6 I" K/ F xor ebx,ebx5 T- m, X }. z8 T7 {
mov si,89h9 G, k' [3 X3 h$ [; `
mov al,es:[si]3 Z" P8 o# [ @+ v! g. V9 q2 z
call Change
( j; k+ f) L3 O mov cl,4: t' t0 M$ V, O
shl ebx,cl5 F9 X' y/ r9 h: o; P
add ebx,eax
, O1 F, P5 c! {+ K* Y mov al,es:[si+1]
& q! d% {: a7 P6 E, | call Change
" j2 j q4 e+ O/ T3 \ mov cl,4; F' i% ^7 ?4 e2 R
shl ebx,cl
& n+ b* e3 _" N add ebx,eax
: D4 \. p% N( t4 |5 t7 a8 g mov al,es:[si+2]
' g" M: n8 R0 O2 {4 u$ q call Change
. _! T }! ~8 v) p8 X7 Y mov cl,47 {/ t( H# V6 x. O2 U" \
shl ebx,cl8 o8 }( T) K3 W0 e& {" R/ P& |- p
add ebx,eax
+ o* y3 h2 N# ]4 d mov al,es:[si+3]
2 ]3 j( m& ^* T ~% F1 U call Change' Q% w& ^$ H! |/ k6 l" m
mov cl,48 {! W& F. p6 \, v) a$ G0 c
shl ebx,cl0 X- Y* H" y) K5 u. a$ D4 t
add ebx,eax
5 C4 B) X; b7 g7 u% t9 F* I mov al,es:[si+4]4 ^: F! ^$ R- M7 M' N
call Change
5 T1 B" O# f: p1 N mov cl,43 N- [8 h; q) o* s& ]9 ~
shl ebx,cl
$ i3 E7 I9 d' P* h add ebx,eax
$ W1 W( T1 n0 |1 R% X C: W5 t* v; ` mov al,es:[si+5]
, |$ J, \. B, }0 A T+ \( L3 p: z call Change
& m* y3 H. @( g. a/ C$ w3 f# U mov cl,4
7 X7 o- Z: k1 v4 U, g$ b2 r7 X shl ebx,cl; Q5 v; i' V" }2 T& q% I+ @
add ebx,eax
* y8 X" j; o( s! c8 m- K1 @ mov al,es:[si+6]+ [' a# e+ R2 B" u" B
call Change
4 ]$ H) O0 X7 a mov cl,4% G$ K/ ^& P1 a# Z
shl ebx,cl* n) ]+ E# r5 P2 B+ c
add ebx,eax
' s& n1 z+ K' L% ?4 S5 S, c mov al,es:[si+7]
8 H$ E- }6 V9 x* V2 R& X% O call Change
7 S/ {6 F, H, T# g ^6 o: P mov cl,4* x! D* A! v+ T# Y, n6 s1 c
shl ebx,cl
* g3 N* P2 B/ u: V: i( z add ebx,eax1 a3 o& \/ w, l' p! g: G3 k& g* T
ret3 @* p3 @0 j6 j; J$ r4 }
PSP endp
: M9 m6 q. R/ k9 B! z3 f y;================================================================================================, n2 G! r4 s: ]/ i# X8 O& X
DPSP proc near
) t' @+ j# l9 i xor ebx,ebx
" i( Y: p2 j3 J" w. G; h; e mov si,8ah i8 v! r( ^, k' E
mov al,es:[si]: u0 i ?/ _; R {
call Change
) i# |8 M8 y i! l mov cl,4- M/ W8 U9 G/ k9 z c+ p7 |
shl ebx,cl
) ~" P( [" o4 A4 Q9 e9 t" I6 i add ebx,eax
: [/ c& Z, w4 A mov al,es:[si+1]
6 K, F: q0 E7 b& U& I. R" Q call Change
2 ?0 D' Q7 D: }% P1 Y& ? mov cl,4
$ J ]# G' h+ s) A1 s. R4 i shl ebx,cl( X& R& I/ W) A) z/ D' u# m
add ebx,eax
1 }+ i0 A' m& r% q. { mov al,es:[si+2]
6 b x5 j8 j- f- c! R call Change" T0 J# a* ^7 d: Z6 @# A a
mov cl,4
, g4 S! W2 J" t shl ebx,cl+ a* `7 L4 d0 {4 J' F
add ebx,eax
/ k& P @' z4 [8 F$ C mov al,es:[si+3]# |$ P) ]: m/ x; U& W6 a
call Change( D% m8 ]2 R2 O. A) a
mov cl,49 r* M0 K4 y. |6 v9 ?" x; Z0 L6 M
shl ebx,cl
$ R" `( i7 E" x0 L add ebx,eax
$ F& T: K) S) }% X8 F7 f6 _3 e mov al,es:[si+4]- f; `7 H/ Q1 W
call Change
- x3 W- y* P2 I- e1 y mov cl,49 |: M' `: Q( I8 _
shl ebx,cl5 _0 A/ V) M V5 q: X0 V( W% [
add ebx,eax
' y- s. u) g {" }: S5 T mov al,es:[si+5]
* _3 }5 E# _* T; v0 h call Change# D8 G) q9 ?8 x; M
mov cl,4
6 g' A3 k2 {# p6 p, `, r0 k, K* \0 T shl ebx,cl
2 t$ D8 M) Q4 W2 \& q7 }& T add ebx,eax( e" u7 L0 g0 L9 ?% b5 y& p
mov al,es:[si+6]6 q3 n) H# S( z
call Change
, r* i1 [1 Y5 P7 h& @$ B6 t$ ^ mov cl,4
; X8 T, b9 H/ b; b w. X7 O& ?/ D! m shl ebx,cl
9 D: q: v. F, r$ B& M add ebx,eax, S$ x7 o L, O( @# f
mov al,es:[si+7]
9 Y2 h5 b! F4 B' w9 b+ A0 {6 C call Change
% \- ]! Z6 C. _& m& t- X) x mov cl,43 g* n5 r; b: t& T2 ?1 D/ V5 G
shl ebx,cl
/ O w' u6 R4 J add ebx,eax$ I' {$ v1 F3 A/ r8 u4 g0 Q P; k
ret
5 m0 h7 b. D: x; j! ^) hDPSP endp
7 F# p2 Z+ ^( ?* E;================================================================================================9 @, n+ t: r3 k& G1 m# |+ n2 f5 c/ x
WDPSP proc near" z2 P* A% H4 O, S8 r1 j+ _7 @
xor eax,eax" z4 R* F" a) u+ t
xor ebx,ebx
/ I. o5 A5 t' }8 s% i# H mov si,93h
/ L' c; L, Y9 o. E0 \6 ~ mov al,es:[si]
/ J- R j* c& E call Change) y' a0 S9 u1 S3 q/ o. P
mov cl,4! z. m: ?; V; D4 _3 ?8 c. Y+ Y0 ?
shl ebx,cl, J2 O! H4 w8 v0 W. K, ]! x! c8 N6 ]
add ebx,eax, Z3 K2 v9 @7 x* y0 V* y
mov al,es:[si+1]
* A1 b. e5 k/ g call Change$ w% [8 z1 O) [
mov cl,4
& Z* h/ t5 @0 H5 q% H shl ebx,cl/ R S, o# ^: ~" ^9 r6 W
add ebx,eax
! F) p. [5 u* p( r! K6 |" ` mov al,es:[si+2]
/ l% Q% v+ y6 D) f; }$ Y call Change! x8 D% T' C& ?7 E2 z
mov cl,4
, ~- O2 G8 v/ G9 V2 i shl ebx,cl2 \: P& Z& A. Q$ J4 a3 r6 v$ a
add ebx,eax
6 q5 c# Y+ Y2 j4 o. P3 a( f mov al,es:[si+3]4 e! T9 r" B8 v/ J- P$ ]
call Change
7 h" N" ~& Y& v" O1 Q% { mov cl,4( v5 v% b# ]# F+ X, r1 @
shl ebx,cl# [, ?' g: J$ T& i3 z2 [1 Z6 N- q. K6 V2 C
add ebx,eax
6 O3 q2 M" @9 A$ q/ O% @ mov al,es:[si+4]* Y7 ^$ P& p) u9 _2 U7 w* p9 ]; ^
call Change
$ X5 v/ w! k. U# J+ R3 q$ q mov cl,4" \# j( P3 a5 s" h* q
shl ebx,cl: E' `+ v! }) [' `, G6 K+ I k" r% ]
add ebx,eax/ h, F8 I5 e, u2 i- O
mov al,es:[si+5]
0 s) z4 I" M/ ~- ^( l: S( I call Change! E/ h( r8 c7 B& d) v/ R! |
mov cl,40 x- H) e. c3 @6 a5 E$ m) u- u5 t
shl ebx,cl
/ R) \6 P5 ^/ \8 B add ebx,eax
# j \' M+ x$ ?* u }7 _ mov al,es:[si+6]
1 K6 B) y! w5 u3 ^- F call Change
- X4 m9 ]& f* X/ z mov cl,4- R9 a. b! P: w. c, \. T8 x
shl ebx,cl
( g" Y7 g' o- }$ ]5 T: d add ebx,eax8 s7 S" B o- L* j" Y
mov al,es:[si+7]) Q; m3 d7 L5 l S3 I6 E
call Change7 `: l+ u% J+ u+ v9 W3 X+ r: \
mov cl,4- j! x1 n1 ^! g
shl ebx,cl
8 C9 J9 M) T2 \ x, j add ebx,eax2 O0 ]( v5 }9 b" R% c+ w" ]7 i
ret
, l4 K( @/ j8 T& H# ^WDPSP endp
9 I* S) @+ R! c9 D" z;================================================================================================9 u* L$ W0 N$ k. R3 A" h
Change proc near( X4 e0 z/ i* p7 D' M( z; A& ^
A: 1 g6 Z1 {- l/ _* _, Q
movzx eax,al; \$ ~& E" z' X9 `( e
mov edx,eax
- H( k& _' a& I) S) O9 s1 T cmp eax,'0' " c4 H: n9 i3 t) f$ ?; T3 d4 Z; r
jb A. ^1 A) g# O4 c& C
cmp eax,'9'
( R, b. ]3 P, w& s' p8 } ja B0 q n% K9 u H$ u: p8 t
sub eax,'0') Q( w5 l% K$ S% y9 M3 l, T
jmp short E: u/ W4 a, J/ Y0 q2 I
B:4 b3 q; I/ E5 V3 @+ y
and eax,0dfh
1 T) ^6 x: Y) @2 E* Q mov edx,eax4 o8 R! r' K3 T* e9 ]! I/ i! L7 @
sub eax,37h . j2 u8 o) W: i
cmp eax,0ah4 J) U/ F& I n& q5 `1 h. G
jb A & Z' K& s3 a* j* X
cmp eax,0fh
5 H2 b4 M3 x$ Z; [5 v ja A
! N$ a" j8 _) X8 @, E1 y' O/ ^0 eE:1 f: G% ~% R. S2 j2 v
push eax : {1 d* e" H; P; H9 K) |
call PRT 6 q& d& U2 }7 @9 O7 E) E5 c& `
pop eax5 D3 ]( D/ ?, m4 h3 R. y* x- V
CExit:
( f7 O( Z- J& i/ @. W2 X5 _ Q ret
5 u$ I0 ]0 U' f" c4 F8 w' \* fChange endp( G4 s/ q8 ?* Z3 z0 l
;------------------------------------------------------------------------------------------------7 a9 G; r' L% A* V4 f
PRT proc near
# O# z5 }( R q7 X3 w8 E S mov ah,02h; {: E1 m8 s0 I! J6 b1 I; y
int 21h# O5 W) z& X. n7 w* h$ Q' f }
ret3 v9 c- y% W% o% [' i* m
PRT endp
' f4 |: u% |6 e t( a5 |2 [% a;------------------------------------------------------------------------------------------------
) k% m' H& Y6 `" H( i, @5 Ucrlf proc near
" b' a3 N3 l/ R i" V mov ah,02h) t. x9 t' Q9 k! O
mov dl,0dh
& Z. K6 T+ q5 P: L7 h; G int 21h
% K$ |" T: m6 e$ }" w1 x mov ah,02h
' p. V7 B( N2 [ @: a; ] mov dl,0ah
6 `7 V4 `* E( ` int 21h
$ y: x9 a0 z' u: {% [0 ^' [ ret
# m. K. v% ~) }4 k( @, Dcrlf endp
& m7 v- |+ K6 J;------------------------------------------------------------------------------------------------
5 B' o' C2 t5 B- b_32bits proc near
5 n* M8 E6 n, S. w3 n pushad6 E5 h0 h' E1 v6 k) }$ E
mov cl,4) S2 K o. c8 Q% N6 K5 u/ p
rol ebx,cl
! i+ S4 J N0 j8 I/ l! T call print_4_bits2 k. I( n9 M3 Z a9 w
rol ebx,cl# g& J* H" k; a; |" f
call print_4_bits, p: i, _) F5 H
rol ebx,cl3 O, r! v+ f7 F9 H, R: T8 ~
call print_4_bits0 i: ^9 h/ O. L9 }+ H
rol ebx,cl
8 e" u: {" Z0 n* v& k call print_4_bits
( x9 n/ r+ W& K/ ] rol ebx,cl, s- I% r4 k4 r I
call print_4_bits. @3 T& m( k: \' B
rol ebx,cl
& E! d( e: a6 J; ? call print_4_bits7 R- _) G2 I) k7 U o" z% p# A- {' A
rol ebx,cl+ Z; U& w, C" F: _; ^6 f( Q, u. s+ g
call print_4_bits5 ~" w1 O" _# I$ K+ \
rol ebx,cl
; K7 }! z" t4 r* u. ~- H call print_4_bits
: n5 r1 o" R2 O/ U rol ebx,cl- _5 s: v) Q7 ?4 n0 O
popad
4 P7 L7 n" P1 Y- \4 @ |0 }) Z- } ret4 h: F Z6 r- B6 b, }
_32bits endp
; F! i. Y' N L- e;------------------------------------------------------------------------------------------------' Y. N" S, v) E1 d
_16bits proc near
% w+ Z. `& v& K( F5 o' ? pusha 2 @# I9 e3 M% z& N% l- f
rol bx,cl( t3 _; E: m1 V# W. o
call print_4_bits: v4 \' c* ~1 r4 `8 \
rol bx,cl
. x5 W$ |: D" C call print_4_bits$ c- `; {; k* |3 P5 A1 D3 ^# |
rol bx,cl
& h8 w9 F+ T& K7 B, h0 j call print_4_bits$ K; o3 F9 G: Z' g" I
rol bx,cl
% C9 w6 H: f' X" o6 b' K+ O, V3 e call print_4_bits; w( b6 A3 _) M
popa
# T% L8 a' D" {9 c ret/ T; z4 F/ X- y1 U% c, c2 B+ d
_16bits endp
! C% E7 c5 N( };------------------------------------------------------------------------------------------------
0 a* q; W+ v# Z: W) B# W_8bits proc near/ h1 \8 N0 n9 E
pusha
3 v' E8 S5 i' r7 E rol bx,cl
6 |, C! w2 c* o; f6 N0 O0 w5 T call print_4_bits
8 o. I- ~" g, @& Z/ \( d3 W rol bx,cl- W, O6 K# q; m: n' [
call print_4_bits
% k+ z& v0 ?& H0 T5 M0 k popa
) _' q o- {5 _; t- \ ret( H2 z7 R3 M; u$ Z+ b: R7 \7 k
_8bits endp, b/ V; K F( G O2 e
print_4_bits proc near
( ?: b6 ?* z0 |, [3 h8 ^ mov dx,bx) _3 X0 K2 S5 K
and dl,0fh+ l$ M& K, d. ~% \/ P$ i
add dl,30h
) E0 a% R5 u4 u1 `: o cmp dl,3ah
9 k0 q# v: l V! g: I( A; W: Y2 M jb print
7 S+ R5 }7 f8 `4 O+ u/ ` add dl,7' R$ l6 i8 ~- q
print: ' m: @' v; _" O
mov ah,2
( x" T5 B. i" g1 Y3 } int 21h
6 x! e- d3 F9 }2 n' T1 h5 @ ret; g3 s1 y3 z. W3 q$ q
print_4_bits endp
0 Q& }% E+ K8 S3 iCSEG ends4 F6 w7 F; b2 m# R$ k
END |
|