|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)( w& p. |8 p4 X- M5 I' r9 ~
! w: l \% C) @9 a' v# v7 b. R3 g0 ?
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
2 o2 r' U7 ]4 i7 d9 T9 @- k* X* J3 t4 W* s0 D! @3 L4 S) r, Q
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
4 f- s) I1 j& |4 a8 ~* E" E* B# R( J3 u
.model small! {% {6 |; S% A, B# x) q& ?
.386p
L# V: D! x" v* D: x7 pDSEG SEGMENT USE16'data' 5 O2 X3 f$ k4 ?$ _6 y9 R
9 O6 r; i) }% Z, BDESC STRUC
; A$ U+ ~ p7 H" R" ?5 g LimitL DW 0
8 j1 ^+ \) v8 m BaseL DW 0
3 ~1 y Y" B) r' K6 \! W BaseM DB 0 9 L/ ~8 c! k9 A2 {
Attributes DB 0 + K/ a. A6 h8 N2 u; t( d
LimitH DB 0 / Y+ i0 j" h" t3 |, q( W
BaseH DB 0
( Q5 q: Z- B7 U5 P! SDESC ENDS- W s5 c2 K% @: J) m) A: ~4 Z5 r
1 m! u* J% {6 \0 @4 V" fPDesc STRUC
) t, U2 ~ V; m y Limit DW 0 8 J/ y' }% S7 V4 Q0 `# D. [
Base DD 0 1 S( x0 J( {9 g: h) h
PDesc ENDS
7 N' B% |7 l9 b. }2 B: W; E# c0 G' Z4 E9 `- `
GDT_def Label Fword
* d9 Q ^* C8 ^ n0 h8 [( ?Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
# F' j0 }6 B5 K5 x' TData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>7 G0 h+ i- F+ ~
GDT_Addr PDesc <$-GDT_def-1, >
& b9 S$ V$ F# m. M3 I% ]
% Y8 X, T/ l E6 D" }Maddress Dword 0
# B( G9 h, y7 O2 X# S# \) I: ~
% a/ Z* p9 A1 W0 J! b6 N u9 \DSEG ENDS
8 _9 Q: o( R! M" ?' A5 Q3 tASSUME CS:CSEG,DS:DSEG0 C5 M* g$ H5 y( |# s# t
1 C! {" ~8 ?6 ^4 M+ j
CSEG SEGMENT USE16'code'
9 G$ Q$ \: L) E: t# o" ^ push ds3 H( @* Y# n+ i2 D
push es
: ?7 ]0 V% S4 N+ G, ^$ H+ E push fs5 V# f: @( g2 ~/ `+ S5 G
push gs5 d& d" ?# w$ \: J Z h
call big_real_mode * V0 F& ~/ z& T; o0 D- B3 h+ H: V) A! p
call Get_Commandtail9 h z/ N9 q( M a2 H: i
xor ebx,ebx
% P& Q* i/ ?7 G6 G) b7 O9 _6 p mov si,82h
. ?, V( o3 n/ }) T* c8 y, @ mov al,es:[si]
$ b, M5 P8 e4 a7 u# ], G+ h, L: \ cmp al,'r'
! ]) \0 W$ \9 p2 z+ N- n' _" R- r je R
# I. g4 M4 u: ?& x) g cmp al,'R'+ v: t6 Z8 \7 ]
je R
! ^1 i7 {0 v; a5 `7 s cmp al,'w'
) V% K# ]& x9 Z. A je W) W1 U' _; g; @. M# Q
cmp al,'W'
& h5 T" b" E+ U je W ' n6 s8 n7 C2 t" M$ \
R:* c% L3 v' p; V4 J- ^) M
mov si,84h
9 p- ?0 `4 y$ C' f! q mov al,es:[si]
. l0 F" s* X' T: t) W cmp al,'b'
" W# ^: S5 g9 C b; S# D9 |( D( X je RBT) J9 l$ u4 W T! e0 l! R# Q
cmp al,'B'
; g H% D+ e: Q" ^ je RBT$ O9 L0 E1 a# T/ H
cmp al,'w'
( \* v- ^7 i8 O- C je RWR
% i& V& `+ |( i cmp al,'W'1 g8 c, g8 j3 b: o; @
je RWR
. I5 L5 r4 S \7 T cmp al,'d'1 B* Y7 Z: ?1 @ `3 f# V- w9 J
je RDR( G$ D. u2 E# ^
cmp al,'D'
8 n# x ]( q5 D2 x3 t% n6 W4 F- Y je RDR , F6 C' h6 r# ^$ U
W: ) s# A5 {' Z* e/ H" l( z# E
mov si,84h+ _4 \6 u; J1 V
mov al,es:[si]
- b1 d$ `% f8 ^( J cmp al,'b'
' _3 A% W5 B, a/ a1 F l* ]( K je WBT
2 h5 V1 Z* V+ S6 [2 c1 s4 O! I cmp al,'B'
7 m4 T7 |% {$ O. V1 z je WBT( I$ Z K8 r7 h) `& V
cmp al,'w'
7 k# U# c5 W1 Y je WWR
x" J* L: D0 F5 V; Q0 K" H cmp al,'W'
1 y5 {, O, V; N: R# b6 H4 v' m je WWR
) D4 e6 ]: a# } cmp al,'d'3 O6 L% l% a) u% |' Z, k
je WDR( r6 `1 L+ o* {; G& B" ]* J1 ]
cmp al,'D'
+ m* U/ R2 C* y( v' r: E9 i je WDR
& s" _; X C: ~0 g p* T1 xRBT:
, i+ n. o5 V, [2 ~9 o% D call PSP
3 ~, H1 k, o! Z+ ] call crlf " C- F' W' r5 A4 x! r4 ?1 w% \
mov esi,ebx; v( T/ _& ^' I3 a1 q+ }# X
mov eax,fs:[esi]3 D6 s. @9 t9 I1 B! a
out 80h,eax
/ d, k# v! S- Q! d8 t; ]& \ mov ebx,eax
, I: z* A5 S7 d call _8bits
9 C% G4 C# m' ~5 Y4 d) s. {3 ? jmp Exit, E) ]* n& G0 b5 U; i' o" G5 w' R
RWR:) n& u6 G& _5 c
call PSP 0 P' _6 G0 U; r$ e8 u
call crlf
5 v+ A8 t3 |! [; D1 {- k9 m mov esi,ebx
4 x5 v2 N7 Q g H8 v1 u mov eax,fs:[esi]
3 E' R# V' v. f0 v out 80h,eax
% X" m" p& g( Z& a8 i! e. O mov ebx,eax
, R9 Q# f, ?) M. l call _16bits5 c: Y5 L3 v! @ f4 Z2 D
jmp Exit2 b& @5 K% i4 b" Y- h
RDR:
1 ]# F3 H' [# ? call DPSP
! e( z, W- N8 l7 ]6 r8 q call crlf ! Q* y. P) t& b# O
mov esi,ebx7 U- M0 @+ e6 x; Q. F L4 ?5 M
mov eax,fs:[esi]9 o" H8 i4 O( T3 u
out 80h,eax7 u6 ^ @: C' S+ `: U
mov ebx,eax
! S$ x- B, h9 r call _32bits5 T1 m6 h5 K/ s0 b
jmp Exit
0 O& N* z5 Y, g;------------------------------------------------------------------------------------------------$ w) k. |7 q8 G) F7 e- O) _! h
WBT:; a) `; W7 i% A* X% g) l
jmp Exit
; G' _7 g& A8 r* G- [( |7 wWWR:
3 i* @: X8 u( h+ Q jmp Exit4 N+ O' b& Y+ [3 x9 m( m
WDR:
0 J. I8 D% @( p. j4 A call DPSP- S5 x% [9 m; j3 P1 _
mov Maddress,ebx $ a g$ T) Z' e
call crlf
: p Z( Z" Y" g! W call WDPSP9 _8 `, r* s, S5 c
mov eax,ebx
# M+ V5 c3 k( ~0 _/ k mov esi,Maddress
3 T5 ]/ n& b& c" c$ h. D mov fs:[esi],eax
- Q! e/ ~9 @3 I: g$ l out 80h,eax9 H* @+ @* o& s% C. B
jmp Exit: `: P; W5 R/ [; n+ q( U/ U9 s
;------------------------------------------------------------------------------------------------
/ f \; G7 z" b* \9 a4 G. u1 J9 \Exit:
6 ~3 j3 h G, m4 A; B call real_mode ' V( \+ f* {: i2 v* e7 z# V M
pop gs% C7 K3 \( ?% l! m# W1 |9 T! p
pop fs; Z# U2 v O- a* {$ w
pop es
' r4 c7 J* @* p2 |% r pop ds
( e @- ~0 h5 C4 {2 D .exit1 B( n, Y1 ^0 A2 ~. U
;------------------------------------------------------------------------------------------------! j$ y" h1 i4 t9 ?2 b
big_real_mode proc near5 j6 D# X8 }! w. O
in al, 92h9 y3 F, B9 G0 d! a1 z* @
or al, 002
% G2 T6 e$ I! l6 [0 Z6 ~ out 092h, al% w: c4 g- f" v: |! S- ]& X
out 0edh, al
' D8 L# ^4 q2 V3 l# ?/ p! `7 t- z cli! e7 `, E% n. X2 H; p
mov eax,DSEG" V5 D$ H2 b7 {$ `5 d2 E
shl eax, 4
/ j+ v% c5 y1 H. F, Z xor ebx, ebx9 D( ^; B- H$ S$ M9 T
mov ebx, offset GDT_def$ w5 H& z% o4 z% \0 P2 a
add eax, ebx
0 l: h, o- e, f( U3 J4 q mov dword ptr GDT_Addr.Base, eax
4 F; ~3 B1 E- {' K+ V: o! ] lgdt fword ptr GDT_Addr
; Z) O% s1 y/ L$ w2 ]: ^, F mov bx, 8
# r2 q1 q3 W& F3 y: b. k. K mov eax, cr03 D- h3 o" y2 Y0 {5 }
or al, 1( |( G7 C" b( f1 Q v+ `
mov cr0, eax! ~5 Y$ m; O. Z- q; q( z
jmp PMod
3 t) j5 x& C6 Y- x* f( O" TPMod:, b$ P0 L' [+ S
mov fs, bx: F' k. ?* s* R4 t) Z- d
mov gs, bx
( ~% C0 A- x; K9 P& E7 n1 P: y mov eax,cr0) P; Z0 V( F; y( ]( J& S* V. ^5 J' e& G
and al, 0FEh
. \7 ?1 d1 N+ e; T mov cr0, eax
2 O- h% e4 O' d# \0 z3 ? jmp RMod
) |; u, L( ]' T3 _; I! U* T( ~1 kRMod:
8 z( T$ X8 Z3 x/ O xor ax, ax2 x2 ~) j4 X! k
mov fs, ax
" n7 a+ v9 u$ @ mov gs, ax ( Q: Z: ~3 L0 [/ ` C$ N9 k2 o
sti 9 U! |, m" y/ ~ H, y: N
ret
) J) c. S/ T3 }: o9 x- }. Dbig_real_mode ENDP
4 j$ r* l# a& s% E) v, C;------------------------------------------------------------------------------------------------7 E0 T, g6 X- d; }! v+ h
real_mode proc near% l) I6 y+ F t' t. F. ?
in al, 92h1 n" b9 r( N J( L, ?
and al, 02
& k3 l* {: y8 p; _9 s out 92h, al
9 @! c5 v2 B# ]! @. S% x ret
$ R' h* y. g% x7 u/ S2 o5 p% i- W2 Wreal_mode ENDP# d5 h, \5 r' o& i* O
;------------------------------------------------------------------------------------------------) K( F5 T- P2 d. K
Get_Commandtail PROC near
/ b7 y, C- l+ j. N4 w( O mov ah,62h 7 u. l6 f( H- p9 M7 i$ ]
int 21h6 H' R6 K a" ?2 p/ H M/ {+ w0 I
mov es,bx
% i/ F( B- F: a2 j% t2 L. r ret
, ?9 H) \5 N4 c9 z2 ^Get_Commandtail ENDP
3 N$ u& a# k! R. [" h, Q. d;------------------------------------------------------------------------------------------------
7 q0 O, J7 ]1 V9 Z& DPSP proc near4 U: b2 a8 F& c+ G7 t) i9 v5 {
xor ebx,ebx
: ^7 G* b' D& Z! @ mov si,89h' y- i6 q" {% f0 w- j, }6 q; T
mov al,es:[si]& V1 u& F M/ W% [, b. |- f
call Change2 u# g1 z) h8 h! K
mov cl,48 B5 w/ X4 f3 N! z( N$ l! c. r
shl ebx,cl
' E& k, {) }9 X% Q3 W add ebx,eax: C; ]$ d4 u) L; ?0 O
mov al,es:[si+1]$ l3 [: Y% r% g1 ^) u7 f% `3 F
call Change1 O; N% M0 l J) P8 ?3 ^# O
mov cl,47 w3 P1 O- p; w! s3 x
shl ebx,cl( C3 _# o. W/ u
add ebx,eax
' w# K# E9 ?7 U" l0 O* r. Q! m( @ mov al,es:[si+2]$ W7 Y/ ?3 d& N2 R% S
call Change
' @2 M( z0 N; R$ A- \% u# X mov cl,46 v9 x( v6 o" @- m& ]
shl ebx,cl
0 y4 y- e5 `! [# @, U: Q w add ebx,eax
$ G4 T& P( @2 O) E/ o, I mov al,es:[si+3]
2 o: G3 m1 r5 l" v call Change
9 q" D( K+ F, }7 ?4 ` mov cl,4+ m% N3 \+ i7 o, o- s1 J* E" Z
shl ebx,cl6 B! M+ U) I8 {+ y3 K& u
add ebx,eax& b6 u( _) w, p$ ~' n
mov al,es:[si+4]' H, {" `: S" k+ i. ~
call Change# H3 f0 U4 m& C. `' S8 A( Y
mov cl,4" ~. T& U) A: n' w% G" i G
shl ebx,cl! l: [8 x0 H) s* P
add ebx,eax
. F/ L" S8 H1 r& x# e mov al,es:[si+5]6 t" @7 ]/ m1 v8 X& |- C* O
call Change
& m& x8 B! Q- o: \$ U) C9 T3 | mov cl,4% V. f% V, E: a3 l' d" ]
shl ebx,cl
2 i H* L) D6 P, O1 @' [4 _" h% t0 ? add ebx,eax
& r$ J; S/ x/ [& Y& g mov al,es:[si+6]
- g4 F" N& Z3 H; D1 G7 P+ Q call Change
2 f, d* S2 E2 G- H mov cl,4: Q$ ?4 z0 ~+ \0 |2 A# n
shl ebx,cl
& W: f6 D+ [+ a add ebx,eax1 _- e5 E/ e. z/ v% t+ r
mov al,es:[si+7]
4 Y) f( g" G6 r0 q call Change" a I7 A5 J. W
mov cl,4' ` o0 p+ L! @6 M/ C( X
shl ebx,cl
$ R# L' y& Y" H! L; O add ebx,eax
' J; Y$ E& ]5 [6 }8 u# `5 n, t ret
2 R J- o0 m# n* U0 c0 dPSP endp' v4 s# T4 ^ H1 e- `
;================================================================================================/ Z+ h; s1 l( ~2 Z+ ?, P
DPSP proc near
( c: b3 Z6 G }+ l( {! N7 k! a" e xor ebx,ebx3 U2 ?6 b9 K7 y |3 y/ v B1 `
mov si,8ah
' m( u ?0 p' m7 b5 M: n mov al,es:[si]
9 Z6 X) N, t! Y& O* J6 A call Change
. s6 u4 L* o6 I# X$ z mov cl,4! v% I% Y J1 X) j; Z
shl ebx,cl- D! Q t! S' }. g B3 ]- v( ~
add ebx,eax; c2 x1 P6 {0 i" Y
mov al,es:[si+1]
- |0 F4 d* m2 r. H$ @ Q+ }5 Q4 w+ F call Change
; c+ o! c1 F6 A1 Q4 C* h0 T, S1 W: N mov cl,4
% M4 t0 ^1 ^, p7 ^ L7 f shl ebx,cl5 C" ^2 s* {$ ]3 R
add ebx,eax7 z( a' L! m* O6 ^7 T U' p
mov al,es:[si+2]* G* P7 m% a7 ^! M" P5 n* T% T6 l9 ?& K+ {) j
call Change
3 {% q0 ]0 u9 ^ @* V mov cl,4# Q8 R0 \$ n" ^* ], N
shl ebx,cl
4 }) T% }" G/ N% B* \ add ebx,eax: ^/ s C8 F" g ~
mov al,es:[si+3]( |8 r5 u( {7 b2 i4 R3 a F
call Change1 p2 g& y' d# i
mov cl,4
" E; e# C, @1 t shl ebx,cl! L; F5 Q$ z( h; _4 G
add ebx,eax8 x; F" H6 p: T
mov al,es:[si+4]
0 u+ v8 a: V" n call Change( b9 v4 ?' _& ]8 J$ N
mov cl,4
( a+ ? P: ^/ ~% J shl ebx,cl. }1 T5 J1 w/ Q R$ i5 }! B* l
add ebx,eax
1 l1 u2 S8 B# a e. [) m) `) D+ z mov al,es:[si+5]- g+ C+ @) }0 A
call Change2 K# d- h. l* p" T. C* d
mov cl,4- p" u6 ]: {( [4 V: m2 K6 y
shl ebx,cl
- @% u& Y( E2 {" n4 C' C add ebx,eax# ? z+ N- S2 G
mov al,es:[si+6]
$ v9 S3 [0 E* _# P" ~/ {$ o, W: m call Change
* E) B1 y8 H+ c. L mov cl,41 [' ]8 N. l7 M
shl ebx,cl
2 F7 N4 v( T: O' k8 a6 M add ebx,eax; k* W2 `, e/ A+ j8 W) T/ @
mov al,es:[si+7]" ^4 v* W! n9 h4 S9 E+ T. I) S
call Change! |( N8 P. F% X( p: H U
mov cl,4
' m: B7 f- p& @/ T& \7 }- |* Y& f shl ebx,cl
9 X9 y- G8 k! x! k3 X add ebx,eax: e1 q! R2 B1 d0 @
ret
4 m% {+ d0 |8 |* SDPSP endp
& l- s3 z+ u. v6 A! ?, V" ^;================================================================================================4 R) e2 U0 ?; {7 v- R. s
WDPSP proc near5 W5 R g. T/ N
xor eax,eax2 I2 l% z: A% E* N
xor ebx,ebx
9 j/ G# g4 T/ Y0 Y mov si,93h+ R+ m; E( x! r5 T6 w+ W0 f
mov al,es:[si] E6 T; ?; X7 ~. A& r
call Change
; u+ R- W- ^* v/ }/ ] mov cl,40 k: J4 n# _- D6 n( e: q$ g4 T- O6 x# |
shl ebx,cl
7 y% N& M" j! ?" `8 n2 a+ U add ebx,eax5 I o: x6 t0 {& [% Y1 ~ z- J
mov al,es:[si+1]
: A3 P3 `0 Q) C2 `1 m3 }; N; ] call Change/ h- G+ E5 x$ h$ s" X
mov cl,4
. ` y4 P; z& O* B( ]) w( s shl ebx,cl
$ |' Z9 x! p n& ~9 q" g/ m add ebx,eax
& s3 ?" q) W% P) |$ T$ Z mov al,es:[si+2]
- O b- v4 `1 } call Change
( g0 V4 b, W' C# G" { mov cl,4& v( o Z4 O% v b9 l
shl ebx,cl3 H7 ]. X- N5 H: |( V4 R
add ebx,eax
6 P9 e! |; t# P- m- ^2 O mov al,es:[si+3]
& E! n. o" c/ G( V2 z7 e call Change
0 [, _* b1 n5 k mov cl,4/ X* \* @4 t" n$ [- Z
shl ebx,cl M4 z. N: ~& v4 z6 A
add ebx,eax2 d' y+ q; H" N4 _+ U2 b. A
mov al,es:[si+4]- C8 _; v! C( _; n( S
call Change: O7 {; A# _( |# e- n ]0 N
mov cl,4& W) y6 b z' G3 Y
shl ebx,cl
: L) I( k% f% r/ h* V add ebx,eax
* u$ o/ \3 ^. |' i' S mov al,es:[si+5] e) }4 v u0 t) ~ {) U
call Change k- Y$ ?* O( Y9 Q) C9 P$ \
mov cl,40 m: R4 V/ s6 ?0 h* V& Z$ d
shl ebx,cl+ ?4 y" ]( L8 h
add ebx,eax& q% J* j K% Z/ ^" @. V8 f- k
mov al,es:[si+6]9 D4 }9 H% T0 c
call Change
1 f _0 O2 f7 L4 @' N/ c. J8 J mov cl,4' _( o& e2 ~4 i# _' l3 o! K/ Z
shl ebx,cl1 M- W- E0 u( s) I/ h/ X* `* s
add ebx,eax
. C) e$ f5 I: \, E" E$ ] L% V. V/ m mov al,es:[si+7]7 Z. R$ b8 i* b# C6 `
call Change' s& e9 [ r# R& ^. f
mov cl,4
3 d+ t& C. S6 g7 k2 s; j% W3 U4 { shl ebx,cl
% m( y8 q5 h P* i add ebx,eax
6 k! d, f# I/ B- q* c0 } ret
: l7 b6 ^0 X! q. q" ` _ xWDPSP endp
Y% C) @, p3 P8 d" k) e;================================================================================================6 e F/ e- X# a9 P0 G9 [: ^# z
Change proc near
) R3 a. Y) Z2 b* M: {A:
/ _/ h( ]9 @# V1 s l, ^6 C0 m* N movzx eax,al! d/ v- d2 w- ^- [
mov edx,eax
7 ^8 W( g' ^: E1 ~0 {4 u1 s6 H1 q cmp eax,'0'
4 t" P7 p3 O4 n: s9 a% _ jb A
1 @% J0 P( W2 k/ A7 ` cmp eax,'9'
( a' t9 q* ~: h ja B
" B1 k4 P! h6 w. }+ ^8 O* U sub eax,'0'
) K9 s6 ?. Z( Z; G jmp short E7 a! @3 V% b, A' p
B:
& r; Z4 A( t( t, C: J7 R. F5 D4 S and eax,0dfh
# ?! K: ^3 |) y# W; | mov edx,eax
2 Z3 ], e3 w" y9 r' t5 f; G2 Y sub eax,37h
4 p/ m9 H2 w: U! o1 _: ~5 f cmp eax,0ah" x$ a( f3 j1 S% ^: t! Z8 D- \
jb A ; g. V, R3 p0 B" H& P% q( X# {5 \
cmp eax,0fh0 K- e0 G1 J: L6 H
ja A
* m3 r) k# t7 f) I+ `/ o HE:: c! l5 R% x' Z3 @# p
push eax 4 y; F2 y4 [0 T8 z: \( r
call PRT
- D) ?' V5 n+ y. c pop eax" P8 Z( ~' v; S" ~) `
CExit:1 V; s( u- ^& g, K& k" c0 O: x2 C
ret
( ?! s% K) x2 n" y4 E5 lChange endp
/ l: \2 t; ]! T0 y; I* g$ |$ R( s0 _;------------------------------------------------------------------------------------------------
7 B6 T% J. ^( I2 A7 S( gPRT proc near3 y; p$ X- L: V
mov ah,02h
) h; }5 s) e" G( e ]: | C9 i: ^ int 21h# u+ u& G& K# y- z
ret
5 M F) A }; `( W" ~0 l+ uPRT endp& K. \2 [) m7 y% o' B3 s q
;------------------------------------------------------------------------------------------------2 [5 C8 p0 J4 X8 R( K
crlf proc near. {8 j" z$ L) e0 X4 `1 N' }+ e
mov ah,02h* M/ Z8 R8 N7 t, `: y! ?
mov dl,0dh
2 ?5 ]0 c* c2 _7 n! C5 D int 21h3 i0 u, e) e/ A$ G- M) x
mov ah,02h
( ?1 {) A }! f( z mov dl,0ah( ~! X, o; l% G/ \ a8 t
int 21h' F8 a" ~$ G) G! ?9 [1 K
ret5 e. m+ j; m, x# A+ }
crlf endp" G- K/ @9 e* i% f" I- R0 Y1 t- ~
;------------------------------------------------------------------------------------------------
! ^1 D% P5 y. t" Q4 {( j$ _- D' k_32bits proc near
* e; s$ w$ ^& F- Y; Y pushad
/ {9 H2 X9 l$ m C mov cl,4- t1 n' I9 ^6 d, Q% b
rol ebx,cl7 m; i5 B) A2 Q
call print_4_bits0 ^/ {7 R* V8 J( |3 `6 s
rol ebx,cl
" `6 c- q$ N `; O call print_4_bits
# |# `+ `' Y; l rol ebx,cl
; u6 @1 x2 \" j7 a; u$ X- l+ l call print_4_bits) j8 j0 C6 }( R6 K
rol ebx,cl
3 r0 B* u' c9 Z call print_4_bits4 K3 Y; X- X1 I4 W9 f9 T7 c& s
rol ebx,cl
4 W5 q5 ^, j# D call print_4_bits7 {- J9 H( h: T% T
rol ebx,cl; u1 J$ c- W3 c( F: o3 R- U4 |5 ]8 S
call print_4_bits
# [! G4 H- G% N. `" e rol ebx,cl" r+ f V+ h" ^
call print_4_bits
! |( F" T# S0 @ rol ebx,cl
5 I& s% ]4 `9 }( a( ~; P3 ^ call print_4_bits: R, F; ~) i7 L9 }
rol ebx,cl9 S- x0 C( f4 @* P
popad/ x8 X, u y& h2 d& J
ret
6 D! N( u; c! _5 Z' U, D_32bits endp7 _' e. N! I5 c8 Z9 C
;------------------------------------------------------------------------------------------------
5 N6 c" N# g& }. J j+ f_16bits proc near0 a E/ } {. c$ K
pusha 1 O/ v: w; z, \
rol bx,cl
( i. ?$ V L4 p* o call print_4_bits+ P2 {3 B( r) v0 V- L8 C7 S! Y
rol bx,cl8 D/ B9 e. Z- y* {1 y2 T, I8 U0 ?- F
call print_4_bits' m {, ^% N. L' }
rol bx,cl/ n' e' ~- P) \+ _
call print_4_bits3 a6 H& E/ g* ]4 A
rol bx,cl$ p) y! i5 z8 N) [4 ~- r y; C9 u
call print_4_bits
) y7 o6 b1 P* r/ S5 U5 x popa; x; a; O7 B( Y' }7 A/ @$ D
ret$ e+ j& G6 z) [2 m# O# {
_16bits endp
5 o. e& r4 f- P- f9 s% b- ^;------------------------------------------------------------------------------------------------
* E0 n" v9 M7 v4 d- g_8bits proc near
) i7 j3 R" o6 Z, r pusha
) d }8 Y- R+ q; ` rol bx,cl
, `6 x* Q8 H3 A/ |2 w; m! l+ k8 K call print_4_bits" M# f8 N/ M* w, Z) h
rol bx,cl
8 ^: J! \6 u5 E# l! ~ call print_4_bits
; z; W* R8 b' U popa
1 R Z" m/ o- ]. D% n ret
9 u q1 U4 U& ?7 U+ K) b; [_8bits endp
& Q: f8 w' V$ Y0 ], v) qprint_4_bits proc near
7 K- W6 n2 {$ i# r mov dx,bx* Y m5 g7 p2 K4 T- m
and dl,0fh
$ ?1 U2 w' `, |7 _2 K- ^ add dl,30h
& }7 _1 d) p2 U! B- O( O% y; \7 v( a cmp dl,3ah4 y4 `# W' V; @! h/ ^( j
jb print
, B) {& M! H! N( W* R add dl,7 o& i1 P5 \* d- R
print: ) f4 X6 q2 D+ g) `
mov ah,2, D) V" {- Q4 k3 i; \
int 21h" k- E4 c& y% d/ I6 R
ret0 g7 H n/ p/ }* [
print_4_bits endp ! l: w- b; H @) {: W) z
CSEG ends
; [$ a; p; i( }( eEND |
|