|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)
3 F% T2 L, \/ ]' U. @$ S; C# n$ x3 K# p8 }' t& g$ {
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
$ L$ N. h, c9 Q% l& v: V# `( W' a) \& Y% S
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝 6 z- B' K2 w; _5 R- G0 E
" R$ y# \7 f4 [. e.model small+ k0 ]. T# F) h6 D. G* S
.386p: t' h& r) W, D, B* \2 H+ h! w) L
DSEG SEGMENT USE16'data'
2 W; g5 S2 V" ~. V! Z6 T/ M2 k& H! ]& m' t5 n
DESC STRUC
3 ]3 P4 ~) X/ L4 j# ]: w LimitL DW 0 : j2 Y9 l% Y) D4 N
BaseL DW 0 # l. r3 e0 v/ h: g8 z; L
BaseM DB 0
1 _: G6 B6 o8 e$ d y Attributes DB 0
& c9 |) V4 Q/ ^3 X/ O LimitH DB 0
# X) B: R( R( p7 B, U# v BaseH DB 0 1 Z; C3 j! r7 z- X
DESC ENDS% R5 v, V5 t9 p+ t$ R7 }" X
( G/ D( k3 S* U" A% x7 S0 A3 Y' H. a3 JPDesc STRUC
( J1 @; |# L' n- a! r Limit DW 0 8 L+ ^; F9 G4 L8 A8 }- ^
Base DD 0 $ R0 J! m) i1 t7 r- `
PDesc ENDS
" J1 l) u; ]# _' [( V/ s( u
3 G" a. ~& @, UGDT_def Label Fword
2 R7 d8 M9 n, s' dNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
) ?9 u6 E% `0 @7 cData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
4 e9 y, `& j( e5 E9 H( r" DGDT_Addr PDesc <$-GDT_def-1, >
) ^/ ]( @" H. |0 E4 y& O# k# C; D
) z$ J7 i* g8 l9 e+ oMaddress Dword 0" l4 p! R) K) x
; {1 O5 u0 n" h& J' _- y
DSEG ENDS # I# M4 C2 g z$ k4 ~
ASSUME CS:CSEG,DS:DSEG
$ r& F/ _; k3 [6 d$ G8 A+ z0 f/ P! H
( W' P+ z+ l( N. X6 {$ g4 `CSEG SEGMENT USE16'code' % e) S5 q( l/ \+ W1 {# Q1 b- _
push ds6 H7 q( U. d1 [- T
push es9 T' B3 d; p$ v% k1 O2 l9 B
push fs4 k6 f8 n, T( K+ ?
push gs
' ~2 Z! I" Y' u# M; b2 w" x$ a. k call big_real_mode
2 ~& [" M/ R( r- T) g call Get_Commandtail
7 ^7 k1 Y6 N( A- m3 i: A* S# Z xor ebx,ebx
8 `0 ^+ I$ w) Z2 d$ ?, O( y8 {0 ?- L mov si,82h8 G- F" T& \0 V" M: \0 E& u+ m
mov al,es:[si]
8 J+ R, Q: ]$ r/ F6 j8 s4 j cmp al,'r'; i C. U# q& l, z
je R6 K4 ~0 X, V v/ y
cmp al,'R'- H6 E) i8 Z, Y/ ?; X
je R
5 l4 A7 M& _- E, ^5 K3 H cmp al,'w'
6 Q! i- x* S: }0 c8 H) a! ~ je W
$ ?. I: u7 u( {5 N9 B cmp al,'W'( G: r- }, @* H/ n7 M" d! Q4 n& \
je W ) O F- `, K/ v$ Z' E/ G
R:
' O/ m3 V& ?! H/ j$ g4 O r mov si,84h
2 n5 D& ]( x: U' X; p9 S# t mov al,es:[si]; g& {: B9 \$ \
cmp al,'b'+ N$ z4 x9 S. L) P, l; D! I, u
je RBT
9 j3 }( @% Q, L5 b0 S: X% w% ^9 } cmp al,'B'
& z% X8 P8 @* W+ S( u6 U je RBT* w- ]* ]4 l- {) t8 P& `1 e1 p/ _; i
cmp al,'w'
" d& {! b2 ~/ o1 H& }4 L5 D je RWR
; E+ A) l3 j& C# B, T+ ~# |* m cmp al,'W'1 ?* I2 P% `) f# \8 m9 g) Z
je RWR
0 d7 \: \8 f/ F5 m. X$ A4 N cmp al,'d'
( R6 x7 H6 k6 [, N) t; L9 g' | je RDR# D( P3 @2 c0 s) ^. X' D
cmp al,'D'- \" u9 ~3 F2 b D1 V/ C3 [
je RDR
0 c6 l( y# y3 U \7 r" ^" }W:
' g/ a* q& f' n7 J' d: I" ^ mov si,84h
$ g. }; q* S) G7 M# P5 Q% `' [ y mov al,es:[si]
1 I% g1 c5 j: {+ U1 P cmp al,'b'
+ ^' v. l2 R6 k1 S7 G: g je WBT
# I( a/ a& G8 g9 Y cmp al,'B'$ m& S+ x: A. D- g9 P
je WBT) X" N0 N! m/ H6 C
cmp al,'w'
6 R7 y7 Z1 p3 U& R- _: n1 z je WWR
5 @, [' z! `8 o' |+ z cmp al,'W'# w+ \2 s" S* r& D7 W3 C2 \! i; O2 F6 e
je WWR
' r( T$ M5 v2 O, M2 Y1 M* v' a cmp al,'d'
) j' c( l: B. P) A je WDR" {$ V) [9 I; R- H, X
cmp al,'D'4 r8 k' s2 J% n+ D/ J8 S% O
je WDR1 _! A9 I; u* F& y# u
RBT:
! B, s' [9 u7 j) J% {. Q3 s8 O call PSP : E0 J% q' H! ^ f" I0 F- m9 L
call crlf $ e9 ?/ r# K i; |
mov esi,ebx
& R5 f: H/ T9 K* `1 ?4 } mov eax,fs:[esi]
& b- _ ]9 A$ }5 E K# b2 a out 80h,eax2 x3 B; x1 N4 a" h5 q( e
mov ebx,eax
0 V- N7 @% F' \1 a call _8bits
5 J6 g0 y9 w2 T$ q: L4 E7 a jmp Exit
. F5 _4 r; M' \5 x' g: LRWR:; ]/ `8 E' A% x- T
call PSP
8 @/ k4 w" M- m- U9 p call crlf . [. m9 q8 U9 T8 a1 s/ S/ a
mov esi,ebx; y; e) F; I+ b& R# r' X
mov eax,fs:[esi]
9 O1 r* O) D" a6 c out 80h,eax
0 v L; L- O7 S. S6 C5 ? mov ebx,eax
% d) Y& V' M4 a }9 N( j2 U' ~ call _16bits
. n. a0 f/ i7 u: z: ` jmp Exit! W; b! N V( G$ c; o: g& _
RDR:
2 B3 ]8 a W6 u# b1 G call DPSP 3 h9 T& f+ \! K# H
call crlf 1 E2 _6 O( U& ~1 l
mov esi,ebx
) }- ]. Q; F- P7 Q! w mov eax,fs:[esi]
8 R1 j3 `- p% w' H3 f1 j out 80h,eax) w- b' R5 J8 R( Z2 Z: H l
mov ebx,eax
+ }1 r( F8 [$ d0 x( N( O( ` call _32bits
9 v0 x* \# I: a: L% O) p4 t) R jmp Exit
0 P9 ?4 l8 ^; E4 G8 r;------------------------------------------------------------------------------------------------. U9 @. T4 x" V
WBT:
5 E C, |4 s. F3 U# M jmp Exit
: ^7 A+ L+ C4 bWWR:
; h p8 Q+ |) k" O/ m jmp Exit" h8 ?, H$ _' L; `. p9 h
WDR:
7 ^" M0 ?( u! |5 ] call DPSP
( e, m5 D$ U) X( n7 ^ mov Maddress,ebx
4 T% ]$ k" U/ G7 W& b call crlf
% N: s4 U7 o8 [% d# i) [+ Z call WDPSP, }' `( Q( h( v1 ?! f
mov eax,ebx' d' O& S5 A1 x: j8 H! ^
mov esi,Maddress
# @# T) L' U( A) s( m6 Z mov fs:[esi],eax
" Q/ H. K3 F% |* j( ^4 s out 80h,eax
; ^2 q' ^2 ]9 Y2 z jmp Exit5 |* V+ m* @" K3 _/ H; l1 S2 h
;------------------------------------------------------------------------------------------------ ; h! E# k5 m, ?0 V: I I% C9 I
Exit:
- H. }5 Y/ d& u call real_mode " c6 M% x ?& b# _1 \
pop gs. ]# a S4 W3 B
pop fs, q8 |0 c: R( a' q. x
pop es& e- o) U& i p0 W
pop ds 4 O$ c9 j' C4 H7 [: I% [. L7 c; A& Q
.exit
3 W o+ z+ j$ X2 t;------------------------------------------------------------------------------------------------+ I* `6 x* Z) P$ O6 B# J( E7 }' l
big_real_mode proc near
9 P6 |7 T( Z& C/ @$ B. ?: U in al, 92h
) [2 [- {! \8 u6 _ or al, 002
, v0 a {' Y! ]' ] out 092h, al5 v* T6 S8 G4 R' I9 \/ C
out 0edh, al/ Y8 q4 V' ]' w5 r% `
cli. p+ }1 d/ E! x! {
mov eax,DSEG
' ]: ~6 x! s$ ]% o' v6 a shl eax, 4
5 L {% {- v' w q" w7 X xor ebx, ebx
& T& ~" z! ^8 [# F mov ebx, offset GDT_def% j7 y# j. n: \, f' J
add eax, ebx
0 ]; @$ r( c4 o: p% R mov dword ptr GDT_Addr.Base, eax
- R6 A- m, @1 K; p lgdt fword ptr GDT_Addr
# P {. c& F( R mov bx, 8
* F3 Y* f- k' g+ G. B; u mov eax, cr05 z# E* p6 t) m4 Y" B1 j0 Z& h
or al, 1, ?& }3 ]2 z# c
mov cr0, eax: U9 u- E* Z) f! U/ R
jmp PMod
: `4 |/ }. O i {5 P0 w, hPMod:0 S8 b# s% e+ }
mov fs, bx5 w; G* Q$ p. P* B3 \ X0 {! y1 ~
mov gs, bx% Z+ h [7 P" H2 j
mov eax,cr0
, D @7 v& m8 W1 D0 K) `% f and al, 0FEh' f4 k& ]7 k0 Y4 m) d/ P
mov cr0, eax
% l2 B/ {5 r; r% d; L X jmp RMod
( ?) ~$ }- R7 |) e7 J3 n0 }RMod:
( F4 b2 C/ V4 G xor ax, ax- L, g& P8 N1 Q6 B) R1 J
mov fs, ax+ P: y$ F. u( [/ C
mov gs, ax
) ]$ R# i# N& H$ ^6 ]% O sti ( d3 g4 I6 ?$ P9 O; a- p
ret
+ ?' |9 Y! B, z2 e& f5 A5 |* }big_real_mode ENDP7 }" h+ H* i* E& G8 l3 {( L2 y# v
;------------------------------------------------------------------------------------------------
/ M" s1 H5 m3 _* [real_mode proc near! B0 g% G' `9 t5 n' F
in al, 92h1 |6 _ U" j2 r8 p/ ~! y% L# R
and al, 02- P, w, j H/ `) Y9 K4 C0 ?
out 92h, al
& w) H0 k, R# i* h' ^, D- a$ [$ p ret# D' J; @% [& I7 o# s
real_mode ENDP
8 u6 x( w) E3 d" e$ m;------------------------------------------------------------------------------------------------
. p# u; d( M. @9 j+ PGet_Commandtail PROC near
) ] Y% H5 B6 ?2 }- H( _; z mov ah,62h
: X' V0 i, t4 A3 |1 J int 21h+ \9 O& B8 `' {9 r% ?4 D
mov es,bx
. {# n5 |& C" c1 d! Y5 ] ret, c5 p' }0 B/ x* t; c
Get_Commandtail ENDP ! N* l2 p) P$ Z9 f$ C
;------------------------------------------------------------------------------------------------
- }6 c- C) K: N4 f9 h$ @$ N% y+ g' @PSP proc near" O% i& u2 W7 a: X" ~
xor ebx,ebx& U* w: E6 P7 s: L" S% ]7 i1 |
mov si,89h; n" b! G# [; H5 c8 c; v
mov al,es:[si], B4 f$ o% D% k$ y, k
call Change
N, ~$ j U7 a8 t mov cl,4+ B6 Q) r# w1 p& Y* c& C
shl ebx,cl* T ?8 m2 l! ~6 ?- f" r( O
add ebx,eax& z- h7 \$ }. i8 R! m. q
mov al,es:[si+1]
' E2 p1 a( K8 }2 ~ k call Change
7 T# x. H" f2 Z: u) d mov cl,40 Q3 d) p |. p2 {
shl ebx,cl
6 H n& F, W* G/ L/ g$ ~5 ~8 ]+ K add ebx,eax$ k& B8 T( b2 n4 @ R9 z$ t
mov al,es:[si+2]
& F e* F3 h: q- E; u call Change( ], O3 s" a, s: ]
mov cl,4# L* }2 z9 d5 \' [% L- j
shl ebx,cl
( e, I. h* N# {* l7 e( B add ebx,eax: u" e" J, G1 T" m* u3 f8 l
mov al,es:[si+3]* s, v2 v+ p5 I- I$ R; N, n
call Change4 i" j( C6 [: f
mov cl,4
3 ~6 N% q+ ~+ J u$ Z% K; D& f* X shl ebx,cl6 @& w/ l+ z) g% p4 b5 J8 N
add ebx,eax6 }6 k+ T1 V$ m$ J. ^1 E$ @1 G
mov al,es:[si+4]
) D5 C. k! P% v5 I, s' t call Change1 F. a( U' P; L( K& |/ L# v
mov cl,42 X7 w: b+ L w) v$ X; V! L* i
shl ebx,cl
) ?! S$ d* S, G$ ?! O6 [& | add ebx,eax3 m T- i4 f( M3 V
mov al,es:[si+5]- c$ o& `4 m3 K# O) M! i( ^
call Change
7 m+ J: y6 g6 a- @1 | mov cl,4
5 L1 j. k0 e W. j5 G6 |# D( H3 S& _ shl ebx,cl+ Z# f' @2 N5 f* E
add ebx,eax
! U- |% C4 k8 l- K9 d mov al,es:[si+6]* f- q6 l O0 m9 i+ y
call Change4 Z. H+ c6 f: y" s7 T$ Y; ?) n
mov cl,4
0 Y% W9 k$ A( m( y shl ebx,cl
: l# @! k) U( h: I! D4 p add ebx,eax
& m' t7 e6 f, L$ d mov al,es:[si+7]
2 M6 G! ?; t- A) T! w' n9 M1 L call Change) g6 n: V2 O- W% N1 d2 e
mov cl,4
, S& ]. v4 J% B0 }3 |% z- b6 q shl ebx,cl- F/ ?; H4 _* M3 n4 |( c: s
add ebx,eax( }8 K) W+ S1 a5 C- l
ret" q; N4 K0 C' y8 |* ~5 C7 m" P. |
PSP endp
+ t1 u; T' R9 l5 {( {% r7 z& Y;================================================================================================! E. q G, U% W4 B9 @: Z1 s; D
DPSP proc near! x% O2 N B& @- X
xor ebx,ebx: f! }! Z: G' b* @1 I' `1 _
mov si,8ah
, B v( [6 R( m mov al,es:[si]8 X: h* r. c5 ~# D
call Change
# a- r7 @& n' v, K- { mov cl,4) k9 S' b; I1 @3 d; Z @% w
shl ebx,cl
: u/ g. ~; ]& s! Y$ F add ebx,eax
5 {: c- V9 q( R. S5 ]8 n1 t mov al,es:[si+1]
% _! @4 b- R h call Change
5 U# [% k# l" z7 C. k W mov cl,4/ Y' r+ Y! B# w! n
shl ebx,cl+ ?0 O9 o9 \! z& B$ f: k `
add ebx,eax( H# D4 n/ e- t0 Q+ Q$ }
mov al,es:[si+2]/ L, ` ]* ~* N) @. y! B
call Change
' A9 g( t& ]7 ^* \ mov cl,46 g5 c/ A' o7 s: ~, A. u& J7 V
shl ebx,cl- X" @! l4 C& O4 @
add ebx,eax/ s- u; x: ]3 u0 g1 r# A
mov al,es:[si+3]
( O& T/ [( b0 Q7 E, v9 X call Change. e5 j% d! H5 }+ P' u/ Y+ S
mov cl,4
+ i* n% F' }: U+ Q shl ebx,cl
( h5 [9 c- a$ B# X( w add ebx,eax
; g3 [, Y4 l' d6 p5 G/ m mov al,es:[si+4]
( H7 D- ?6 B# ?9 g0 Q; g! R call Change
- `( w" K. F/ Y7 ~) L mov cl,44 `% ^- B4 M5 s* h2 v0 s
shl ebx,cl
2 S4 S% C% h; M: E1 u3 {- L# C add ebx,eax, ?" N/ W5 B( U4 b& Q
mov al,es:[si+5]
5 z; T& A( y+ ^1 ?6 ]9 H$ A7 N call Change4 J U/ `- D$ G g' k1 ^2 ~
mov cl,4
. F; u7 B' D0 g& p" @ shl ebx,cl9 W, Y- g: D$ I5 ~( W
add ebx,eax
: _" @! L2 t+ b0 T5 \) `5 d" g mov al,es:[si+6]
3 U; s: ^1 F% P! V- g call Change
& d$ V) t( x8 v' x [" B! t mov cl,4
1 W# j( J1 i" r shl ebx,cl
4 L* w3 B1 r0 g* R r add ebx,eax
' }$ u" l2 a* ^# ~* Z H mov al,es:[si+7]
0 M( \) q' Z6 L0 e: q+ ? call Change1 V Z4 a" X# S3 ^0 e
mov cl,4$ L9 [9 X4 s3 w" c z8 e
shl ebx,cl) O- [; K1 `/ a7 q4 x& K0 P5 B6 S
add ebx,eax
" B( C2 C$ l) h7 ?! Y7 t ret
! }' K' R2 S4 B! l% o7 fDPSP endp
1 I; J% A* ?) U2 n- |" Q;================================================================================================
& d- h) w6 l% L& pWDPSP proc near/ D. Z% u9 j8 |0 U% o& e3 s, G
xor eax,eax
2 L3 L) }+ x* i, a, @* V xor ebx,ebx7 n8 Q" J+ h+ \9 ?6 Q0 _% t# N
mov si,93h
7 A; c1 C% b' i' P mov al,es:[si]
% O; x! V5 x: ?8 y$ d- ]% H% n call Change7 f& I) W: w) Z4 f
mov cl,4& } |& L* {$ V% P
shl ebx,cl9 }9 h% D4 R& {8 ]
add ebx,eax- {, F; u3 p5 G7 d. S0 c
mov al,es:[si+1]0 ^) H3 D/ x- o$ L7 c& n8 @" t5 G
call Change/ O$ v( ]5 _; s. b+ c8 F, a9 G
mov cl,4 S4 Q _2 v2 y# u" x
shl ebx,cl
8 W- o$ V1 ^& q1 S" s add ebx,eax
2 Q# v( \: d5 i3 d/ T0 N mov al,es:[si+2]
: g, |- |" ~9 ~* K2 Q4 Z% l6 d7 q7 c. S call Change$ S6 A& ]0 \/ p; Y" M5 q
mov cl,4
( t% g1 i) n' a2 z1 ~9 H8 a1 j$ R; N+ o shl ebx,cl4 M3 a9 Z; Y6 L, ^
add ebx,eax# D6 L4 ^ f2 A& k
mov al,es:[si+3]4 F/ [) u. ~: O8 ?
call Change+ k2 R# J2 ]! f, i) G1 w7 j
mov cl,4
. F* [' J3 |6 x. S shl ebx,cl
8 K2 ~7 D5 D r add ebx,eax6 x3 t6 O& c5 J$ q9 r8 K( D# x8 {
mov al,es:[si+4]4 T- ~0 q N5 R- n$ }8 _# P) P
call Change, J E* A$ v! p/ _0 {0 A8 U/ O
mov cl,4. \$ N1 _+ ?6 s
shl ebx,cl' U) _1 W1 ?$ w9 }
add ebx,eax
( l# E, W# O5 P( u$ m# R- b mov al,es:[si+5]! U! t1 e6 u/ b1 z
call Change
' \4 I3 b" @2 v! V9 {# y- M mov cl,4
; J5 w/ u4 J$ y& W6 | shl ebx,cl# Y ]# W5 k$ g6 u( K' F$ I
add ebx,eax0 G" G: d- O+ d( J
mov al,es:[si+6]0 X* `9 L; `9 p! J" Z u8 N
call Change8 t* S6 A. T( w: d# J
mov cl,4, U) w" _0 a' w2 ^. ?( H P' _
shl ebx,cl
# Q2 U: o, K* F- C$ b, } add ebx,eax
' m! B4 P i' `" v+ }; Q mov al,es:[si+7]1 {; w" ]; t8 T, l- Z) ^' x" K y
call Change
+ K) G" q" O/ U- ^0 S! m9 g( r8 k mov cl,41 y; u5 Q( E' ~7 A2 _" W
shl ebx,cl
: e% u. \$ o$ m+ Q5 C add ebx,eax' |: V/ ?" W+ U+ B
ret
4 }6 w; x" O7 w% ] \: CWDPSP endp1 t( _$ _4 p6 p& U2 ?
;================================================================================================
) O6 b: H3 \, S) A9 V& f/ n6 s0 s+ {1 ]Change proc near9 U" L9 ?; w4 G% a( e
A: 6 B$ f% O: [ m" K
movzx eax,al& j" W( L$ c" Y6 _
mov edx,eax, H+ z- i( z0 h
cmp eax,'0' # U7 R# w+ m- s% _* m
jb A
1 E; {* L% g9 S. S# V$ `: u4 h cmp eax,'9'
) S8 T- \: D% c0 d" w- N. X ja B
( E, u6 ^5 M* C8 ]4 V sub eax,'0'
% ]; R+ s4 Y: |$ V( y jmp short E
" a/ l$ b* G6 [) X: b2 c! T; v$ LB:
, h* [. h. s) S4 J2 j: ? and eax,0dfh " }+ S4 F9 G: O: U! o
mov edx,eax
7 k7 z* ]( t# D* d' A% d" [# J sub eax,37h ) H# x2 |! M2 A( R3 G6 k
cmp eax,0ah
% F! b- D- P8 L% ?5 P4 F) A jb A
* }( v- p& ?1 p cmp eax,0fh
( o- ^1 P: l# B* w5 O ja A
6 O% e# G+ @2 e4 ]. P4 g- SE:
5 E- K1 F, [2 }/ S push eax " s: @# f$ r& p# O# L
call PRT 2 [0 x7 Y7 x5 b. }8 G
pop eax
% e7 M/ S! p4 r& o- UCExit:/ N9 q, \) N3 c' w n3 z4 O
ret, Z& Y. T# `* x/ x
Change endp
) s* G( I8 h/ R7 N/ G& p& l: H;------------------------------------------------------------------------------------------------- c4 A/ m% b3 K' @
PRT proc near" k0 {$ ~* ^2 F, U' _1 }* }! X0 i1 L
mov ah,02h1 f0 n- d$ `2 t) C. r& x
int 21h
: X& @5 _0 _9 e! \ ret" Z8 ?; m; P L, D1 h' a. e" \- ^
PRT endp |* n& O. `0 N# O
;------------------------------------------------------------------------------------------------
1 V4 x w& ~: ^5 b6 ocrlf proc near# ]( b5 `7 R. P3 L
mov ah,02h
9 L# [. R' c; ^/ W# V mov dl,0dh
8 M) d2 h `7 g* C9 A' j int 21h2 z6 @& j9 o, r
mov ah,02h
G1 z" c' d* L* R% | mov dl,0ah
) D" b' f( X3 x; ~ A F+ Z int 21h
- b) Y' j t- N ret
- ^& Y; b$ f4 i2 n5 Dcrlf endp- ~2 ]2 }9 f+ h: |
;------------------------------------------------------------------------------------------------ Q0 R1 c; E6 H2 K
_32bits proc near
' a6 ~- f+ }2 ?: v. H) D pushad2 F1 B A# S3 x, M" o4 D( d
mov cl,4& g7 H# h, ]/ L( m6 O7 q
rol ebx,cl
7 x) W; ?* q$ F& w+ ~+ o call print_4_bits6 D# b0 z, M& I) s$ r7 h
rol ebx,cl
" ?2 j6 z4 x- ~" w call print_4_bits: M9 N5 V" q! |; A! c6 i; d
rol ebx,cl2 g9 C1 c- s% G" j
call print_4_bits
3 V* i/ i- V" ~ rol ebx,cl
, K2 t! Y+ ?4 r$ | call print_4_bits7 a5 v7 l, j. U
rol ebx,cl. G- F6 p Y4 z6 I- K3 y/ j( n
call print_4_bits/ g9 R7 w( q! o) ]2 Q% c' ^1 h
rol ebx,cl2 s# M' [, D c1 p5 Z, ^9 K
call print_4_bits# _$ t, P3 `9 c! B, v, t
rol ebx,cl
* V. s" ]7 J. F+ I0 F: ? call print_4_bits
. V. S O4 N A; e8 W% Z5 | rol ebx,cl
( _3 z" l" {6 L4 m call print_4_bits4 \. S! E- J0 o( p) ^# S* @
rol ebx,cl: M. L: i! e l4 l2 ~- y$ H
popad7 n! x S2 d* o( L0 b, U
ret8 ^1 P' f& m s0 N# u
_32bits endp
* g8 w, ?& e+ ~;------------------------------------------------------------------------------------------------
, S, n$ f: |8 V; F_16bits proc near
9 i" ^8 k7 E. F3 K2 q- q$ J& t2 P# I: z pusha 6 d' a1 M$ n- R) S+ }$ K) f
rol bx,cl
g# w! |" y% C call print_4_bits+ Y% |$ G( m) v% R7 X. P' y
rol bx,cl1 Y" r( I q9 x4 {
call print_4_bits
! Z9 _9 ~5 w0 C! I6 g rol bx,cl- H* c% C8 W( ~, k: A( j
call print_4_bits
. U$ N2 V7 x5 E) h& l rol bx,cl$ m) J1 k1 @# ?0 h2 [
call print_4_bits
$ V9 X# {( S! G; o4 B popa
) e% D6 Z2 W$ d& e6 d ret
3 z% T/ l( R# M1 z_16bits endp1 y% I) p% H( |, j1 }
;------------------------------------------------------------------------------------------------# w& p i2 X) s
_8bits proc near
. z$ s& T9 n' C* s; ?4 q8 G! |- R pusha . ~2 \' @; K! ~! \' g/ R
rol bx,cl
2 b# n- q, T: D' ^1 ^3 a call print_4_bits
# E+ [; S# C: T+ L: U, x; w% D rol bx,cl. e- j% B& d& g- |
call print_4_bits
! u" G7 Q" d5 i" N' p popa
3 a- w, g5 O: u y5 \! t: _ ret% [: T) x/ k$ w) t) ]0 ~) {
_8bits endp
* ? y! Y6 y( E# }. ]print_4_bits proc near
! b% d3 J: c3 t5 \1 p' L1 `* e mov dx,bx
' L# e6 D6 x3 n( A) L and dl,0fh
& Q. ^ h# c) j, G p9 @! V& B: E: p add dl,30h
1 G4 ?9 [) S+ h: t& b cmp dl,3ah
& V; F0 t9 C" f# [. i( F jb print
& `; X) D4 F/ @& Y) z" k add dl,7
6 e3 R& A. p# O5 Q9 x' Gprint:
/ X6 K0 z4 Z) N& e; n K- P mov ah,2
' u4 Q0 Z7 \9 m7 G) Q int 21h
5 N+ j* y; H- B% Q5 u9 x ret) y3 O& Y. z G$ D
print_4_bits endp 9 ?$ f c+ `$ N. r- q. j Q" [
CSEG ends
7 J6 Q, j6 i- m5 d7 mEND |
|