|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)5 Y/ n" w5 W9 U
1 C- x- Z9 B9 Q5 Z7 Q則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'( O3 R# s% `* l( {- Y2 W
0 `4 }0 _# I# o/ m' d
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝 0 M% Y6 Z% E- [
3 c% r7 L6 y" m.model small
S* ^( ~. J: B0 {9 I3 Q. U.386p
$ [9 O- l, ~ P7 A! e$ uDSEG SEGMENT USE16'data' ) P3 w# |5 r* i9 g1 U
* c2 J( u+ R. P" I8 gDESC STRUC
3 ]5 A4 A2 X- q9 c/ N LimitL DW 0
4 A! j* j( g8 ? BaseL DW 0
}) E) Z! M# I2 t2 @ V* z$ w- v BaseM DB 0 " R9 D% m5 ~& R* d9 q2 G
Attributes DB 0 " D! [0 p4 H K v3 m
LimitH DB 0 * h' G3 B8 B4 k- O5 G
BaseH DB 0
: G8 R/ M. E5 o- T p3 L& NDESC ENDS# g4 g3 U, I# z" d
$ \" J( N B8 h8 w, L; @/ c; zPDesc STRUC: C( H2 w; M, U1 a' o+ T' V: `" ]
Limit DW 0 4 O0 m& q( z ^$ W( b
Base DD 0 0 X2 x% y: P9 f' Y3 Y
PDesc ENDS
' o2 Q# p( p8 W8 [3 j" }7 |( v$ \4 W) o- U
GDT_def Label Fword: i( X' l. M6 Z# c* ?
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>! _; l5 W4 d" M
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>* ]- y9 I/ _- H7 E$ k3 R j
GDT_Addr PDesc <$-GDT_def-1, >
; q7 F9 f3 `9 e4 j2 m+ q5 h! j1 r; A2 V8 O4 @
Maddress Dword 0
3 X4 m, K3 v7 t# F
% [) |- S& T8 F- K2 C6 G' `DSEG ENDS & g2 P+ O& M# d( @
ASSUME CS:CSEG,DS:DSEG
! c0 _2 A F1 i3 m5 i# z" ^" s9 J: H
CSEG SEGMENT USE16'code' ! h+ Q1 @" i7 K1 `( V
push ds
4 W3 c- [, e5 ? push es, i8 z2 q3 B/ t$ s; r
push fs+ d% L5 R" o8 F( W9 `) a
push gs
% O5 w& @& X' l% a call big_real_mode ; v, z# r1 v8 U6 I p9 j' ^ ]1 i
call Get_Commandtail4 _& f5 {# V. Z7 a+ @- V6 |4 ?
xor ebx,ebx
7 r& F% n6 E3 R6 j& A/ m mov si,82h; ^- j, q1 Y8 B) g
mov al,es:[si]) }2 E2 P, y! p5 r' Q$ U9 ]
cmp al,'r'. D b: f3 c# `& S1 v
je R9 J9 h% S# u4 h
cmp al,'R'
0 d) c- h7 S- O' f! h! { je R. f& Y# b/ h& o6 r$ C
cmp al,'w'
! K& ?" K" g7 a je W: B# z' l- g& X
cmp al,'W': p7 ~' d/ ]. ^
je W
2 w" }1 \( C' mR:5 G1 B9 F7 w: s4 I" g
mov si,84h
8 z9 ?7 Q# ?: o4 u) E8 h9 U3 H mov al,es:[si]
- L" k, g, M9 i cmp al,'b'
6 f e% {9 [# i% s7 Z& A: X9 O! P je RBT
5 A- x3 r6 t, x" Q7 M9 [1 `: c cmp al,'B'
0 W. u# W0 Q; A8 Q& }" t5 l' p je RBT
0 e6 y2 G8 X' s# s/ K! ] ? cmp al,'w'
5 V- t0 `' ~' u# ]0 U* ? je RWR# o" B" f3 U1 {6 i' V! g- k3 r
cmp al,'W'0 h0 X/ {7 i1 X7 M+ M3 p% Z
je RWR
! G% Z7 _. \. }8 h. F i cmp al,'d'
. x* ]. B C( \2 o+ u4 x; J je RDR
0 G% C% N- k2 O cmp al,'D'
7 U+ O- m0 d& l1 _5 @ je RDR
# i1 t: x8 g/ O) E# s- }! D# oW:
7 \$ R7 p8 V" S# @ mov si,84h* S% R9 @ a/ C) q7 T' y
mov al,es:[si]/ h3 a5 i5 `+ i! h9 u4 _; i6 o. [1 h
cmp al,'b'
+ M' G( I9 W0 C3 g# H je WBT
- v! ^, ?9 b w( P cmp al,'B'+ s6 R" g6 o6 r6 O0 \
je WBT. { b6 Y8 Q6 A1 F0 j5 n
cmp al,'w'
4 K3 E% q$ m/ ^* ^. Q1 q: Y je WWR
1 V) e% a L) T; z; C* M' j cmp al,'W'; K2 e" m$ A4 w1 K" A* I
je WWR
% |: J1 `5 |5 Y6 m% q cmp al,'d'. Z2 ~4 X: D8 F; Z0 \4 i9 J
je WDR8 t. q) i, {( O/ l- J: O
cmp al,'D'+ o0 V+ a% K# ^7 H. n- o- `
je WDR
! R) o3 y! V. uRBT:
: F( Z3 H; ?( ?$ ^* r9 P call PSP 7 A, Z3 n R( O! _7 a; P( ~/ K
call crlf 9 c. t7 w. Z( @2 X/ a* |! _
mov esi,ebx7 J6 e+ h( T- n8 P' O
mov eax,fs:[esi]
3 W$ F: S6 B9 @7 z$ r7 k out 80h,eax4 U/ @$ v) {( o* ]
mov ebx,eax
7 l. j9 w8 i& E6 q call _8bits
3 `# t3 L2 }2 }7 K5 Z/ S$ N jmp Exit! q6 U2 \) h) T; {8 n5 L% X
RWR:
% \0 K0 Y' y/ E# Z& } call PSP ; `" d% S. E1 E2 J: o! M7 J
call crlf
1 ?' ~8 I* Z3 J+ E/ w mov esi,ebx
r$ @4 R8 K5 g: l3 g9 W0 g; v4 Q/ P mov eax,fs:[esi]
! }2 _, s( A, X p* i out 80h,eax
) {0 D. `7 p+ @& H mov ebx,eax
5 z5 a C# ?! @, v; O' C3 O; G" j) I call _16bits
' }3 H% x3 p( x1 `' o jmp Exit
6 |+ h) F2 J' T: Q9 }7 q0 _RDR:
& W: d0 V$ X5 t! X! }4 V call DPSP
9 M: @7 ]4 r o0 [ call crlf
z) }5 b8 D+ \3 }# J) e, x, D mov esi,ebx
: c; \8 S0 a* I0 H3 k1 d2 {6 S8 N mov eax,fs:[esi]5 b6 ?3 ?6 v) K9 A6 t" L3 w8 `
out 80h,eax
; `6 Z/ x& o9 c8 |6 S, e mov ebx,eax
% u- v, p) W5 d. e3 e) w" U1 Y call _32bits
. E. D( o4 N: F; u jmp Exit
" E" ?- G" X8 c6 T* q7 R* w* F;------------------------------------------------------------------------------------------------
9 [2 m( l% V' l8 U" WWBT:
5 G/ }; f7 k: K9 c0 I! ? jmp Exit* D& Y1 N# I4 K+ w! k `& k. s+ K( L
WWR:) K O: B4 l' y9 f( [/ ^3 `1 Z
jmp Exit
8 i& h; I2 X0 U8 Q% t/ dWDR:
/ e. p0 }( U: u- _5 I8 h call DPSP1 }; _9 }( g. u3 t6 J1 Q
mov Maddress,ebx
( w0 U- R3 U& g$ { v6 i- _ call crlf
1 U6 H$ b2 C ~0 u call WDPSP
) K( q v$ ]+ U$ U mov eax,ebx
5 v4 M4 {& G0 ~6 N* m0 V' e mov esi,Maddress
. ?9 `9 ^2 T' F! D, l/ L7 F m mov fs:[esi],eax
: X: _3 e6 }2 { out 80h,eax6 {* i; {, c8 q. U) f' L
jmp Exit
1 Z" M3 {1 C, c6 [;------------------------------------------------------------------------------------------------
1 v$ N% v, h3 W4 a) o( G2 ?Exit:* h) n/ p2 l7 L$ u5 X5 ]9 e2 q; F
call real_mode
; S4 @+ L0 C. c+ i- O pop gs
1 g. F+ i# v: Y2 o; h/ q: _% u pop fs% S# P1 a( E8 u+ P0 ~' F/ r) G
pop es
9 ~1 v) v2 f& U) H' w u* T9 j0 n pop ds
& a7 d0 z- o8 v6 Y/ R6 e4 u4 D .exit
" L6 r' B5 o8 r& Y2 n+ V;------------------------------------------------------------------------------------------------, X* W* O) w4 y
big_real_mode proc near" C; q1 L- ~( n( `7 B2 ?
in al, 92h! `0 a* K& H, s
or al, 002
" n. o3 D3 S6 y2 T2 } out 092h, al5 T" i0 ^5 U7 G6 T1 i- }
out 0edh, al
2 A- e7 ~$ \. d2 R+ j cli
$ r" W! \5 @3 m* P mov eax,DSEG# ^; _) `8 ?# ]6 f8 Z' M
shl eax, 4
) Y. f; R" E0 r6 T& B$ C9 N% H xor ebx, ebx6 G+ U$ G- ]* r( X! P: C
mov ebx, offset GDT_def5 y. J$ |$ Z1 e$ R2 h
add eax, ebx
6 V' v1 S2 Q1 o* @2 v; R, M mov dword ptr GDT_Addr.Base, eax
, O) {" q- g) o% `4 G* o8 B8 R lgdt fword ptr GDT_Addr9 P% b9 Y: q1 I9 T" B, s. t
mov bx, 8$ k1 E2 Y2 I- q% ^! }
mov eax, cr0
( m1 A# e; \. M or al, 1
. G( `7 f+ }' j1 T. k6 D8 |( B mov cr0, eax3 T9 `- [! P, x) Q. }0 H
jmp PMod) {. ^, ]- X7 o/ F7 r8 p
PMod:6 u% d) r0 t! d6 S
mov fs, bx1 z% k5 f5 q) s- ^" p _
mov gs, bx
: W0 L2 l8 ]( N7 z1 q' e' h mov eax,cr0
0 n1 I _7 X2 u3 j1 C' h% K1 v+ @& F and al, 0FEh- g% ^- M' _" ?- V/ o
mov cr0, eax
( V& R. K0 z$ b/ b8 H jmp RMod5 O$ H, k# |0 ]: F# ~( ]9 c) r
RMod:
9 h. \ E0 Q* |1 \! Z- M8 ? xor ax, ax& a5 m( d) u4 R4 c1 z7 k3 d
mov fs, ax
" [: _& g. t( \# Y1 \9 [ mov gs, ax
/ w+ E+ s& [& m, c( E sti
5 A* i# E+ j& S& K. ?2 n ret# c% n L& B: n0 L8 B; {/ d
big_real_mode ENDP S% Q2 z; ^9 ^, c! Z" y8 }
;------------------------------------------------------------------------------------------------
+ L0 p) A1 h/ `# sreal_mode proc near
1 t2 v3 u9 \9 B in al, 92h
" u6 ]# d/ M' K5 [4 I and al, 02
2 s3 e. t, f- N out 92h, al 7 R* m8 U5 r9 @; y; V$ ]
ret. @0 i2 p4 ^9 a$ w& k0 `- C* K7 V; a5 t% C
real_mode ENDP$ |% q* g) T8 E7 K- j) M- e8 z
;------------------------------------------------------------------------------------------------3 Y" J& I1 i- K: m2 y& \
Get_Commandtail PROC near4 d" Y3 Y, i3 m9 ^3 ?
mov ah,62h , w" B9 X! y- h9 w. q
int 21h7 m' S/ Z: d4 ?, C1 I
mov es,bx
' e# Z& `- L8 k! @) N% g' B ret9 h' z# z* `9 |2 E2 B
Get_Commandtail ENDP $ q' y' v& B1 m1 [+ T
;------------------------------------------------------------------------------------------------
- l$ a9 J! h7 ~3 IPSP proc near
& z( |4 h! ]+ g3 G1 C+ a xor ebx,ebx
! v1 ^: F9 d4 y6 c7 F) e1 K6 g. D% N mov si,89h
: _. z/ ^' E% h mov al,es:[si]' s) \( T+ e) l7 _! W8 |& i
call Change% e! \3 M) j/ G0 [# n1 Q) x' n
mov cl,4# s$ \8 S; s. H6 j a( `
shl ebx,cl- s: A" ?: b; |6 W! X
add ebx,eax8 s% h6 q- j: ~+ f
mov al,es:[si+1]
% z7 i r. M; |7 ~% H, ] call Change9 O2 \+ d( D' w2 Y
mov cl,4
+ W W0 T7 `5 \! f shl ebx,cl3 v9 F% s2 \! `
add ebx,eax
/ F; ^# y2 |) O" w; _ mov al,es:[si+2]
3 [3 J9 Y+ w1 w) b$ X' D( q( d call Change
5 b1 s2 d" N% W/ Q4 X* {' @ s mov cl,4/ g! K/ E; f& n: Y
shl ebx,cl
' v' r: K2 D& M add ebx,eax
0 y% n1 P1 ]/ a mov al,es:[si+3]
% p, n$ O* D P1 u: F call Change% N: J6 E" t: O [# [' F. O
mov cl,4
5 u+ j5 d) w+ P P shl ebx,cl
; ?# B6 ^0 b- o: d2 G7 @9 F add ebx,eax
, I% H: H8 q6 ~0 k, a) F! U; T mov al,es:[si+4]
* b+ ]8 n$ ?4 D7 }& U6 H8 y, v2 d1 L call Change
* R0 I" F/ R2 k+ V, J mov cl,4
6 \4 w$ f3 N1 i& Q- ]; [( d% ?/ v shl ebx,cl. ?6 \ @$ y6 d4 y: @8 L5 Y
add ebx,eax
) x1 s8 u. [5 U, [. X: V/ J( M mov al,es:[si+5]
3 `# U) F7 [& W; i& Y call Change
4 }% Y7 Z4 o! G8 E' P2 k mov cl,41 ^3 ?3 ?* |0 Y% S# |
shl ebx,cl; h* B! U0 L! Z" H7 K! y/ R) i
add ebx,eax( x. h$ l( I. ]- |
mov al,es:[si+6]
- E9 l. t: Q3 i( `* B) y3 x& Y E3 j call Change8 L( J( l) t/ W( F" w, Z0 B5 a
mov cl,4- N" E; p5 E- D7 s0 j
shl ebx,cl/ V/ \; o4 t& D5 m! ]' H j
add ebx,eax; n6 Y6 S, ]6 N% X. H# r1 ?
mov al,es:[si+7]
" C" T. y* J4 Q* ~ call Change
. j4 e$ m s) i mov cl,4, W0 M" _- y8 c' p6 O, I$ a
shl ebx,cl. x: T7 G2 I, ?( c- E
add ebx,eax. u5 c, \( C6 s
ret9 m2 m% k- t* s! g' ^4 ?
PSP endp
. e/ Y# r! q; w;================================================================================================
+ h$ s2 q4 ]; z9 u$ R+ tDPSP proc near
. ?$ u, H1 V9 V xor ebx,ebx$ Q! F2 I" k9 f8 T3 t1 L
mov si,8ah
. w2 Q" \1 {) e% }1 A" C mov al,es:[si]
$ ?4 J! p7 s& E$ f call Change
( P$ _% y" ^ j& l* ^1 Z7 g mov cl,43 c4 c6 s2 b; W, }0 t- u+ _1 C
shl ebx,cl
1 K& y }" [0 V0 }7 X4 P: ?4 c/ C add ebx,eax
' j! @: _3 ?) ^( ?5 h mov al,es:[si+1] z8 I9 {( C% S4 o
call Change; D9 w! G- L! |
mov cl,4
+ F( S, J Q7 v" E. N7 H2 x shl ebx,cl* `" d" c. \4 j; m& \- p) _
add ebx,eax6 J% f! u( f0 Q% U/ h. d
mov al,es:[si+2]
) o7 K& x) N4 @0 j! D call Change0 z6 o( F0 A6 ]- N9 J4 E4 E
mov cl,4
7 n' z6 ]/ V* Q& {7 u2 `; T3 _ shl ebx,cl
2 g/ Q' A8 I: o add ebx,eax
. @6 ~6 E, H: }; ?( B/ t mov al,es:[si+3]. [8 J* P, }9 O" {; `5 J8 N
call Change2 Y8 l7 U; P1 a a" K8 `7 r
mov cl,4& [5 E# c& H* h6 A
shl ebx,cl
+ B; R0 D7 t6 | A# Q add ebx,eax
' ^, a- S2 l1 F& h mov al,es:[si+4]* f1 C& f2 h5 V, V( x1 u2 g- D, P0 P
call Change
* v. _( K! n" Q7 Y) i mov cl,45 s0 V9 Q Q R0 v/ N$ E- Q9 i
shl ebx,cl7 Z7 U3 b/ b. f# l
add ebx,eax) D8 f4 D5 j( _3 J- s7 z/ ~) s' {
mov al,es:[si+5], y# b7 O0 X! X
call Change
( H0 F( S1 a1 {1 t; z, o5 E mov cl,4 r- R+ W- [! Z
shl ebx,cl8 H3 @& L5 S& Q- x: b7 j
add ebx,eax( F9 m. F) G$ O1 X6 g- F
mov al,es:[si+6]2 U( \7 x8 y% }7 Q) S4 z
call Change1 o7 F% R- B5 \" d' D
mov cl,4
) v- R% Z5 c# l$ b2 u shl ebx,cl8 R3 d+ z8 r m( `; M
add ebx,eax
5 u% |4 W" g; e3 W8 ] mov al,es:[si+7]. V, e9 [) s+ f- o1 D& O7 G
call Change; P1 F; `0 V9 A+ ^
mov cl,47 y, H! X9 Q2 e+ G8 M. C( Q0 h
shl ebx,cl
/ r8 `5 J& f+ h add ebx,eax" A6 d+ w6 C# y2 E( F5 P% n
ret1 q$ |' J* N! p3 }
DPSP endp
* \$ N; w) Z o6 g;================================================================================================7 [' E7 {& j, }# q+ Y
WDPSP proc near
. X: F# s+ |! q% p$ L5 G8 e xor eax,eax' z4 _6 L+ B$ y
xor ebx,ebx
H: B( c5 z& J/ m mov si,93h5 [$ w3 k* e" e: s
mov al,es:[si]
/ o* N8 [9 c b G; ?" P+ S call Change
4 x5 Q+ N! q* |# Q mov cl,4
3 J `5 ?+ I7 M( N. X+ Z! ? shl ebx,cl+ U3 \- D3 b2 S1 ?
add ebx,eax2 G$ @2 C3 S6 P7 `
mov al,es:[si+1]$ r) Z0 B. O! i/ ^0 W
call Change( z8 O$ ?7 u* u( d6 ?+ f$ } p
mov cl,4
/ F, x$ h, H; E- h' F shl ebx,cl- y/ g, o+ m" Y
add ebx,eax$ ~6 Y `* g0 W2 [3 W4 x+ @
mov al,es:[si+2]5 b. j9 [' p% k) c/ u
call Change
2 [' v7 E1 A7 y& R mov cl,4
3 _8 x5 D/ B- R3 ?1 u shl ebx,cl
6 m4 }8 o3 P0 D& U add ebx,eax! E" J* @, r* |5 E; c. @! a
mov al,es:[si+3]: }, m: v$ j* c, a+ D: K/ L5 e) g
call Change+ G; A2 r+ z" h- m, v- b
mov cl,4
( M5 }0 u. w }* F shl ebx,cl& W8 Y* `- d# J- D3 }3 ]
add ebx,eax3 M7 H- D1 n0 S& t S5 M3 }! h
mov al,es:[si+4]* X' L! I' T }3 S# U
call Change1 ~* P& |+ m$ m+ \2 ?4 x
mov cl,46 s. S( B' x; J, h1 T; U& y
shl ebx,cl
& @: G% H9 a5 l/ w- E- { Q6 w* d add ebx,eax
) \4 ~0 n& Q7 A mov al,es:[si+5]
" O' }; @; T$ N6 Q call Change8 y' ~. Z7 W8 n. W) d
mov cl,4* j- ]; U6 E5 d
shl ebx,cl
/ f- X5 k7 D. L9 ?; }! o: g% L add ebx,eax
" P0 |8 K0 w, ^* h) X* r0 H! a# c mov al,es:[si+6]
+ O ~" R- O E9 j( R. a4 w call Change: A( J9 y6 G2 J9 t4 h
mov cl,4
" Q5 w/ J; D- j6 O- w( J shl ebx,cl
2 |6 m- J2 j- A add ebx,eax0 u; n {. O3 ^% K
mov al,es:[si+7]
0 H' F a3 ~- N$ x" J3 D/ m call Change7 d; \% ?* J' y, F; y3 O0 x: e1 U
mov cl,4" j- S2 [# G" Y
shl ebx,cl0 [8 y0 l T: R3 b- C
add ebx,eax
) C3 Z; o9 B) q; k8 w ret9 W" _+ ^2 j: [. \6 w8 h
WDPSP endp
" ]+ N) s O. u+ N, \;================================================================================================
' u7 p: p. |, a" e% Z7 yChange proc near- o3 k$ H/ X0 \1 Z; d
A:
2 _$ Z* B! g- m0 N- Z movzx eax,al6 w" Q' C: Y3 S& `: M, v
mov edx,eax
- t1 j: j, ~4 @9 H- R- ^7 c( U* Z cmp eax,'0' 5 P6 R0 [ s9 R6 `% Z3 [7 ~* ^5 m
jb A% o( S( k4 F# }7 y1 T1 o
cmp eax,'9' * _. o! s4 W! Z( b+ R
ja B# z o! d# \+ Z
sub eax,'0': {% p* B3 ~' M* q# B. ^
jmp short E
. z' d& r d9 E% R8 OB:6 b" ^9 [# l9 I1 B& s" u% C$ N
and eax,0dfh
3 s6 Q/ \# g& w5 d: P6 D: T& c- p mov edx,eax
( k; m ]: J& F. T0 I+ c' o* k8 z sub eax,37h
6 @8 l9 G6 Q! W cmp eax,0ah& o) L( n& `5 Q3 U1 g2 ~
jb A
8 E9 s" Z6 u! \: A cmp eax,0fh
, ?! @0 Z; V( B7 ? ja A
1 Y' u8 L- @7 `7 [3 X8 W1 {E:- S! r5 K9 o' h" P0 w2 D
push eax
# @$ s. c5 Z- `( M+ |. j call PRT 1 v4 {# J: r# p( s& u8 E
pop eax
2 ~9 ~( j: ?& WCExit:
5 H2 X- F! l6 n" B7 |! c% h ret
, N1 z6 M/ m' p. W& a# k+ IChange endp7 p1 f: a2 h/ i
;------------------------------------------------------------------------------------------------1 B# @5 a8 }7 f: L. ~' s
PRT proc near
# A r, K8 @" D) f; J2 | mov ah,02h- i( h7 ?, [0 u7 t- k0 c
int 21h
' n* n8 s4 z' `! N: Q; { ret
" w) [: r2 N: Y, p, u( C9 ~+ h; a# N( |PRT endp
" U2 j# k, q4 g9 N;------------------------------------------------------------------------------------------------( M9 D9 R; H5 i9 } M6 L
crlf proc near3 m. J1 b& B! h# m
mov ah,02h3 v$ I2 s2 o# j3 N+ q. C
mov dl,0dh
( i0 [( V9 h/ {) [! l int 21h
. j* u: {8 |$ D+ a2 ]' b mov ah,02h
. y. q# b# z0 Y mov dl,0ah
+ f) n9 Y# p% s3 O int 21h
7 r+ |1 o y' i, N1 i ret
7 F6 p; Q9 g5 p5 N; V. E, rcrlf endp! b* \: x" h: ~7 ^
;------------------------------------------------------------------------------------------------/ |7 \" o: f N3 T! h: X, v+ a- Y
_32bits proc near( O" a, P4 K4 M
pushad% \. a$ d+ H6 G& z
mov cl,4- ]9 C6 A+ U) a0 l; \' l y2 |
rol ebx,cl$ n8 t0 A5 |* o
call print_4_bits
, h# D: H I7 l4 i4 |7 L; a rol ebx,cl# j. C V7 D7 K4 \
call print_4_bits7 n* L4 E! e9 ~/ m# E5 P
rol ebx,cl
- s! l, {* N# ~5 M0 X2 U& V. D. \ call print_4_bits
+ \, n t) T" J0 o& L1 |* p rol ebx,cl) M P% \/ S0 a0 P2 T6 b' c! o9 e! }' Y
call print_4_bits
) |7 E. h4 N0 w# R+ o: t6 F rol ebx,cl
+ K. P/ l g# f# O J7 k0 G call print_4_bits3 u p& b _; x/ E
rol ebx,cl- \! V: C7 y X, |
call print_4_bits
# f k( q! \6 F6 x9 x rol ebx,cl
" D& p8 g) x/ {1 n; f- e* Q call print_4_bits
" t+ w$ C) F* w0 b0 [& t rol ebx,cl6 V9 z! {& e* R3 o2 v
call print_4_bits0 N0 z3 k) O9 B0 k9 J% D$ q. L2 F- B
rol ebx,cl
( m; u* J" i) m$ }: d" g popad
$ O- S% `8 M3 a4 H ret
O! l% S7 d3 a& P" h( E$ v_32bits endp' b) A( R' f. u" p- ]5 ]
;------------------------------------------------------------------------------------------------
2 o% ] O, o. q_16bits proc near
6 x+ x0 B( p+ H pusha " G9 F2 X) d6 E
rol bx,cl }- X% D7 @6 y s+ M
call print_4_bits
/ B3 n1 W( z" H3 A j) Y# a) T, A rol bx,cl% U% ^0 f. \& [( x6 d( ?8 s) z L
call print_4_bits6 d! o& n8 O; u$ z! h& V
rol bx,cl
$ p! o* Y* e( e' x8 j" L0 G call print_4_bits
6 M/ X: y( {/ y rol bx,cl9 i: D1 u' }- [) g% F0 D1 q
call print_4_bits
1 h- j- D/ g5 U0 w8 X D& i popa, B% X4 ]3 f5 H: Q3 Y" I d1 X6 T
ret
2 Q3 I1 u& F8 x5 q- |_16bits endp
- }; x% X+ b' u2 t% N) F;------------------------------------------------------------------------------------------------3 Q" T* O' B/ ~% [
_8bits proc near9 a* Y* Q" H1 _4 l* |
pusha
* X7 g! a& y$ u0 V9 } rol bx,cl/ f% Y# g2 b4 l# y; M0 Z
call print_4_bits% S2 G& @6 [* G# f
rol bx,cl; \, @3 U! r% [/ |
call print_4_bits
4 U$ [9 Q; T6 I0 F# x5 S popa" N( L, M2 K9 X0 u7 R& a9 |
ret
! M1 U. r) d' i$ K8 ]3 `_8bits endp
9 r; q" b% I0 M1 P/ ~print_4_bits proc near/ e; q+ y3 G. N1 z0 b
mov dx,bx
' q1 K9 \ z! r9 x) f3 ] and dl,0fh
+ l8 ]3 R! H7 a# P add dl,30h! ]2 c+ O) l% g/ e
cmp dl,3ah
& n/ F |2 |1 K jb print
* s1 {1 L& I# N z7 E4 W# s& Y. r add dl,7
5 e d8 q3 O4 G1 u/ a1 yprint:
: F* k. F6 g0 | W# P$ @ mov ah,20 t V& [: ?. H8 b \, [3 S
int 21h R" ?; b" X' m# g0 f
ret
B, e( G$ N5 O- M2 }9 C$ f( Mprint_4_bits endp - A( X6 ?( f8 f
CSEG ends0 _, M( }( _* A4 W; O
END |
|