|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)" q7 G" {# _) w6 Y# }3 |# P
+ s- V0 B/ o' `
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
1 ?6 g) p/ Y7 o% F e) G! Z6 k, h
, R. O+ A0 S+ Q) `- q' F; N宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
d. Y8 N* W8 {5 ]. u1 X7 A
; \( c1 @2 ~: n.model small( w5 M G1 m0 U( \' R Q$ ]
.386p6 _; G& T' V$ n+ O
DSEG SEGMENT USE16'data' " Z" c2 W0 G) A2 u6 v/ L
* {1 k) m, W8 s) r& g2 ODESC STRUC
0 Q6 _4 Q# I" o9 E$ z% a LimitL DW 0 % _7 w3 M5 p+ T/ v
BaseL DW 0
4 \5 }: o3 {* V: K3 g' J5 V BaseM DB 0
5 T8 L" a9 H- L* J) D# _& U Attributes DB 0
+ j: ?/ j, X4 y0 `, Z LimitH DB 0 3 r9 p) U% e* Z
BaseH DB 0
; s- S; c0 N) _& Y% d, HDESC ENDS
& s3 [0 e* M/ t, L
7 x7 d# `9 ?3 MPDesc STRUC
; Z ~- o" t4 Z6 G Limit DW 0
; ?; b' W$ N5 F6 o# [1 b4 J Base DD 0
' n7 \% v5 r" x2 O6 A3 Q; `PDesc ENDS/ y% I/ t% J% v: G p- _& X, ^, m; i
3 e' V s/ z1 TGDT_def Label Fword7 D# g# y% Y/ X. c: s
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>6 z9 e9 Y# K9 E4 _ a
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
6 c0 v) E" c4 M, K5 T, o% ~GDT_Addr PDesc <$-GDT_def-1, >
, [6 z: s7 R/ J4 j9 J+ U1 M, r& ^0 X4 D/ H2 \
Maddress Dword 0
1 p# }" v& d7 U' X
* p( f3 [+ [/ F1 h6 pDSEG ENDS
, z( d. P( A2 q* v6 k3 x) M* \" XASSUME CS:CSEG,DS:DSEG# T# g" g' z( o( o/ A. z
- U; ]: h A( I! \* \CSEG SEGMENT USE16'code' ) \. I- Y6 y! P
push ds3 u5 n0 I5 J5 y+ A9 M0 u7 V9 p
push es
! v6 ]1 e+ r+ w push fs
/ Q! w+ Y/ F) Q; e2 s push gs: X) N- A C2 t" G6 s
call big_real_mode
$ _7 N7 l( Q" X! p' | call Get_Commandtail& q' G" u7 @1 s0 E+ v
xor ebx,ebx
" m% s9 n9 C, R- G# a2 x mov si,82h
2 G1 z! d+ _8 B& j2 r& X mov al,es:[si]" v, `' k6 S$ I; U3 g# W
cmp al,'r', N6 ]! |, V8 ~4 u/ ~/ n
je R
5 E7 N3 D% R# D8 o3 @, O9 c cmp al,'R'! \) u' K9 a. N, m
je R0 D5 ~2 F! A3 v$ ]% o+ ^1 N3 ]) V' r
cmp al,'w'
2 g8 P0 ?# D% S4 q+ o. i je W: d& ]+ ?6 p( x g+ n
cmp al,'W'/ x0 r& _5 }" M7 K; V @- [
je W
# e1 U0 R- ]- N! U* h9 PR:
% w3 {% T2 {8 |4 @5 m' m+ \7 R mov si,84h; ?$ @* p; ^! u5 |9 J$ c' s) u
mov al,es:[si]
; Y, W8 u( M+ t4 z& s/ O" y5 V0 t, B cmp al,'b'' B; {! J4 \! r, M
je RBT
8 k; V4 A( x" J: B# [8 R cmp al,'B'
( A3 `/ e' J7 A je RBT
8 c. y" u7 Y1 @; Y, U! z1 N+ S cmp al,'w'7 V+ p* c; f# A$ U3 z# n- H
je RWR Q) R: ]1 S6 V" R8 l: X
cmp al,'W'
' o. `) H$ @, S8 D$ d je RWR2 Q g1 L% r. X
cmp al,'d'! y4 ]8 x( j+ B% B! f5 q9 I
je RDR' o- {1 z$ q. C4 ^2 J5 ^; q
cmp al,'D'/ p# y g* b% e/ [0 G, I7 `& X
je RDR 2 M$ A# i7 A; p0 `* u, o2 S
W: # H. p& O, f! r* O
mov si,84h$ `- O0 ]9 r0 b& p- B9 O
mov al,es:[si]
0 e; a6 r7 D3 S6 p6 w cmp al,'b'9 `3 U9 X6 U7 z) `
je WBT% w4 ~3 e* F! `# a. T0 X
cmp al,'B'
* n) V) p3 h1 K je WBT
( T. K" ]& I0 q e" d6 e cmp al,'w'' Q" x% O1 f: t3 r% k2 d
je WWR6 R$ `' @: ]5 ~/ e) \+ M: _% C
cmp al,'W'
' \: P! R: O$ i0 m* i je WWR
" ]/ ~ B4 X: G3 ] W# D2 ~ cmp al,'d'
; ?+ K7 y' f/ y8 p5 J/ ^2 S' X7 e je WDR6 U! Z/ |9 j1 P1 |
cmp al,'D'0 K8 ^; i7 K/ D7 J0 N! R
je WDR
. \ L Z! W d% t: j/ A/ x, v( YRBT:! k* K$ ?5 ~- _4 U/ c8 ]$ o% a
call PSP " w' A& X. X) n
call crlf w4 t+ z& `) w! U$ o5 `' q
mov esi,ebx5 l4 X8 |0 o6 E1 @/ p7 e& r
mov eax,fs:[esi]
! z6 [# R1 w/ Z8 f# v! f0 ` out 80h,eax
/ I# J; }3 ~' I- U1 t& G) \, P) T mov ebx,eax
9 b4 J- J" _: R( ?; s, ^ call _8bits
$ x* T& D3 \$ X2 B: f [ jmp Exit% x4 @& {% b6 h$ S# u4 g' T
RWR:
( N S, T+ u' l' E, p call PSP
# f3 h" ?7 p; a) h call crlf % P! U+ C9 t y6 ~# k
mov esi,ebx5 A7 r' L$ o- _6 r% P
mov eax,fs:[esi]. ]: F x5 I. e1 r) K- v: {
out 80h,eax, y% w7 R0 N6 B+ R6 J
mov ebx,eax7 G$ `% g( R: k% i3 C9 m9 }) ]
call _16bits" _% a* f* T# _2 c" G# i
jmp Exit
2 ]0 A' o9 x# YRDR:
' p: g: I) Y; T% F' f) P; V3 ]) B1 R( v" r call DPSP 2 {) |8 ?4 k) \9 H7 I
call crlf 8 t ?# v3 o, ?! s
mov esi,ebx1 K# Q( @( j2 t. I
mov eax,fs:[esi]
8 ^7 y" T) f( A8 S6 J& v' t. A1 ]( Q out 80h,eax
. I/ s' f/ k# K [+ E# ? mov ebx,eax8 b3 o5 z2 H$ r, o
call _32bits
, T: G8 s; z$ R6 v0 L, `& @ jmp Exit/ s/ d- D: ^" l( }, }
;------------------------------------------------------------------------------------------------, j* `* e. P% W
WBT:
8 H0 U9 {% V: C: F( W jmp Exit* H& F4 b6 @5 x. U+ K
WWR:
, F. ]8 ~: e5 ^! S+ c I jmp Exit; `$ R/ b& B6 t% _
WDR:3 P9 C t) X! q8 v9 v# x
call DPSP7 n1 O% n: I$ ~7 |
mov Maddress,ebx
: c T. Z8 a& D& \! j+ i+ _ call crlf1 V8 ~. W( E* |! F. F
call WDPSP0 F# D% ]) D% M: l' Z: R# X
mov eax,ebx
+ z1 d1 ~) k, l" b9 Z5 _& T mov esi,Maddress 0 ]+ {* F. V% j( B
mov fs:[esi],eax
. A; w/ r7 i# I7 C& X out 80h,eax
1 y3 G" }) [5 h, r: M jmp Exit
y5 O0 w6 D6 ^, i% V/ Y;------------------------------------------------------------------------------------------------
# r: H, ^$ W1 G) A& Y/ p. DExit:0 f% S0 n( y9 v! T, b' @. h8 B
call real_mode
$ d% I2 c. C1 o2 t3 p4 f pop gs
$ L( H% K) K, H$ N* K pop fs7 D+ c7 v, @' E! M* F1 k
pop es$ F9 v6 t% `; l
pop ds
. ]% v r' y6 ]9 K* B8 ^ .exit- y$ Q. d' l0 ^+ \+ |8 Y% M
;------------------------------------------------------------------------------------------------& V4 b; W" `0 f* p2 J- J# L
big_real_mode proc near
4 G" ~, M W4 x/ b in al, 92h
7 E" A. ~/ x3 y/ d, c or al, 002& Q, V6 ^) q: `+ O; X$ V" r3 H
out 092h, al
6 F6 z/ ^( P) f! J! t7 r out 0edh, al
" z1 i' p! G) } cli" ?- }' t6 F4 P$ T( Y
mov eax,DSEG
9 T8 n: K, P7 c0 X6 c0 j shl eax, 4. m* r5 m. Z! P
xor ebx, ebx: l8 m1 N( X- A2 ]4 N; U# v
mov ebx, offset GDT_def
; b4 i( Z- o% E: @, x L* S) E add eax, ebx+ T- D5 Z* [+ @# F( D6 `) C4 m. \
mov dword ptr GDT_Addr.Base, eax! F$ m. g, g, T' Q$ Q7 a9 `; n2 z
lgdt fword ptr GDT_Addr
8 T$ L5 |; W; R* `" N5 a* j mov bx, 8% t# K, t7 O- i0 {9 \' T/ p
mov eax, cr0
3 q$ h K6 Q6 P+ k( C) l- h8 R( ~ or al, 1
& t3 Y; V# S' C mov cr0, eax( r8 Y# w& v# m7 w' ~7 a+ P
jmp PMod
" |! r) K# P5 n* N5 g4 @: |% IPMod:
0 M5 b$ S# X7 K( E7 D. ^ mov fs, bx- s: s7 x/ V$ J. u8 U7 r
mov gs, bx. q2 F" F! `2 Y/ z" j& |; u
mov eax,cr0% c2 Z$ L8 U, w8 L7 h/ h: Z
and al, 0FEh+ T/ j# I5 w: K
mov cr0, eax
3 k* D. Q9 [# h) v, j; k* y jmp RMod
4 b# q7 O2 H6 s8 Q6 uRMod:2 J! C9 _$ J. _: `. Y! \' U$ x
xor ax, ax
H1 F5 M9 [5 q3 p# O E& f mov fs, ax, E% F6 k6 ^" b# N) u: Y
mov gs, ax
! g# x4 z& l, }) O1 C. Q7 S sti
/ L( g$ j' b+ o* U4 F ret. u3 h+ A3 n3 Y
big_real_mode ENDP
# A& f( l3 e: A* z;------------------------------------------------------------------------------------------------1 `7 b; _ R1 v, \ h" u# p
real_mode proc near& z& f7 s- }8 @2 ~% Q) \1 Z
in al, 92h% w5 o# {8 t4 z/ f5 w5 {
and al, 02( K U# @6 r- Q8 g, w
out 92h, al 2 w) X1 \3 u0 v' ^. }- E
ret8 Y- t" `" d3 i( B ?0 G9 Y
real_mode ENDP
1 k9 E$ H& y6 `3 X. q ^;------------------------------------------------------------------------------------------------
! B$ l4 j" h2 w+ I' r- vGet_Commandtail PROC near, e, v+ h" J, i3 x8 a( g6 {
mov ah,62h ) j* j) M- O& Y7 T2 U! q$ q, p
int 21h( C. ]8 h( }6 m$ v
mov es,bx
! _$ h( ~2 \" u ret& i6 }+ J3 N5 c! |3 Q4 x, J
Get_Commandtail ENDP
: A- S6 z9 G% v+ {4 [# Y' ^3 j7 ];------------------------------------------------------------------------------------------------' y0 R8 h% j6 ~# q4 A) y
PSP proc near# M7 D5 |( b1 i4 T) J
xor ebx,ebx. R6 r- `. c* R) k I8 F$ m
mov si,89h
! P8 ]+ T5 r7 `" E/ Z$ s; _ mov al,es:[si]6 L- S# J; u' {* ^. a) A( s
call Change+ Q: x. o8 M3 U' O6 ?
mov cl,4
. K2 W6 \; A1 E8 Z shl ebx,cl
" I+ G2 o- M: G0 f' ~# e- v add ebx,eax
& l R4 S) M# n" C' I4 w mov al,es:[si+1]
$ E. A8 s( `7 S' e( M; I) ] call Change
/ Z" ]2 I5 ], z1 V& L! V& \% M mov cl,4
+ v U/ R; P# o/ _ shl ebx,cl
( f( ^- D; d; z add ebx,eax& z8 `; j. m) {# O, j% Q* d+ ?
mov al,es:[si+2]% j" O0 X0 x/ I/ z4 N% m2 m
call Change
7 u5 v, H7 v& Z* w mov cl,4
3 q6 D+ X1 Z: j shl ebx,cl
- j7 m* ^" G* K$ I/ n add ebx,eax
' e. {2 r) v7 q v4 e4 F mov al,es:[si+3]1 S; H: D5 x+ z+ X1 L
call Change
- I9 b6 H4 v; F. F mov cl,4
# Z. i6 U% r- P8 U shl ebx,cl9 k) T6 K Q; }, `) R
add ebx,eax
4 g2 ?& c# u+ `" @2 t# J4 ? mov al,es:[si+4]
$ b; b9 j) q! i' f2 r( G) R! D call Change# ^1 K- g3 `' X* g1 ]
mov cl,4
+ G2 R8 @# B- k7 O5 S shl ebx,cl, d% v( N- u; H5 ~0 s) N3 U2 L
add ebx,eax7 G3 \! U2 Y5 M# ?- C d# f
mov al,es:[si+5]7 U# P- H) l2 a( j9 I# B9 w
call Change) c' p* r$ [ q, {. ]
mov cl,4
7 Y( F6 b& @& ] shl ebx,cl# \( C& S( H# l- ]
add ebx,eax
# T" k! X' g) m2 W6 e mov al,es:[si+6]
1 J* f/ v2 [1 [/ Z% Z call Change
' o% \8 N- G1 V1 Y) B; ~ mov cl,46 V z2 e: P7 ~: f% S$ ?
shl ebx,cl2 s x( Z' G9 i# i' t
add ebx,eax' e2 D- ~0 R: [# I0 b2 l i
mov al,es:[si+7]$ B9 O% A0 B3 Z
call Change5 E$ s+ P8 y+ l3 E
mov cl,4
1 S" \. K8 m9 h/ X3 |9 U shl ebx,cl- `) f5 b# _% \! i: n
add ebx,eax
: G. c( Z$ F! }, b; s ret9 P' N4 ?( l8 f4 z( R
PSP endp
2 r& K. }. L" K4 y;================================================================================================1 Q8 r. x7 W$ f$ _1 L2 T
DPSP proc near
`! ~% F" K" r: c! x' S) _! Y& ^ xor ebx,ebx- r8 R( x: r) ]7 O( ?2 R
mov si,8ah& l! d! y. o4 L) N
mov al,es:[si]
- n2 c3 p& K* G! t call Change0 p) T* |: @ W5 w
mov cl,4 R/ u: [6 c, Y( \9 D8 W j
shl ebx,cl
- @& B2 r6 B |0 d, \" b add ebx,eax
* S# a" ~4 _3 y3 G% u mov al,es:[si+1]
6 o0 F* U8 z3 \# z6 q( A0 \4 n call Change
" Z/ h9 b! ]& H2 Q mov cl,4
N8 r# H& W+ u+ x shl ebx,cl; p# U4 v, _+ ^0 A
add ebx,eax! X# `0 A( y$ {7 Y% f7 v
mov al,es:[si+2]7 R$ D/ N+ ?3 B& }3 Z8 _2 u" I
call Change
2 t5 e7 i& V9 U% {1 i& r mov cl,4! y* L9 x( O% Y' [1 _$ S" u0 J
shl ebx,cl+ V3 a3 y3 W4 t5 g/ E
add ebx,eax1 a7 ^( _9 l7 e1 F8 v
mov al,es:[si+3]
; Z+ w, h% Y- V& N% _. t call Change
4 `, E; @4 d1 J' j( w mov cl,4
3 l/ E k& S1 B. I shl ebx,cl, s9 A% u; _- Q/ i5 o5 W/ Z
add ebx,eax+ G" a9 x, F- v {3 a- [
mov al,es:[si+4]
( d" s Y8 U' h call Change
, N9 C5 \( r4 r mov cl,41 x! T' ^+ \- Z) N# g7 G4 J
shl ebx,cl
, T' Z6 F: \3 Z$ C; p! ` add ebx,eax) _1 p( a# s: c1 F
mov al,es:[si+5]* e/ [7 {; ^, D1 t* |7 S% N" o7 }
call Change" p* j! N( t- ~0 R2 w1 O
mov cl,44 E1 }6 w5 A" Z+ ^/ B- a
shl ebx,cl( O# B7 ?: [" k; J
add ebx,eax
- _9 _) k1 Q$ J8 B& Q7 H5 O* S5 F mov al,es:[si+6]
7 v: x7 D; h+ F( x/ U* F call Change! X, b) b( P+ G# l
mov cl,45 M0 Q1 q. R7 d6 p" V$ _ H1 {
shl ebx,cl* N' Z8 @$ ?! B3 {
add ebx,eax! ^6 z. D# r) {! I0 {/ G
mov al,es:[si+7]
+ F! e+ x# S O( N2 I- T/ w call Change& z/ b3 W- I% y. Z# k& l `2 T& T
mov cl,4, o& w" V' g, r1 B7 s. m6 @
shl ebx,cl2 G9 \. L8 W4 Q3 j
add ebx,eax
& {3 }' s1 r, W1 ^& c l ret
+ U7 A+ k( E8 ?% ?4 H/ q8 ?1 xDPSP endp
' x- ?2 P1 ~2 M8 Q& M4 m! m;================================================================================================
4 Q+ h( a1 z4 h8 r: V) Z4 _' NWDPSP proc near
( ^6 p% W4 _3 K9 A xor eax,eax
1 S9 E. _& B. e7 S. ^( R xor ebx,ebx
- J3 X, B# C* a+ Y* f mov si,93h; m$ I; l! w% K& M( c e. p! ~
mov al,es:[si]
G" T6 a4 C1 P. ? call Change7 ]/ }! N. X/ g) H
mov cl,4) ^! y% T- D, x( q
shl ebx,cl5 i- V6 { Q# p- i, X8 s
add ebx,eax
+ |! j: w( m* {4 D: x mov al,es:[si+1]
; \& M/ w1 G0 V Z3 ?/ v6 m- @ call Change
/ a: [ A% l8 \6 B* P" f mov cl,4
) a- f( `. h+ \" @ shl ebx,cl4 Q# \4 V! @" b
add ebx,eax
+ }7 D8 k" d5 G$ W" \ mov al,es:[si+2]6 u4 [5 q8 c6 s! ]6 N6 V2 a! j
call Change9 o; K7 k3 |: P; w
mov cl,4; l5 W7 `% N M( S. Y% I; j
shl ebx,cl' d& i7 E) M8 [, B9 `) S
add ebx,eax; x+ W1 w5 M" y- u S
mov al,es:[si+3]
& T4 D; i4 G# T. `& U call Change
: ^6 w% f) ^/ p+ d8 m0 J: R mov cl,4
! f) B( V2 D. I shl ebx,cl! e& Z& R9 f7 M: J+ h% g
add ebx,eax; {) @* Z$ X: h9 p
mov al,es:[si+4]& e: i3 m: {8 B. D9 [# t
call Change
3 |' V0 _2 m- L0 x3 L) d mov cl,4
, g% _' L6 y+ ~8 X0 W+ ?+ P shl ebx,cl
" U8 k& K; P8 s& Z7 G% E add ebx,eax7 X. D. b) a2 B8 _
mov al,es:[si+5] v6 X* T4 C" C# ]& k3 k: s( E2 `
call Change
$ n% L! |: j% g) v2 d2 [' w mov cl,4
; o" x# @$ t, ^9 T1 a$ \ shl ebx,cl1 O7 e8 g3 [' Q% ]
add ebx,eax+ |( W# n" b" f3 n; N) A% f% N
mov al,es:[si+6]$ u, U; r* P- ]! g, D
call Change' R1 N9 Q0 l& P9 G: ]1 {
mov cl,4
: z6 M- D8 Y& C6 v shl ebx,cl
7 @& z7 ]6 [& z3 A E4 o add ebx,eax4 T3 s* n2 R; O- S# l0 \+ q3 I' I: U' a
mov al,es:[si+7]
( u7 A' l+ i; J% e! s. L! {) R call Change) h ^6 P: a7 D$ V; T6 T
mov cl,4! e: j$ F' H9 N; B) P
shl ebx,cl
7 r8 E; d( v) I" b1 W! D# ` add ebx,eax
( Q6 J" B- Q1 s# }# H5 ]: }, ? ret8 O5 }8 G! ]1 S, _. m) l( T+ B& h
WDPSP endp9 C# u4 {; J2 f! R! q0 c! T$ w
;================================================================================================% j/ |1 w+ F6 F1 O+ ~3 ?2 n* x
Change proc near
: V. R; ~: B: K' T3 g! R) C% }A:
T1 m: B+ D) K) U3 R movzx eax,al8 N9 X9 ^$ y2 j3 Y- I8 l* x
mov edx,eax! y3 ]. P- c% K3 g$ B
cmp eax,'0' & N$ j9 S9 j! U
jb A
+ U# Y7 D, W; L* {8 [. j cmp eax,'9' & ?0 D% [) y! f( F$ p T
ja B
, e& A6 A4 Y8 p; C& j; J" n sub eax,'0'/ u" x8 X* E' W; u, ]. ]: a
jmp short E
7 X7 ?; Z [. X7 y3 R' BB:/ i; z9 Z; u1 J( }3 ~
and eax,0dfh - `. ^" T8 G3 }) Q6 q2 n
mov edx,eax
* U2 a& Y' ]2 n- G, W3 G6 e4 n sub eax,37h $ R/ I1 Z3 V2 W% E
cmp eax,0ah
3 Z3 j+ U3 f, c% T( V! v jb A
; R7 [4 D% }( Q1 ^9 ^' c cmp eax,0fh
6 j5 |: S2 e m3 G0 n; o ja A
; t0 P- ]7 N" \ d7 Y+ o) f( UE:
. f. [7 |/ X3 [9 t5 M+ ` push eax
- W$ s! @+ B' F5 A* L call PRT 7 ]& C! ^# U% f
pop eax/ a) Q. k: n8 Y* i G, `
CExit:. s J1 `) ]. V9 g6 g: L
ret9 G9 q; s& f% K# \3 X
Change endp
+ U+ w: f, n9 I9 k;------------------------------------------------------------------------------------------------
- q, L& V8 N) M4 m1 NPRT proc near' F; V7 |% y7 e% l. J; f
mov ah,02h
; E, N2 z" ^6 } int 21h
4 ]' G9 F; R; ^, _, u ret' P! l! k; {8 c+ s& H+ q
PRT endp4 M' e5 d" c# }& x% ]1 c$ I. H
;------------------------------------------------------------------------------------------------" l" w$ H: L9 v4 Q
crlf proc near4 O# `0 W, v% [0 m
mov ah,02h8 L" w0 A& U& h9 l9 R, F
mov dl,0dh. o$ K2 y8 K1 O/ Q ?5 Q y# N. v+ k
int 21h8 S' z' g% C( v
mov ah,02h8 @: Y8 `7 x4 r6 r1 Z9 }5 D
mov dl,0ah" o" ], Q0 x/ B @
int 21h7 x' v0 P/ M1 `) d
ret1 r' g0 ]- L. _2 E* v, u
crlf endp
/ P6 e; B+ A4 K9 T0 [% I;------------------------------------------------------------------------------------------------) }4 U4 @6 `6 @8 x/ ]
_32bits proc near I$ O3 H4 Q3 S
pushad
j/ ?3 B/ \5 [' {, Z mov cl,4
" R9 F* e7 B8 P' L/ k1 H rol ebx,cl
' ?; x! b# T2 c( ], O7 l8 W call print_4_bits
: D5 M: Y& x) Z; P rol ebx,cl |: ~' k n' ~9 |3 q
call print_4_bits! P9 O; K. G+ J1 l+ P$ t$ g
rol ebx,cl
9 f% V6 d0 D O; T7 S. l call print_4_bits/ @7 t: T4 f0 e
rol ebx,cl7 d |# ~* ?0 }! h
call print_4_bits
$ h6 S- X. ~5 ~8 @- `8 F rol ebx,cl, y* x6 _1 ~: A, F3 d# [- l
call print_4_bits0 F4 S! v6 \& l0 y$ g
rol ebx,cl
% K4 E8 a. s: u7 N* L9 v call print_4_bits
- U2 `* n# r* a6 w% R rol ebx,cl; V# F% {1 U) T# k0 W
call print_4_bits
' J% k" w+ a1 R m$ h z rol ebx,cl
9 d2 o0 F* g @# F) S call print_4_bits1 V/ n" N* l0 g$ ]
rol ebx,cl
. _- ? ~) A' Q) f4 _ popad
" i2 c b% q; x& U ret
! p A8 {1 { {- M3 k1 j# \_32bits endp
! D% |' s5 C" P {( U;------------------------------------------------------------------------------------------------
0 \1 U& w+ O8 K_16bits proc near8 e7 F a6 {& K; I0 w, ~9 n- |4 {) l, F
pusha
! Y& [& T G$ _) |8 o' P. f rol bx,cl9 D8 z( z |, n* ?% Z, ^- D; _
call print_4_bits
( r0 C% Z" \: S' o# \% Z rol bx,cl' Y, {3 \$ d g$ n; H2 [
call print_4_bits
/ ?/ T% Z. F4 g7 F$ o rol bx,cl
v* v6 v* i* S1 j1 W% } call print_4_bits6 T# g1 `9 v" R
rol bx,cl- ^" h1 ]2 r; J" g
call print_4_bits1 R4 P, C: p8 w, t: U* b
popa6 l9 Q3 g$ }2 b& d. d1 a
ret
+ i3 S5 x. h# b, n7 y_16bits endp: |. U+ e8 c6 i$ w* _3 R# m
;------------------------------------------------------------------------------------------------
, Z2 ~+ J7 F8 ^1 J6 u_8bits proc near* { `6 c1 ] H& q9 o
pusha
0 d0 |( Q5 ]% k% v1 e d/ L rol bx,cl
f/ w' g# m* g, c2 q call print_4_bits
- m" {! `+ B/ @8 Z$ H6 @ rol bx,cl
; R" g- ^% k8 @7 e7 j call print_4_bits
9 S( C, ^+ |9 w' g2 r' T popa
9 V0 K0 R* f' F0 U! N ret
0 \' a8 r+ J0 u1 S. Q; i9 M- l: r1 n_8bits endp1 n) E- f0 F4 J$ {7 h# B
print_4_bits proc near! s5 d2 W; n# G6 O' G m5 k
mov dx,bx
3 g `" F; B% r: t and dl,0fh+ B' W3 I: p; N! X5 G! B
add dl,30h/ D, ?, d- O# J* \; F
cmp dl,3ah' z' r5 F$ F) `) Z
jb print+ i* b$ X# k4 g) [
add dl,74 b! U4 P; e# A, Z+ u W
print:
5 m5 n. z( D( r& Z1 C% O0 \* J* | mov ah,2
% p6 k& X* X% m7 r! c5 n! T' Q int 21h3 V2 n* I- n+ V2 |9 n1 Q8 e; q
ret; b" ]4 g8 ~8 R6 a; |4 ^
print_4_bits endp
# u1 k, `( P \, o' N: _CSEG ends6 F2 L1 B' h3 B* q% V, x
END |
|