|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)9 d5 m9 @# G4 E, j9 u
, G" P4 z' I+ ]8 h/ R
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'- P1 f. S2 l8 q2 G" u5 P
, T8 Z- o0 [* X
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝 ( k2 l% V! ?0 c, C0 g5 j/ B- s
$ j4 f o5 Z' C D
.model small" u+ _ S3 v$ ]% W1 K8 B9 q7 C
.386p$ f* b: ~- _' F. f8 _1 @
DSEG SEGMENT USE16'data'
- ^# i( Q% ]: ~% d% h2 ~4 V. L6 ?0 Z
" w+ c7 Z2 u# FDESC STRUC9 H/ }7 l0 h" w' ] N
LimitL DW 0 ; l4 {" R, J# \/ b
BaseL DW 0 / `7 o6 {+ b1 T: v
BaseM DB 0
, E, s2 o( X" h; U, g$ h Attributes DB 0 , K/ P" r8 n: {7 T, J6 U
LimitH DB 0
& B' ? ]- O e$ P2 w0 C2 b8 F$ g BaseH DB 0 ( I) b7 g' A6 m8 E% E
DESC ENDS
( J. C; x0 x- \7 w/ Y% w7 |( V5 n& M5 W2 L
PDesc STRUC
1 h- C( }, H% n" @/ j0 r2 j Limit DW 0 i5 `: @6 w) s# N* y
Base DD 0 ( E0 ^4 Z# L. x& U( D5 `6 ~' p
PDesc ENDS
$ _ C, D, n) y: ^; Q* u& W4 g
( N4 E$ X" _& D" a# TGDT_def Label Fword
7 E2 D6 \/ E4 n$ ]0 K. F3 [" V: H, JNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>0 ^/ |" Z" |/ L% P# Z
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>! P, i i+ u# Z! B9 E
GDT_Addr PDesc <$-GDT_def-1, >
' k4 x, e" @, H' q" b- H/ P' A" n6 z5 C: Y/ A* Z
Maddress Dword 0
) D$ y2 \, r7 b5 @
) w: }2 ^3 s7 }* W2 FDSEG ENDS ( P; x, s U7 I! Z5 }9 y0 _" l
ASSUME CS:CSEG,DS:DSEG
% V! }; f$ X% J
9 l. q5 ?5 n1 f8 OCSEG SEGMENT USE16'code' 8 ?% B; E K8 X4 G2 A9 F8 H
push ds) Z6 P" `$ D! _- m: L9 q; |7 c
push es
_! X$ r3 k1 L5 T0 d1 k push fs
9 `( x0 X' N0 L8 F6 M1 u push gs
5 ]6 Y$ u R' S3 {, l1 |2 H0 w call big_real_mode 2 e+ l" o8 O& C" A+ I. b
call Get_Commandtail
3 S7 X6 q$ {+ U$ B1 z xor ebx,ebx
4 ~: m! p" N; {8 R, O. |% K- | mov si,82h) C# F0 n, W6 |
mov al,es:[si]
- x% A2 E. r0 L* c- Z$ w$ D% | cmp al,'r'
3 q! v- M; K5 z+ [1 S" K& _1 H je R
4 t$ y3 o6 `# z" `: C cmp al,'R'
. h& s! [! d0 D; M% W1 } je R5 H2 M* y( C8 Q+ r
cmp al,'w': L- _7 @: |- B! H# a4 v) k$ }1 y
je W$ i# Q; Y N( u' O7 K% }" k4 A; b8 m
cmp al,'W'
2 V$ g! w6 r! C' G: e je W
4 a. k. B! R( m9 b0 g( P' U; kR:+ Y }* @' ^' T; h
mov si,84h
+ V! [' W" `: i* W( u4 h mov al,es:[si]
9 S" |; }9 K/ I cmp al,'b': }' a, Y/ k7 l: `4 V) h; O
je RBT( R' b. a5 `0 l9 g r2 r
cmp al,'B'
; a2 x5 W: X+ `* W; t je RBT+ Q% h) d/ i8 Q# A2 g
cmp al,'w'
2 ]) F! j8 J+ h% q0 Q je RWR
# u5 }6 D/ R; I4 G5 a! i* F5 v cmp al,'W'
8 A1 L: D) H0 g: N, y je RWR
, h4 d% D: t# q! { cmp al,'d'0 n' y- Q- v1 [) M
je RDR' |2 Z- e1 X& T
cmp al,'D'
' Q& k* O" Z q5 U: X je RDR $ T! F0 d: D$ M9 d* {9 O
W:
* N0 B; |* h- ~, L9 k# ~3 O mov si,84h7 E9 @3 m5 }- J& p/ g
mov al,es:[si]& ~& O$ U+ y" |, q5 d& p3 d
cmp al,'b'
) k: ]7 c0 ]7 K6 T9 [: I je WBT6 }2 P$ [* u" L( \2 P( F
cmp al,'B'
% r% a* E/ x* Y5 q je WBT' X3 x! G0 I( P7 j( d# P* H" L
cmp al,'w'
) Y9 J" h, i+ i$ @; k9 x1 U je WWR
" k4 Z# B' E* ^# F3 e7 v9 V, D: u cmp al,'W'3 w: Q. E+ M" |; [
je WWR
) [7 N3 K1 `1 w* H6 H/ H" b, G cmp al,'d'
' A/ T. _& v; A# o je WDR
1 d$ Y$ P' b( L. ~* @ N cmp al,'D'
6 ^4 C h. D2 m6 ^ je WDR
/ e: \3 h& |2 M, \. n# y( ?RBT:
" V1 ~ C, I" B( L" { call PSP
6 l2 C. | r/ ^6 ~# Y+ Q2 B call crlf
7 V3 x+ J! \5 @: z9 c5 e* u( I( H J mov esi,ebx
7 H. J/ o6 _/ { e mov eax,fs:[esi]0 I' F3 S9 G# J4 y5 ?7 p" U! M
out 80h,eax3 t; _- g7 b& Y
mov ebx,eax
+ E- s A7 j3 p$ i0 A0 v( [* x call _8bits6 Y( d' e5 U3 d" b$ E/ w
jmp Exit
$ N; x# L. M, f) S% T' d1 m+ W CRWR:
. q% R/ F/ W" M call PSP
+ l( H% @9 j* F call crlf & w: E8 N# f6 t& q! J# \
mov esi,ebx
6 d) g) P' j) F mov eax,fs:[esi]
9 A& y) t* F/ b1 W8 q. X out 80h,eax
! s4 W& |. ~: ?4 i2 ^. ]9 s mov ebx,eax6 e" o+ ~2 i/ x" M' D O
call _16bits' u1 C; `" p: h$ Q
jmp Exit
; E$ j3 x4 G/ wRDR:9 x8 L" z5 L. D0 V% Z+ W
call DPSP # }0 J: V7 x5 |9 X
call crlf 6 n" e+ [2 ]5 x( Q5 ^) H
mov esi,ebx
7 _8 H: l' ^* F' R mov eax,fs:[esi]
7 x% g% a7 l) G D) \, N' M: W out 80h,eax- n( V) H( N' ]$ `- B/ d3 d
mov ebx,eax$ D) K+ `6 u% o# B% y* H
call _32bits
% o8 Z) [$ b. f& G& A/ U, a+ y jmp Exit1 s. |( J( s [3 @% b
;------------------------------------------------------------------------------------------------7 V9 k7 t7 j8 n- c
WBT:$ [) }8 |& m, W9 u/ d- ~$ r1 M% s
jmp Exit3 q; Z7 |: D4 ?9 |* C% @- [9 c) W
WWR:, j; c+ q- W0 q6 m& d& f
jmp Exit
3 ^8 P4 ?7 I, d0 Y9 RWDR: G6 J. E5 _6 D* b, {( c
call DPSP- d c1 R$ x5 d3 {
mov Maddress,ebx
& k ?* U1 v1 a4 G& l( L* P9 x' d call crlf
6 |- X, Y3 X& W6 {* F. | call WDPSP; b6 e. T8 E) H; l$ O7 m/ B
mov eax,ebx
1 m. |) s. s& u) b# a0 c mov esi,Maddress
/ ~! {5 B' P9 a mov fs:[esi],eax6 X: K. B6 H$ k% o
out 80h,eax
) G+ j9 ^- J' F) K/ { jmp Exit/ ]* w4 Q( o) F, Z+ S/ i* |
;------------------------------------------------------------------------------------------------
" Z l; A6 |$ x& _* {: nExit:# j/ ]9 z: o. {3 W
call real_mode
2 J3 H1 E4 D7 w8 M/ H: V pop gs8 `' J) h6 H0 j J
pop fs; C$ V& j* }4 s0 B. x4 O
pop es7 L& I* ]% U, p! n
pop ds 1 y7 z0 U+ M# R }
.exit9 t) P |, b* o+ m) l- N5 Q8 X
;------------------------------------------------------------------------------------------------
6 r, ?0 I+ ~% a. w1 r6 U" i' U Z4 Xbig_real_mode proc near
1 x: K; l9 ^: W9 V( J- O* @ in al, 92h- ], q7 {# f4 y7 X
or al, 002. h6 G' I. {- i* k+ a8 {" g
out 092h, al
3 p4 Z$ o2 b6 ?6 F out 0edh, al
. R/ {2 \% n/ X! R cli
8 o1 U9 J m, i) R4 ? mov eax,DSEG
* q$ M* H/ ~& F2 o- m shl eax, 4
+ l1 s5 f6 h: q: [: e xor ebx, ebx
* ~, q" j* g2 v+ M: Y% T5 u mov ebx, offset GDT_def$ J" D! y( w( G% d% C: d$ C3 ] @# B
add eax, ebx6 o4 E. s6 M2 m2 @' W9 p
mov dword ptr GDT_Addr.Base, eax
5 v' E) `. U {0 l: @' c2 e lgdt fword ptr GDT_Addr {& t( \+ x0 p/ t6 o) d3 t/ m- ^/ |
mov bx, 8
" i- I/ |0 {8 t$ y' L mov eax, cr0
( g8 R/ [. O5 ]) N or al, 1% F& F/ v5 k2 A& G! c
mov cr0, eax7 v& s+ }) i* Q7 d# P
jmp PMod# D9 V, S) i9 ]: t5 e; U( i: g
PMod:
+ E0 k0 F4 ~3 h1 y mov fs, bx
, F' ]1 o+ W1 \8 R4 b mov gs, bx# E- q1 V) j# X. v
mov eax,cr0+ f; t% S6 k7 x2 z, S4 h
and al, 0FEh
, B" `- F* p6 H mov cr0, eax
& q9 Y, W) W, D) U% e6 s8 @# w6 d jmp RMod( C# d8 L! p2 o4 Q. D
RMod:
' k! {4 R2 H8 I xor ax, ax9 K7 ?& k& H1 m. T; n
mov fs, ax9 r5 e- r( y# _5 l! w/ j* l
mov gs, ax
; k8 {. Y, k- j8 V, r sti 9 b/ D: X% m+ t2 ?; w2 [2 k1 N; G
ret: D& a' f7 ^, I0 i- i
big_real_mode ENDP5 E6 I# ?6 m( Z6 X
;------------------------------------------------------------------------------------------------
" ^1 x! p. n/ u Q. ]/ rreal_mode proc near0 \4 Y5 \1 e5 p/ R- b; {
in al, 92h
$ V( @5 E# x" m5 ^' O. T- p and al, 02
, c5 ^( X2 P4 e; P9 b" y2 o. w3 Q2 U out 92h, al 8 @# }* J1 @# z& c5 ~
ret# r+ H7 c6 \. U
real_mode ENDP) l. F$ s' D9 ]0 J
;------------------------------------------------------------------------------------------------" f( L0 f- z3 U( \
Get_Commandtail PROC near
) c3 |; I) y1 _! _% ? mov ah,62h
' a- y6 A$ K2 N; F. c int 21h! y4 O5 j+ \$ X4 ~6 x
mov es,bx, g7 C" X/ b' l4 h
ret
/ F# z" `3 p2 X8 PGet_Commandtail ENDP # @6 N) T, N) S0 p. _% l4 E7 J
;------------------------------------------------------------------------------------------------
j. {& l7 d" W; x, _PSP proc near9 ~+ D1 G" C1 G" S
xor ebx,ebx" V* V% q! m g8 e
mov si,89h
# q, E' b; I4 b: \ mov al,es:[si]
+ D% f# _* E+ X call Change* {+ S/ C" n2 a5 \
mov cl,4
1 C" E: D0 \2 l: Y shl ebx,cl
( ?/ p( O* z1 ^0 C) p add ebx,eax" s/ |3 O# ?# _4 T! Z- Q/ {
mov al,es:[si+1]
& k' X5 F% s0 J( x call Change# u2 m, R, q& X+ z0 G* V w
mov cl,49 z0 T' m& v( n4 s# _. x
shl ebx,cl
/ i R" [2 X- d; n( N add ebx,eax: Y0 S o& t, ?6 A% e5 ~1 ^2 a
mov al,es:[si+2]& F) @# e4 z/ L* q
call Change2 ]0 l1 j* N* F& E
mov cl,4
i! q. J$ R. i2 L6 S shl ebx,cl
" N1 A' j" A+ g+ s2 j add ebx,eax
- v- A, w: t M! r/ \9 l mov al,es:[si+3]
$ \7 m5 ?% e9 r# H call Change
9 s4 x# f5 g0 F7 x3 T M& b mov cl,48 X% F- X5 J- A+ i% d# c' v) F5 e
shl ebx,cl
% t2 i& B' N/ | add ebx,eax
0 Y G" n# K. G Y6 c6 k mov al,es:[si+4]1 f( \3 E4 d$ `4 \5 Q: Y! q
call Change: {0 o. S* y% H' g6 [" }# J: w
mov cl,4, @ ^0 N/ M: z( ^+ L- E" [# |
shl ebx,cl
/ w5 U" ~ M$ B add ebx,eax0 h% `5 B; M6 T( U) S
mov al,es:[si+5]. I. |+ j, `+ H$ s) h( ]* t
call Change
$ ]% F2 N$ X0 j* I7 {. ^ mov cl,4
3 y B; l8 {, A) N9 Z! z1 Y shl ebx,cl
4 y. Z% F$ ^7 Y y add ebx,eax
- g" H$ l8 T" W4 g; S4 U6 ? mov al,es:[si+6]; n) T- r: U) E( H
call Change
; @. H4 n- a6 t! _. D0 r L. V7 ]4 z! e mov cl,4
# s$ f9 V" Z; Q% j shl ebx,cl
) o$ J A; ~# T& S. G add ebx,eax
5 w& D7 R# \. N( E2 f ?1 j1 C mov al,es:[si+7]1 ^/ B5 S2 U2 l( m
call Change" A% A$ A" w7 K
mov cl,4, I, W" z9 X. ] K) _
shl ebx,cl# O4 }2 F$ ^' X1 Q. r
add ebx,eax
+ Z5 M7 a+ g% G2 V1 W ret' Y) v& }+ O0 W5 m: s4 Y$ G
PSP endp5 D5 S4 v9 b& N$ r4 w- T
;================================================================================================" J* M# x! z3 ]" ~; p6 |- X
DPSP proc near7 [5 B' R" k f! _$ ~
xor ebx,ebx" e, S: l7 ]+ Q \
mov si,8ah
) @9 s% G5 u5 _6 t& O# f* z9 K) @ mov al,es:[si]
4 c% J5 `6 ?4 z1 Q) m call Change
' {4 O% a1 Q5 x: d7 C2 e mov cl,4' V' t- e( b( a, Z( k
shl ebx,cl, j" Z: I8 N4 `4 S% ?3 q N
add ebx,eax* P3 R; Z( q5 d; {5 I
mov al,es:[si+1]7 a+ I2 b0 S% d; c
call Change
1 C9 R7 {: y# h mov cl,44 \7 L8 M" `8 _# r% x5 C0 ^) k
shl ebx,cl: ^) F( r5 D; M5 K
add ebx,eax& \; t7 B* b; J
mov al,es:[si+2]3 Z0 }$ Z' T: b2 G/ d! r" S/ e% Y
call Change1 A6 B. Q$ f3 r0 B" E3 k' l, n6 X* G. `
mov cl,4
$ l1 n" y7 }5 F0 I shl ebx,cl- `* w1 i: f1 |9 C" P+ W1 \
add ebx,eax
7 {6 m3 L0 m9 n2 q' u9 o* w, s mov al,es:[si+3]$ [* }" a) b" p/ J. V* `' F
call Change. x2 f x9 e: m9 A* L
mov cl,4
. P3 }8 b" O J( m" P shl ebx,cl- m3 g/ o* U" T1 O9 ~
add ebx,eax" `/ }+ b h- ~2 u9 L
mov al,es:[si+4]
0 s- h; J/ a8 \& H. P1 u call Change
6 K4 K( r! \2 y" Z c6 K mov cl,4
5 M% G* O, ~: W4 \; o, A/ p* ~ shl ebx,cl8 y, S8 j% r- X+ J& c% a
add ebx,eax' a* |8 P3 B2 G- j: R
mov al,es:[si+5]
7 D4 l. o- k) Y( s4 O call Change, G$ C+ g3 ]* t3 d9 E' V
mov cl,4& D T0 g' X# W
shl ebx,cl
- W$ ?' C" S; S add ebx,eax/ k. q N h* X( M( L: [
mov al,es:[si+6]; i9 `, e6 g. z8 O( f4 J, {: m Q
call Change' |8 A+ Z( ?( h
mov cl,4
( Z- H! r5 f5 J: D( k shl ebx,cl- {, s% M' V; ?5 M% ~
add ebx,eax: {! s& S f. d- ]$ z
mov al,es:[si+7]
( \3 U4 }" ^3 N& o8 J call Change
2 Z: s- e8 \7 f* c d" I5 a( x* \ mov cl,4
% b: q2 C" k9 Y/ o8 p shl ebx,cl! G) w! H: V3 f: p
add ebx,eax( Q+ I/ J; ?! {0 {4 f& n' q( R* n' n
ret3 J7 b- e" I9 ?
DPSP endp
$ n& w3 J, U$ c; N2 F8 d;================================================================================================
8 ]. ]% w" L- A- Q' jWDPSP proc near% k: B! g ^4 r
xor eax,eax5 s3 c7 m" e. [9 }( c) a: m: G
xor ebx,ebx1 v! Z( F+ x7 d$ e
mov si,93h
# D/ B+ ?0 e% Q mov al,es:[si]
( } f! E& i) O. s# ~. B" E call Change0 u1 ]+ w* u7 p& u% U
mov cl,4# d4 X; G7 z# O9 O1 @5 H) Y6 l
shl ebx,cl5 ]/ m* O! S! |" ?) i
add ebx,eax {2 b; j- [: _4 m1 ~5 s# D
mov al,es:[si+1]
9 m) L' S$ `4 x' H1 `3 ? call Change6 B- D0 T: p0 M! A- g4 W1 H
mov cl,4
4 ^0 r; o M3 c% W; P, O$ N shl ebx,cl1 i/ K" y9 w2 G, ?, L2 `
add ebx,eax
" J: H8 p" \: |# w' ^+ o7 V mov al,es:[si+2]6 I3 v8 E% j" v/ M9 v
call Change; a1 ]# l9 ?& p+ n0 M
mov cl,4
+ q, P& R, ~$ M# o: D0 J) C6 J0 @( L shl ebx,cl+ j0 F* k* ~& J9 X" G
add ebx,eax
! J8 I4 J/ M) i! o& {+ ? mov al,es:[si+3]
* b/ `6 O! J3 { call Change
7 {% Y4 `2 |# Z mov cl,4+ Y, @" R! h6 W0 M5 k0 p" B& D' n
shl ebx,cl
: w! P- [+ W8 U: G4 Z' Y! L* { add ebx,eax
3 u; g3 N+ X& m+ k# S mov al,es:[si+4]
8 F- p" s1 M1 g! @8 b0 y' [ call Change4 Z+ b' w+ a3 C+ D1 j' g8 O
mov cl,4' G$ H1 m5 y) [
shl ebx,cl! ~; V+ p& j$ A8 N
add ebx,eax
4 ]! G5 A- O) M2 {9 t! w mov al,es:[si+5]
1 y) ]( V) i6 A5 B! x( t call Change0 F2 a+ Y7 ^! t4 H3 J
mov cl,4& [& K) _9 D7 {0 Y
shl ebx,cl; a8 b6 |' Q/ d" `
add ebx,eax3 d- D; t, Y: N3 B1 V2 O$ I
mov al,es:[si+6]
# T X: S' R: J, G: W5 h" h1 M call Change
H' [6 I5 j2 s8 T& {7 G mov cl,4- [) J" E7 S% F0 E5 U$ ]3 y! n
shl ebx,cl, x3 q+ X" [& o" u- M, w
add ebx,eax% H8 g) m w6 k( w" ]+ \$ [
mov al,es:[si+7]3 Q/ A/ n3 a) J
call Change/ P2 O- i5 _- I- A% u' \
mov cl,4( T z, i2 `. h+ G
shl ebx,cl
. [" }0 {7 Y9 L. F. Z add ebx,eax
# @" {# }6 q% r1 \ ret
# [2 V: v8 F; |. v: {& M& e3 P- XWDPSP endp& H+ Y; t' X9 Y6 W
;================================================================================================& R- d1 c) S8 N2 C" F% Y$ Y
Change proc near, q1 ?2 P9 z+ R: |/ V/ Q: ~
A: 3 w, i& w; t! u _. W
movzx eax,al
) A# h" s& G0 o8 f7 d mov edx,eax+ G" D. }. V8 T( G
cmp eax,'0' * v1 |$ f$ X0 H1 A/ s' q4 s! i
jb A
6 j7 {! i; b$ ?9 M' ^- H cmp eax,'9' , V/ d3 D8 s$ W1 l: m: K
ja B9 ^1 r3 Z- z! g% m
sub eax,'0'
. o, P! ^2 D0 \ jmp short E- X2 Y6 m f& [" I
B:2 H4 p' c( \6 z+ O. Z2 [; s
and eax,0dfh - p3 |! j) v' w# @* w0 Q4 L% d
mov edx,eax) r4 i" ` l' i7 f$ _
sub eax,37h
# Y1 M, t7 p- {6 W cmp eax,0ah7 z) R. I3 q9 q- |0 \" Z' m
jb A ! G$ M' ^" D/ C1 n
cmp eax,0fh3 {: H2 X* E6 h8 y+ ]2 @* ?2 y6 T
ja A ) F% O/ w% H6 t; w7 v! }; [: J) X' b
E:
/ m9 q. J" D$ f5 D* W1 K w( u push eax
$ J. Z: R& w* H$ ]9 e3 U call PRT
# B% p' ?( n7 M pop eax# P$ b r6 p; l! Q
CExit:- p5 y- l# ?6 \% j
ret
6 k5 Y* l1 _0 C" D6 k+ `, [8 S7 |2 bChange endp- l% o; \% V& n3 y% {
;------------------------------------------------------------------------------------------------
1 k9 d5 C* P5 d8 UPRT proc near
- g) v* s, \. b; g v, N) t9 j mov ah,02h" [2 ^2 k1 U$ r6 [5 C
int 21h
; r- E! i3 H. g' k ret
% P8 X* o' X5 }- h# D5 q+ n/ JPRT endp* g% n: Z) M2 _* d9 E- F8 S
;------------------------------------------------------------------------------------------------6 A/ {0 S# A( I, r- u' H
crlf proc near9 b2 b, m3 r* H% e+ `
mov ah,02h2 ], L6 z1 v' Y$ B% M
mov dl,0dh- r+ ^: Z1 x: y+ q5 s' T. E
int 21h
& J' f) I$ M1 m) s mov ah,02h/ m8 j: _9 K, s, _* q- A( T
mov dl,0ah
: p4 |6 B# l) j' t int 21h E$ J$ M4 V! B7 M0 {4 p" k5 b
ret3 [! p+ ^0 t) S! p4 V8 g
crlf endp+ k. Q9 F8 u$ Z, T
;------------------------------------------------------------------------------------------------
1 M2 l, m }% r( f1 P( W_32bits proc near6 G* B% z, M G4 _8 @, x1 _- e
pushad
: u/ D/ v6 f+ F; |/ y mov cl,4
2 W3 j) K. K6 E; Y. W) i9 Q+ y( S rol ebx,cl
) }: K( h0 @# y1 v2 [ call print_4_bits
0 z/ r# n& L% }6 F2 K G) N rol ebx,cl
* ?5 l3 g2 @6 g2 C call print_4_bits
% e4 g4 S* D+ o4 _3 i, w6 H; q; ^ rol ebx,cl
+ g F0 f+ @: I: v call print_4_bits( D5 T6 C. n) e+ N
rol ebx,cl* A. o e; j' y
call print_4_bits5 O2 J4 h( H$ u# [
rol ebx,cl+ N" f+ q# n- ?7 a
call print_4_bits, e7 y4 M _" g4 l+ C3 H6 {: Q# i. y
rol ebx,cl9 v' P# K( i4 U+ @, z
call print_4_bits# Z" l4 J# N- T
rol ebx,cl
* @' M1 @) U0 g6 y call print_4_bits
. D. Q) W" ~6 S0 l& }, ? rol ebx,cl% T" e( e( L* b! E
call print_4_bits
+ u3 O7 p+ ]# r8 h rol ebx,cl
s* m2 J4 W; x7 v popad
r% n" h. E% L; x8 f- U- v ret
( S, T: ^$ z$ ]5 I+ ]_32bits endp
& g9 j q3 Z, r( m4 w;------------------------------------------------------------------------------------------------
8 U: Z1 G; \* O. h_16bits proc near, N- e* a1 f; }7 X N
pusha & E1 z: h4 W% m9 n1 r" G
rol bx,cl
7 k% A* H5 T9 n8 o call print_4_bits. {3 G$ E/ p, q* E
rol bx,cl0 l& J+ r8 C, g2 ~: b7 l6 m
call print_4_bits
+ v8 r4 Z# p* L rol bx,cl
* }# B' N/ I) a2 {3 T2 B call print_4_bits
( _" q6 J. p6 N! h3 t2 w6 I" v. s rol bx,cl6 F% I1 m& `8 o
call print_4_bits# N9 [3 @$ A' b: h- y6 a/ x
popa
. g; L' b ~ K" K ret
7 E9 z; J/ t: N8 T_16bits endp
2 t7 p% |4 `& N0 ~* B$ f* v;------------------------------------------------------------------------------------------------
+ C- |+ J" i" E! r: H3 }_8bits proc near9 x# r0 r$ {4 }. U8 X
pusha
( U# L- P6 j" R+ u0 A) w7 S rol bx,cl
( n. N$ S+ U1 K; r4 q3 E4 C call print_4_bits
6 w/ m. m5 z4 |3 o. W rol bx,cl d4 ~6 y" a& E4 Y0 w& D8 e
call print_4_bits
3 b2 ^" K3 z. N popa' C6 f# ]2 y" _. P/ G# O3 E" U
ret- {3 c g4 s3 Y) v" |! B* c
_8bits endp
" e& Q2 M& S- p0 P; Kprint_4_bits proc near
/ H U, L0 f) F8 v/ B$ k mov dx,bx
& J7 s+ b6 D& R+ I and dl,0fh
2 A$ h2 m# H5 U add dl,30h
7 ?* z6 W1 C6 W1 | cmp dl,3ah; l t9 @/ _/ q7 a7 C+ F
jb print
! `& V# {3 I& m4 J X add dl,7
/ F# P& u; ^8 Q! _" b, E: i, Bprint: " k& b& f% N" V8 ~# Q
mov ah,2$ Z; \" y7 K3 H) G% V; @3 C6 c) v
int 21h8 r0 C4 M) g6 e2 V2 U; k* K
ret
4 G; H6 u. x' ~! wprint_4_bits endp
5 w# X1 x% U+ `3 l+ _* BCSEG ends
- P) P' b2 @7 N K9 R1 [END |
|