|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)4 B) l! Z% ]5 R$ R* K3 r% I
) a3 K& Z5 l1 k- ~
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
7 c0 i. z2 e1 _$ K# i0 e& P \* N
. P; G0 {. M5 y5 _+ Q宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
% ^ g% F: d/ I- R: c9 R7 \, Y( D1 C4 H
.model small
- H0 V; |4 [, P$ x/ v. M.386p8 P9 N& S: _* s& [% ^
DSEG SEGMENT USE16'data'
4 p3 U9 U' H& \* T Z- o# ` P6 f6 W* V0 k/ e
DESC STRUC
{0 s' B d; W6 R LimitL DW 0
$ c. \9 E+ ]7 E; t BaseL DW 0
: J2 O( b- _ T( H# ` BaseM DB 0 ! g( \2 X; z% V6 u
Attributes DB 0
$ D1 K. t( ^2 j& Y LimitH DB 0 4 s% Y; Q* z* M* Q$ |: J; }5 L0 U
BaseH DB 0
# }8 \ l. j- h j) C) G( r: T1 EDESC ENDS+ A$ P! ^, o; Z# h% d
* Z( J8 L# c& q& z% H NPDesc STRUC5 {4 _9 `9 W5 V; y6 V( W
Limit DW 0 . T0 e* A1 w2 n2 f# B
Base DD 0
! x* H6 E3 c% X: i* h% Y7 DPDesc ENDS2 \/ Y' j% p& H* V: `2 B9 f. p
E) I' B1 ]- i5 Y. ?GDT_def Label Fword
* F5 n* a1 ]0 A- y+ p. J/ o) N' MNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
" n" o. y/ J; i8 T( Q x/ RData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
% l; \3 j5 b: [GDT_Addr PDesc <$-GDT_def-1, >
8 {! v7 n. r: O- s4 e2 \; c) i# X7 x# ^! V9 e8 d8 Y
Maddress Dword 0) X P Z) r9 _+ C" f
* Y# N, |8 R4 S( F8 N
DSEG ENDS $ t6 |# j/ W) O. x
ASSUME CS:CSEG,DS:DSEG
' o; S+ ^1 l" \ b) v3 W5 s
3 J5 W$ A( d% x: n1 M M" j; OCSEG SEGMENT USE16'code' 5 x, s! u; E/ m5 P0 P V
push ds9 l+ \# Y% _, [) J4 ^ z$ m
push es
C! O. C% C+ w push fs
2 e6 i& u- d8 D2 t push gs% ~! s c! u1 f$ S; X; v5 g2 c0 B
call big_real_mode
; F$ ~# B' n: k/ e8 v- U. C call Get_Commandtail* f) L b: y5 E- Z; A* f4 p8 D A1 z2 S
xor ebx,ebx
/ E9 r6 w' W- E" T4 z. O. r5 E# M( S6 H mov si,82h# o3 Y( q2 {! Z" t. ]
mov al,es:[si]
( q; e; U% Z; M) j9 U& q cmp al,'r'
& k. R5 {4 ~& y1 a L7 V# U8 E je R
9 o8 [ _- J1 u cmp al,'R'' R3 v" H- w7 o
je R
3 \# u/ L2 a: N cmp al,'w'( [2 s( q' i; m. M! l) _
je W
% f: r2 ~- f2 ^. B! J) J cmp al,'W'
* W6 F' T; C& h2 ^' |* R& W4 e' c% b4 R7 Q je W * k( k7 ?5 ~( |7 f! y, T% Z
R:
, k0 Y9 }% _9 @2 V mov si,84h* `3 e* k+ R* t9 r D
mov al,es:[si]
- N0 p& S- B3 c7 l6 @ cmp al,'b'2 D( u) }" t. n: c
je RBT' s: J+ c7 E9 y# p
cmp al,'B'
; J# [/ F7 j1 @ je RBT% H5 S3 u8 ^8 y) O
cmp al,'w'
, x- \/ e7 f+ Q je RWR
: @4 W' @% J' I' g6 G) t, ~ cmp al,'W'
9 s; b5 e4 X/ E4 ` je RWR
8 J7 a6 f, c. g3 A+ S cmp al,'d'1 Z1 _" F, J! K4 L/ F, X
je RDR
_6 p* B1 O. U cmp al,'D'
* z% w8 j w2 w2 ` je RDR
, M! @9 d' D2 E+ IW: # |! u* h0 X& z7 ~3 v
mov si,84h: p& z% k y5 |0 z6 n9 a7 j
mov al,es:[si]9 ?( }2 Y8 ?$ A" A
cmp al,'b'
/ z/ E1 f* b' Q" X/ N, h3 g je WBT
2 ^" Q, B2 A _ o- c6 i6 r cmp al,'B'
\- Z+ z s, X je WBT H5 O9 l3 C& u$ ?: |
cmp al,'w'' x" v3 u ?8 n* R
je WWR" Q0 E% n5 H2 }" N
cmp al,'W'6 C% v6 {3 n( l) Z" Q; v4 _
je WWR
! {# b- x/ w& e4 L" t cmp al,'d'2 D5 H: y$ Y" ~8 M4 {' v) c! Y
je WDR
3 Q( t( _6 d2 |$ }: v7 x, m6 k cmp al,'D'
- g' \2 I/ @4 Z+ S6 c je WDR
4 l2 L: B& `# Z; Z4 V- x( v; t p+ nRBT:
8 e& N8 c6 @' A call PSP . c% r/ S8 W6 n! O/ ]
call crlf
$ Y/ H* E c G% {" _; a. M mov esi,ebx
4 F0 B+ d( a& D- `8 w% v. ^/ d mov eax,fs:[esi]
# L/ D! ?; v% R out 80h,eax* ?& M; i# U8 x( Y& h2 d; L
mov ebx,eax9 W2 X, p. N# E6 h) ~, y% Y
call _8bits
4 c* F: b1 `' h# Y jmp Exit
# M1 e+ q: {/ U/ S' ~+ s$ Y" _RWR:2 s% w, q- i0 F2 Z5 c" q# p# y
call PSP
' a- Y$ Y( Q. g! ~! W# o @6 h call crlf
6 i% J0 z. K3 ? mov esi,ebx [' s* L3 ^ b/ v. \# C
mov eax,fs:[esi]
$ C' K" f3 P; \! i5 ~ out 80h,eax
; {6 H' E9 {( K4 D: B0 N; {9 I mov ebx,eax: w( y1 x# w, I1 I- u2 P, f2 ]4 u
call _16bits/ x5 W) C6 H6 V" @+ v/ Q3 d3 T4 {
jmp Exit
" e# W5 e. p4 B; A6 Y; x5 uRDR:7 H4 |& Q& \+ I1 c2 F i5 a
call DPSP
t+ J, s: o' ^+ o call crlf
4 Q9 h- H& B( C9 L$ o) n. F; Z mov esi,ebx! A( u6 |% z" Z$ h' F& x, u
mov eax,fs:[esi]8 h* n8 V' X8 B
out 80h,eax
- A3 @' q2 o1 z! C: l$ q mov ebx,eax+ L. M; |" Y( r; J O
call _32bits
$ y% Y6 C5 m, y _: i; H jmp Exit; K8 b; o5 p9 C' s# s& n
;------------------------------------------------------------------------------------------------
3 s$ W }/ y4 ?' ~" j& ]& KWBT:; ^- d1 U/ d+ L4 x
jmp Exit/ j: p! p4 s# _5 g( o
WWR:
k, \$ i+ x, Z# s jmp Exit5 B- c( ~1 _" V
WDR:
( X& U; H% t' e; j9 {+ N9 J W call DPSP
0 k2 `2 ^, i: D! m* w* e mov Maddress,ebx
$ K7 ?6 f& c' t# ^8 O+ J6 H' A call crlf
% K( H+ `* y, A7 l1 i call WDPSP4 {2 j0 @& m7 Z# X* N: @: }& ]
mov eax,ebx3 y; N. t. v. C+ f
mov esi,Maddress + @* }! m: S" M( v7 z7 Z+ a
mov fs:[esi],eax
7 ]0 x, f6 r' B/ V6 ~4 T out 80h,eax6 E. H( z0 T0 l8 S. ^4 G1 M
jmp Exit7 Y+ s/ F7 B2 E- D& [- R
;------------------------------------------------------------------------------------------------
1 t, P) w, E4 r( d5 \# j6 kExit:
0 Z) y: y4 i& e1 X call real_mode 5 ~" I+ S' A6 ^4 _
pop gs! b! x& K' f: Q6 l: T1 Z0 M8 [
pop fs# J2 J; L; ^6 d7 ~) M# G6 v
pop es1 I- I8 b6 `! h: I o
pop ds 4 g- u! z7 c0 ?4 w
.exit* K" l$ |6 ^6 j* W
;------------------------------------------------------------------------------------------------
. I0 {7 A( k* O- }3 f9 E d. \5 ubig_real_mode proc near4 u9 H8 b K7 ]' Q [0 w5 R
in al, 92h/ z3 G8 R$ o% I: E3 y! c* M
or al, 002& e2 [1 q# g/ _0 M x* r$ c
out 092h, al* j/ h: l3 e% C7 e% G8 h/ U, y
out 0edh, al
* W$ ~, l: q# @6 b& n9 w6 d cli
% d6 W! E: L I. D6 H+ ` mov eax,DSEG! j( w* U$ v! d, d9 c9 x q
shl eax, 4
2 N, y# V2 x+ H9 H4 O3 \ C8 } xor ebx, ebx
# T1 f, R, t I mov ebx, offset GDT_def S, ~6 v, b% J4 \
add eax, ebx
6 w$ g2 i) ~& w mov dword ptr GDT_Addr.Base, eax
& y2 @6 ?) H* [ lgdt fword ptr GDT_Addr
- k# i2 V8 A* P+ e. W* x mov bx, 8
5 r% z3 m) o9 ] Y1 d& p mov eax, cr0- Q* ]& f9 u8 X+ Z1 t
or al, 19 P8 e$ R* w- w1 x$ T
mov cr0, eax3 ]2 D4 u4 J; R9 j3 J$ E
jmp PMod
6 V6 x/ }6 ?- wPMod:! Z* S; c4 {1 i r8 T- N7 R4 ~
mov fs, bx; A7 n# Q8 l9 x
mov gs, bx
K/ N: t3 e1 | mov eax,cr07 N5 W+ o- I9 h3 \5 ?" d) G
and al, 0FEh" q) u5 C5 k' f& r' ]0 n0 T5 h2 `
mov cr0, eax . O2 R* w! H: M
jmp RMod
7 N0 E/ x; m0 `3 T) cRMod:. [: Q x" x; A4 r. w! r
xor ax, ax
/ G- i& ?. ~7 q mov fs, ax8 `# T% w% n' A2 q, h3 P
mov gs, ax
: Y ]4 G4 ]6 ^7 ~& f) h sti
( M$ {! Q" r0 F" Y1 s ret4 F1 {+ ]* q( B! c. T* U# S
big_real_mode ENDP9 c( ~' I! j! X% O4 [" p& Q. f$ v
;------------------------------------------------------------------------------------------------
9 Y9 N, W2 ~, x! l6 E8 E! _real_mode proc near u U. R d+ d: J9 R6 V' T0 s
in al, 92h2 |& F; p3 F5 A
and al, 02
- |( x2 G0 y2 u/ F/ C: W- X out 92h, al
/ \8 `( x) T$ s( m ret) W* b, n8 ?( o/ X/ ]
real_mode ENDP: s5 H- x) }% X2 H( a1 ?
;------------------------------------------------------------------------------------------------7 M5 v1 q( N: t: y# ?/ p
Get_Commandtail PROC near# n: Z: s, D% h% Q; I, z) ^
mov ah,62h 7 k9 E. [/ o2 n$ @
int 21h" `* i3 n0 b4 z4 Z: t
mov es,bx
% P8 h- h! [) \ ret2 J( F3 H# B# ~2 M; W' j
Get_Commandtail ENDP 4 |* `$ v4 @) J. S0 `
;------------------------------------------------------------------------------------------------/ {6 V; R+ V. I
PSP proc near2 F9 u1 q9 D+ f: G3 l6 O' n
xor ebx,ebx( D. [9 ?4 e! a6 T+ n
mov si,89h
' E) O; ~9 ^6 V$ S+ P mov al,es:[si]
; ?1 {+ `% U' b call Change
% m: Z( Z3 w4 J mov cl,4
" X) \& e k% p2 v! w$ H- V( D shl ebx,cl
( L7 f9 X% u7 I add ebx,eax
" _8 N8 z- Y5 ]! r( F7 l1 x+ `% r Z" A mov al,es:[si+1]
. f- H/ D$ s1 [5 d* l call Change
1 E' f1 H' Y- y) J E mov cl,4, M4 ?) o# r8 @) k( n6 ~
shl ebx,cl: D# O, o; `5 F' R! D
add ebx,eax, d& m) o1 f. g
mov al,es:[si+2]
% M+ p4 f4 v- I& N- | call Change1 h* F8 r1 [, o0 U' Z; `- E
mov cl,4
2 H5 B/ H& c1 B0 r shl ebx,cl9 c: e8 Q6 E4 [5 W
add ebx,eax
* v9 s% l, Q% a# {& a' q( w mov al,es:[si+3]
+ M9 t8 W# L+ k8 S8 B call Change
+ Z" t) ]8 H- O! O" r0 y3 L mov cl,48 j) a3 m8 i, a# |
shl ebx,cl
$ r+ p: J/ N3 d& _* {$ x add ebx,eax
5 }1 j3 M8 v4 Q9 @ mov al,es:[si+4]# I8 @+ ~, e+ M3 [
call Change6 d$ I# M1 G* x$ v
mov cl,4' O2 I2 Y% q4 g% }( ^/ H: X
shl ebx,cl# b+ t# G7 @9 e# u- W! i7 L" s
add ebx,eax# ^% t* }$ _! \
mov al,es:[si+5]. ^( `' {$ }( }& L. l
call Change' j" \( T$ x6 T. r- g& \' i
mov cl,4
( U) d% Q# n. W shl ebx,cl7 j7 R& `! _ v
add ebx,eax, |* H: ], T6 M- h1 o
mov al,es:[si+6]: |, j- d3 d/ [/ Z
call Change b5 H; q, v3 H' ]
mov cl,4, H1 Q; X: L: o" A K' C7 e
shl ebx,cl( J* R( K! ]' Y! b
add ebx,eax3 x. r, r6 `/ p
mov al,es:[si+7]; \9 k, ~) u: f2 `9 D% K- ^# p
call Change
' F+ y0 A. ]" B# K7 c ?3 ` mov cl,4
$ X: o; c$ c$ d8 P shl ebx,cl
! H& M; U2 l1 R Y. e8 n0 A add ebx,eax
B* j& y3 e# m+ s! I ret& g0 x+ f/ f$ ]+ S' C# n
PSP endp4 ]% k7 x: \7 E3 {9 ^1 f
;================================================================================================0 L% D& A; [, D+ Z1 ^ T- z2 I& D
DPSP proc near
6 n6 M. A$ I) K4 M" \. N xor ebx,ebx: ` Y1 |+ O' N0 u& M& \! N4 w
mov si,8ah
; k$ Q k+ q4 S, W mov al,es:[si]
q5 c2 t% [5 C call Change
* M/ X2 b3 X5 a* X9 x8 d mov cl,4
( F9 w$ k, U: _4 T shl ebx,cl
1 x2 t9 B9 j/ R7 e+ e, T7 c add ebx,eax% T- {. v9 l* { [7 r q
mov al,es:[si+1]* ]" ?% N' f) P' [1 k1 P: [! G
call Change
R; x ?0 c5 h+ R mov cl,4- k0 V4 m6 |& i$ v& h
shl ebx,cl
o5 V4 @$ j( U' E add ebx,eax3 O) j, b X z2 k0 j" _3 i
mov al,es:[si+2]2 L3 A: j. @2 t4 X' `; q
call Change
$ |$ {1 a) C; D' `! k mov cl,4$ L7 D7 U+ i$ Z% {" C, G5 D/ [
shl ebx,cl
+ s, e- D) d4 \+ o8 w add ebx,eax9 o/ L/ n) g3 ]+ e9 \
mov al,es:[si+3]+ F k& I: r0 X6 q8 F& k$ I
call Change' b# K6 l( E6 H* S7 ~, Y
mov cl,4$ d; b) F2 B- H8 l! s" w/ c0 [
shl ebx,cl( M* _; J( g0 q M+ H) S
add ebx,eax
- F8 w; c3 @, ?. x# [ mov al,es:[si+4]: {# P/ [' {7 m5 Z
call Change. j: v2 h3 B! n6 @, H9 k1 X. U: v
mov cl,4* y& Q6 A( n1 {: r2 r. H
shl ebx,cl
% v0 `& p9 l7 ~ add ebx,eax l- p% m2 b1 }3 R0 N9 u c
mov al,es:[si+5] g7 n/ X: [1 Q9 k6 D" |
call Change) `) |& g* ^% J" x; H
mov cl,4( d. W5 ^/ n9 o6 d- o
shl ebx,cl% ?4 U# I' k! ?0 n% _* K
add ebx,eax
/ Q- |/ m% \& o: i mov al,es:[si+6]
: b u9 I. b: J! M: F) ]: \% B call Change7 ]' x8 Y' s8 K6 f
mov cl,4
5 I3 a0 {8 D0 S shl ebx,cl% S& X2 U0 }: u7 S- M7 y
add ebx,eax
2 ]- E' q" r. ~4 A: n2 u: h M mov al,es:[si+7]6 @2 n- o4 y6 ?/ s8 z
call Change; v. q& t9 r X B( A- V7 i5 ?
mov cl,42 y0 g$ X; C4 T! C/ |7 v
shl ebx,cl, y' {/ h+ _; t2 G! n8 z
add ebx,eax7 L4 V& T t! V' K6 X" z
ret
- a; l7 j$ [4 [' V, g7 FDPSP endp* }$ G+ I" @! `, [6 |6 _5 }- Q& A
;================================================================================================
$ S+ R7 J/ ? q0 j' R. `. PWDPSP proc near3 K4 C- J$ }+ l I! O
xor eax,eax
$ }2 s6 n9 q& P2 [ xor ebx,ebx
' G. l% w* {& ], ? mov si,93h
" x6 F4 N1 X, O3 G$ [ mov al,es:[si]3 w' d. @! [" T0 n! j8 X9 N
call Change* g* i7 B+ r, j2 t* d/ z
mov cl,4
7 l! e) f* M& d shl ebx,cl; ^$ P4 _7 s! y+ ?) t
add ebx,eax
8 ~4 P' F" H1 x" a- o* w. } mov al,es:[si+1]
# M& X6 F" C( i" ]9 O6 j call Change
8 e" W7 w0 D+ ~% }. l5 t! ? mov cl,4& j: X" ]4 L3 B/ X0 p- [- u8 G
shl ebx,cl# a( |7 r* P9 [
add ebx,eax9 v6 G- W ^2 L1 p- [3 q% }" t
mov al,es:[si+2]' l" A$ u1 h. R, Z
call Change
7 x. Y! w1 n1 t# y: J mov cl,4
: `# |" g- t: U7 [! E; y4 u% r' P shl ebx,cl; m! N( X. @3 {9 D0 M6 t( M
add ebx,eax
8 O. D9 n) C. ~& o( l mov al,es:[si+3]
5 n: V; e* f E) a7 Q+ }6 \2 D call Change) J4 h) z$ d7 }. N& ~6 J. c% j
mov cl,4+ k2 {4 X3 C# [8 i/ K L
shl ebx,cl
5 n$ G4 a9 @$ N- [& G5 K" f: t2 J4 ` add ebx,eax
- F; u/ n4 g1 S" B" q7 s mov al,es:[si+4]
/ d) |3 S t, G; q call Change3 i& F$ p* p/ l& D9 V
mov cl,45 ~$ O, T3 [! R
shl ebx,cl V3 ?$ E$ [4 O& x7 a$ C+ N
add ebx,eax
, J# c1 [* i$ V" `5 A" W* i mov al,es:[si+5] A0 y+ h$ x# A0 _0 p# Q9 Y
call Change' l, H. w5 p# f; U
mov cl,41 ^ P* X- f% s0 N+ V
shl ebx,cl
% A+ G, H* @* `) J% D. D add ebx,eax7 Y3 K% u; Y$ u& [" G. A4 b
mov al,es:[si+6]6 a4 L8 i& K7 T9 q
call Change
6 D: ?/ p% o% P5 n' W/ } mov cl,4
# C8 o W, e7 h& B6 d2 w8 I shl ebx,cl! \' w; L. l; V9 W( a
add ebx,eax8 @* o- n- G# n$ H. A0 D1 |- J1 @$ f
mov al,es:[si+7]! }7 o: q5 G. b. _2 D- r" N
call Change* P* l/ _3 f V! |
mov cl,4 _0 d: w9 \) t/ H/ S2 g' r5 L
shl ebx,cl
: Y4 a& z8 F! | l2 q add ebx,eax1 Y% ~$ J7 [* X- h {. O. v: }
ret. c* `- X. q( g5 e; p
WDPSP endp
, J" c( Y9 p9 L7 A1 H. m/ P;================================================================================================, T" j9 F4 k4 v$ w
Change proc near
! h2 D3 H, Z! v0 g5 a2 fA:
* F6 w, ]' ^" @2 K5 |$ I* U movzx eax,al, g+ ?( w8 u( Z
mov edx,eax8 M$ D; d# B9 x
cmp eax,'0'
' @6 ?: A+ q6 I; F jb A
5 C' l5 f# m$ X; J cmp eax,'9' % k/ j0 ?: g* t3 q. b. @2 d
ja B
7 V) K0 ^0 V' c0 G sub eax,'0'
' X+ g- U+ E C) p: @; ^ jmp short E) }4 Q! }' y9 m
B:
3 S' G% O7 K" x and eax,0dfh 8 g' l1 f- l6 X6 }, S2 L* X
mov edx,eax8 {, C, N# |% j5 Q* m h2 G. p
sub eax,37h
/ ]. ^) O/ R, `# F cmp eax,0ah7 l- G% ?% p' y1 Q" F
jb A
( g8 i. E0 H3 z1 G: w/ {( I0 d cmp eax,0fh
J6 E/ n! S+ y# n1 c( Z0 ` ja A
6 x3 r; \$ X9 v4 s+ x' K& ?E:
$ y2 j& g- K3 M. T push eax ) J- b1 G' _! V I0 [
call PRT 7 W7 k8 u0 q8 b# U
pop eax+ r0 k5 f2 D7 ]4 n Z' j& P4 ~
CExit:2 `. y- ?5 w6 c# l |) a( [# t/ h7 C
ret
9 ~$ g, p6 d& z3 g' p" \Change endp
7 |4 r* E: n* g9 ~( Z; ^* k2 L;------------------------------------------------------------------------------------------------
9 |7 r. B$ P! C+ I6 D$ tPRT proc near
- i/ C' U ?* ~: j mov ah,02h) l0 I/ `% l# e- H2 @9 W
int 21h/ ?; c& U# ]: d) S, |0 J5 q
ret
! s% }) ?4 l- O/ vPRT endp
2 }( p- u6 J4 F- L" y;------------------------------------------------------------------------------------------------
+ [8 j' C! n F- R! J4 H& Icrlf proc near
$ q% \3 P' L7 |; @% u. h9 Z. Y mov ah,02h, o7 m4 @+ I2 Y2 v8 K7 u' m% C
mov dl,0dh
, u' c/ N' O) X6 o, H# l int 21h
5 P0 D' r$ J2 t; g6 k) ?% z/ h mov ah,02h
* N4 |! d9 E- ~, [ mov dl,0ah
, [4 n, ?' c/ Y. X& n9 r- X$ S0 X int 21h2 B$ c' F4 {; i2 g& f( Z: p9 N: |( _
ret, K6 U$ L+ I. ` d2 K* v
crlf endp" Y3 i' v6 K' m( @
;------------------------------------------------------------------------------------------------% n# p e: l9 V0 i p& t
_32bits proc near1 Z7 E$ K3 z5 j4 |! Y
pushad
8 u/ {6 w' H V7 i/ @ mov cl,4
" t8 N2 Q4 O0 a% O0 r rol ebx,cl
' ?, N u4 i1 A call print_4_bits; {2 g& r( h3 m2 z# I; K
rol ebx,cl
: w* V1 ^% c' e# F5 D* R2 r call print_4_bits% U5 U: `! n/ U. J# l
rol ebx,cl
. Q- `8 S) o* l i G$ V7 T call print_4_bits: N% G4 N/ G1 J- w- |7 X4 z/ o, u7 t
rol ebx,cl+ z( [, B) @; }( y
call print_4_bits, z) j( [* N( s& r+ P) B/ k' T
rol ebx,cl
# z/ R6 T8 @' }8 D; M2 M call print_4_bits N5 m2 u' h- n& E
rol ebx,cl
1 O. f! a) L. _- Z9 L2 ` call print_4_bits$ A% }9 l2 y" Q
rol ebx,cl
( `% D, l. i2 u4 U call print_4_bits
7 J2 J, S) k' \, T/ j! t8 F rol ebx,cl
7 C$ y" q5 Q: ^; ^& H% ~ call print_4_bits/ E5 g! W3 j( I; D8 W- g
rol ebx,cl
2 M+ Z7 y/ F1 X) B8 q9 ~+ ]; x4 _* k popad% z: R' r! T( w7 U- ~0 e, N
ret1 I$ {+ a3 w# O/ ]& ~
_32bits endp
2 |* ]8 j6 i1 ^$ |) Z/ w, V;------------------------------------------------------------------------------------------------
( n8 f2 x+ i9 N% c, w_16bits proc near
) a9 o. P0 A! a+ J# o& G4 K pusha ) x5 P2 F7 k9 o' |; H
rol bx,cl
) C: |+ A3 y: f+ e1 B7 W call print_4_bits
& G0 l2 _2 W7 f rol bx,cl5 d5 K, A. F' g, F' [+ E8 F, [% S1 i
call print_4_bits
9 j" Y' x0 q6 } rol bx,cl
, d2 k$ p/ a- M' z$ u call print_4_bits
; K6 |8 p4 w% y+ |2 E* o rol bx,cl2 P! Q% E" Q$ _8 m8 J- j2 @
call print_4_bits8 {1 q9 o8 p7 g
popa
% c: Z5 n8 V; Z: I# q: Q- M; d ret
* @; X6 W' h8 x1 v_16bits endp
. Y) y9 V0 p+ r3 z) y+ e! P$ U;------------------------------------------------------------------------------------------------
4 c. ]; R8 T% {( X& c+ R_8bits proc near
6 z: X1 @7 `1 u, | pusha ) |. ^+ X, ?* Q& F: P3 u
rol bx,cl
6 h; q" T. Z& u3 i: } call print_4_bits2 j. K) V, t# s
rol bx,cl
/ V+ D0 x7 ?, T h& M7 c call print_4_bits/ H# y+ `) j- Z E8 u! q/ w2 V
popa; f h5 r4 O# c- w# D" }
ret5 t& t, v$ T# v- ?/ o0 l3 s7 x+ C3 W& V
_8bits endp6 q+ B+ g5 X5 A, ^' F$ |
print_4_bits proc near/ Z% ~ B8 D- B L
mov dx,bx. ?8 @/ l: |% V, c, d5 O
and dl,0fh
: D. O* x6 n/ V, b4 @ add dl,30h
3 o6 I3 L9 c: y8 w7 F( \5 N cmp dl,3ah
6 ^: b2 W/ Y7 {1 ^* U jb print
9 |8 [& D! k+ | add dl,7+ ~* n/ H) H6 X9 \9 O0 z; _" u
print:
3 R- F+ t% o% J' h9 a8 b, t7 H+ } mov ah,2
; U7 A( e9 F6 L, d' P int 21h5 Q% Q" z9 V3 e# C
ret
3 G5 n, c# e7 D$ y) zprint_4_bits endp " ]. b1 C7 O; N$ `4 u2 @
CSEG ends
! {( V& [% b- q' |END |
|