|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)
, l; o+ |% d, C- c% G X0 ^7 {) V
! B+ M9 y3 t5 ~9 f1 _" o* Q$ l則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
* m9 t* K) C9 p4 j
) m( ?: O8 t% R* }) e+ n. z宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
, f: o8 a j, q& Y4 b
4 B9 h3 p$ y' L9 u0 f.model small" o% g$ b, o# n5 g% z* J, r( q1 X, G
.386p+ c/ u2 h5 \3 K o" D. Y5 l
DSEG SEGMENT USE16'data' ( O: a$ ?+ V$ [; X! v% e: B1 b% K
$ y9 n8 K( y3 I" Y2 ]) N' \ PDESC STRUC' k8 M6 ?( K/ l% x( t, x0 d+ O
LimitL DW 0 / k+ W% P& {( j# K
BaseL DW 0
$ a9 |1 _$ C6 W9 f, }; X$ F# W7 _" v( a4 n BaseM DB 0
! z. S# h' G; E7 C9 R Attributes DB 0
. T; ~4 }7 U# I4 C LimitH DB 0 8 O/ k% X1 E W! K- x$ a
BaseH DB 0
7 k9 b# X) ~" {; H2 @$ A7 ^DESC ENDS
( n( x6 P3 e* \/ p+ m. f: m4 o3 G( m( ]$ P
PDesc STRUC
- o7 R0 ~7 C$ L1 Z Limit DW 0 & p9 n y8 `( K D% ]6 f) e7 T
Base DD 0
f+ i3 d- ^! UPDesc ENDS+ Z+ J0 j R5 v) J+ c
5 i/ A* F2 f9 B8 ZGDT_def Label Fword! x1 x2 r. z! g0 O7 Z$ n S
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
- q4 b0 ~. e9 bData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>. M0 U9 K. i: n
GDT_Addr PDesc <$-GDT_def-1, >+ D, r: X' S# k8 r _0 B
8 M% Q, O3 w' H7 [. L( {# rMaddress Dword 0
7 r/ [, v3 B8 Z( q: Z8 t
6 e+ D4 J; ]+ n* U8 u# VDSEG ENDS . g0 p5 _/ ~6 u0 X+ Y
ASSUME CS:CSEG,DS:DSEG
# ^. ^! {; M Y8 c9 o5 y
! @3 {. K7 q. ]7 c0 U( ~8 cCSEG SEGMENT USE16'code' ! Y8 ]' i) G- B/ c- E' P' d
push ds
. C c! c ]; J5 ]! k, w" G push es
) d* z& t: a- j7 J* T push fs% Z3 Z, b" Y) N4 M" x1 i
push gs
% Y/ J% L0 F) A' B" \5 R2 d0 L call big_real_mode
8 A# K4 V8 j% k, `4 Q0 L call Get_Commandtail
! N7 s; B+ F2 Y, `3 u2 f2 g xor ebx,ebx
/ N) n' C: V. N, d$ K% Z mov si,82h
1 G9 j, f( }( n! I+ P3 N mov al,es:[si]
8 o" t% s; R0 V/ @8 J5 ~ cmp al,'r'* Z7 ?4 W4 X8 ~( E$ _- \0 t
je R
6 e1 v5 V: t; l' s cmp al,'R'" a3 a1 {& o/ M
je R
; `2 u4 c6 j& m2 u cmp al,'w'
' f2 z+ b" @, {* N/ U0 e* n1 L je W
1 i* W" P. e c2 V! v' S cmp al,'W'. V6 u1 E/ G3 v' [5 m
je W 8 z) m! S. r7 \* }1 Z' b l
R:
, L8 @# B0 E! k( |6 e# D" d7 t mov si,84h
( N( g- O' Z. B mov al,es:[si]* t0 u! U x6 |5 I* l
cmp al,'b'; y5 h& B. S5 N' t4 f3 T ~5 _& E
je RBT
- {! H- M5 t7 P5 Z; | cmp al,'B'
, \. B: D+ V: y5 G1 y" j je RBT% u; p4 z$ q& I5 _' R9 T
cmp al,'w'+ b1 A& [2 d3 y' H4 N& i
je RWR
b9 @" @) R0 l: k8 q3 D0 p H4 Q cmp al,'W'
5 y# K f' g2 Q7 U1 U& q je RWR
7 a% N/ y T4 T8 Z cmp al,'d'
# _# b R2 G% ~! m9 h; f$ T" L6 S je RDR
* b) g8 G1 ? j9 b! M/ @* U& B# Y cmp al,'D'8 K% O* I) T2 w3 w. }6 |5 R
je RDR
* L! W# y) ?: M# m: ? r* ^W: $ i- C" b9 l+ X" Q. k
mov si,84h! P% c+ a! ]3 K8 x4 F, S& X; R
mov al,es:[si]
Q& `; R2 M4 h% b& z cmp al,'b'
4 S- |4 [2 J$ `- U) D: S- a8 t je WBT
3 a; R" C, x; F9 ~8 O+ X8 Y! o cmp al,'B'
% ?7 I9 d! i' i" Z2 k9 J je WBT
4 p c5 ?. e$ @4 V0 N cmp al,'w'
* c E2 X/ F% M7 R. m je WWR4 l- y0 f5 X6 [! u; s
cmp al,'W'% ^/ S- |* _8 C# p. ]4 U- f
je WWR: C4 \4 Z3 C" u8 S4 p! o
cmp al,'d'
" Q; F+ O2 u/ S* J je WDR5 R0 z$ }$ P& v4 r$ I8 k: d
cmp al,'D'
& [; {: a* [* ^ je WDR
! F2 d, m7 ?, f K0 tRBT:
3 f4 Z* B0 P- ^9 L* [: Y9 ?/ ~/ E call PSP
& R! w6 w7 E* S9 N% s# I call crlf % v$ x M0 R1 s- V
mov esi,ebx
. V) c7 X+ `1 Z" [) p, w mov eax,fs:[esi]8 h+ G! d6 u2 o& O4 v
out 80h,eax7 g9 i; }$ @* y3 J2 P0 M
mov ebx,eax4 U j/ ]0 v2 k( Y
call _8bits! j/ ^5 a& v2 G' e- m. I" j5 L
jmp Exit# l) ^, @4 r5 \. V
RWR:% L% ~$ z$ s/ ~, M: \& j
call PSP 1 C3 Z6 z& w; i2 {
call crlf $ J3 g) R" \4 \1 ?
mov esi,ebx
+ @, w/ ^% Y" O3 f- d mov eax,fs:[esi]
) U, r3 U$ s4 g8 a4 y out 80h,eax
0 E H. I% c6 c6 X1 D$ r mov ebx,eax
- q: Y+ W/ N8 q% g ^9 e6 B R; D; } call _16bits, g9 m7 k* U# T/ P# E
jmp Exit
! j. [3 {: U! GRDR:
! k7 a0 J7 w" N! W. F3 s7 W call DPSP
1 N* h! [& |/ J, f# C, F6 n: a call crlf . t% p, i7 Q9 d8 {
mov esi,ebx
/ p; Q$ e+ f" Y9 |8 Z mov eax,fs:[esi]
( m6 T. t# r2 `+ o7 z1 ]: c out 80h,eax
. n. h8 H. D' u( ^6 r0 S mov ebx,eax
) c d4 Z/ `4 W+ ]5 f# a( g call _32bits
$ r* I( c2 X4 j( K" `* M jmp Exit
) ]+ y& y+ L: x g5 f' [5 z' V;------------------------------------------------------------------------------------------------
: z( n; f( p$ w2 {$ I" RWBT:
+ M6 r) s) M a) b( ~ jmp Exit7 ^( }2 n& ]7 i0 @. u- T; L: j
WWR:
/ o o% X# u7 e2 J- i$ U jmp Exit2 p$ K. M0 z+ ?( i. o
WDR:
7 f, A6 P/ ?+ L" d" V/ Z! U$ i call DPSP; R; Q1 w6 I8 U' T( M
mov Maddress,ebx
/ q" T6 N/ x' T8 P/ v4 ~3 k/ `$ x& l0 S call crlf
# b7 f# L% K$ b. a3 w4 M call WDPSP
; w- q& p2 q) ] l mov eax,ebx
5 V) T: g! t+ R. c9 ~ mov esi,Maddress
0 Q9 Y W2 J+ W* o, x& P mov fs:[esi],eax2 R1 R3 y5 |' \: }9 D' R# T
out 80h,eax) L, d0 |* @7 J& Z& l# W0 i1 ]
jmp Exit3 A6 @! I( U/ q% A5 Q1 D2 g
;------------------------------------------------------------------------------------------------
: {9 e% ?1 V# T0 @Exit:
/ f5 a: k, [& t8 u5 `4 _* M2 @ call real_mode ) {+ b. a# j) n9 a1 X1 L, x
pop gs" u. e: s$ T! r* I
pop fs
! d1 O3 A$ G: x9 K2 w, K pop es
Y9 k1 u2 E F pop ds
Y$ I7 Q9 Q% k* H# R U7 G .exit! T8 u, G/ R: X! F
;------------------------------------------------------------------------------------------------ ]& k" f! S# R. l+ G" ]/ p
big_real_mode proc near
0 X- c, Z% j, U$ Z7 u5 c in al, 92h. y9 n3 F) ?& A( w% r# K o
or al, 002* ?% B; h7 y* x7 L5 u
out 092h, al7 p. v5 C9 l8 y# b& F, z2 V
out 0edh, al
; u4 q! w0 z! j/ |- D cli, G- K5 d3 j( t
mov eax,DSEG* S2 i7 N! s* o V1 L: d! a
shl eax, 4
0 A i9 Q, H9 E/ X6 h: D$ j' _/ R xor ebx, ebx
9 G7 z5 v' b' k" @- g7 E" v mov ebx, offset GDT_def4 e t1 f) r. q9 h' w8 P3 ?& j* H% I
add eax, ebx
* I; B) R0 ?3 e+ D/ l mov dword ptr GDT_Addr.Base, eax
4 {' B# a3 v% U7 D( a/ O: y lgdt fword ptr GDT_Addr* N5 W; u" G( R4 V% y
mov bx, 8( E- v$ L1 O" u- |
mov eax, cr0
! H/ K, _0 V/ N or al, 1
% B8 m! r2 J" Y- r mov cr0, eax
$ i% C# c9 W6 i1 N& l jmp PMod
4 i0 z; l9 L( M ^) H' {. fPMod:
/ G! p% i+ f; j0 G8 W7 a mov fs, bx
a! r3 a0 q+ l- c) l6 w& ` mov gs, bx
- [9 l" V1 f% m8 H5 I& G: R' I mov eax,cr0* k. [# \* R. r$ ^/ O" k
and al, 0FEh& k4 d" C; a& [, ~. f4 V6 @& @
mov cr0, eax 7 R) S/ ~( f) |8 s4 H
jmp RMod ]/ [ j: n7 w6 k* P: X1 s& X: H/ _
RMod:
+ z6 _6 T, B: q2 N# [! J0 F xor ax, ax
( D: W; x( j7 A: S& i& Z& S mov fs, ax
( m( j( ]! D/ z5 Y( t9 S* w mov gs, ax
% O( z- O7 r, W% d* `" Z, l sti ; N9 g5 c' ~5 t4 i3 h
ret
& i( a6 e: T. M4 @1 ]% \# X( y- Sbig_real_mode ENDP8 y0 }0 W$ |" k9 r3 n
;------------------------------------------------------------------------------------------------
" L4 W, d4 n& I8 m+ }6 ]1 Wreal_mode proc near
' z" F9 \4 {% \# H7 K9 V' J' ~ in al, 92h. w; T) }. K: Q. X, h
and al, 02
, c: i N0 z% J9 S out 92h, al , A+ R' r" n+ Y) N( A
ret
2 g* f5 q8 a- E" j3 sreal_mode ENDP
! W C4 C+ o5 P; y% l/ V3 C;------------------------------------------------------------------------------------------------6 ~0 S' N1 A' J$ N2 g: M# o
Get_Commandtail PROC near; ]0 D! S% `& A
mov ah,62h 1 x% l/ u) u; u
int 21h& B3 Z4 [, p6 i! o* D: J6 Z
mov es,bx7 p1 x1 ?7 T0 z
ret, r% j4 u+ \) C9 N7 P8 I
Get_Commandtail ENDP a- N( M/ G8 Q$ ~9 d t
;------------------------------------------------------------------------------------------------
# H3 e( w: C, t" S) o; cPSP proc near
* e# I: ]2 `2 S, ^1 Z xor ebx,ebx
: D. g# A: }) t& p T1 e mov si,89h# {# Z; z+ s! c* X7 O. M
mov al,es:[si]6 a/ D# j# R+ {+ x) V
call Change' ?/ R) I( o: N& K* J: n/ i! L/ I4 u
mov cl,4
' {! t7 H# @( k, n0 G0 B& ~ shl ebx,cl
6 {, U5 _% K6 j2 Q$ M add ebx,eax
6 K0 T' \& o& d. y mov al,es:[si+1]" e$ `7 d% V2 z2 }* Z7 s
call Change+ N, N( ?6 R8 ^
mov cl,4
, D' Q1 S0 i1 @0 p; m. X2 j shl ebx,cl
* d+ q- k8 C% V2 L+ L# S& b add ebx,eax8 J3 G. |( X. `8 d* }* n5 a
mov al,es:[si+2]0 t+ S1 B/ ^3 P5 R* [5 H
call Change
$ `# `: g8 N2 q( \1 `7 }# k% }: |8 t! n mov cl,4
; F0 H3 `3 [ v$ Y/ Z! A shl ebx,cl; X) `8 q! s8 {* F- L0 F
add ebx,eax+ V0 B& |* r3 D: I0 M
mov al,es:[si+3]! p+ ?3 T% B& Q0 M
call Change
8 j( O: D! Y9 ?3 `% k mov cl,4
& ]+ f- p+ [* H7 ` shl ebx,cl
4 u# q& A$ ^) [% \1 Z add ebx,eax
) o2 s( s6 L7 l mov al,es:[si+4]
2 C) c! z( s3 ^3 a call Change
! {# ^: d$ [5 w mov cl,47 F# e0 C) h9 H4 e- d, c
shl ebx,cl5 C6 [5 Z* l+ b/ g( v1 }
add ebx,eax
1 J, r/ g( A4 t) R6 T mov al,es:[si+5]' k: ?, p& `& y4 Q$ N
call Change3 V- f' f; p/ |8 _. K" _
mov cl,44 V7 p/ Z6 v6 [4 z6 H0 E
shl ebx,cl
( y Z5 ?: B5 W+ x6 ^ add ebx,eax
9 ^; \. ~; b. C" _4 [ mov al,es:[si+6], U) }8 Q" Y g9 G* Y
call Change5 o( H3 B+ R% O
mov cl,40 y* W4 A j4 N% C
shl ebx,cl1 r+ H$ \" V: X/ _. f* G. L) q. M: R- M
add ebx,eax, }) Q% ~& l9 Q( P4 {
mov al,es:[si+7]( O6 o' j) Y* q$ u/ E0 G* ^
call Change
L2 N" h9 W) J6 { mov cl,4
+ q6 O2 w8 J- }; f' r1 D shl ebx,cl5 x7 `! d2 j/ @% K/ I9 q: @
add ebx,eax' L V, D' q; B$ m
ret+ Z4 f( Z/ ~( r" B# v `% `+ G1 D
PSP endp
) ?4 c9 ~, }$ l# \9 R$ G* ~9 R6 F;================================================================================================# Y' ?- I! \9 w& f( n% [
DPSP proc near
E. h6 u1 K) ]/ A# u4 G xor ebx,ebx
$ p# l! D& ~' h* Z. P7 n) H mov si,8ah
. A7 z0 I3 ^0 T3 n4 ^% `: z mov al,es:[si]
0 T; ]$ c @$ O/ U call Change
/ p* O/ N) O4 G' _4 B6 L5 N% N mov cl,4
3 E/ O& L0 l+ S8 r, Y shl ebx,cl- @& _( u. x. A9 H: o' P" r7 \
add ebx,eax
1 j/ X0 Q5 U) n# ^! o1 c mov al,es:[si+1]
/ C4 R" F R( W' `2 R& B: n call Change
1 Q' x; {' z4 R8 Y% U2 W mov cl,4
& S' r5 }2 V1 Y8 b2 h shl ebx,cl3 ^$ T J" x: m
add ebx,eax% D+ }& G! L* [. l
mov al,es:[si+2]- ]: v N* C3 k6 Y- t+ f! Z
call Change7 |2 t; h3 `) c' W( Q. b; d
mov cl,4
, M- c/ K9 v6 L+ s( Y+ J4 j shl ebx,cl
+ U5 w$ [3 E! i! k2 g, E9 R# @ add ebx,eax' e4 r& C; f/ T9 S7 \2 o2 z6 O
mov al,es:[si+3]6 p' U( X$ [3 p8 I6 U5 x
call Change
& E# z. K* j7 x# N mov cl,4
& ?) t+ M( W+ @4 U shl ebx,cl
8 m) M" S5 [, V& i add ebx,eax
% t4 Q& s# }3 K0 p" _ K+ N# k4 Q# k8 A mov al,es:[si+4]1 \- l$ P7 |% ]" y
call Change
! d" X# W, P+ {& \% H% R mov cl,4
; C$ V9 I5 M0 K9 k: ~8 t shl ebx,cl7 v# D/ k! Z9 a! a
add ebx,eax
- ~5 `/ C0 W% M, g' O% j mov al,es:[si+5]& j9 p. ^) d7 y6 t3 s
call Change* F0 \. b% }: _6 ?* |! E2 U4 b M! w7 C
mov cl,49 p8 f b* {4 o5 I6 e" s
shl ebx,cl
. e& H2 f# ^+ b5 q9 r add ebx,eax
3 Q) [1 n6 |8 V- i% T5 o mov al,es:[si+6]- v4 `7 W7 n9 w7 [7 G
call Change. V% c, k, v6 p0 s; n( E- ?
mov cl,4
2 x' X: l" Z4 x shl ebx,cl, }, B9 f5 l! O* b2 [/ I0 S( ]
add ebx,eax
- c Z: I o/ ^% D5 E8 t2 A+ d mov al,es:[si+7]
6 s! |6 y/ ] J0 s call Change
9 P6 G! w1 \1 O9 N/ R! a' P mov cl,4+ C" L |( j8 F3 k+ S3 T
shl ebx,cl" v" D5 b. m7 }% A( s4 [3 |# T
add ebx,eax
& n9 c U8 Z5 Q: e ret5 W9 A/ p2 B6 K8 h( F6 d n$ e
DPSP endp1 \- B! a# D x# G
;================================================================================================
& O |) {" m5 [/ X0 {# DWDPSP proc near7 J5 U6 A, S( R& N
xor eax,eax
, t" C& |3 U- H% P xor ebx,ebx$ n- A1 ?$ b+ Y9 C
mov si,93h8 Z( |" a- b0 Z! Y& Q: T+ m1 G
mov al,es:[si]3 ?6 P8 X( z- C# T4 O2 I
call Change
5 a0 |( P, g% m% X mov cl,4
! z) p* B. p% x# ? b" |6 d shl ebx,cl7 v( g- [1 q5 G2 J& X
add ebx,eax
6 C2 b3 J1 F3 Q) S X mov al,es:[si+1]- O& [4 i: a/ b, z/ o3 _3 }! M: l
call Change
) s/ B* g4 p+ \! c0 c mov cl,4
2 f" \. i$ p; y& F8 t0 M* {2 L shl ebx,cl
- C2 V* ?7 G& Q0 Y' S7 w/ v add ebx,eax
2 w/ [4 a. n) [' Z mov al,es:[si+2]7 D: B0 d: m3 T4 A, _
call Change1 @* ?- u! ^, D* p) d. f
mov cl,4! E0 y2 Z6 z, V# p- ^% f
shl ebx,cl$ z# O8 F2 b8 D; N& C/ J
add ebx,eax' f/ A/ @& Q4 U- h9 P
mov al,es:[si+3]
" `0 Q% A( H+ ]- U call Change
( @3 {1 Z& n" b: b$ h. ~: b+ y9 l mov cl,4
5 _, W4 h$ f5 L; K shl ebx,cl
* i/ n# A+ W+ b0 ?% L$ T, c. y add ebx,eax% } k1 ^$ d% H# g
mov al,es:[si+4] I8 h9 M9 [7 h$ Q2 H7 k
call Change& o7 e9 _1 ~0 O+ r$ ]( M2 m" j2 D/ }
mov cl,4, }- ^+ J' W7 |4 d2 I; |% F' @
shl ebx,cl3 N% ]9 M& ?" y# I4 T3 q4 l/ k
add ebx,eax$ Y7 Q8 P' Y/ a {
mov al,es:[si+5]
2 H1 m8 I, W" A L* F call Change
% k& [5 p0 _4 r/ ^; D mov cl,4
9 H$ i6 _ P" i7 m4 E7 B. @: V shl ebx,cl! E$ }2 v/ q% \
add ebx,eax j; B H; A% U1 _/ m5 M! b
mov al,es:[si+6]) d1 b; b* ]0 O) r' k' ]6 v: V
call Change5 U: w Y( Z' `- e7 m( T% N- }
mov cl,4
6 b6 e2 V {& N3 ]: g' v5 g shl ebx,cl
# [7 X, i! x' X4 F, }; Z add ebx,eax/ w- h4 p: z4 H& [3 h
mov al,es:[si+7]
* E% b+ D' f1 {" M call Change
, ~9 H. A/ t9 ]: f mov cl,4
( N# }7 c/ z: ^" |) m1 i3 t7 J shl ebx,cl
/ R+ g- J( P, C2 f+ c/ w add ebx,eax+ `5 r+ Q$ O; L) v$ S4 \6 D( y
ret
* C$ A% \( G& J$ u' }0 U0 R3 sWDPSP endp
) T5 R6 T7 `# A2 i O* Y$ b8 E;================================================================================================
" h/ ~* u; q4 {1 P+ n- w4 vChange proc near
& Q/ p# G5 b0 r0 g" EA: 3 T$ u4 |& t) `# L' U
movzx eax,al
* c$ e% I- r& p3 c2 b mov edx,eax
! i. T5 D0 n' l9 x/ A8 L cmp eax,'0' 4 i% u, A2 W9 j Y
jb A3 p& Q' L0 F5 A7 P
cmp eax,'9'
! S. V7 j$ {% e4 J+ d5 H) F* l ja B
5 C7 r( p$ Z& L. G O6 i sub eax,'0'& V% \+ E$ V- a) G& o, ~
jmp short E
2 P+ v* I4 v" H$ M6 y1 o, ^, dB:! } N9 q" V8 t4 J- x
and eax,0dfh
/ {7 E- c6 }( l" g9 p' @$ L mov edx,eax
7 b7 m& ~ h0 ^ sub eax,37h 6 Y; k4 F. v/ a
cmp eax,0ah$ m, ?$ {% l6 @
jb A L6 s( F# p/ c, D8 d4 ~
cmp eax,0fh
- z0 }" y6 V' q, o, w ja A
2 o: l. O% F9 w; }E:
+ Z0 t# k% W7 G/ P8 ?3 ]( Q3 h* ^" w push eax
8 V; G# w6 o+ j- C" T z) P8 b4 T call PRT
7 I7 {; t# U, v pop eax
0 m2 X% w1 n1 f* ]0 FCExit:
9 p/ _& }4 a# e1 K1 v" } ret
* l& U/ G) ~9 V6 p9 Z$ A1 mChange endp# V; f9 \. G8 o3 Q2 E8 y: z
;------------------------------------------------------------------------------------------------
1 s+ G$ z1 q8 s8 \* w% I6 _' ]+ ZPRT proc near5 u' A# v5 O Z6 M
mov ah,02h
5 X& d% c% h* p' N4 { int 21h. M' t l: O g+ P' D
ret9 P. {3 b( z* w4 F8 @' s; c# ^
PRT endp! }9 J; T" J" {
;------------------------------------------------------------------------------------------------( g1 Y: L& k" F& H% ] G
crlf proc near# Z- L t/ O( b" {
mov ah,02h
% s0 G2 O$ L% R9 ~/ C! x, \ mov dl,0dh0 B9 x! V3 k0 P
int 21h5 O+ p: D" \+ F! T+ m* {
mov ah,02h
+ {+ O8 G- V# x mov dl,0ah% a0 r9 |1 c( s u4 s; O. s
int 21h/ B: |/ d: b1 F5 X# {8 z% l0 B3 y
ret6 {# y0 U) v* K; Y5 C
crlf endp
* o% W( @+ j; q) ^: w" Q;------------------------------------------------------------------------------------------------$ t' t# ~' C3 n A9 L' C
_32bits proc near" | `5 E4 t# R! P9 H
pushad8 _& Z3 }( @7 |& g n
mov cl,4
, k8 r7 L4 r" S; t2 \ rol ebx,cl o8 T- S: d+ i* y- E
call print_4_bits
, c( ~! a+ S# _# h# e5 G rol ebx,cl# L- F9 f* M) V9 G
call print_4_bits" P, b4 J' _5 J8 e+ {
rol ebx,cl7 G0 c0 p) l4 S" l- Y
call print_4_bits+ p( k3 V0 z! e8 \0 ?- O6 M
rol ebx,cl7 L& j4 A1 ^% r9 E
call print_4_bits& Y! M; w3 e/ y: N! T4 |* u* p4 g9 K
rol ebx,cl; T$ p# b* m* P) e0 q; q6 e# ^
call print_4_bits
3 Q+ k& r3 t z rol ebx,cl% |3 k* g t2 j$ J" y; h- ?
call print_4_bits
, B4 ^- ^6 o; ?% Y( q( f) g rol ebx,cl5 z. i/ Y0 T% j) g
call print_4_bits
( ?7 h0 ?1 X" G3 H rol ebx,cl
3 p1 U" Q; O# L6 M+ c call print_4_bits
% ^8 P4 e6 x8 ` rol ebx,cl
% M* l! h. e! f% z. H7 Q7 i" ? popad
2 V$ w4 O& m) M7 G$ x ret
4 }- ^4 D! A, l& _, m- z7 T& Y4 }_32bits endp
3 j/ ~/ J" ?6 J1 e4 j+ `6 [; r;------------------------------------------------------------------------------------------------
$ o1 R* B$ ^* c. }* Q- K' A0 Q) }_16bits proc near3 ?2 d, j" J$ G$ B
pusha / g& z$ R4 ?: v b
rol bx,cl
, Q1 ~6 i% D; g call print_4_bits
% C% o- h( n/ e) p) t& Q0 Q rol bx,cl y6 x% `" U+ K7 z i
call print_4_bits
7 N' J) q' `9 T rol bx,cl
6 [" z( [4 t' O/ A( f+ d2 _8 O: { call print_4_bits
8 E$ N$ k% ^( T: Q8 P; F( W2 M rol bx,cl$ O' a# J9 R5 V
call print_4_bits- {0 x% l5 q) m: B5 d
popa
$ U4 w# R% @3 i5 Q ret9 D8 u9 @. c4 S5 \% q0 c
_16bits endp4 F- {4 ^( A+ w, H% S5 j
;------------------------------------------------------------------------------------------------
+ g1 D/ C5 i2 V/ V/ y_8bits proc near) Y/ O7 W: \9 e0 h% }! `& S4 R! n
pusha
9 W' _, @/ t9 m; Z( E. Z2 x) s( E rol bx,cl
. |- x1 K6 e3 o! @* A& o call print_4_bits. C, v' e2 P# `9 R: v6 F. |) K& }
rol bx,cl
9 A9 v2 K% F7 u# [' g* q4 V+ n call print_4_bits
# [4 G8 [& p: X2 g6 w6 x: ] popa4 p- O& v. c! T4 } Z, S" E5 ? ~) u
ret
; W6 B8 h) d! U& O9 ?7 g! d_8bits endp! j4 G$ v7 y/ i$ f0 v4 `* E% ~
print_4_bits proc near5 M- I5 {7 F6 l% n2 D2 Q: v
mov dx,bx5 f7 G$ w- I5 }6 A3 w j
and dl,0fh4 W1 k& Y- L( f
add dl,30h
* r/ l r. O) {9 C cmp dl,3ah
# R& R3 j4 V& ? jb print
) V; F% ?4 b0 { add dl,78 ?7 d( P1 }& U: U# F5 v; l
print:
! S4 F- ]" u5 Z- j% i5 p9 _ mov ah,21 R& K9 w9 H0 I! C. q: G) B* j
int 21h& T# F9 M! ^6 t. g9 |
ret
r0 i$ a3 `! M3 q2 ?6 w! r% Gprint_4_bits endp
! A* U+ ]2 m/ U( T _- ECSEG ends* m7 F$ H6 X' ]% w6 F
END |
|