|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)
. B3 t! ?: o' G- y' P8 p$ U5 J( q, P; @ J- n! {" l
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
$ i4 P; m0 M6 t% {/ i: m: ]" s" v" l9 B
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
# b! j# ^# ~# l1 u( Z( q8 b
( H+ G: s# i5 }4 ^3 b0 @0 x.model small
: h$ u6 W3 e8 z* `! |.386p7 d4 E" O% Q4 w2 V
DSEG SEGMENT USE16'data' 5 S& I6 S7 {2 z6 d+ u
2 C( n6 N' V% E2 r6 |3 `DESC STRUC W9 a7 t$ q, W2 M2 p3 ~6 l+ R
LimitL DW 0 : v! q$ T$ S* n) r s
BaseL DW 0
" o- ?6 z% |$ w' K) T BaseM DB 0
6 ~% Y* L1 U: i& H1 Q Attributes DB 0
7 p! {% c. L% n LimitH DB 0
" j+ C! S0 J- j BaseH DB 0
* ~* o$ I0 U8 B3 [: h2 U+ q; ^DESC ENDS
# W P$ q. A! y$ @6 H* A! C5 `+ F4 P8 Y
PDesc STRUC9 P; F+ T, \; X, p6 C9 `) k1 s
Limit DW 0 9 @$ a+ c0 r v+ q. j3 k
Base DD 0
! ?0 v( k" i0 G8 OPDesc ENDS" N0 B1 C9 L) b; \
% O/ @9 L( m1 tGDT_def Label Fword. X/ K6 j) W" Q/ ~( Z @9 J% C
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
" g, G, ~# e$ X' LData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>; c* A6 x4 \* ]1 [3 N( }4 L
GDT_Addr PDesc <$-GDT_def-1, >
7 Y1 [6 S t+ |+ K; U5 m4 D
: C2 M+ n1 G" ^4 A. j$ eMaddress Dword 0
* N( O2 r) `* D. Q8 W- z r$ @
, b" o& R, E$ vDSEG ENDS
* U; o% \5 ^% a/ P; x% sASSUME CS:CSEG,DS:DSEG
: y( t9 m' |& h% |6 B7 k
4 _6 K4 t& y; |4 `3 dCSEG SEGMENT USE16'code' % V: x+ C2 R; E6 I) N4 O
push ds
3 o& ]1 I) `, r1 N push es& i+ k, s* h5 X0 m3 W* M
push fs
0 v6 J) Q+ U1 |# H& M4 ~ push gs
3 ?+ S9 e0 S4 D' P call big_real_mode
6 T n( y; U3 h! ~ call Get_Commandtail
# y% K$ C8 T: w xor ebx,ebx8 h# F3 B x. v/ D
mov si,82h% }; g/ ~3 U2 Q4 P; ~% Y6 @
mov al,es:[si]+ p" S- @8 [2 N7 P3 |
cmp al,'r'
d: [, Q7 _8 e& S9 @# X' [ je R7 F! P: T4 C6 O. Y
cmp al,'R', Y( g/ @' Q0 r; ]: i2 R/ x
je R* j+ F2 e' @: i2 v+ F9 `2 J( h
cmp al,'w'
; }. f F, N& X/ d5 u je W
4 O6 |: j% v9 F% y4 B2 ^ cmp al,'W'; t- |$ Y6 _, v" ?/ u8 o0 z& k
je W + @) F+ `* X/ Q" k. I5 U8 A
R:4 _: s; s. X$ v6 M1 E: G' A
mov si,84h/ x2 Q5 U- L, f2 J5 b
mov al,es:[si]# M3 I% }, x* x. S! B
cmp al,'b', A+ c( ]' {1 m! S, a2 f% s8 U
je RBT
j5 r( x+ k- R" |5 g& o# m3 f# ] cmp al,'B'( w j# j: H! \) d
je RBT& S, }1 `9 r- J( R' V
cmp al,'w'
, j, m; ^. Y+ q1 q) C; Z. Y" \ je RWR
) ^& l, Q! k! a$ ?6 P( ^3 H6 { cmp al,'W'
! m: y L# x0 u1 ?: I je RWR* C' a+ v3 `3 Z; w5 Z
cmp al,'d' h' h- d6 X9 N+ P9 ?
je RDR
/ _9 `+ S/ d' i5 W7 U$ R/ y! N# { cmp al,'D'( \6 [) ?, {3 ~$ w n% _
je RDR
4 B+ J: w {& R1 D2 F1 uW:
- v5 |4 _$ Q1 b* l9 V mov si,84h
$ _3 [8 I% x, a2 P/ V mov al,es:[si]; _- _7 p, K0 q1 ?4 X
cmp al,'b'4 L' r$ E1 h2 E
je WBT
% l# @! l/ ~6 |' S* G/ D5 S cmp al,'B'6 S! V" A# O+ t8 b; @: N. R8 \
je WBT
, X" W0 p' k8 w D0 {6 P cmp al,'w'' k: ^8 D6 i& K5 U4 N
je WWR
+ ?& j7 g3 \2 q S* _5 o9 R+ M! U* @ cmp al,'W'
0 b: y, h. X' n8 d" W je WWR
/ b8 W* i3 R& }1 u( P+ s& Y cmp al,'d'; ?* x+ x: N9 @& a' h
je WDR
) c- l, D; f$ {% o3 _/ n$ ? cmp al,'D'
1 X9 ^; f \) e1 |6 H' m je WDR2 f( R4 Q8 K; m7 p" O' B: F
RBT:
, [# w/ ^% w; n7 c: {* a. G call PSP ) Q8 G# A1 R- j7 |! _" f4 z
call crlf
, e6 @' K, t. D% B, G% C- d/ V3 ] mov esi,ebx! ^) e7 X' o+ j7 R# |
mov eax,fs:[esi]
8 |4 w( t x$ Z8 X. u out 80h,eax' O7 J! T8 F: c. I( i- I5 p
mov ebx,eax& q0 n& B* ?8 Y- j9 h
call _8bits. D4 `- S) k, S8 ]6 R3 R0 ]+ B
jmp Exit
! f1 W" y7 b, Y" P3 w$ nRWR:0 \0 L8 l. C& a# s6 c; I
call PSP
5 ]4 c4 `/ B. s0 r' N call crlf / L0 Q$ \& j! @; `: J
mov esi,ebx0 ~% x3 ]6 x6 l3 C0 r; F7 ]
mov eax,fs:[esi]- i6 V. \$ Q B) v
out 80h,eax2 O- c1 }" x) X" b- ]
mov ebx,eax5 T7 T" r" |$ [2 ]
call _16bits
' m. }1 E( ]6 o$ j) n# A jmp Exit
+ R5 ?- h& o$ x+ [) X" I; p& J, O4 q. IRDR:
" Y. J* [1 s& ]' P call DPSP
- B) Y! r2 N! f( S+ C1 B+ }" |/ K call crlf # S' X+ ~6 I, J; }5 ]" l- a" G
mov esi,ebx
; s+ `) A ]+ ]& _; V0 { mov eax,fs:[esi]
! ^# ?* A" Z' m" `# q3 }8 @ out 80h,eax
. b! V u# l, P9 b8 V mov ebx,eax
- i& K6 s+ x* i- t$ O S call _32bits3 T. H" S, L j& W6 M0 A
jmp Exit
- m! v) u5 `' V;------------------------------------------------------------------------------------------------
2 O" s9 J! R+ E* I5 BWBT:
! a/ ~ h" o* {9 P& ~! S4 w jmp Exit5 ^5 p3 ]. F# j! _ X' h
WWR:) f" w- h4 q3 ]; D6 q' T
jmp Exit
3 C# ~; G2 y# ^; P; i3 k( Q" c: lWDR:. w; ^8 k7 j: V! I# K
call DPSP
& A4 t5 [3 f* Z6 q- S5 A mov Maddress,ebx
; ^, D/ Q3 G: Z/ x call crlf
4 k' A+ V# I+ L( Z, r5 }4 S call WDPSP* {7 s$ h" F' Y( @5 D. f& |
mov eax,ebx
" A) Q; W2 y. G; r% C7 Z mov esi,Maddress
% S X3 o- U; n6 e mov fs:[esi],eax
: k& J7 G5 ?! z out 80h,eax
5 K/ U+ |0 r* p# y jmp Exit( M3 q3 \8 X8 f) P
;------------------------------------------------------------------------------------------------ : x$ q7 U0 h8 w0 v2 G& t
Exit:$ j+ [5 V( ]; J; L5 ^) {" `
call real_mode 1 W) e _ c; L, y( Y, M
pop gs
+ U/ {5 L8 X- Z. U J pop fs
) H3 \& b3 z' ` pop es
+ E' u' c* }( Q; w pop ds * s q3 U1 M; @5 W0 k( P+ n0 s
.exit
- d& ^) N& p8 `6 X" F' `;------------------------------------------------------------------------------------------------- j% T5 X: H2 V! D2 I
big_real_mode proc near
) ~, | W* i2 |1 ^ ` in al, 92h l, G9 }4 @. K" v! B' L1 \
or al, 002* U0 }, O M4 ^% y" X/ ]$ J% s. D) s
out 092h, al/ P' @+ N! A8 G" n% N
out 0edh, al: D: O5 A9 B3 q+ Q
cli
1 O0 K- ~4 D7 u% M: j0 G0 T2 o mov eax,DSEG
+ I2 O! b$ f# Y% ~- z shl eax, 4
6 C* h7 @) Z5 l- Q6 x3 D! \- p' ` xor ebx, ebx4 V% S4 B0 t1 Y
mov ebx, offset GDT_def
# v/ b* t: E, t! M5 E) \ add eax, ebx
/ c* L1 z+ a# m5 I1 G: M3 a mov dword ptr GDT_Addr.Base, eax
4 F2 B5 F9 F8 J. _ lgdt fword ptr GDT_Addr
2 T7 x, ? x. m5 ]$ i z$ L: i mov bx, 86 ]* W. `8 l5 R8 W4 _. z0 d5 N) H' H
mov eax, cr0+ z' P- k- t6 E5 h+ M
or al, 1
: b! d! J; a- t0 g9 m. e mov cr0, eax3 n$ D6 S3 A9 T; Z( i" r
jmp PMod
1 m& ~5 ^0 E r( _$ |$ X7 wPMod:& W2 Z4 W4 O: q" V5 m+ n: N
mov fs, bx
c' O- t- {( E7 J mov gs, bx* n# ]2 k/ L2 C
mov eax,cr0
: K: q# ]+ X& w! O and al, 0FEh" q& h* K9 z# s$ @; ^
mov cr0, eax & v5 l+ [/ O1 @ s7 `
jmp RMod
' s) y, t* `. \9 p3 j4 ?+ }( A/ uRMod:
: `+ f8 W: P0 G: {( M5 { xor ax, ax/ }- D. Y+ R/ @0 H/ R
mov fs, ax+ r* n n" i5 w/ ^
mov gs, ax
( d$ F. X, P6 e- T! G- G2 T7 |3 d sti & j6 }' O' j* @: Q8 R0 ^: U: o
ret* l4 a3 x: Q2 H+ i+ E
big_real_mode ENDP
9 ?$ ]- s( W3 z, Z( r& [2 ?5 b; M% n;------------------------------------------------------------------------------------------------- s( y$ r2 m- a* }$ p2 Y* U1 i
real_mode proc near
4 O; J$ W! O3 v5 D4 w in al, 92h
3 l/ ^9 I1 i, T; T7 D9 |' y and al, 02
4 K8 N. ~- b8 l+ g9 w) s6 I/ E out 92h, al
. ?5 c. Z* i; G l* P ret) H9 w6 O, b/ N$ V6 O* m2 s
real_mode ENDP5 \+ v! D) ?) }4 Z) G
;------------------------------------------------------------------------------------------------
7 g% Q* F" ^# H u9 [; qGet_Commandtail PROC near
% M1 n& e" Q4 W mov ah,62h 3 B% P! d+ R6 \
int 21h/ E# n* i- u' V. Q7 n- h
mov es,bx; q: K. L h( `5 V( |: h" Q
ret Z" Z! ?3 W- `
Get_Commandtail ENDP
' a' |, c' C- K;------------------------------------------------------------------------------------------------
+ c1 X7 S; ^/ a6 V& H% x5 mPSP proc near
- d& c/ B3 P3 q X: a xor ebx,ebx
7 p% x4 S5 t1 }+ \! M5 i mov si,89h
- l/ _6 Z" W" t4 s. y/ K mov al,es:[si]. M. f5 N _0 X1 {' P8 C+ |% S
call Change' }9 L: @. I$ ]
mov cl,4
& E- T1 Z* N. w; f2 S* k9 [ shl ebx,cl3 t# |, E7 W5 S2 x/ s) H/ q+ u
add ebx,eax; J6 b; U% O7 U1 p2 \
mov al,es:[si+1]8 {; p: _: n, i& J- N6 ]% b
call Change7 i! _, K8 `+ {3 U- _% g
mov cl,4* G2 k0 }8 h' R# J
shl ebx,cl
1 M) _6 w2 F- o8 _' }7 m add ebx,eax
! f9 V3 i7 j6 I# F5 X! ?/ W% O7 T mov al,es:[si+2]7 I8 }: [1 O& y7 o
call Change
( Y2 l" I! c& x/ P" ~ mov cl,4
, C: j8 ~# e7 L3 q3 _ shl ebx,cl, ]0 s* `8 |* t
add ebx,eax) y) a1 v+ y& x- \$ P. y
mov al,es:[si+3]
$ ~' ]& W2 A8 I1 I( }' R call Change
d$ j: K% s: r' k" B3 R8 m# u# Y mov cl,4
3 l0 c s) _- R# @7 H7 s shl ebx,cl
( Z* m7 [5 h4 V" m/ [* H S add ebx,eax
) k& l4 C) @1 ?6 }7 Y+ ^ mov al,es:[si+4]% V; `" ~ z! J/ l) J) t4 ]6 j
call Change
4 q+ k: b& b! U9 v. U& {9 l# j# m mov cl,4/ b# [8 V6 ?* X0 ]0 Y
shl ebx,cl
% i1 |+ {! j7 N7 S2 e* w add ebx,eax$ A. Q% S1 ^2 J" W3 L+ m- U! V) a
mov al,es:[si+5]$ J3 r2 W+ Y' o: K( |8 D) R4 {- p
call Change/ Z) d4 N1 d4 o) m% o- n9 x
mov cl,4
8 \/ V: x$ l, {; ?& A shl ebx,cl, L' n$ d" l3 z0 @! E+ H$ |
add ebx,eax* b$ s1 ?2 z j9 Y3 p
mov al,es:[si+6]
; Y5 O% q" ~) M+ B; ~ call Change: G3 d! ]* e) b# u
mov cl,4: Q) E6 x/ z1 V) O
shl ebx,cl9 g. |% [" I: ~/ f# c8 P5 @
add ebx,eax
. x. M: T U6 E6 h$ [+ a mov al,es:[si+7]
; c1 l/ j; N" f8 h call Change
2 ~6 v1 E, y% W4 z mov cl,4/ d" o: n, o: s( \
shl ebx,cl" v8 u- D* n6 J# \8 N4 N5 k- I
add ebx,eax5 m9 N4 I* j2 ^$ A/ o
ret) Y; O9 {' ]0 _ F8 j
PSP endp
0 M4 `, N/ m( P' Q;================================================================================================% `' i2 ]% G4 p+ F0 z
DPSP proc near
; }' B# F: Y6 w D9 V; x; S xor ebx,ebx
2 e5 H( A0 G# A4 N- W* F2 @5 J mov si,8ah
4 k3 H; y5 ]) \ `: b% s mov al,es:[si]' ]% p* ?9 N* B
call Change% q/ e+ V: L% `5 x4 x! J9 @
mov cl,40 _8 d8 y2 ~3 f$ m, `
shl ebx,cl
( L( A( O, _, k: }9 Q add ebx,eax4 P& m1 u& o9 k5 w# t8 b! L
mov al,es:[si+1]& L5 U+ T9 O7 q* L F
call Change2 H# X" d3 r$ }4 |. k- }" |
mov cl,4
4 x. n5 `8 K6 f, o4 S shl ebx,cl4 _/ b5 a- f5 A- g9 s
add ebx,eax" V8 \/ I5 H. l
mov al,es:[si+2]" a+ r/ g" r# w4 z3 z
call Change9 S. U+ v$ B8 Y2 C+ y W* k
mov cl,4
1 S" H$ z7 c/ N8 h1 M) V3 i shl ebx,cl
9 i* L$ ]: F; W1 V5 `$ v9 Y( c" O add ebx,eax
- ]1 w+ O* s$ p+ h" O& p mov al,es:[si+3] h1 h, B c" }; ^" ] Z3 E
call Change
, F, V3 N4 @4 M- i) _; | mov cl,4
1 W# @, r, i, y2 g+ e shl ebx,cl
* o5 y$ F% g; |: h add ebx,eax, p; J9 n& ]: a; V3 A
mov al,es:[si+4]
/ S( h$ E! F% |; j2 w call Change
6 F( Y. D! ?7 n, q7 f mov cl,4) j p! y3 Z* C! p' v i
shl ebx,cl5 S4 X% d. t; Z' |
add ebx,eax! y! L/ `; C) V, m& A2 ?
mov al,es:[si+5]3 d0 `* R( _1 b/ P8 J7 @
call Change
8 L5 i% @. }9 z4 O mov cl,4* T0 M- S. g- {4 s1 C9 b
shl ebx,cl6 b/ v8 V0 w3 m$ S2 L6 T+ p2 l
add ebx,eax
$ ?( F7 N) c$ @; q& E- E, t mov al,es:[si+6]
1 j/ u- s/ D5 f( v call Change3 [3 O8 u! K7 D/ v. W
mov cl,4
: f/ R% x4 D g$ f3 f& }( h% q+ Y shl ebx,cl
: t& p( o( e: W+ W add ebx,eax; i- B- N9 z( w1 T7 c
mov al,es:[si+7]4 S5 K& J5 f5 N0 ^" E, u
call Change# |7 M9 R, q6 `2 h9 N
mov cl,4- \9 P+ C+ i0 B; u$ ~" b7 {2 C
shl ebx,cl* Z+ u1 G5 S% Z% f9 g) M
add ebx,eax% U# R6 d4 i3 t" a+ G |
ret6 L3 z. G) p) L g) ~. {) b D
DPSP endp
/ u) g( g$ h' h/ J/ };================================================================================================
; t6 r4 U$ \ l2 g0 @6 Q. r2 C, A/ wWDPSP proc near
" G7 J( S8 R. L2 V xor eax,eax5 J, H+ h; f, D3 B c! @
xor ebx,ebx
% x# d" H4 w+ J' j' K) i mov si,93h- u R% a% _$ s9 B0 L
mov al,es:[si]+ n1 I2 \ U/ s' j, U' ]
call Change
+ m i1 `$ }+ h* W& F# w mov cl,4" u" l6 |! x$ z1 J) C
shl ebx,cl
: H7 u3 b0 [; @. z+ \0 D add ebx,eax7 U1 X9 S) g" Q( \& c
mov al,es:[si+1]
M9 z; l$ p" w: l7 ]7 x call Change& Z- F \% c7 n
mov cl,4
; [; n% H: |5 n+ m shl ebx,cl
1 ^- P( N& K% f3 T0 g( l- n+ j6 R add ebx,eax# s& w; ?+ A5 L6 ?8 O8 R4 G
mov al,es:[si+2]; O+ |, `0 X7 D, f! x7 t% c
call Change; f; ^7 f t- D& g
mov cl,4* L0 y; Q3 R" f# O7 b
shl ebx,cl5 T9 C5 Z& H1 d" u0 J/ y
add ebx,eax
, W1 i/ ?: f* c- [: H* M mov al,es:[si+3]* P$ g8 Q% T! _% r3 B
call Change m2 n9 T2 @2 P' i# c' z( f
mov cl,4
6 G* F3 m! K. E s shl ebx,cl$ z8 o, h- K* V" z( }& N
add ebx,eax# t' W' B( ~6 B4 x( p/ i
mov al,es:[si+4]# A9 T Y6 ? T+ Y6 k1 t$ _
call Change1 Q9 j: x z& `. I" v t$ K
mov cl,4/ {9 N+ }8 ^" M( m# s
shl ebx,cl# G. {0 ~1 Z+ n0 \! Y
add ebx,eax( q' z7 C, s& R( }! U# T- G
mov al,es:[si+5]; N& D0 L w1 D# f
call Change
: t; ~/ J4 k9 K3 g) E, y mov cl,4) r8 G% V, J) z
shl ebx,cl; |/ E( `5 b( J9 f" v! Z
add ebx,eax, b9 c) F9 {+ N, d
mov al,es:[si+6]
' e" r! [) E5 q% X2 J: x. e( c! G$ W call Change; h6 k4 y$ r4 [" _1 s
mov cl,4
, Y2 t) A3 K( h" j4 F `" c shl ebx,cl
) f" F3 u& p" X* V: N3 x add ebx,eax
, F% `& D) a2 i+ x mov al,es:[si+7]
' J* e7 V/ F* i' q& B call Change! t/ z7 B0 ]$ b/ C& q; V
mov cl,4
3 e% ^( N: y2 Q X: `& k. ? shl ebx,cl8 b: M$ r1 b9 E& }" ^" F
add ebx,eax2 \9 ^! g6 C1 q G
ret
( L0 ~" z9 }7 |3 d/ D8 R/ T0 MWDPSP endp
6 {6 x/ m6 V" t) R) z7 s( _;================================================================================================
% ?( n+ X" D r3 eChange proc near
" V* P) t: O9 j' {' H' ZA:
* |* r+ f- A/ u8 l# v; i& n9 h+ U1 f movzx eax,al
9 J5 P% o- g0 ]7 v, t2 V mov edx,eax6 Z$ O% H# V! q8 T- E
cmp eax,'0'
+ U+ Z/ V! M% j, t- H2 {& c jb A& C' G/ R6 c0 \4 U
cmp eax,'9'
7 I. ~5 ?2 s+ l( I6 z7 T ja B' k7 h: r% g* K, b
sub eax,'0'$ H- b7 h, |2 d/ {7 ^( a
jmp short E
4 Y: b6 z) O0 g$ h9 k/ Q6 TB:
; l7 f( h! y1 F6 i0 G% Q) q; T and eax,0dfh ) C6 J; q) F: f- [
mov edx,eax1 ~! z& o* o6 V4 M+ D, Q
sub eax,37h ( q, J- H% Y0 S/ Y# l8 V
cmp eax,0ah
, R1 D& N+ P h jb A
* E1 k( E1 T) `6 m* Z6 W* n0 t; } cmp eax,0fh+ @; n; X/ Y4 _) {$ A. Y
ja A
: X( _! Z/ E5 @0 S/ ?5 `E:
9 U" k2 x( |: F- n push eax
* `2 o8 `5 C$ u/ b: v! _' M4 e call PRT
$ t6 b+ W" m `' \3 z pop eax
2 e" {# |# [6 D4 ?, z' QCExit:
$ T2 ~' d( [+ W ret
+ p/ H' v1 d1 }9 I3 }Change endp
; ^( f e; z1 c K;------------------------------------------------------------------------------------------------9 W" c+ @ u* a L
PRT proc near; F# [$ `/ S9 [( v+ [
mov ah,02h* q* |1 b! `2 s: `
int 21h8 }( i# E3 a, e: E! P
ret8 E o4 h( W& B: d& j* c2 n1 x
PRT endp
) j7 _( @! O2 r6 n/ \1 J/ }# _6 ~) I;------------------------------------------------------------------------------------------------
1 c( j, y6 ?4 [" G( Dcrlf proc near
8 e( W; O) t! v6 k$ { mov ah,02h
1 h+ k- U! F( Q9 T( @5 t' W5 C mov dl,0dh
% X& X2 Y( A8 ~! I% F+ V6 v int 21h
7 O! s. d& C; Y3 F mov ah,02h
" N% ]4 e$ s) k; A. D% M9 l( Z mov dl,0ah3 Z% `6 ^1 j( h7 o1 f0 U0 T- ^
int 21h+ M- d n+ ~) Q- S5 u! ?9 u8 q6 h; P' h
ret7 t: L2 u: U5 n/ p7 y
crlf endp, f+ {% J( [5 ]2 G# H
;------------------------------------------------------------------------------------------------
& r) o& D! M b' q% o9 m_32bits proc near
6 s/ y# S% [" t. M pushad N! l8 Q. y' {0 t& n: @+ K
mov cl,4) Q3 _: Z. o8 l _7 o+ R+ K
rol ebx,cl
. g5 t9 e2 q5 }! @5 X1 V j1 } call print_4_bits
+ \1 A! |, W6 [0 \; r4 z rol ebx,cl- o7 i I$ T ?* G
call print_4_bits/ d2 J7 N4 H, B! i* h4 H
rol ebx,cl1 ^7 s3 Z" t& Q4 ^# V0 V
call print_4_bits5 d. }+ H& @' e. Y* t" m; [7 b) f
rol ebx,cl2 M, J+ a0 v* r: b
call print_4_bits! _+ w' p( E! S3 e( M3 C+ U' \
rol ebx,cl0 g T3 ]' ?: M2 ?" R! H2 z
call print_4_bits/ ~7 A& L$ i0 A9 q5 `6 p: s7 m
rol ebx,cl: f, Q, @! Z1 W
call print_4_bits
2 F: f! F8 D9 c rol ebx,cl
" T) \( B+ K% v' V# ?/ L call print_4_bits' ~" i X( g# f. ]
rol ebx,cl3 U% J8 }* ~- A5 r* d: [4 V* p
call print_4_bits5 q) J) r/ q- N: K- h
rol ebx,cl
+ W, j" x; [/ j U popad
8 v. j9 g, ], a# z' {2 u' T, U$ K9 O ret
" } ], N* {- E- c+ R/ z% {+ y_32bits endp7 X. ^+ R" }! ?9 ]" R8 D8 K" L2 N
;------------------------------------------------------------------------------------------------1 Y2 Y9 t7 H1 n" M1 R# |2 y% b
_16bits proc near
4 u, }; n, V8 o8 C+ R7 x1 V; t3 t pusha 8 n) X& q9 x) B2 f0 f2 L
rol bx,cl
! c8 _; L; S1 z; n call print_4_bits: x4 N7 ]1 j. s- p; X" C# C8 X( g( ?
rol bx,cl3 s# s- c- r& a' J" M; c7 [7 g
call print_4_bits# L8 E% U; I! t
rol bx,cl
0 _/ X" G p; ~, L4 _" I call print_4_bits7 {2 C3 e, {, ?! N- p( a) y
rol bx,cl
2 ?6 @% V: B1 _ } call print_4_bits
$ x3 t7 }6 r5 Q9 u popa
% G/ M, H9 L9 T: q ret
/ a# M' r7 ?0 k, G! F+ u_16bits endp+ C9 f/ x1 X ]; V5 z
;------------------------------------------------------------------------------------------------
. J6 \/ a: l* T( M% W# l_8bits proc near: j- B+ v% n0 H8 v0 e* G3 o
pusha
! I# T! n' V8 N( W3 t rol bx,cl
1 l( H# s8 B. p; r; [ call print_4_bits
% o3 H; K7 y% x5 Z+ y rol bx,cl7 ~. k7 `: r. N2 s5 c0 h
call print_4_bits2 I. ~* ]# P( }7 c H& Z
popa
y( Y( \7 e0 n, e' s% z( y ret
& | w; u9 | u M7 y) \% n, U" r_8bits endp
2 P1 B0 w* `0 ^- [4 gprint_4_bits proc near* w" }- U) r5 @
mov dx,bx5 G4 |0 o @8 N! S- w
and dl,0fh
! F( X2 p2 t& B add dl,30h
# _+ ^' F+ L7 D c2 ~+ y9 U cmp dl,3ah
3 {3 t' S& i5 o3 {& S jb print
" u6 [; Z( p5 B add dl,79 i# ]' l3 x; h. s3 c
print:
7 ^3 \4 N9 i+ p mov ah,2
* L( v6 g/ y( |! q7 w; ?; D" Q int 21h
1 |* w$ M: [7 K. x5 \ ret
6 ~3 y% `6 J' o7 M/ p1 `print_4_bits endp
% E; w4 [7 V: GCSEG ends# Z; c* J! A( H! N2 {; g/ d7 k
END |
|