|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)
! P, q0 }, ]) f' e" q/ |6 \) ?
% l \8 ~' F3 }/ }1 p' @/ r& t }則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'$ O, R. R; H! G% x" q
( f# g$ V. N+ Z6 ?* @8 l X; S+ z8 u宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
9 f g' [) Q4 c
9 o5 a1 z' m, n7 ~5 ?+ R) e.model small: Y- R7 s% Z1 O7 m, T" n( o a
.386p
5 q; T* N* Q9 |# l" l2 n3 C! x, ]DSEG SEGMENT USE16'data'
9 E" u$ A& W" A3 X. o: [7 v. t8 ]3 x. w2 v" C: R6 h3 ?
DESC STRUC1 I) E7 [1 E$ s
LimitL DW 0 2 C, @! @8 Y- d9 g9 E0 `) ^
BaseL DW 0 , j! S% @$ `% J0 z* f" G
BaseM DB 0 $ |8 y/ q) d: i2 o
Attributes DB 0 ' h$ @0 ]. N4 G2 j- p9 f% ~8 m
LimitH DB 0
0 R- F/ Y! z! X; \ BaseH DB 0
4 y0 B0 }. ~: CDESC ENDS
, x* v6 P3 e; G+ |: t
6 H4 F. H0 D: B! O+ Q e0 j. i9 EPDesc STRUC* c5 o# s& x1 U
Limit DW 0
2 l' D1 |% M! I! Z Base DD 0 - h" [; p t- u% n, Q
PDesc ENDS( U+ a& y- m# R1 v: m0 R+ v4 P
1 Q( q5 |$ ^6 ?6 N+ Y* f1 gGDT_def Label Fword
* ~$ M( u( g9 a4 j! M+ KNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>! N& h! p- W3 o! a" G6 N
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
3 {# O: z* D3 ]- {, l9 AGDT_Addr PDesc <$-GDT_def-1, >
& y6 ], H+ ?, Y! M8 Q: v* C) [/ y! R, D3 [& T( J
Maddress Dword 0
$ v( r; h; j) _6 H* h3 X8 [6 ^0 g t3 z& E o( Y& `
DSEG ENDS 6 _9 H5 H7 ^6 _- {+ u w* T% V
ASSUME CS:CSEG,DS:DSEG! I; S0 y& Q5 A# Y6 L, L
8 v7 f5 z' Z- w* ]" QCSEG SEGMENT USE16'code' + {5 f) i9 c; A$ k' [' J- c, V
push ds
[# \- y: V3 j' k1 G push es
, k8 p- j7 s& y push fs
2 e6 C9 H [ W* c; J* O# y push gs1 L' n8 u+ F! z( G
call big_real_mode " e1 @ F+ s2 u Z. O. \. ~! c+ J
call Get_Commandtail
; P- f; n* }+ g9 O1 j6 Z- ~ xor ebx,ebx
' J1 q: q8 h& r8 q mov si,82h! i O4 k4 s ^0 m
mov al,es:[si]) z4 O2 g2 \( e* C' m5 ?6 z. {$ X
cmp al,'r'
! F, B, R9 t' k. d je R* X) m8 F+ n2 b2 u* d8 W
cmp al,'R', r/ g7 I8 d3 t1 _3 \# @5 m% k
je R2 z- h4 f% n1 O. V
cmp al,'w' {$ e k S; u) M$ q( c% U, e
je W
1 W- U/ v8 r7 Y: a* D6 g" { cmp al,'W' i' | K2 g- g' j
je W
$ ~% S# a- I! a, gR:, b7 \) x) W: o$ S
mov si,84h3 e( Y9 o& \: W+ w! u
mov al,es:[si]' v9 c$ M3 J& X2 m9 @
cmp al,'b'
Z* n5 N6 z! o9 ?* G) m% n, N6 E7 z je RBT
+ k( k7 ^" L$ q9 Z1 | cmp al,'B'
8 B+ U: }- R3 Q3 x je RBT8 S0 y# S# j) T* v+ |; R
cmp al,'w'; ?- M. w/ a3 w; ~2 Q
je RWR9 O. @6 ]4 h1 }
cmp al,'W'; B$ C7 Z8 h8 t9 V' x/ O3 W! K
je RWR
# y! X9 l H. Y) O" ] cmp al,'d'
0 m, J# A7 e6 R/ Z1 b je RDR$ A, W6 {+ o9 e9 Q) o/ v- @7 V7 T
cmp al,'D'
; @8 X- `# H8 h+ A5 b je RDR * B7 s( a) k8 f& d, L% R* K
W: 3 E( r' M8 p. R; B. L8 Q7 a
mov si,84h
# L( M' I" J- K' \6 w/ y mov al,es:[si]" J) ]4 Q& D0 w9 U( v
cmp al,'b'# e) @/ ?2 M: v3 X7 N, A4 {/ o3 [
je WBT# l- g O' ~3 ^+ P
cmp al,'B'% [1 |, b& [7 u# j' W: S
je WBT
7 Q: R1 D# j% S/ }: U7 q2 L cmp al,'w', q; l& v9 L2 l3 x) @
je WWR
D2 o* }" ^; \' j5 O' _& L$ _ cmp al,'W'
b+ L" |- I' V! J9 d2 @ je WWR: z2 D4 l7 [4 }2 l2 n( t! n p T' g
cmp al,'d'! \3 g' U$ j) ^3 d/ @
je WDR
2 ~' Y4 ^7 q( R5 e cmp al,'D'
1 C9 V* X+ ]' { je WDR
$ R& X( P' [3 F4 O! S6 E' U. IRBT:
5 `' O7 B2 O9 t. z2 D call PSP
. V/ d+ X6 t- [' A7 K( |5 f call crlf
4 w X5 }& i4 Z mov esi,ebx5 ^+ t; {, y9 i4 U! @) w6 f
mov eax,fs:[esi]
* x8 V& c! P d! w) ~# t" s out 80h,eax
$ h" j; G8 c" v: n2 _# b mov ebx,eax0 V0 B7 i2 e1 p3 G
call _8bits) M8 A$ R' ]1 Y$ l7 `+ X8 w
jmp Exit! {! c3 F& v M" A0 @
RWR:4 P) L' l/ D" j O: q
call PSP
1 g7 \# p9 U8 g& y0 F! Z call crlf
) E. K- |: P4 ~3 q mov esi,ebx4 `8 X3 L: J# C: d4 D1 \) g7 t& ~- \6 M
mov eax,fs:[esi]! x) ?8 m4 W0 J3 O9 J: Z/ Y
out 80h,eax
9 u. |1 X) D7 T* r5 D- O mov ebx,eax
( Z5 }3 i3 {. K* i$ P! M& C* X- F call _16bits- m \ @4 p- o7 g2 B! `- q7 ]$ G
jmp Exit
3 Z! U; m+ |! ARDR:" S& Y' \5 {2 E r$ h
call DPSP 6 x } L+ M* a/ S% P G- ^
call crlf
$ ~2 ~% @* P; k( ? mov esi,ebx/ l+ [* j9 h% |0 c( u' {3 e
mov eax,fs:[esi]
/ K* I1 U! w- i9 @# r d! w& g out 80h,eax
3 g/ ~; [- Z n- a mov ebx,eax: A; f% W( _- N, B# E/ A8 O7 `7 G) ~
call _32bits
% E: f6 M$ ]2 A1 A jmp Exit
+ @6 z7 z% h3 U) @;------------------------------------------------------------------------------------------------4 n0 C3 |6 c$ g) D8 T" Y
WBT:+ C& D6 \0 r/ c+ K3 j" M% G7 _
jmp Exit4 Z/ t. W4 U" Z+ F7 X) j1 }
WWR:
9 G# n5 x; r+ l) [8 p jmp Exit8 i9 D5 }# n ~" z; ^" K
WDR:
$ Z) V. n2 o2 v" |7 p. V8 R7 t$ | call DPSP
- C- h. J. p( T$ [- A" C% {. s mov Maddress,ebx ) b" B) A$ W. n
call crlf
7 v0 I* f9 M6 J call WDPSP- s6 b+ U6 _4 q9 C
mov eax,ebx
' |3 `6 H6 Z( ? mov esi,Maddress
9 r7 B8 y. l/ n; ?$ O Z mov fs:[esi],eax) ^4 t/ s/ f% H3 f* ~
out 80h,eax
- ]* L2 T4 l% c( u& p' a jmp Exit& d4 ?2 Z6 u7 @* y6 @1 S! @
;------------------------------------------------------------------------------------------------
9 S. \" f; ~* p VExit:* Z+ Q+ R; j8 q7 z" b1 e9 A ]
call real_mode $ H* Q* x9 F; h9 t% B# J; a
pop gs
! g2 I( g: N0 o/ R1 Z pop fs5 y( E+ M; Y$ X& {4 r6 V6 }5 B
pop es5 b# k1 B- U4 ]! j
pop ds
; d# _- u9 G4 w$ v. _. D .exit( R! j( M7 s; t" m; }+ v
;------------------------------------------------------------------------------------------------
# J! y3 b$ R) }; N1 i2 {) o' Bbig_real_mode proc near
, h1 g3 d# J1 S j1 {# | in al, 92h1 G* X# F. a5 K& I" ]) v
or al, 002
" }& k, v& R5 W7 I out 092h, al
) E b! s4 m$ L( c: m( d out 0edh, al. m& @; S) M M: [& ~& ^
cli! {: r. x6 U% C. F5 u8 N
mov eax,DSEG
( ?- _; t: Z0 v$ e) s0 ?5 u shl eax, 47 b. `- N& ]* F9 X: [9 x2 B
xor ebx, ebx0 [6 a* T% ]4 W3 n _9 ^
mov ebx, offset GDT_def8 B* u5 n# R! I+ ]9 y3 s. Z! {1 A
add eax, ebx
) k0 G/ A8 c+ Z mov dword ptr GDT_Addr.Base, eax
7 R/ S" v" h* R* p, c lgdt fword ptr GDT_Addr
% ^9 q: P8 E5 p& m& g, l5 y) _0 { mov bx, 8
: y( c5 d C8 ?. s mov eax, cr0; B" Q5 ^) h8 M) O; x7 t$ D
or al, 13 h L5 s3 a$ [
mov cr0, eax
! C1 c# C3 i5 n' X/ A \- ] jmp PMod
. y3 d. ~5 q, _- wPMod:
7 I0 ?4 e& M$ F5 Q0 S3 [6 s mov fs, bx
% Q7 h1 T3 {: O% M$ u mov gs, bx1 ~" R% l& J, R3 e+ [4 Z
mov eax,cr0
8 U4 o2 ?9 p9 A' }0 l, u% ] and al, 0FEh
9 U' ]$ A: j' O- g mov cr0, eax
0 O. B; L, N1 p0 F j/ J0 H) D jmp RMod% J" p& H5 E) G' _+ q% E
RMod:" a# x y! {8 F1 v, E( M
xor ax, ax
9 _6 x) E3 t- B0 D( i+ O mov fs, ax6 z& }8 G2 j7 N( a9 y" k
mov gs, ax
/ } h3 h# H0 N. j C sti
9 t) e! J% e2 f' V6 G4 c7 d ret% x5 z: h9 E+ B% r+ _
big_real_mode ENDP, E) k) \0 ^" ]6 K9 d8 D
;------------------------------------------------------------------------------------------------
; K: `& l9 ?7 a; C3 I2 jreal_mode proc near- ~: v4 V- T, n0 ^
in al, 92h
8 |5 S+ G8 ~1 |. r3 { and al, 021 Z6 m# b! G& L& i1 F* [* E
out 92h, al
8 R9 S. G% O2 @3 _3 L. m ret
$ v1 Y- t' m3 v, X& y2 kreal_mode ENDP
4 F9 Y3 r/ R z2 ]1 [5 G6 J;------------------------------------------------------------------------------------------------* Y4 r+ J8 C( N( {
Get_Commandtail PROC near. m" }, Z* ?" o. g
mov ah,62h , d5 {$ h5 U; O4 N* `5 L
int 21h- f2 s) |. n8 X6 s3 L
mov es,bx5 r+ W) ?. ]6 e) `5 R6 {
ret) y" n8 Y0 `! l: V/ U, L9 x9 \
Get_Commandtail ENDP
1 L# z* `8 R$ `) @6 G;------------------------------------------------------------------------------------------------
; y( p- Z u6 P, j! H4 K; U) I- A; yPSP proc near
6 F2 g$ S* _7 u; c6 q) ] xor ebx,ebx* j2 V: T. u3 c. X: m
mov si,89h7 D( N, z- L: `. N0 |# ^1 x
mov al,es:[si]
# n# |' ^6 R# B call Change9 m1 g5 l, j* Y9 l- @
mov cl,4
$ r; v% J$ c4 l& a" m* l shl ebx,cl
3 P; {2 L" r7 D" b add ebx,eax. O4 b9 c7 Q# F4 B; p$ Q
mov al,es:[si+1]5 b2 t% }7 I9 d5 z4 ]: z m. \0 t1 c
call Change% I' @, m: q1 X4 s; g! R; R: B. z/ D
mov cl,45 M1 X8 o, T+ e3 J% b7 S; G
shl ebx,cl9 k. b, N4 w/ e1 @: h# y' o
add ebx,eax
) [. [6 }6 O$ k( S6 T4 e mov al,es:[si+2]0 ~4 h- x: B& z! E' f
call Change9 H/ u1 z2 T* c+ w
mov cl,4" e! Q4 B$ w$ ?! g
shl ebx,cl& a! [* b2 @. O8 x" ~- `$ Z
add ebx,eax: l. }' q: J2 g/ i
mov al,es:[si+3]
, g1 P( `/ Z. n6 g$ @% M# E call Change: [" Q5 {" H6 m3 D# J" g
mov cl,4
9 B7 N9 F c+ W" ? shl ebx,cl
9 \) a; ]" t+ p! M8 {% Y' b% G1 N add ebx,eax
2 j4 f( w1 y( M1 ]7 L mov al,es:[si+4]0 x) \# `' v" ?) b
call Change; q& I! F, z3 ]
mov cl,4
2 K$ k2 b& ^7 U shl ebx,cl
- y* H5 C9 E m( q add ebx,eax$ v9 s8 x$ k9 J0 O& [& E x
mov al,es:[si+5]
4 F! h# X% h7 D: @ call Change
3 R$ X7 o* o8 z mov cl,4# z! ]& |# O) a
shl ebx,cl
1 O* `9 \' b+ @* A- w( ] add ebx,eax
$ \* z+ L7 c3 X* f; \3 [1 w! F" R mov al,es:[si+6]
4 U4 R$ t0 H- n% A* W% c/ ^. y call Change
1 z, u; U: b3 P2 r$ f9 E mov cl,4
- Y Q4 I# W$ \+ `6 e, K0 o. T shl ebx,cl" b `8 g1 ]5 ^8 ]
add ebx,eax! Q$ x% b9 ^. u/ m8 |* V
mov al,es:[si+7]
, @+ M( @$ j0 m4 H& k& K: \ u3 d, F call Change3 R% g! A0 p( }# C
mov cl,4
$ J4 g- t, ~8 s0 D% q0 r shl ebx,cl/ |6 ~1 G7 L9 i& y3 J
add ebx,eax5 ?" D' A% I! C& a+ h5 i
ret0 C& L( ?( o: v
PSP endp1 L: o. h0 l2 i' u+ t* J
;================================================================================================
) f3 n# x8 o( J9 [4 r! ` K# vDPSP proc near+ o- M" h5 E% ], _. e
xor ebx,ebx
( w' u$ c8 O% T! J) n2 Q mov si,8ah
/ m1 [9 R/ R# D1 i% z2 ~ mov al,es:[si]
* N4 Z& e2 H/ E" g1 g3 c, i4 v call Change
4 E. _' e8 ~& j/ V mov cl,4% E7 B/ c: ~% \3 F
shl ebx,cl
# A/ g% V# @/ a( U9 x! B add ebx,eax
) L% u3 P4 ^5 `( f1 n mov al,es:[si+1]+ l2 z7 @' F, I4 t$ y! D
call Change' K; t+ I. t, E/ ?0 ^1 [
mov cl,46 ~& D& T# j2 |: l5 c
shl ebx,cl( o0 p! x) J+ u; t1 k) _$ n" o
add ebx,eax/ l; g1 i' ~6 b( k" o5 C& t. q
mov al,es:[si+2]2 b j5 ~$ r# ~4 L
call Change8 x3 h0 V9 [" B* p% x% e$ k
mov cl,4
# T: C' P% s' A3 a4 g% b: c shl ebx,cl
5 w$ f& X$ Y- @2 E$ P add ebx,eax6 K. R1 t% {: F# a' h/ z9 V
mov al,es:[si+3]
9 f n% [8 Z) o& p4 V call Change: I) |# l6 o/ P
mov cl,40 z( w* M* f" u! J, F$ B* r0 C
shl ebx,cl
& S; R! g1 W; w2 P0 s) { add ebx,eax
! r. j% o/ H& O L8 R5 C+ O mov al,es:[si+4]
* V6 G) H4 k4 J6 A. R. G- _/ Z3 V call Change/ y, X. _1 U( t* k# ^* I& B
mov cl,4: ? H2 W G j7 K' s+ s6 A. c/ d9 z
shl ebx,cl
% [. D3 h, M5 B9 p9 S; ^ add ebx,eax" j6 y3 S" Z& i" _: E
mov al,es:[si+5]/ V- E% P$ O- i( z# O
call Change
, k* l' H9 G+ Q, V- \( H( t" N mov cl,43 A% g- [3 |0 _0 _7 X$ U- G
shl ebx,cl0 G- Q+ [3 @1 q
add ebx,eax4 Q& W# c S5 ]: o
mov al,es:[si+6] I. X/ S5 E' d, b5 P$ m
call Change
3 f& @* N" C) f4 G) r mov cl,4
6 f/ l9 i- f4 A' m* P5 w shl ebx,cl$ T6 ^* A3 ^9 O! I/ x3 F0 u
add ebx,eax
2 N: p, }1 Q( j% Y9 q' B: n mov al,es:[si+7]% W+ W0 o& A9 [6 g
call Change
2 X a- g D4 a- W$ R# S" ? mov cl,42 T+ i% B7 J: t6 I
shl ebx,cl6 Y; {* L8 M2 o6 \- k
add ebx,eax- L: C$ H6 B6 S4 i
ret$ @ [* _. s/ p- l
DPSP endp
; L% z& R7 U1 x) X;================================================================================================3 Z, f& i( r8 l% s
WDPSP proc near' G: L# ^9 ]( ` |$ E2 C2 f6 e
xor eax,eax
8 P! R2 \9 [* h) _' h7 ?5 ?2 q xor ebx,ebx
4 Y: j; p: S6 {' k( }' {* }, B0 F mov si,93h
2 i$ O, J- P# |! h7 Q% ?& V# [2 K mov al,es:[si]$ v+ T" J1 Q) {1 V8 C' X+ u. B
call Change2 }% Y' V$ ?' L- H( ~$ R+ c0 _
mov cl,47 ]) `: ]- t- r' K5 Y5 t
shl ebx,cl
; `# h# v+ ?% R8 K. E3 f add ebx,eax
1 F2 @4 |; H7 }: p! [3 f' x mov al,es:[si+1]
* X) H2 u& j" N8 @; ^. N6 P call Change
( F/ ?8 R. P- \3 y5 } } mov cl,4% c# \! T; x) B8 a
shl ebx,cl9 T% R& s1 U2 b
add ebx,eax) [& m3 T) ` F a* z2 z
mov al,es:[si+2]) a: Q' N# V- b x' s. ]$ E; Q
call Change
0 i- A2 b+ W0 H; w. F' a+ [. { mov cl,4
- U1 W; _$ f: X( V% G1 g shl ebx,cl
3 i" ?1 r( R, t7 k add ebx,eax" [* K" q/ z k; g2 A* N7 V
mov al,es:[si+3] B1 O* w* I7 H$ l" |' L
call Change/ |& J5 z2 r6 N( F' R
mov cl,4
1 w( A0 T$ Z" D$ ~- o shl ebx,cl# d# P' ]' d( B d
add ebx,eax
* Z- @& m% V' K" ?% n. E% T6 F mov al,es:[si+4]5 k- N) q( b& U7 C- m3 h* C
call Change
( x) c* R8 j" {& q9 n2 D: V6 _4 K mov cl,4" ~+ q( c! ~- N8 w8 m p* z
shl ebx,cl& q) R- A; g: p0 c
add ebx,eax
) w+ _0 P5 ^: f/ K/ d$ ?4 R5 X; P mov al,es:[si+5]
4 |! V. {6 Z# W5 _ call Change
' q& e$ B0 a a- y mov cl,40 e& x! K. C1 M) w
shl ebx,cl
% q1 S0 W" T3 T, {, R add ebx,eax1 {! _! r. d) J( c; @
mov al,es:[si+6]
. ]# E2 J+ M& {1 u5 m call Change! e; H/ A/ H2 L; {3 w1 ^
mov cl,41 W: t% ?$ m( z7 E( _7 u+ Y
shl ebx,cl T! ]7 d+ G8 Q( n9 W# w4 g
add ebx,eax
1 _. C1 t6 A0 M4 E! q* D mov al,es:[si+7]
6 k* c* n* }4 @* W! C( l5 A call Change
; W8 m& b- I" S) T" [5 `& f7 a mov cl,4
4 @+ U4 N9 t2 C4 Y8 Y shl ebx,cl
4 H2 z2 \. H# d* _- d" } add ebx,eax, }+ Y- t# K: v. S2 p; p
ret2 i' {9 X7 h$ ]; n- V
WDPSP endp
& O% M' N5 ~- Z( W, g8 \;================================================================================================; A+ {' m5 p0 y/ ~8 g7 ^
Change proc near% q3 Y# d8 W- `6 q# K0 z
A:
7 }3 s2 _6 Y9 ^: E+ f* o8 Q movzx eax,al
( j9 m% w# ], W mov edx,eax9 m. V( L$ x& n& S0 @$ u
cmp eax,'0' & V O+ h0 F" y" W/ W5 z
jb A
# X& T. E/ W5 B: @+ D cmp eax,'9'
( [5 z* D8 m# G( Z5 A/ y ja B3 R; K1 k; S; v1 Q) [6 y- u
sub eax,'0'
- v& ~, e; A7 b% U jmp short E2 r% C0 A, S1 H( a- {. b: q, b
B:3 V5 w* V- ]: f1 @+ b
and eax,0dfh
2 [. t B$ Z9 W. O1 {4 U mov edx,eax
v; l/ N. M0 \; u sub eax,37h
* J: }2 l6 T7 ^0 f2 `, u cmp eax,0ah
6 T; ~8 W I8 v. A$ [/ [ jb A
; p; f# z2 G1 u2 V" d6 x* p* [5 p cmp eax,0fh+ o# r9 ~# h5 D& ~$ e% |: t, f
ja A
( @) M/ I1 S/ e+ |5 ]E:7 T% r; O; x6 x
push eax
4 D' i5 S6 g) z" w call PRT + _; w, `! e4 s3 p
pop eax- ?( O2 O2 [3 S3 J. M
CExit:! J( z* c) U( u$ I, J7 X) v8 h
ret
. }5 f$ ~! l$ {9 ]6 mChange endp9 L1 U# U3 V4 z0 |. t6 }* L/ t- n/ y
;------------------------------------------------------------------------------------------------
5 X, n5 U9 |/ e zPRT proc near# m. [- K1 S8 P* u
mov ah,02h
( F( p9 t; [- ~ int 21h3 j( h$ G4 g( \! b
ret2 C `8 r- T" _) Q! p- ]2 {! d. ? K
PRT endp
0 ?1 S% g" f3 D" P7 v' {;------------------------------------------------------------------------------------------------
* d) q3 l, V/ Ucrlf proc near) F" I$ N3 Q( y
mov ah,02h
! P) _' e3 l' d mov dl,0dh
: L Z, f2 t, T" K! r int 21h
+ b9 {) O5 s" |. t+ W' b" u mov ah,02h
+ j# w h0 B D- Y" ]5 T mov dl,0ah: D4 k- H3 z: q& j. u) a4 b4 B( Q
int 21h: @6 f3 l+ G' h2 M' r
ret
4 q" X# d2 ^+ N$ C6 Y5 Zcrlf endp
! E2 T4 j. c$ Z( {8 s2 l;------------------------------------------------------------------------------------------------/ F4 Z& d" w+ `+ {7 I& `$ W
_32bits proc near
3 J* v7 }4 F3 q( X pushad5 m1 L9 H/ ~! x" M# t+ `
mov cl,4- ^' }: P- \: l% \0 S
rol ebx,cl! d8 c- i* K! f9 n
call print_4_bits9 E* M. j5 b& h/ D9 W
rol ebx,cl4 g8 f( J* G( f% V' {! @! m: I# W* X
call print_4_bits7 L4 a; y' {/ r& D5 V3 Z3 H& S
rol ebx,cl8 H; j8 k; Y! z: ~7 N* g
call print_4_bits
) s( ?/ \4 u V6 u6 c rol ebx,cl
1 J* ]; ^' X: m$ P7 a call print_4_bits+ f% {1 F1 ~7 k ^4 }
rol ebx,cl
" A1 K, {$ G* H2 x: ], E call print_4_bits
; V4 ~! Z$ B; g3 N9 n rol ebx,cl# Z) p* d. a- C" k* X
call print_4_bits9 x! D# [: f" K
rol ebx,cl2 ~: q9 @' b" n. q
call print_4_bits
$ T$ M. M" K% |* w$ N/ X3 { rol ebx,cl
1 @6 P) `5 f8 a) p6 `& I& s2 I call print_4_bits& [6 P4 n/ ]( H/ N* q5 U# C1 ?5 R' u
rol ebx,cl
4 k* M7 u. i) V8 q1 e' \- { popad- q) t3 S- m5 W S
ret/ X6 B. X; g6 g5 f5 d+ f; }4 u
_32bits endp2 \+ A4 ^$ L! x# |3 \
;------------------------------------------------------------------------------------------------
6 p, c, q4 [/ o% l- Z- x4 Z; j7 P_16bits proc near& d; c6 E! l( H
pusha
7 V Z, A9 g# Z& D rol bx,cl
x" a+ Z' `9 X call print_4_bits
# W' S( ?3 g( w6 g0 o6 m; }7 ^2 h rol bx,cl
& V2 }- g. z* q' B h call print_4_bits' W. I) H6 g6 p$ t6 {2 S
rol bx,cl
% r9 k7 n! \ V I7 V call print_4_bits. v5 s7 O0 i. h' Z8 [! U
rol bx,cl
$ X$ x& f: Q" b7 f( @3 |. r7 E' o2 i( |& \ call print_4_bits
6 ~- R9 ?% g } popa
" l9 I9 S' E- m& _ ret
4 j' x1 |: {% j_16bits endp
* L) i, j; U% |! a9 h' e. t;------------------------------------------------------------------------------------------------6 u" H( N% [* a) W1 @/ k5 @# u* y
_8bits proc near S( v2 B2 E1 }$ y _" i
pusha 3 m$ o5 `7 O) Q; I" N! C5 s
rol bx,cl
O ^3 m% _+ e4 G call print_4_bits$ @$ s9 Q j0 j A! b+ [/ c
rol bx,cl
9 F1 e& ~8 B1 q% R5 f6 I call print_4_bits
# y/ L8 ^! w: {, @3 k popa
0 M" {, {5 e0 x9 H ret
! f& u8 y4 V3 r. ~4 D, E_8bits endp
% O$ z" x$ p- V; \6 {print_4_bits proc near
* J' J! w Q1 e& C" c mov dx,bx1 f* j* c7 G5 _5 P# O, P
and dl,0fh' O! A( `' `' A, A2 U0 ] V
add dl,30h
6 G7 S; j4 G* \9 u- Q, C# I cmp dl,3ah
( x* R& k0 q& \; N+ q% C, C7 g% S0 R jb print5 y3 U4 I0 I2 U
add dl,7" j9 C+ @5 M7 ~+ ]
print:
: R% ~7 d. _" P5 |/ _% I6 j" n mov ah,2
2 E4 P, v# o9 N% m6 l int 21h6 M, r S. U* D! b
ret
: }0 f, y) X- Z9 q% Oprint_4_bits endp , x( Q! m) U x ]- d9 W
CSEG ends
1 w, _: c' Y9 r6 u9 h' X" pEND |
|