|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)5 ]" F0 F( s" O+ _
3 B+ ~: @4 @7 B6 W則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'% r. x) K2 V4 E7 N q
( E& W: D1 b" ?% [8 C: _1 e# Y
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
8 Q. l f9 q% c4 B
8 S3 a7 V+ e# }4 `- D.model small
/ I: a' n: h4 Q+ g3 B.386p- o: [+ N9 Q* P2 Q5 ?
DSEG SEGMENT USE16'data' 8 M2 o5 B' j$ l" s
, d7 V9 o5 t9 u& \9 WDESC STRUC9 _) I1 U+ _0 ]* h1 D
LimitL DW 0 7 W2 S$ M2 ]+ Y4 r' k7 ?
BaseL DW 0 5 m! ~1 @; ^2 Z9 g& e" m9 ?7 v$ T, u4 } v
BaseM DB 0
- b* s0 D+ O G9 C- g- j Attributes DB 0
3 S) s: b1 t4 G! H& w* h LimitH DB 0 . F6 Y. t8 W0 p5 p7 I) b
BaseH DB 0 , P n3 L, \: N7 a ?' R
DESC ENDS
2 {& P2 E1 }2 j6 C8 P3 g- ~5 s6 X. H% E' D+ i2 E7 d
PDesc STRUC. C% B2 i. `8 n7 r; Y7 z6 g9 C+ N
Limit DW 0
% A2 p4 @1 c+ z2 X4 g: E( ]. e Base DD 0 . q; j# c. n w# P- r
PDesc ENDS
8 i8 b3 v A- K( ?1 |
! y! t. L% C3 `8 b6 rGDT_def Label Fword
A8 {) }- v& s# r- n; q4 j: zNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>* D) R% |8 h' {( v' S+ a% m3 h
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>" z) r& j8 S8 j) g$ ]/ \
GDT_Addr PDesc <$-GDT_def-1, >
1 R5 ?# V0 m$ J2 r6 D$ V
" b" W3 U" d c O1 iMaddress Dword 07 R3 e9 K' G) {! n! }6 o
7 N/ }! r6 r: w1 O: V- X
DSEG ENDS
1 i+ q, s8 |4 ~* n3 W7 ]ASSUME CS:CSEG,DS:DSEG: |& k& O, ~! j, \/ Y* ~
+ l' C. D% S! F7 U6 q( o
CSEG SEGMENT USE16'code' 4 F5 T5 r2 H- z: A/ W) k# m- J$ {, \
push ds
; q5 [$ E# U& C( v- c9 ~ push es
: s% K, q3 _# R" \9 h push fs; B9 C' F% W5 ~) E- ~
push gs
* ?) M4 q" {5 d9 a0 a call big_real_mode
. y- G; F/ H7 f) p- w7 l3 n/ Q call Get_Commandtail
8 y& c% a- d3 D8 o8 {! x xor ebx,ebx8 r8 W( d) J; s1 J6 g
mov si,82h/ b& c5 z0 ?7 L' l
mov al,es:[si]
0 ?6 \8 x) K, Z6 A6 b cmp al,'r'( a8 D' J6 J) b* |/ c
je R# H! t$ A* ~1 A
cmp al,'R'. |* \. k/ z3 e# ?" A& s: B
je R
' Q9 c" L7 V6 M& W! u cmp al,'w'
# n+ m7 B, {) Q$ Z, L: q je W
# o; Q5 n5 }( q2 K7 q' E" T: d cmp al,'W', c1 o6 h# B8 L
je W : L& J+ j! I+ {9 T/ ~+ ]% ^
R:
' G: Q" Q! C# S4 J5 a) U4 t mov si,84h. `+ o" {% ?3 ^3 }5 z# {' f% r; g
mov al,es:[si]# R: m* a( @( L& q
cmp al,'b'
+ D2 Y" @2 B2 b: S je RBT
9 Z4 T: W, }$ G, ]! G0 m7 ~ cmp al,'B'/ ^4 m/ a. R1 Q0 M: e' C: ?
je RBT
+ B; }& O3 e' n+ B; _4 z3 b cmp al,'w'! G) L0 `: g) A9 ]: @
je RWR
I j( [, k B& e' G! i) {, M cmp al,'W'/ U& K2 q: V. \0 P& R, a: P
je RWR
2 g/ N0 Q- ]9 p/ s( r cmp al,'d'
( U& y" }" ]( |6 m$ ` je RDR/ h! w( A/ O4 D ^# T& n1 I% `
cmp al,'D'
7 _# B: C3 \/ H' M6 n: c; i- i je RDR , W. w A; `; L* H9 w2 j
W: 9 g2 z) a5 Z- J6 o3 D& j
mov si,84h3 j1 b* v' n h9 E2 o1 m
mov al,es:[si]1 H8 U d# E1 k! q- t
cmp al,'b'. S, U w+ w4 h1 w
je WBT
; Z# M' A( B# J# r9 g0 D1 H cmp al,'B'8 _2 g- P9 h& c0 R7 K; D q
je WBT# k6 q/ z! w$ f: Z/ R6 I
cmp al,'w'! o! r8 I! P I" ]' A
je WWR1 E4 X1 j: v' i( l
cmp al,'W'
, F/ g3 t+ u7 s je WWR+ V$ g) l0 x' i* t
cmp al,'d': Y( {2 W# ^/ D G
je WDR
$ r+ U, ~9 I7 X5 c7 H cmp al,'D'
; S2 k9 Z; n% s' _ je WDR
6 t2 a* h) e) Q- cRBT:6 {8 s! V/ A3 H0 Y. I% Y
call PSP
3 x. B- o, U/ i! N3 Q call crlf / ]% E& T* A3 Y! Y' h4 }
mov esi,ebx
y; d# X- M9 B6 J mov eax,fs:[esi]
0 V" a" `/ p! R! I7 X) x- ~5 ~9 c- F2 { out 80h,eax- q# l- Y5 N) D# L
mov ebx,eax
- b! i% z3 T! E- D0 x: r call _8bits3 k% u( p4 t* a+ a4 `
jmp Exit, y0 v0 `3 K# l$ l2 ?4 Y; _8 W
RWR:
' V- s9 L! b3 Y% k! @ call PSP ) i# S: W9 B% _) | Z+ ^6 \
call crlf
% s2 x0 b% C& J5 x, F mov esi,ebx
/ k6 j! p' h& n% E mov eax,fs:[esi]
% b$ V( c0 @: t" A% [) P0 u* N p/ ] out 80h,eax
3 c$ ], Z& t, |9 I% r& E% J/ L: d mov ebx,eax/ |/ i1 m" \9 O7 ]# r- ?
call _16bits$ v. Y7 \5 n$ g5 T
jmp Exit
4 ?8 e8 v0 m& [- L8 Z" R; s3 p$ cRDR:; d0 w8 v, O6 j$ h2 S P
call DPSP i) N$ L6 X( i& ]6 q
call crlf
" \2 |. j, [' h mov esi,ebx+ F2 T [$ R' y& T" X
mov eax,fs:[esi]8 g0 ~2 a, {4 @/ v7 ?: v; \& C
out 80h,eax' b! }, A% B; B. y! ?
mov ebx,eax
. G9 P% k- n# b" s9 f( q% ~3 E call _32bits
+ y! `$ ]$ ^% X( B; @( Y jmp Exit
Y. ]7 G, w* W' r! O V;------------------------------------------------------------------------------------------------$ ]- J# \! [8 [0 l8 g
WBT:4 X5 O- U+ M" B# }2 o5 u# z9 n* x
jmp Exit
; M [- g/ ^+ Q' g( u( ]( RWWR:
6 U3 C' v* G7 W# C8 `3 R: Z jmp Exit q2 U- ^% Z8 s' r* g* Y ~5 i
WDR:, P' P' m' w% L8 A- L: t! w
call DPSP
. o5 e8 ~2 L. w$ Y& { mov Maddress,ebx
; Z# ?- ^! L% O4 _; b call crlf
5 V& c- L" S/ N# [" N. N' f call WDPSP" }- @( V( v# O4 ]/ W8 @
mov eax,ebx
& }2 f: W# R. Z mov esi,Maddress
6 D1 R! n; _( S mov fs:[esi],eax
" B8 K Q/ A3 H+ p W out 80h,eax
3 S( c7 ]5 _4 j. s _ jmp Exit
6 H B0 T9 s6 K% l4 E" T# n;------------------------------------------------------------------------------------------------ 3 v2 g# O8 C$ Y* l* U) x
Exit:
; v8 M2 J7 U0 E) [ call real_mode 1 M; x% W l& l% T* q8 D' _: A
pop gs
' x2 S! d7 z4 l$ i3 Y pop fs
) Z. p" v+ Y7 g Z4 K- p pop es
$ Y3 G/ [" D2 a6 {6 g" {% C1 K pop ds + R5 h5 ?1 S l
.exit: a) F$ E1 [. Y
;------------------------------------------------------------------------------------------------
5 E: [9 b& J& I& ]" kbig_real_mode proc near
! ~: O! I5 V8 S in al, 92h+ Z; ^5 g3 ?$ Q9 |! \6 \& X
or al, 002
' }9 b/ {# _2 r3 N1 w1 O, L) P: J out 092h, al
4 [! h8 p% }* s2 P2 k# t out 0edh, al; h. d( ?% ?7 l
cli
3 v0 W2 n' t/ }. t( n+ l# y mov eax,DSEG, Z! |& Q# r& X b2 `% ]; W
shl eax, 4
5 i( @9 J4 d) r: f: ?5 s xor ebx, ebx! m/ h/ G8 I+ Y
mov ebx, offset GDT_def
" `" q `6 g# w0 I add eax, ebx n1 n% Z8 M8 @ l
mov dword ptr GDT_Addr.Base, eax
% k T/ @8 k2 q) e3 z; C, f lgdt fword ptr GDT_Addr
$ M( h% g/ `5 I) y& e mov bx, 8) q) Z* m" N8 E( r" V0 r+ J" X
mov eax, cr04 H) G( e6 o+ l$ j) r# u9 J" f8 P
or al, 1
0 k: X! B! }! @& O, i' ~8 z: | mov cr0, eax& F9 Y6 `- \. |& f
jmp PMod2 S! C2 p/ C* G
PMod:# ~4 r5 k& h8 M$ g' S0 s
mov fs, bx
& [9 ~) O7 J- Q4 ^- f$ ~ mov gs, bx
4 h: X7 O+ i# {4 m7 D% V* @! g mov eax,cr0% C1 i! v3 U- q6 @
and al, 0FEh
7 s' h, \" t' s7 j+ I0 I mov cr0, eax ( e$ r) ^5 y! [& e, Z$ ~! D K& q* c- N2 X
jmp RMod
% T! w6 r0 c7 X" z0 h3 ORMod:
7 x. T0 R; h2 a. Q* a0 \8 ~* [ xor ax, ax% }2 P( u1 o+ Z& {" O! _/ Q8 l8 f
mov fs, ax" j1 c, @& ^" T5 `
mov gs, ax : h1 E# j" x6 m" y
sti
) P3 q; F( J; @& d4 Z ret
% l3 Z n1 F# k) j8 kbig_real_mode ENDP/ X+ {( w" M7 e& z' c0 g
;------------------------------------------------------------------------------------------------# v/ k& P; d1 U: W- F- B
real_mode proc near& b4 W. I& `4 H: y4 m8 M
in al, 92h
( g, i! Y' K+ e and al, 024 K: m8 f6 b4 J a4 M( _
out 92h, al 8 F9 G1 S3 J' w9 O
ret- h# c. \9 X n, N9 }( ]* |( G' D
real_mode ENDP
- M% j9 E% I9 c Q$ Y+ J7 n8 a) _$ I;------------------------------------------------------------------------------------------------
, V: L$ H' z4 W& WGet_Commandtail PROC near0 \6 p+ h5 E! l" @; @# y5 f) R
mov ah,62h % j$ \- K1 G% g8 I! T
int 21h
- L" m% ^. [1 c* x mov es,bx2 m* ^* n! E, z5 I
ret0 v" |+ A) }! ~5 Z
Get_Commandtail ENDP . M/ E. W& Y, }5 K4 Z0 G* V
;------------------------------------------------------------------------------------------------
, ^4 \/ Z9 {% z# z7 APSP proc near
) i, V; s# Q$ _& x. z9 V+ T xor ebx,ebx) a2 r4 X5 z l1 ?% |( c
mov si,89h
0 Q. K) C2 r+ j mov al,es:[si]+ D# H8 W4 \/ E0 u! E, x/ v d1 Y
call Change0 O( h/ d" X" j7 m7 ~6 @, ?# {" \
mov cl,4
- r8 ^; Y7 b) S$ w4 o9 H shl ebx,cl
+ E1 y- m6 J; l; M% e- b add ebx,eax
( X l3 M& [2 G+ |: U mov al,es:[si+1]
2 g1 D' b6 r9 n( @0 I call Change
; J* a/ F4 F! D mov cl,4
7 c, c: D) U. O$ x& d! p: M shl ebx,cl% V! v( ?8 \2 M1 ^
add ebx,eax d* y) c% ~8 i8 z
mov al,es:[si+2]$ W/ I( e3 ~4 B; [3 ~
call Change
3 G P+ @8 L4 |! f" {0 A, b mov cl,4
% W7 c8 }2 _* K! h3 i, C7 k shl ebx,cl
; W% j& J$ }9 E# g" I; _ add ebx,eax
0 L3 o: Z+ O2 q& t1 e Y; h mov al,es:[si+3]! r) u D u8 K9 |- R
call Change8 c( z) g- h- ~$ e, ~- z
mov cl,4" Y' G1 X! o8 Z [: d6 q" C' E2 H
shl ebx,cl
) J+ V* Z( j4 u6 B add ebx,eax0 T y+ T- I% Y% o( a+ }
mov al,es:[si+4]
0 w6 N' p+ p3 b7 F* ]: ~7 z call Change
! X6 k8 k9 }) A3 T1 P; U$ D mov cl,4
2 ~5 |6 {( L+ D3 H shl ebx,cl
3 v0 l7 c+ e5 l add ebx,eax. [0 l+ ^: H5 h' K& h
mov al,es:[si+5]
& Y7 I1 }' r8 X: l6 U$ o( f call Change
" R- \7 G5 q1 x mov cl,4
+ E* ]0 ^) I6 q3 ]0 j- G shl ebx,cl6 G, k7 B$ B8 l
add ebx,eax q4 k+ f& |" m, V. K) g1 ?3 b
mov al,es:[si+6]
6 v0 {+ F, B* E/ `9 S3 O, t. C call Change
6 [" L( A$ m* F6 L$ I: w mov cl,4$ m/ J6 z' |" \$ A' v
shl ebx,cl: E: z* J: p& M _. A) A1 k
add ebx,eax% j* _- N7 `3 ]! b- r( Y/ Y0 Z
mov al,es:[si+7]) J) H1 G$ E% n' x6 Q$ O
call Change
6 p& n2 |' [$ t2 n( k }2 w8 k4 v mov cl,4
s7 S) T- l: k, o3 k shl ebx,cl! \5 @- |- B# K, { M) `0 Y" t
add ebx,eax
: Q1 S' M. D& |. f ret
: V% k7 l. k$ IPSP endp
! q1 }+ ]5 X8 v; `0 t0 G. S+ r;================================================================================================; j; C9 l) _# a4 y: L2 A
DPSP proc near
: U1 {( u5 g3 H- i# } xor ebx,ebx
4 j( x& b6 Q! _: Q& V/ v/ j mov si,8ah
0 J; d8 S |$ x* u9 r* J mov al,es:[si]. R5 U& U; ]' `$ C3 C3 g
call Change
6 Z! {2 ]3 U" W mov cl,4; D1 |$ @, d* _* ^! b
shl ebx,cl
4 j0 S( Z0 A; T& A add ebx,eax' u6 V! V! f9 M1 g& _7 g9 z
mov al,es:[si+1]
9 |+ d8 \. j5 T) o5 B call Change2 n& B8 q, j5 _
mov cl,4
3 J7 h9 w2 C/ S shl ebx,cl
- A5 |6 b9 C+ Y% v/ B) n6 { add ebx,eax
- y. Z4 a0 o2 b/ \* z7 |2 z" p mov al,es:[si+2]) E4 [4 q, S: F( q; u2 n
call Change
# L# u7 i/ K, _0 Z" _ mov cl,4# z% @- ~4 ]& w$ z
shl ebx,cl: j$ a* Q# G2 P
add ebx,eax
6 i8 L$ R+ p" a1 ~% ` mov al,es:[si+3]0 |* h( [: R3 S( M
call Change
4 m; a8 E* B% d+ N mov cl,40 ^1 R2 b. }9 Z6 L9 e
shl ebx,cl
# h: ~2 r6 l; B0 e- t2 K! f! l H add ebx,eax: L0 N. l4 H. r& {' o9 b: s
mov al,es:[si+4]( L) U% z* d; n" i+ E3 ?" S
call Change
Z- P: g- V, |7 N4 S mov cl,40 a* z) j0 u { Y# {6 ~
shl ebx,cl" f( g* n L& T0 r
add ebx,eax
0 W/ g4 Y' V* u; L& Q3 Z mov al,es:[si+5]
. W% o& e! H7 a2 @5 r8 o9 \9 D call Change- ]0 L0 @, x7 \& V( ^; W; t6 i
mov cl,4
: |3 x9 ~/ l$ f shl ebx,cl
8 u9 W# S& o0 g/ ^3 w& W; f add ebx,eax
0 L1 ]: l w T+ f mov al,es:[si+6] K- r/ p/ ]8 Y( l" |9 R+ H8 {
call Change! i5 V' c& z) F& n
mov cl,4% w6 Z0 U; T" o; v' o3 S. j
shl ebx,cl
, k+ U) }0 s: {: p/ U+ u& ` add ebx,eax) q1 x! S6 \& ^4 `
mov al,es:[si+7]
$ R% n: V. i' O6 |& I T0 J3 Z3 U call Change& A8 H, K3 k; N% p) G: x
mov cl,4
. S p! R' c6 @5 M% v8 V! V. j shl ebx,cl/ [' V: P: x9 |5 |
add ebx,eax8 {8 ^9 H( A7 f9 E O% x
ret5 Y- W$ b" D8 T/ P# G% T9 T
DPSP endp
: l+ a+ r1 I" r) w6 l;================================================================================================, w7 \. A, P2 g
WDPSP proc near
: g: _" F. N3 Z3 \* i6 ` xor eax,eax( D3 c# w# Q' ]4 }' b1 h8 y
xor ebx,ebx
6 l! M S$ x: P mov si,93h
$ b6 j% a& B' ?1 y mov al,es:[si]
$ d) T( E( [( C/ F call Change+ j2 F7 c$ A* w
mov cl,4
! ]# R) J- ]' L% m- F2 g- d shl ebx,cl
% e# ]5 \; `% U4 W9 R, Z" E$ Q, v add ebx,eax
! C: S; i# ], H8 y! b- I+ Z mov al,es:[si+1]
. O, W8 b1 M# [# N3 i2 I call Change
- L0 c5 i/ ~: j1 @$ Y6 ?2 C; m& ^ mov cl,4' v) Y1 b9 I# ~4 V
shl ebx,cl' m& M7 G! ] j8 H J
add ebx,eax: B3 C5 N1 I/ b( ~ @
mov al,es:[si+2]+ b" W9 q* H4 G* X, k
call Change- x. F: ^7 H9 }3 G1 a7 o9 R
mov cl,4( H' u# ^! i6 }+ |3 P1 a3 B2 e
shl ebx,cl
% W: b' H% Z/ {6 ^ add ebx,eax
* ~- B9 T! r7 s! I# R mov al,es:[si+3]7 T$ w) ~6 v! w8 X% I' a, E
call Change8 A5 U: w5 W8 U/ t4 R
mov cl,4
$ P4 F5 ^4 N1 N& C' a- k: r6 Y9 W shl ebx,cl9 @& ]! M5 ]9 p. S1 p" E9 j
add ebx,eax
6 L$ n0 Z2 U+ _3 g. J* j+ q( | mov al,es:[si+4]
" U; s7 w& H( c8 b call Change% d: y/ @. ~7 D" L. K5 C" V
mov cl,4
5 T- y# O! `) B. f! _ shl ebx,cl+ B5 V7 P. Q0 ]2 K, l, }4 ^
add ebx,eax
' V/ o- T0 x8 P2 ~8 w mov al,es:[si+5]
* r( V: I1 b Z3 M call Change9 C' d$ k7 L& b6 ]* i3 {% F' F
mov cl,4
( ^+ X+ H: c3 y! U shl ebx,cl2 Y( P! F* Y; j9 `1 h3 K
add ebx,eax# |- r6 \8 K- P* ]4 Y
mov al,es:[si+6]0 T1 |, n: q$ }! P
call Change
* }9 a; f/ ^! X# C9 }# I/ p! U) B: h mov cl,49 D3 ?* e0 A( {' H3 l% u
shl ebx,cl; A' D5 Q# O# X* ]" z _7 x' `& o
add ebx,eax
O. A: |! ~8 M$ g mov al,es:[si+7]
/ n- y. s8 ~; @: m F9 G9 Q call Change
" y% K) g/ U' t9 b; u' E& l+ h mov cl,4
8 H; x# `5 t* N$ X5 v! C; @6 z& i$ F shl ebx,cl
) g: S& |& W, p+ \$ e add ebx,eax
% _: I2 S9 k3 n1 {/ C* V& B ret+ s0 o& ~& z% v$ y! M% I- ^
WDPSP endp
' ]: b& g, M8 f) d: ]& b5 o9 f;================================================================================================& Q1 T6 i+ H+ w- J+ {% z
Change proc near
! Z# ~+ v& s0 _! E! H/ E4 K9 XA:
* L! j9 }& O8 P$ l movzx eax,al
: q* J) z K6 h mov edx,eax) F0 ] r" s7 b+ P# R. ?' M: S
cmp eax,'0'
9 R4 `0 j+ O7 f; @ jb A& j1 n+ p9 d1 z H& w! W
cmp eax,'9'
$ x- T# s J" \- | ja B" T+ C9 b/ u+ f! y$ N
sub eax,'0'! O( k9 O* b# w' [* }
jmp short E) M6 }% t, x" ?- @) L& e, o0 l( |4 X
B:
. {: ~* Z# n L3 z8 Z and eax,0dfh
) r% s0 k- I( w: T$ } mov edx,eax
2 A( S0 h" U3 s" W* i. G4 _( f sub eax,37h 9 N8 r7 P) V: ]; ~
cmp eax,0ah
! P7 w- l& l+ T0 b( M1 ~+ r jb A
; h' y; v) d1 w$ T, r' |5 K/ y cmp eax,0fh
5 D+ ]3 `6 {. r7 F! N ja A / b d7 u3 u* ?
E:# M$ m! s4 Q' M/ k
push eax , N# l' [ X3 `( s) Q' p* I5 P
call PRT ! N' @# t5 z$ B! l
pop eax
: h/ u, w2 E6 |CExit:
7 t8 Z( p, T0 ] o ret% L/ i' k3 [4 o
Change endp: \" P- B+ I' s
;------------------------------------------------------------------------------------------------
9 n) `- d L- `* B4 N0 w+ @PRT proc near
$ V Z% @- Q/ Y3 |" d- s* W: k mov ah,02h
" |' U5 \ D0 p* ^! y1 e2 U int 21h
& o/ Q4 p0 {6 ]8 P( h. ? ret
a0 _7 M) I1 g7 t- |2 sPRT endp
" S. d4 Y' N# a2 @;------------------------------------------------------------------------------------------------
4 h; ~; x, }7 m, G! u+ hcrlf proc near$ _% {( A3 F8 Q B3 v
mov ah,02h
6 a$ p9 l$ r ^9 k; b mov dl,0dh" r4 n' M. I9 d" O
int 21h3 ~7 @% m: K6 l3 L% U( h
mov ah,02h6 w' y" L! x: X4 \! L
mov dl,0ah0 ?- d& J1 V; y% g/ H; N3 t
int 21h) w6 l# Q$ h' Z+ o
ret
+ q& a& k5 Z6 p5 }1 Hcrlf endp
! Y- D; i6 z7 g/ A5 z! W3 r;------------------------------------------------------------------------------------------------& M: K3 T5 Z+ X
_32bits proc near
4 z: D2 p! x }0 t# g pushad
- J% R! {% p0 R! t' V8 ~0 x mov cl,4$ K& P2 y A% U# m, ~, Y
rol ebx,cl4 h5 i0 p; L& D: A0 X
call print_4_bits! E2 p1 v m9 D* ]& t
rol ebx,cl
% K" f2 a" @# f$ Z: O0 |5 m5 T call print_4_bits: o8 l$ p" n* k) m) _) T5 }
rol ebx,cl
/ i: r7 V7 [# m; F) j. h8 Q call print_4_bits+ V9 b4 N# P7 r) G9 M! g
rol ebx,cl" z5 z9 j. Q4 U ]' Q5 {
call print_4_bits- z8 Y: e5 b! c0 L% k! @" A$ V
rol ebx,cl+ ]7 A0 `9 R9 h2 E. w/ m9 y* |
call print_4_bits$ h- N) k1 ^1 T/ c0 |- p4 |
rol ebx,cl
+ c" I( `7 O2 b$ t: w9 O \/ b call print_4_bits9 z' r7 X/ W1 W4 O1 }
rol ebx,cl
! i. S w+ _" B3 o" k call print_4_bits
% [2 j: o" Z4 X0 b& b S1 P; n rol ebx,cl
y Q ?& m8 e call print_4_bits
4 O* D6 U% M$ Z" ~- M& g G' m rol ebx,cl7 |$ K7 _0 x: ?' [. R8 }- ^; R
popad8 L' g! ]( E; L* k
ret
`9 j. Y% A( E4 b( b& G/ q3 v_32bits endp+ c. V! Y/ e5 @: |: K; i* e
;------------------------------------------------------------------------------------------------
) t# D! @6 G2 _) B$ r4 n_16bits proc near
. B: L" V. N1 z* @8 G pusha 2 `& B8 E4 y* ^; ~
rol bx,cl
/ Q, x8 G1 D- X/ t" e U call print_4_bits( z# Y+ @$ e; U- V9 i% P7 M! n
rol bx,cl( D" X- ^3 \( e( D. W1 S+ S
call print_4_bits* Q# ]' r; C, S0 h% u4 m9 X
rol bx,cl$ l7 n% s' @ F! N% |
call print_4_bits+ O$ R+ }5 S& Y- z3 y# N
rol bx,cl
4 [3 F4 X8 Q+ Q u( ? call print_4_bits
5 f& k0 B9 C S) l" x9 y popa
- A' n. H% M+ ~ ret
4 ?. y7 W1 w7 s5 a: x9 u4 M_16bits endp, @; Q& ~; Y( z8 n
;------------------------------------------------------------------------------------------------0 H; I9 ^( ~0 R# e" ^
_8bits proc near+ R* {) M( n# ?0 [$ |2 o
pusha + z0 y- z1 i0 a
rol bx,cl; S& v) N6 b. ~) |3 b
call print_4_bits
* y& n9 j5 ]7 M) Z/ w rol bx,cl& x' J2 {7 Z- J6 D/ n
call print_4_bits$ p3 V* h7 l% o4 n
popa9 \ U! O' n3 @9 I0 n4 n$ k
ret
( L& F$ ~$ ^# n0 ]3 `* I_8bits endp
, o' ^6 r3 ^! k* sprint_4_bits proc near* V% `8 t V8 `+ E' V6 t! ~
mov dx,bx
: f# q" s) ]4 ~2 ? and dl,0fh( t4 ^3 s U2 U8 [
add dl,30h- l$ t3 I5 T) O. O
cmp dl,3ah' p( F% w! g7 n! Y0 d# k' E }1 E
jb print
/ v% }& p) Y- Y6 q" ~4 F$ x3 X add dl,7) Q4 ^5 a% R7 W8 D% b! c- \
print: $ Y: Y7 C+ l. F
mov ah,2
) t. T+ I: c0 [8 Z int 21h
% M. R1 e# A4 o# Y ret/ T% k( M% k. w7 H& K5 P1 U% t
print_4_bits endp + K+ a B+ Q- i. K5 v( |: {" x, k. v
CSEG ends
6 p& z/ A3 z Q. V3 g7 v* KEND |
|