|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address) e) T* |% \) k) J9 G4 W
+ @, J3 B' O- r5 }. l則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
/ k8 q5 G$ S9 |: B3 g" m1 i( n# A& V2 h7 o! n6 Q& n3 _/ e
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
! _: s9 E+ ^* o6 Q! O, ~! |
7 K8 X9 ]+ [% C.model small
P# d& A) U5 W9 l" D: k* j2 x+ ~. d.386p
& o2 T. V0 x$ S+ h, U) O7 CDSEG SEGMENT USE16'data' 9 a; Y6 `% ]+ B1 a' Q; h6 z b9 O6 u
" \1 ? `8 p& J# vDESC STRUC
7 J/ W2 l5 }( k/ H" Q LimitL DW 0
) i8 g v6 Q5 M/ I& T BaseL DW 0
; q, n9 b* \- `4 i, l- r BaseM DB 0
# Q% ~. G. \: O* ~* X Attributes DB 0 ' P. O, b) w; }, I
LimitH DB 0 2 l6 i( B4 z* q1 f. p/ N+ P. [
BaseH DB 0 : Y! M/ D1 m# u8 M" U" w) j
DESC ENDS
' w7 I2 J1 ?) o' S$ p& v8 g+ l- g2 J$ h
PDesc STRUC
) ^- T6 G3 ^ O- W- I! h Limit DW 0
2 B5 r( |0 {5 p7 B) d' {& m Base DD 0 4 o" \: N' x A. {3 v; }: v
PDesc ENDS
7 z1 s4 o4 @* k# X% r X% B$ J
* C# T$ X! y ^! K! kGDT_def Label Fword3 u4 l# [! W& c ]- x0 e* r. T
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>" r7 O. P4 I1 E& h1 k8 m6 k& C
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
5 k3 i9 o U- T- x0 tGDT_Addr PDesc <$-GDT_def-1, >2 Z- v" L ?: [9 B: ?/ [
: w0 W$ t) O4 M$ kMaddress Dword 0
: W# \+ x( c$ \6 |( [& |6 B1 w4 s. w2 U* T8 G, l' F6 I9 Z
DSEG ENDS
4 O. z+ `6 a, Z' F8 x6 L9 zASSUME CS:CSEG,DS:DSEG! K' q( [' W# W" r6 e1 [# l$ @9 g
; c6 j4 V8 `; s, o0 k B( q+ ]CSEG SEGMENT USE16'code' ; O7 K6 M; Q+ k: M4 a7 _3 @
push ds
7 q! t' j+ u' h: s7 \2 R+ H0 t T push es
% {" |* z6 s9 U6 K push fs' ~8 a3 R" i& s D) F0 j
push gs
, n+ U2 ]9 o4 m call big_real_mode
+ D' `* R( o5 @8 S# X& l call Get_Commandtail
: w" l T! Y1 { xor ebx,ebx
* `. J7 Z% z3 v! ]+ o/ t mov si,82h
% w( ?2 `2 S' H0 n# E; c mov al,es:[si]
5 k9 q# c6 I6 x, l; @, V cmp al,'r'
. S: a3 E5 |+ d$ V1 w je R k6 D4 H2 G: ^* r& E; _3 H* T
cmp al,'R'
+ L- ~! b: c5 I6 y; m je R# z) F8 I7 w9 s* L6 M( J
cmp al,'w'
' n' M7 L0 \5 C! \0 J+ f# F je W8 u; y" [- J$ D+ e, P9 s
cmp al,'W'0 k7 C, [5 P4 t: X3 U$ ^
je W + F& `* F9 p8 d: S0 ^7 `
R:
. [( U! e0 b3 W; N) H1 {! G mov si,84h" {/ E, e+ P* }2 R% c9 N
mov al,es:[si]
0 V% b# S* h0 ]" }9 }9 E8 A cmp al,'b'
. ^* r. l. @' F8 }" D je RBT
0 T2 `4 R( z1 ?( y0 s" V cmp al,'B'
! n: a8 i6 e5 P" Q je RBT$ o9 N2 x6 C& n5 k6 A# h9 J
cmp al,'w'
: U0 X- ]' I7 \' m" e je RWR
7 g: o8 G; {( O cmp al,'W'& T4 ?+ L) {' A$ v2 M3 H
je RWR# k. H; ^. B2 @) i q5 {
cmp al,'d'
) G0 d1 v; W% F* Y je RDR% h4 ?9 e" C9 Q2 V! w( H
cmp al,'D'
8 Z- M% D5 ~2 \. S3 i je RDR
, } g; S% o! N gW: 2 h, R/ U" Y8 ]$ `
mov si,84h
2 |" d" T+ j: d) d8 e' O mov al,es:[si]
! [! l/ s' z& o z n4 O/ U5 Z# e cmp al,'b'
! `) w5 j' D7 E" @! ^- Z ]6 W je WBT5 S3 {% x5 m3 ~! x% q
cmp al,'B'
0 A3 i6 `2 c8 Z- C& x! r je WBT* G, }/ M( `3 r8 J$ h; g
cmp al,'w'2 Q& `0 [; \: A( D" g$ l6 G
je WWR
. C' k' z6 o0 V cmp al,'W'
! I' s5 H% K9 Q+ h) y |6 x je WWR
$ c' p6 f8 ^1 f7 w. i% @ cmp al,'d'
( O" D5 H4 b8 Y/ ^3 x) ]& X je WDR
/ G. S) \8 A8 O* ^# @ Y; c cmp al,'D'
% I' E7 T' x7 B) V je WDR
% W# }* j/ H( a) _* `RBT:. f+ ~& M$ E! V( h
call PSP
1 Y1 z& t# o- h2 n; T D call crlf
6 ~3 A0 z+ J2 O mov esi,ebx
4 g! ^& U2 Z- c7 Z% W6 V0 b& { mov eax,fs:[esi]
4 a! P$ J% l4 M0 M3 I out 80h,eax) n0 H+ }; k& q7 d
mov ebx,eax
, \' R1 [$ h& K% x1 B T call _8bits
. q$ J' Y( \4 p$ |- R X3 D jmp Exit
$ _8 _+ B6 |$ b+ }6 k. f R; r2 DRWR:
$ F$ `/ _4 ?. g6 a' x; p call PSP " B9 |. f( I' u. q! _ o5 f* O' [
call crlf
8 }6 {' Y' B7 x( G" ?' { mov esi,ebx) o2 Y, Y7 B8 s4 J
mov eax,fs:[esi]! j( V \& D$ C; o8 R [
out 80h,eax
7 {( [2 E9 q! L( z mov ebx,eax, B7 e3 |& i7 l2 y% G, `' Y
call _16bits
- @* c# x/ H) R jmp Exit
; T# `4 _/ p4 WRDR:
" {) d( J2 D9 I& B1 @% B call DPSP
: {9 l* r1 i# P0 F6 b call crlf
2 `) J# e" O2 l7 a8 ]) A: [, ^ mov esi,ebx$ R1 \! X1 b5 f: j
mov eax,fs:[esi]5 v8 t- Y$ S' A' u6 f( Y
out 80h,eax" z! U1 r9 M# a, T: I/ i
mov ebx,eax7 |) N* c5 N# z5 j: s
call _32bits+ Y9 _- p8 k$ c" F
jmp Exit
% Y. m/ f$ m, N6 T;------------------------------------------------------------------------------------------------
6 A; l: ^8 ]8 u. bWBT:; K6 h) Z5 Y8 c5 ?1 X
jmp Exit% z- e1 B" L- k) Y, Q
WWR:
?1 V; H& H) W/ X. A4 q jmp Exit
2 V q9 w) Z6 i4 }1 n5 K5 BWDR:) g4 G6 u3 t8 k
call DPSP7 m) M- l$ {- S7 D& s. m
mov Maddress,ebx 2 e- k5 N. T+ N) [. X, m" B
call crlf; F* K5 W6 j7 N# v: a. e0 H
call WDPSP
+ K1 {2 m0 @( g ]* ] mov eax,ebx e6 O U: M( k/ i- w7 R
mov esi,Maddress ( F( S) [, S% C; N2 N
mov fs:[esi],eax
( d3 w! z% K/ w1 i, {; o/ d out 80h,eax
0 m- C6 t a: C6 w: `1 _% d jmp Exit) k2 d4 B! D* |; o1 i9 ~/ J
;------------------------------------------------------------------------------------------------ ( H8 j2 N3 S. d: A
Exit:
- w6 V) N, U) Q7 r call real_mode : R! a' D6 x4 F9 m% d+ H. C! [
pop gs
& c# H3 m' J6 J! q, P. a pop fs
, Z+ I6 a5 f2 U w. N- C/ f1 e4 D pop es
0 {1 F& l5 Y6 e$ u8 P) N pop ds ) t( z; {) s- E8 s
.exit
6 _5 ^% O; @' w: E- Z;------------------------------------------------------------------------------------------------
$ o1 x2 x2 d7 ^# x. H1 J& hbig_real_mode proc near
5 D3 F( L, ] o( H: t- M in al, 92h# S2 Q$ X7 X, n
or al, 0023 e3 O7 S7 V; n; B+ x3 H* Q7 V
out 092h, al2 v( ~1 S- q5 Z# e
out 0edh, al
5 y' i7 {4 K3 l+ D* T cli: r/ z; z% k( e- {7 _) C
mov eax,DSEG; |3 d9 F+ O- f. |! ?9 n
shl eax, 4$ I, \" D6 v; X; R5 o1 x/ \
xor ebx, ebx
& j; M1 q/ r+ f+ t2 Y H mov ebx, offset GDT_def
" E2 k& t J) n/ O4 K" r add eax, ebx
: e, v% D- }1 E' Y! ]8 n mov dword ptr GDT_Addr.Base, eax9 ] }- |4 Y2 _" E
lgdt fword ptr GDT_Addr" Q* t$ Y, R: T, P) d- Z: F
mov bx, 8
. D8 f/ h& }0 g0 e' @+ N2 y) i mov eax, cr0( K: H% j4 T/ q
or al, 19 T# I; ?3 K4 g" T
mov cr0, eax
2 i$ L1 I5 U7 d4 p& X2 x% I2 |6 k" w jmp PMod
( x) \6 e+ U- h* v8 U mPMod:- H$ C! W6 P6 r6 m3 c: e2 d1 S
mov fs, bx. k9 Q; @+ _* L6 Y, ^& C3 r% _
mov gs, bx
: |( h4 z: W: D, J3 l, K mov eax,cr0( Y3 B! w3 K) Y" j7 g# J" i: M
and al, 0FEh
# _6 b- q h p7 y9 U0 R mov cr0, eax
1 C7 X5 t0 J2 n jmp RMod3 U* ?4 e) K- _6 z& D+ g
RMod:
# R( p8 I5 o# ?/ J xor ax, ax# l' X8 c- a$ u" {1 Q5 }+ x" }
mov fs, ax. e b1 j* X! W& d
mov gs, ax
9 o. G1 s6 j) R! y' k sti ) h8 R7 r. ^- S1 P7 f% ~
ret7 K _2 t6 \6 B- p+ }) E* l
big_real_mode ENDP( i9 w8 H1 R2 b5 Y4 c& }
;------------------------------------------------------------------------------------------------
9 z0 J/ V. W1 _( F$ w$ Xreal_mode proc near
: c& v! B# i- E& Z9 o in al, 92h
/ Z8 @2 F3 W8 i% }' t and al, 02
' {: p- h* m* L4 z, H. l! Z out 92h, al 4 X$ g! D: j1 I; {# A
ret, M- v" _4 X C1 v2 F1 N T4 J
real_mode ENDP) c8 s1 g3 y& {
;------------------------------------------------------------------------------------------------) a- T7 Y1 V. I6 x0 n. A6 c: e
Get_Commandtail PROC near* W- }% w+ I2 k: Z: m) G0 f
mov ah,62h # ?* I" a# a. g# M2 Y' r
int 21h" N; X' y6 Q- a$ x, z. G3 r* D2 \4 `
mov es,bx' o) G" y5 v5 h
ret
- d, g, I: i& q" hGet_Commandtail ENDP : j* _0 L0 n: k# A( D
;------------------------------------------------------------------------------------------------
" ? Z/ I; i' W7 J4 kPSP proc near
0 c# h! |' M a xor ebx,ebx
: ?# ~5 I/ J7 X; Q0 }& h* D, g% ]; k mov si,89h( X2 ^5 [: d$ l" h
mov al,es:[si]3 h4 h; R1 {2 A( b+ \! a4 N$ U
call Change) u7 Q* G# |. ?7 R. A2 {0 W
mov cl,4
! ~0 @3 }- h/ u) V. [ shl ebx,cl
h/ ^- u6 v' i5 w add ebx,eax
, J, c) ?7 z0 v `0 f7 j. }" e mov al,es:[si+1]; K% V& M. h: e" u1 p [% h9 K
call Change# n* S# x+ Y9 p, U B
mov cl,49 D0 g6 V! M- N _0 Q( T. p; R
shl ebx,cl/ {0 o+ v5 X6 f7 b) `$ F
add ebx,eax- S4 p6 L$ L& r
mov al,es:[si+2]
. d( Z0 k) j- H9 [; i call Change2 j4 k1 ~' w" J5 u2 j* R& `
mov cl,40 C. j( v% [+ z' y# J6 e
shl ebx,cl
/ R. }* ~5 R* x add ebx,eax
8 `% Y U# @: G! e mov al,es:[si+3]' R) Q& J2 l1 S( z, y
call Change
& I9 i; ^& \. }; B Q8 C' M% X; J mov cl,4
3 l' @8 u. h9 O/ S N' y1 | shl ebx,cl1 f& H/ O- ~( t. }4 o, w# V
add ebx,eax
* Q8 Q. J5 Z1 d [ mov al,es:[si+4]
" u1 e: ?2 O }/ u! |3 I; r call Change" w1 _+ D) y, u
mov cl,4
W2 q; O4 q: y1 ^$ o4 i shl ebx,cl3 g0 O. e: J( y0 d [- N
add ebx,eax8 {$ K! S! ^% @ n+ I
mov al,es:[si+5]) j }. C% P. M' N) z( |5 [9 R8 n
call Change( q3 c9 i& ]8 r7 q, S. s4 C
mov cl,48 w5 E7 {1 V4 L! V* j4 f1 z
shl ebx,cl) q0 n$ m5 E, h8 p7 U
add ebx,eax
Z; k7 t* D5 D! M: s V: u3 A mov al,es:[si+6]
4 k, a0 L2 ?1 X call Change3 R+ K; n9 a& V- [' N# H' G
mov cl,4
+ m+ L$ z, v6 l0 T; [ shl ebx,cl
: z+ C' H g: O v add ebx,eax) n) M; W$ @9 I0 j1 v3 {
mov al,es:[si+7]
' K8 A9 U# M8 d' f! K6 m call Change
/ T5 W% Y/ D8 G0 J1 O mov cl,4
: T1 v2 ]3 O) s9 U shl ebx,cl C, J- _0 g* z
add ebx,eax
6 e0 e) H B( j8 O, n( W8 o9 }) z ret1 N1 {( u( ^: E+ U/ N
PSP endp
0 C+ ?2 k2 s! p! r0 K F( Y;================================================================================================
% C& W9 P& F% x* N8 e8 a' aDPSP proc near
: w( @& y4 Q) c4 f xor ebx,ebx
$ K5 J2 }' E( v$ t) j: Z1 | mov si,8ah$ `9 g# F0 F! U- `3 F1 d% M
mov al,es:[si]
0 @+ @+ o$ e/ K& `# i$ X* s& x call Change
% E z1 @/ W' A5 T ^6 Y+ E) | mov cl,41 P- s6 G9 O+ x, a; v; ]# A
shl ebx,cl- h3 u$ M1 P) C, G6 g3 F
add ebx,eax
8 O; f' z! G& r( f# x2 i; T mov al,es:[si+1]
, |' o; ]3 X2 }- y3 {" p call Change3 q- ~' l+ J9 z& v- z6 \
mov cl,4
" `- m" Y+ ?5 z! M9 e8 q# u' Y shl ebx,cl! S; K9 G; s7 v& Q: ~7 B% W
add ebx,eax# c% M1 Q) J+ Y9 V' g$ Q
mov al,es:[si+2]
' t' A3 S& j" L& {' `) i# a call Change
6 R3 ^, |0 ?7 C( f9 x4 h7 J. C mov cl,4
5 e( y0 G6 m- `% N0 h; s1 U8 G shl ebx,cl
% N. v6 k8 }3 z add ebx,eax2 T& R% _% S9 h2 X& e7 W% z; o
mov al,es:[si+3]
1 k$ H5 s5 t$ N9 o1 j, g call Change
: C7 s4 Q/ A+ V$ ] mov cl,4/ A% M9 V0 l1 ~# F- V* {" E9 p
shl ebx,cl1 ?$ S+ [/ O3 |0 K8 T" L% i7 d
add ebx,eax3 Z9 ^/ b8 p3 o( `$ c1 R: G F
mov al,es:[si+4]. {4 T# E) S3 @' T1 G0 G
call Change* l# f& | j3 [- f# b& e7 j" a
mov cl,40 h) @0 G* z5 g0 m }# y4 W5 K5 u
shl ebx,cl+ w: R" b5 k" m1 e# h. N
add ebx,eax
* W" q0 F# J; b- p mov al,es:[si+5]& L2 _% b* c( t* C' r, M$ n
call Change
7 v$ L R3 h, X# E mov cl,4) k3 t8 y9 k5 J( Z. G+ W, N
shl ebx,cl4 c3 ?& M0 i: p W. l
add ebx,eax
% ^0 }" a: F) \' A mov al,es:[si+6]$ P+ Q) T" X7 f5 X9 c$ z0 i3 \0 D1 f" N
call Change3 U( R2 \- x- y% [
mov cl,4 ~/ f7 h" B! x- C
shl ebx,cl
4 o" X) [4 ^, w& y7 p$ L0 S+ F add ebx,eax4 [1 o s& o- h+ V6 [& {4 {
mov al,es:[si+7]! n8 {' B1 f) C. g
call Change* ]7 P' X+ A! U0 D5 \* s$ u* J
mov cl,4% w# g: L* L, X
shl ebx,cl
/ C& A) e/ f* v. @/ O& X add ebx,eax
# A$ Z" i/ e+ q ret7 b3 p9 a, ?7 c- E3 Y# d5 l/ u7 ~
DPSP endp# }$ J' @* t/ B' g1 w. q
;================================================================================================- ~0 {% {) |2 y2 {7 P
WDPSP proc near
1 Y+ x! _) p3 _ Z4 {+ n) c3 g xor eax,eax
. h4 P2 D M( F) Z- k7 ] xor ebx,ebx
- B* b! P: W# e mov si,93h
1 k1 E+ _3 F, T+ Q7 H mov al,es:[si]/ h( ^2 t: K! V9 y0 S r
call Change
V" x# |0 v; r1 x5 k1 l mov cl,4( V1 Z% y4 @ L# b* d/ K
shl ebx,cl
8 Z* P: H- u& o: b3 n5 H add ebx,eax
8 _6 X: u! V* O! Q mov al,es:[si+1]% n+ O! r1 N- Q, J7 v
call Change( f w" W3 u, i/ ]( t8 }8 {5 D0 a
mov cl,4, z+ P) R. t( f# f9 q
shl ebx,cl
2 h" P. C. i5 Q% {9 i- j# E. I add ebx,eax
/ H! o' x5 Z2 y9 O4 A5 E# } mov al,es:[si+2]
6 H0 f* P5 T) I3 Y2 q5 U+ q8 g call Change6 O, u- P- Y+ f0 O3 o1 \
mov cl,4$ M" ^ y+ L8 v/ p8 n) \
shl ebx,cl
! K; X7 B# H- {' S2 `! {( ^/ u" q add ebx,eax
8 \, c9 X% e- U9 r# U mov al,es:[si+3]
( S) N$ B/ E0 e1 k7 o/ _+ J, H call Change
# S3 c" g" n4 `3 U0 F mov cl,4
: ^. B% m3 J6 x! H, I+ ~4 o shl ebx,cl+ p- r! a. f+ s, X' d
add ebx,eax; {- S# ?. |& K) A( z$ ~1 a
mov al,es:[si+4]/ w( \% B- R& E* D9 v( G. j
call Change( J$ c! f& I1 F
mov cl,4, g' _% {2 [2 i# S
shl ebx,cl% y2 `+ c. q% l V6 v) R
add ebx,eax- T: w3 q# D- R% j w
mov al,es:[si+5]
, \/ J* i* W, e' j# V call Change8 E, u9 M6 E( I3 t; t
mov cl,4
7 s3 G6 q7 h. S7 l2 j* K shl ebx,cl) I& V- E' Z' z" P5 M% |
add ebx,eax
) J% ~7 u! |$ j+ A J" J. F mov al,es:[si+6]
1 `5 \$ D0 W7 i' J4 G4 @* G call Change
6 L* _" t4 w( b* x mov cl,48 s' C6 q2 V& c
shl ebx,cl+ A. y9 e1 n! R+ V
add ebx,eax& p- L6 n9 x& v2 k- I% N* Q
mov al,es:[si+7]1 ?/ q u8 P; f+ e0 p; }
call Change
9 x5 O! X0 s" v+ S! E$ E mov cl,4) N9 M% I9 [# u4 V% T
shl ebx,cl6 w1 m5 k3 o1 z6 Z
add ebx,eax
- o/ T% l1 j3 I3 w F ret
: f' f/ K1 r6 l% T- [WDPSP endp
: g9 P# Y# \# @6 M;================================================================================================) C* g! s9 ]) r+ V% [$ c f
Change proc near7 O6 y+ y& X/ L, H9 ?
A: + x6 B4 n1 K* x3 f# L; n
movzx eax,al
# I4 ]& o1 @ C7 @7 a0 h* T mov edx,eax
) Z" d# j% z& L' g. c cmp eax,'0' % L, A0 x2 y% I. ^/ P& i
jb A# n, P" O# ]$ s, I
cmp eax,'9' 3 A `' x% {, H& I7 N+ H, r& H) o
ja B
6 w. m" V0 y+ Q7 A' \0 y sub eax,'0'
8 \3 \; }+ U. i jmp short E
9 |. c+ f1 Y+ o' W6 jB:' v$ `: P$ x! W; Q
and eax,0dfh / X" N5 B& d9 r/ B
mov edx,eax
4 k. s; H" p9 S* |. R, q, i sub eax,37h & ~, P3 d1 ^0 Y3 L/ J5 `& m( c
cmp eax,0ah
: w; O J) v. u1 Z1 k2 P7 p; i jb A 3 u! b! |5 c# m0 @5 c8 N8 t
cmp eax,0fh
9 n5 B" D9 Z" ]& W9 z7 F ja A 2 x9 i, `3 ]$ A2 P* P
E:
# Y: X9 i& y4 o* P' g* Z push eax / n. h2 l4 K# a
call PRT
1 y1 _+ a6 r8 N- M pop eax
3 S0 o' X: Y) B) N+ ?0 \CExit:7 v6 u$ ]" _" `8 t1 n
ret
) ^/ P. G8 v6 _( M0 H& o4 ?6 c- qChange endp9 c9 m% ?+ `* b) d4 O
;------------------------------------------------------------------------------------------------! ]! e3 Q) r6 w/ c& N$ @6 ~
PRT proc near
8 t& f' V1 |! E- u9 }8 s9 }# T) Y0 D mov ah,02h
% [) n4 z; q$ i5 e. A3 n8 ] int 21h
2 i( Q) y ~* Z9 S: {1 }& W ret
, K, |& s& e& Q, ?PRT endp
# s0 c( E, T$ C9 y$ j" `7 ^! t;------------------------------------------------------------------------------------------------2 f. ~- l4 t. k2 W* x0 Z% [
crlf proc near* {& f5 R6 L" J0 z. C
mov ah,02h! o3 ?3 N: N0 r: _, G
mov dl,0dh4 ?5 U0 j# `2 e8 S) T
int 21h, J: `+ z4 y1 l
mov ah,02h- D- y5 h3 c8 D* o
mov dl,0ah
4 }% g& g9 r1 Y* O h+ G) S) N& N int 21h! {1 O) D& U3 F" O- Y6 I
ret5 }8 K) _0 Z0 f2 h+ Y* ^3 [$ r
crlf endp
! Y* \1 j$ d4 X/ C3 H8 t;------------------------------------------------------------------------------------------------/ O7 e! j ]# k2 [0 R9 \' y
_32bits proc near
4 g+ W! H( T! i6 r2 m pushad
* z" x j# L- X/ w R- ] mov cl,4! [. a9 y( X9 ?2 N- x7 \9 m
rol ebx,cl
5 t- F o" t( ?$ |, o' a call print_4_bits' h, @5 M: ^3 [& p
rol ebx,cl! L; u( r t; [5 w" A+ C7 X
call print_4_bits
9 S2 j5 t( X6 @& X rol ebx,cl
; \! Q. L0 c8 p! T. V call print_4_bits
" \5 o/ k: t0 u7 S rol ebx,cl4 Z( q& Q& X Z
call print_4_bits2 L Y7 g' n; \
rol ebx,cl
+ o/ \2 E o' T, u0 E call print_4_bits( R0 b2 W, N! b4 ]
rol ebx,cl
) C& e7 H" l' P call print_4_bits
) V! D$ A# P+ y1 I# W) J( } rol ebx,cl
) o/ g0 H/ R; ~$ w) ^8 J call print_4_bits
; u s; o8 s( c rol ebx,cl
7 e, V- a9 q7 H call print_4_bits
4 X5 [+ P3 s5 B1 Z( y+ ]7 m+ c rol ebx,cl, x% y( s5 u0 B2 q7 @; j6 F' Q
popad
0 j, ]# i, j2 f% y ret
" x. z$ e6 v% D/ f_32bits endp/ @( S# `- {2 u- x% g
;------------------------------------------------------------------------------------------------
# H" R7 Q* o5 Z_16bits proc near
5 [ Z E1 b6 b/ q( w+ i5 S; x7 H& k pusha ; Q) _4 @9 K8 X- `, F: y: E
rol bx,cl0 _/ M, c, g! q
call print_4_bits# U+ |" E+ t P5 g
rol bx,cl m F% R3 |9 {# [2 e) A, Y6 O
call print_4_bits
& b! o& R! k1 u* D8 }* b rol bx,cl
( H0 b9 z6 w: L6 x: j9 q call print_4_bits0 x) V' Q& g$ F L$ `
rol bx,cl
1 V' C6 ]# h- O0 J call print_4_bits
3 _9 U/ S' T$ n; q5 z6 A popa
7 z6 }* C F8 L; D ret, K( |& R7 P1 `2 Y
_16bits endp
2 I3 n9 ?! ~ h, ]/ L3 K- W;------------------------------------------------------------------------------------------------
u9 S4 ^9 ~4 y3 F5 w& C- u+ g_8bits proc near
9 H: m) Q' v! x% [ pusha
X4 }/ q3 Y) L" b" h rol bx,cl
9 i8 r& w* C4 o) Y* p# L call print_4_bits
* @9 \/ m2 P: L1 {! P5 B; c- x4 | rol bx,cl$ N0 Q0 q7 c! M" h% y
call print_4_bits
$ L& W' {# |* X popa
1 X& s. p% ?# i* m# u! x$ @8 E5 ?, C ret* g, N) ^1 ~- |6 c* Y2 Y& u
_8bits endp
# f/ D; P# w' z" |1 W8 kprint_4_bits proc near
- K2 O1 U+ ^7 Y0 c mov dx,bx) e3 Y; ]& r/ ^
and dl,0fh
6 p* ?8 E- C1 R% Z( l add dl,30h/ a4 D; g4 s, ~6 G
cmp dl,3ah
* U3 g+ c3 M1 V7 X jb print. L9 H: b' M/ S9 X) x
add dl,78 F2 {$ `# X% x- y
print: 7 B! t8 e# k0 m* ] A# [
mov ah,2& j G% ?! O6 O9 n$ r
int 21h
$ y: H( w/ `+ k) O( q ret
7 l. C3 Y2 @! k# xprint_4_bits endp 8 m3 ]% Q5 y# @1 N
CSEG ends
1 @, ^ e0 _5 e! VEND |
|