|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)
8 x7 a' h+ f" ]6 X6 \* H2 a/ W0 O8 }; _6 ^) H
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
# j4 d' V( F g! n8 x2 {; E; D5 d. D5 R
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝 ' X* Y- g4 K. ?$ E4 d
# H; ?, `& m4 K; l7 c3 a6 a.model small
% e7 p" b% _# `, d+ q.386p4 p9 e% }1 J: ?" i/ v( p( L2 Q
DSEG SEGMENT USE16'data'
7 _, s' _. j) ~
T' L6 r8 M: m. I5 GDESC STRUC6 X$ [+ Q' l" [
LimitL DW 0 , r8 p8 X( Z3 w8 u. d
BaseL DW 0 0 h) v+ n$ c7 @8 ^% Q3 C4 Q$ O. j
BaseM DB 0
# r6 d# D0 `( U: o7 b. S" f. q- \ Attributes DB 0 ; u1 \0 c$ I1 a0 d2 @- F! j2 Q! r
LimitH DB 0 3 P j* x5 p5 s8 N& Y! a( A
BaseH DB 0
, J' L0 J+ P' @7 zDESC ENDS7 y4 v, F# l( X- m# T" q3 i0 f& u
9 z7 ^ m2 m8 W
PDesc STRUC
3 t1 j. v0 |. n Limit DW 0
( d5 E: R& M7 H0 B4 s7 k k% ~* f5 L' P Base DD 0 0 T. V) @8 ~3 z, m" t
PDesc ENDS
) t: `9 m, n, R' F! @; Z. I
% T( `9 Z) k2 K' {, bGDT_def Label Fword
1 @% [& U+ K0 W1 QNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
; T; S) |: o8 T2 M0 a& R1 GData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
$ f Q0 C/ H& a! v7 Q* s# D2 MGDT_Addr PDesc <$-GDT_def-1, >* G. j% y5 J/ x3 d
8 I* Q4 c& a$ s- f# u8 o( k$ D
Maddress Dword 0
4 t- g$ a7 W# E7 g" w, _; n* r, d2 P6 F F4 L+ K n0 N
DSEG ENDS 4 j" L9 x# K0 b) C4 u# B' K$ W
ASSUME CS:CSEG,DS:DSEG3 H- C4 c9 _! H$ P
3 [; J7 o% j5 b& f7 Y; x* n( z
CSEG SEGMENT USE16'code'
; D% ]/ K( N' Y$ L; S push ds# y& Y+ F3 x6 l% Q% c7 O- ?
push es1 a! ]; _1 `/ \8 p# `6 Y
push fs
4 Q. @! Z' }* Q; D) o K( m push gs; }- Q% ]/ k4 s# g1 T4 C, b
call big_real_mode
. ?5 I1 T1 v8 C' M+ X( v call Get_Commandtail
5 t/ Z) R& H3 `1 [+ j y xor ebx,ebx/ I" h7 v! M' \6 H0 b& A
mov si,82h
. R, x7 {% A& r8 m& e8 w9 I mov al,es:[si]6 w% S- o% |; F
cmp al,'r' E/ r2 K+ S2 M1 ~# f. s
je R
0 `( C) z, t B1 A$ {2 S7 p$ f) z cmp al,'R'
+ _7 n, ^* S' j; W( \ je R1 Y4 I! }' m8 X1 i
cmp al,'w'
2 c# `3 y5 A7 l% j1 w je W9 ^% m- ^3 I# ?
cmp al,'W'# q: U$ G9 I' g: x
je W
" Q) H& i& e8 PR:
# s& d- F T$ d8 Q mov si,84h
; J% i, ^* F8 u; q, \% \' [) N% A mov al,es:[si] d+ V! d2 X0 m7 g) u- ^/ {0 a9 J
cmp al,'b'! X$ q, \3 v' R" E9 ]6 u
je RBT2 K5 \) X- e: Y- Q/ l
cmp al,'B'
, Z4 g9 b1 c w6 D' o% [* ]" N je RBT
) }1 S9 r- G. m# Z4 i cmp al,'w'
3 Y" U& U) v5 ^ h je RWR2 C0 d8 V( G! s) \ M4 W; p
cmp al,'W'
/ p7 L* w0 J7 v+ Z: s je RWR
' g$ @$ D- p( S7 K5 ] cmp al,'d'
! j$ Z9 t( z" L) ?0 j: w je RDR% M" D" m$ n! a$ b! d* h
cmp al,'D'
+ {8 A: {* H0 O1 R" I je RDR
( e$ t/ h: h/ b d& }4 aW: * K$ ]9 j' z. b$ b% V; l% a
mov si,84h* J) F6 R" @9 a3 m$ R
mov al,es:[si]
/ }* G7 Q4 c9 E. C cmp al,'b'2 {' o6 u! N6 K- |" |
je WBT2 [0 c' j6 c$ L P
cmp al,'B'1 X$ ` a/ e. _% I" O! T. U& s
je WBT
$ h* Q+ D6 }& Z P. e/ U* e% ^ cmp al,'w'( y0 S |) i+ p7 j4 h
je WWR9 X# l0 q% {3 H* k. s0 t' R- g6 a4 K! A
cmp al,'W'. @! M6 s: g, x
je WWR
7 v3 N, j* Z" u! a' L6 c/ | cmp al,'d'
, @6 F5 \5 ], ~7 E6 `7 S je WDR
+ X, C* l# q1 B cmp al,'D'( z- F- p$ r' F
je WDR
4 U |$ O) n$ R! r' j' H9 S( J ]RBT:
/ }! @! X0 Z1 C call PSP + v* @5 H$ Z, X a3 ]0 z0 I% A
call crlf ' |$ o. f- [8 J: b4 q6 t" J W
mov esi,ebx3 F: o, o3 u/ X4 A$ T" b4 R
mov eax,fs:[esi]( _- [5 x: s' f6 M1 ^! r
out 80h,eax8 k4 |. }! N$ I! ^& N
mov ebx,eax9 W6 W6 I2 }, k Q. C0 P. \# K' u8 E
call _8bits
5 k9 p" P# A& X jmp Exit
8 o: O2 z5 P! P9 A+ }1 O3 tRWR:% {$ V6 l X% x+ B
call PSP % o, W2 t0 q3 M6 M/ f5 x
call crlf 5 w. M! T( I* h
mov esi,ebx' l5 _+ i' x9 h8 g+ U! @
mov eax,fs:[esi]' c) s3 b, a% V( o1 A' U- w5 p# g% ]
out 80h,eax
, c: L0 h6 |! \4 l mov ebx,eax
6 i# @% ]6 b+ R call _16bits, b% |5 n# t q6 ~. l! _
jmp Exit. N) H/ `. i* s: H+ h4 _1 E
RDR:* G4 x8 a6 c5 s1 {1 D6 n
call DPSP
% n6 l q7 ` x( } call crlf
2 d0 y- T9 C. l7 m' l. G mov esi,ebx
& o% m1 {. ]8 R% D mov eax,fs:[esi]
+ \! c: @6 S4 J; x. S# ~0 H out 80h,eax
" h9 r$ l7 P* e8 y0 Z9 C; l5 x mov ebx,eax @7 N- l6 a! f/ b+ `: V% C
call _32bits
$ d; h+ V. @% N" m9 P jmp Exit) I& |; t' h& [$ Q" N. q, ~# i( w
;------------------------------------------------------------------------------------------------8 z+ D! b, x9 J# K {1 r: l
WBT:
. }* J! v( d. J3 Y2 X jmp Exit; O# ~) r9 r9 V+ E6 a4 i
WWR:
7 h; z& C$ l: C3 q' f5 y jmp Exit1 H4 K& q6 c/ j9 Z6 X% e2 i
WDR:
; e+ a M& | v; U+ l5 i+ p call DPSP
0 A4 k3 v3 d; ~5 f" D8 e' p mov Maddress,ebx ! e2 [* Y. W$ R7 C3 m
call crlf, {/ V+ t) t: |+ w7 X) J
call WDPSP' ], a. H$ h ]# [' a
mov eax,ebx% Q9 B( S, E" i2 F
mov esi,Maddress
- |, J9 A# w) l" J! [ _ mov fs:[esi],eax
7 Z& i6 I8 e/ ~ out 80h,eax# K) C% v3 K+ V5 \
jmp Exit/ X$ A- \3 Y4 `2 h5 \" W
;------------------------------------------------------------------------------------------------ # a' Y% U* N0 O" q" D. ]* E$ R
Exit:
% P) k$ z c b" Q& D% m call real_mode
y4 }4 ^. @# A pop gs& Q2 \' v/ N$ P2 z8 _+ f
pop fs7 b, B {) x; q# w* H
pop es
) r. U2 O1 |4 b/ a" O3 d1 C* z; F pop ds
3 p% \" O( M9 D: j, Z .exit g6 ]6 l0 _8 Z3 Y
;------------------------------------------------------------------------------------------------% j) j, ~; M) c2 H# O
big_real_mode proc near e9 t5 h I; {7 d% \' r
in al, 92h
; R5 [/ x$ e# ` or al, 002" x" u. v; x" ?; s" @; D
out 092h, al. `, \# w2 k" G' [, r5 p- J2 L
out 0edh, al) Z1 B+ j" i! F0 w. X4 C
cli
% J' h e$ }( t I mov eax,DSEG
1 l; Z- }9 [ v shl eax, 48 U9 p) M7 _- Z' s: H
xor ebx, ebx5 |( j+ v6 Q, b* U$ [/ P
mov ebx, offset GDT_def2 s5 q g, h4 N
add eax, ebx
* { N9 [4 U2 ~. V mov dword ptr GDT_Addr.Base, eax2 X, [3 g+ e2 d2 m& m
lgdt fword ptr GDT_Addr p" Z+ A! I2 D: L3 E: k& m; Q3 V+ d1 K
mov bx, 8
7 g3 B9 F1 x) n8 k6 g! K7 z8 j8 u mov eax, cr0! j1 P; j, o, d. N
or al, 1
) Q5 f& \8 H7 E: A7 j/ u- [. A- X mov cr0, eax
4 `9 K" Y- G- O7 ?- u$ @ jmp PMod) a6 n1 `% W+ a
PMod:
0 h" p. n/ P( C mov fs, bx5 G, V( ^/ L) D9 G6 c7 n% a
mov gs, bx
* Y8 N$ J, [3 {0 f mov eax,cr0
* S$ s) P9 N- q$ E and al, 0FEh4 O I. x7 o) V& ^
mov cr0, eax
* C0 Z! c& P- p v4 ]5 x9 P7 H jmp RMod
+ N8 a9 L# L7 Y& _$ YRMod:% t( _5 N; q/ N+ @/ w: L# A( q
xor ax, ax
$ u" G% \( j; ~1 C mov fs, ax
, C. h( q+ E' K7 N' y mov gs, ax & F* C# c# x: Q O- e [* v
sti
' ~! g. _0 c8 ^0 Y6 M ret J$ H9 j3 G4 _; N2 @+ K0 Y
big_real_mode ENDP6 x, |3 K. o- E3 y) X
;------------------------------------------------------------------------------------------------" v" r+ T% q7 \; g3 h! G' ^4 h
real_mode proc near
5 r+ s# g' q3 C1 d+ @+ c in al, 92h' [: R# x4 { p
and al, 02
& O" u: Z5 N: N ~) F! e, I* F' e+ o out 92h, al
, s; }( @2 R0 |7 Y ret$ M; w2 ]# ?5 J1 u; T) s0 w
real_mode ENDP6 M& f; r# u6 o* {, \/ T
;------------------------------------------------------------------------------------------------
( |1 M/ t) H. p" I0 w# d$ ~Get_Commandtail PROC near9 W! m0 b5 z# ?' [7 ~5 E
mov ah,62h
8 X; ~! l) C: d: l; b int 21h
# D+ T4 m5 o5 S# m* h+ X0 z: m% o t# U mov es,bx7 i, v% T2 E& V* @/ `* @
ret- B3 d2 W3 n0 N
Get_Commandtail ENDP
# `! H; o6 Q3 |6 g, h/ i. J;------------------------------------------------------------------------------------------------3 y, c' n3 ^ B- A
PSP proc near
7 p7 n3 E; C4 r# @" y! x3 I xor ebx,ebx
! Q' u5 s' r Q1 n9 V mov si,89h' J: u* @8 [" y, u
mov al,es:[si]6 b# y; ^. V6 h6 ?5 g# p' H
call Change A. l. C" B" H: p/ E$ }
mov cl,46 s" {) N1 I0 F2 H/ o2 P2 D
shl ebx,cl
( j/ D+ l- h% F2 K add ebx,eax$ d6 m) j" {, b
mov al,es:[si+1]
5 J) z+ J& u' \) |4 T call Change8 A4 X' n6 [5 g5 Z* ~
mov cl,4! k, ^" R1 h8 _, N
shl ebx,cl5 Z* x6 m6 L; C9 t5 {+ E7 G4 i" S
add ebx,eax3 x6 K5 k6 q, g9 x" J" `
mov al,es:[si+2]
. j. C9 [/ w% L/ e4 u m6 l call Change# ^& W U1 w5 p0 ~' C- ]" m
mov cl,4& ~* ~( J3 {3 Z& [7 N2 N5 I* f
shl ebx,cl
6 n) _5 l& ]4 } add ebx,eax0 B# P) a; Q8 u' H
mov al,es:[si+3]
6 E" R, ?2 j) L7 f& P call Change& P- s# V0 M9 V# M( f
mov cl,47 o% P* P' d6 Q: y7 g9 W
shl ebx,cl
- C. }5 F. h7 z* @3 Y6 X add ebx,eax
( w4 K9 R9 h/ F# x! S mov al,es:[si+4]
# |8 [$ Z1 R# F8 z) |/ y1 w; z call Change
; G" R J2 ^8 |) D8 R. l mov cl,4
) L5 @! X; ]% y/ o/ ~% @ shl ebx,cl6 T1 }- S, ?' L# c9 u
add ebx,eax
' I; t! p# _: {+ ^ mov al,es:[si+5]' a- F# l6 d/ Q' ^
call Change
: B! \$ J& h" @ mov cl,4: v* g8 S1 W2 ~% Y. D* c5 b9 d
shl ebx,cl
! i. t" D* g C8 H% {/ b9 X3 r i add ebx,eax8 B$ z: y% P; Z
mov al,es:[si+6]2 _9 [$ c& w7 U! Z$ p
call Change
$ \! Q+ p3 G8 c' c0 ^/ y+ b mov cl,49 @- S$ D& D; k5 _9 Y S
shl ebx,cl) s3 X9 g; J( x; p7 G9 h$ |/ Q
add ebx,eax
% J$ ~' N) L6 P( n' f# V mov al,es:[si+7]5 k5 ?7 n7 ]& A+ U* q' G
call Change
) `+ w% H# O. O8 \% E! X( [4 P+ [ mov cl,4
: y' S" v: ?9 V: `1 D% i shl ebx,cl1 ~; z5 _: J) y
add ebx,eax3 Q% i! R5 p0 M+ C1 |" z7 h7 U
ret3 M( Y A4 u0 Y
PSP endp3 Y! x6 f# J) P
;================================================================================================
; Q+ P2 D* i4 q) X) x* ]. ^DPSP proc near7 r5 Z$ f# o W5 k2 `; U4 H) t3 U
xor ebx,ebx
. s. ~1 [$ i) R+ l/ ?; x+ k mov si,8ah* P9 O# }/ J0 o) @! y
mov al,es:[si]) O8 J$ [, C1 D/ Y% O+ x) u" W
call Change
' }, m1 A$ E& Q' V. ?4 Z mov cl,4
. L+ }; c$ N' v$ W# ~; v0 b shl ebx,cl& Y. x9 J- C4 i! g
add ebx,eax2 D+ L, B6 W; t/ ^3 W8 j. [7 T$ Z" X
mov al,es:[si+1]
6 E [+ o( x+ x5 U+ @/ L call Change
9 T2 Y* ]# ~. ]0 E* b* I9 T mov cl,4
. k. P2 @) X; u0 h- t shl ebx,cl- n- X% N4 L# G9 S [$ k
add ebx,eax+ {+ ?2 }( a; L: b
mov al,es:[si+2]
; c. W4 f5 q" [+ q8 j4 p; X' Z call Change
% ~, Y4 V( `3 w- _, D6 x. v) I mov cl,4
9 e4 Y+ U7 `2 } shl ebx,cl3 }. _8 G" X1 |
add ebx,eax n3 \9 E0 p0 f
mov al,es:[si+3]
* c1 @" y, }% j) T- T call Change- p: [9 A, [0 ~% {, x" J; g! m
mov cl,4
1 r. l! L c! `) Q, ~ @1 A shl ebx,cl
2 \. ?" L! C* j3 i add ebx,eax
: Y- x! K9 j+ N9 k mov al,es:[si+4]4 m7 {: R8 }$ t6 @7 I
call Change
% X+ X X% H; E) ^6 [ mov cl,4
, n, p, H/ Q6 c" Z+ o shl ebx,cl9 Q& m4 ]$ C" a* ]
add ebx,eax
1 w: M4 W% Q. K: P# I1 W$ S mov al,es:[si+5]& l& V! K9 T2 G
call Change( M0 S* t- i! Q. i5 n
mov cl,4
$ B; F" T+ D$ I# i0 v6 G# B; N shl ebx,cl- t, {5 e) w% b" V, m O
add ebx,eax- k2 h( R$ o5 l) W$ x: @2 L4 L
mov al,es:[si+6]/ I* B+ y1 ]2 f- ~7 t# e
call Change
! ?5 F$ B! G' U0 g, N& V mov cl,4" l8 x9 {5 j g; e7 f9 A S
shl ebx,cl, W* A: C3 p# f4 N- s
add ebx,eax2 X7 q; s/ X- T0 I7 T4 J# z
mov al,es:[si+7]; U* {& p/ I: `0 u* ^7 t
call Change
% L3 P+ _+ _ Y# a8 n* l mov cl,43 L, F, g8 ~9 J9 M. t
shl ebx,cl
2 H0 y4 O9 W3 _1 M add ebx,eax
( k4 m* i7 |8 e6 |7 ` ret' Z3 I2 P7 V |. l7 Y2 f
DPSP endp
# D! O3 r) [9 o* Z9 y/ h4 N" v;================================================================================================
/ Y; ^# \9 R1 DWDPSP proc near9 }# w. ]- `: X- k4 k! y
xor eax,eax
2 V5 a0 \, ~& m$ H" i% D, X xor ebx,ebx
d9 a! `' ~5 I; d. h mov si,93h6 t, \3 c" D% }+ u
mov al,es:[si]
$ y8 R6 m2 d- V8 p7 G+ e call Change: T; f" Z% H4 R1 K
mov cl,4
e1 u4 U6 q1 A" s+ H! C shl ebx,cl
7 R8 k; ~2 {8 i' s add ebx,eax# p6 r- r- E/ v; m T/ p+ {& J# q" L
mov al,es:[si+1]
}9 B# [: V4 _ call Change6 R. \; J9 ^# E b/ C. ~/ a
mov cl,46 v# z0 O9 u2 m
shl ebx,cl! D& q( p3 J* c) J' ~
add ebx,eax
$ K' K1 ?2 P ^5 L2 u2 G2 k" F$ b mov al,es:[si+2]# Y% C a5 v* K" ?
call Change' u6 W( O) ~9 J1 A* b
mov cl,4
) c3 c; T# t l* ]5 E( Q shl ebx,cl
2 ~4 J \/ t8 W; D2 H, A1 a add ebx,eax
( E. {- F2 t4 k7 V& O' z/ l" t mov al,es:[si+3]
/ R' i# O X9 a+ n; d7 l- p" F# i call Change
* s' N) N p4 O$ O7 m! O' Y% q. j mov cl,4
+ i) h/ o3 L6 e2 f2 Q7 h9 W shl ebx,cl- c' [4 Z; ~8 a2 v8 P
add ebx,eax+ L1 X" j6 P2 O4 F! {, f8 b5 F
mov al,es:[si+4]
# Z+ k7 S) r1 ~ call Change# Y- j+ u* ]- j2 Y) _. I
mov cl,4/ N) J1 l8 V5 a( s. Q
shl ebx,cl* O" u2 {2 }+ A, c1 w" t G
add ebx,eax3 r4 Y7 y( ~1 C
mov al,es:[si+5] K. o* u1 C! ?9 u
call Change
' [4 h" m7 _ v$ z2 S- m* x mov cl,4, z. X& P7 |/ J) v$ Y4 |6 _
shl ebx,cl+ J: D! c: I' T1 x2 r
add ebx,eax% }8 ^' {3 ^* M. s2 ^( f. G
mov al,es:[si+6]
, w \3 C0 g3 T5 w% V call Change
; @0 E: I9 b2 r. J* s- `5 b; y- e mov cl,4
% c9 i9 j) L7 E1 ~ E+ E" [ e shl ebx,cl E0 d# i; x/ V0 k- t8 x- R5 }- l
add ebx,eax
. I2 n4 D; k; m0 e- v+ O mov al,es:[si+7]6 V0 A v: C$ t9 y8 q" B
call Change6 M& w7 |- X1 B5 {! v- {( }& b' e
mov cl,4
, P3 f; I8 b3 ?9 C: Z( C6 ]& t( ` shl ebx,cl& B- K- I* W' J* U( d
add ebx,eax; p: N0 f/ R+ s1 e! ]
ret: v- | w* z* L: c
WDPSP endp' o1 c/ N3 f( D" }5 `7 x. H! y
;================================================================================================
( ]& p& p( v, n: L: WChange proc near
, C" J; j3 f4 e* f, n# BA:
3 `% v* h4 s( `7 | h movzx eax,al
0 ? _& d: B) |& s i, g7 q1 J mov edx,eax
6 m8 b' e) Q2 f" D' m cmp eax,'0'
" q* s0 M& x- f; T8 i$ U t3 ^+ | jb A9 M$ p$ z4 X6 ?$ Y5 I1 O/ G
cmp eax,'9'
. K: X9 x& X( A0 G. o3 `: Y5 C( {" e ja B
' ?4 L' b& ?) r sub eax,'0'
3 ]1 W3 v3 X+ h5 R& Z jmp short E
/ z2 c# f5 @) Z. DB:
: h7 N8 v+ U2 _3 ~/ r; F& J: S and eax,0dfh 6 e" H( |' b0 M* W7 j, H1 E6 \
mov edx,eax( A3 X: | b( D; W, I
sub eax,37h
# |9 v) F% }" J9 P cmp eax,0ah7 K) Z& ^0 C! x- M7 {9 ~) _
jb A
. F" q; O3 k! _ cmp eax,0fh1 m3 j8 t% J B5 ~/ K
ja A
- p3 T6 s6 o; ~5 \2 _0 d+ gE:' s5 o0 y* ~1 n6 I7 ~
push eax
' \. r1 F6 V' e call PRT - g+ ~' Y# R& }
pop eax3 z7 D" ~) w2 Y# w: Y$ B4 h0 q
CExit:
- N( G: P4 z1 w0 i( q# |! ?. u ret
8 J) b3 v. l, p$ C( ]1 r4 IChange endp0 g6 }8 ?- _2 z3 U1 ]
;------------------------------------------------------------------------------------------------
$ z2 J" R/ ]/ M. X3 dPRT proc near7 z) [0 v5 j8 o4 b
mov ah,02h
6 G2 ^- Z J6 z6 q1 h! ^ int 21h
! n2 g/ n# }% N ret
6 U: a: m* z9 r y$ gPRT endp3 \' t- [9 P* Y+ c% L- r2 V
;------------------------------------------------------------------------------------------------
$ t! S0 m9 T9 p$ F$ }0 H5 Bcrlf proc near
; t- B, ^0 F2 | mov ah,02h1 U2 J# R: p6 k9 n
mov dl,0dh. f* r, {8 H6 |" X4 w# ]
int 21h
) s+ B. S% d! g" z6 k mov ah,02h
0 y9 B# J- k4 z F/ ?+ ?* h mov dl,0ah
+ t R4 G+ y4 e+ _; ~ int 21h
6 X2 Z( w' t7 B! P7 w* S" _5 h ret' `* L, v/ R8 n9 g
crlf endp* M9 `, e% Q( q ^, O7 [; R7 [+ C
;------------------------------------------------------------------------------------------------
6 T7 }" y/ g5 w% X# V_32bits proc near2 w1 y1 A# w6 }
pushad
1 ^& d; M* [& Z3 k: h+ p7 f% m mov cl,4
. c0 X' k( \, g8 m/ q2 Y9 X rol ebx,cl
# p% T/ A4 ?+ V8 z5 f. m9 w; D call print_4_bits8 P! b$ l }) D) B, X
rol ebx,cl
7 C8 C' I# O" s! W! b call print_4_bits
: F8 u/ \% K0 Z rol ebx,cl4 g3 z3 U# r( E r
call print_4_bits- |" N# s6 _' ?2 n
rol ebx,cl! R e1 x) e$ W3 ~' U$ F
call print_4_bits
$ z# F: }) O+ l1 r2 u rol ebx,cl
3 R" x" b" ^7 c2 Y3 Y call print_4_bits
& H/ G F: Q/ Y5 S" Z/ y rol ebx,cl- U, m9 O% n/ Z* ^
call print_4_bits1 V3 g' V& |" ]% Z
rol ebx,cl& [" O3 O* l/ E) w2 s9 m4 S
call print_4_bits" ~( x8 o9 x$ l
rol ebx,cl+ r: J* M! i7 K/ X; g) r
call print_4_bits' Y, K, ]$ A8 m! i3 B/ Z
rol ebx,cl
$ e, d4 @( \1 C, I4 k& T! W popad
2 e0 @% h6 s; [4 S1 ]2 Z' J ret5 k1 C% x$ i; x1 y; r
_32bits endp
4 j0 s" m( Y$ g- O;------------------------------------------------------------------------------------------------4 Q) o0 e4 O( l. n5 K
_16bits proc near( t- f _- @( w
pusha * k! h6 H) Z+ L
rol bx,cl
7 O. r4 l7 Q' o1 T5 P call print_4_bits
4 K: e7 n' |: a* n) J& \. x rol bx,cl" w H' O$ C* I
call print_4_bits
0 ?% ~$ D2 ~. |3 p7 r( z rol bx,cl" S! ]' v( n+ M
call print_4_bits8 }3 d$ X6 z" ?* `
rol bx,cl! ^1 a9 B1 ^2 ^5 ^ o; y
call print_4_bits$ F, I- B; q0 a1 H% \9 p0 K
popa
' n$ a. N% T' G$ u+ X7 }+ ?5 a ret
0 j4 }6 z; T( u% {6 z_16bits endp, u# u$ m6 Z" n
;------------------------------------------------------------------------------------------------) W3 Q$ k6 }1 T K, O7 R
_8bits proc near
: y# ]4 g. ?8 v c* m! Q' {5 Y pusha
4 V+ v7 Y, w5 b- {7 U* G2 Q" p rol bx,cl* t" H J0 n! y% P
call print_4_bits. R2 i5 L3 [2 R& _/ Y* N
rol bx,cl1 S! o7 }0 m( ^6 b9 _
call print_4_bits7 k2 E3 Q/ F( s7 f
popa
4 Q+ ?: Q0 T# }: ^- T- \ ret1 a" U6 |% f+ c @7 [
_8bits endp
, E1 c$ s' K) T: Rprint_4_bits proc near
8 e/ O3 m# H) W mov dx,bx
- f3 b9 z: W8 W: ^( ` and dl,0fh
/ h6 D+ K% f5 t1 s0 H9 @ add dl,30h
% `: i& V& e# v' R) C* E/ Q( g cmp dl,3ah
1 Y1 y: @9 Y3 b2 _+ b jb print
3 g5 h0 J/ J1 D) A: A add dl,7* ]* `+ Y1 ]& A E
print: 8 {/ {3 I% d% |6 t9 g
mov ah,2% z; @. w5 B8 X: M& Y4 u" G' z) ]
int 21h; [ Q- H4 d* R
ret
: y! J) F4 ^. d4 e" ~9 u! Iprint_4_bits endp 1 d- [% V) s1 `) |' R
CSEG ends3 r% b5 x$ Z2 i! E, c- y
END |
|