|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)1 _0 c x+ j$ i: R
6 M% P) E$ y1 R& P6 O; J則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'" k6 T, _$ V& b. |- m9 Y
: a/ ] e6 Y0 F宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝 : |% P% q1 {2 \/ ^
$ p# H% p! k5 ~3 d8 S' h
.model small
# l- L" K4 V- e- B( t.386p
, a* [6 v7 K* B$ R2 o: yDSEG SEGMENT USE16'data'
v/ [7 E, w# Q5 { y. t
8 ^9 u* i0 X9 L: b) {DESC STRUC
" H- S+ k. E: `2 V5 k* Y LimitL DW 0
3 |/ B1 x# J2 w/ X5 O4 I: E* w0 L BaseL DW 0 - b( A, W! j" [* `% S" W
BaseM DB 0 ) M: ~; B2 ?7 s. K
Attributes DB 0 " D" {, O2 C/ h7 a
LimitH DB 0 0 q5 ?7 [% N% o4 A
BaseH DB 0 " P! W' p v( k# k! n" j3 v
DESC ENDS) V* O! {- @) S) B1 L0 {; i6 K
# ~; `1 u. W1 j7 V4 mPDesc STRUC, b6 V% \/ A# e' L: U" X
Limit DW 0
( i4 o# z! ~5 {2 H' S$ S N Base DD 0 : s/ b* c* d n/ y/ \- P0 A' Y# O
PDesc ENDS& F' Z$ }7 E# \/ X/ j5 g
3 g' z- O& y6 x* GGDT_def Label Fword2 B7 k& v& U' p$ H! o0 q3 s6 J
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
) c3 Q# B9 S$ ~& y# T% \1 T; LData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
0 a |" w/ x9 m' VGDT_Addr PDesc <$-GDT_def-1, >9 N+ i9 w/ k) T) Z
8 a6 ]# |* t0 r; o' YMaddress Dword 0
% X$ \( X; H' D
; |$ y$ R" f9 |; p5 _- K* fDSEG ENDS ; o4 Y/ k7 }/ S$ ?- G9 ~
ASSUME CS:CSEG,DS:DSEG; g0 l& x8 U1 P) x P+ C
- C1 k; J9 N6 u. O# i- ]CSEG SEGMENT USE16'code' * B% R' F0 o3 C3 f) C
push ds
5 N' U; l9 r+ f$ R4 m3 j push es
7 x$ N4 D0 V5 R% m push fs5 o7 a" k8 i2 C. P6 d0 _3 A
push gs7 s* D6 x; H8 Z! q: t
call big_real_mode
9 k2 z% a4 X% F- I& s call Get_Commandtail( q1 b# e1 F* P/ }
xor ebx,ebx
7 U9 b$ y' y, E; N8 X mov si,82h9 L1 f, M, G' I! `) \1 ?
mov al,es:[si]
4 Y h$ `$ L- O% M/ M7 L cmp al,'r'- v9 v5 I$ {* e, h7 X x
je R
4 M$ t) d$ H; m* ?8 F cmp al,'R'
6 M. a" J0 h4 E& i8 _ je R2 J" S% ?, G& V+ g4 o
cmp al,'w'0 D! i2 i$ N F- a
je W
; P6 c* U& {2 w3 w cmp al,'W', `" j2 E. l+ V; b
je W
! ?- j' F! u+ K% w: R6 i: \! XR:
1 K) m# M6 `/ @4 Q% G mov si,84h/ I0 Q1 `& `) l/ w3 J
mov al,es:[si]
8 h- w* W/ B# w6 S& u8 E1 X* y- i1 ` cmp al,'b'
; r/ {/ }. F9 X je RBT6 w( M% D% O/ |" i, f' ^, N
cmp al,'B' y' y7 ]/ A* V x d( Z4 Z3 G4 U
je RBT% E r" w- o* S& h
cmp al,'w'8 p4 L( C L2 v, V: r
je RWR
, Q8 M _8 t e! e- F cmp al,'W'
% }6 w" _4 F& E) X, z; h* n2 q je RWR
6 u4 ~9 ?& D* W$ l/ y cmp al,'d'
4 A" B* S/ M; E! J je RDR) G# P6 ^4 m& B/ ?# n2 P: {# x
cmp al,'D'
/ Z7 R8 \/ X) E6 p je RDR & O! {% Y# ~. h" W9 C6 p: U! H0 M
W:
% x4 {& o) o8 M% U( y mov si,84h. M( u6 Q' T+ i; y9 H) t" d$ s
mov al,es:[si]) o1 T0 |8 k) m- a3 J
cmp al,'b'
4 v6 ?6 O0 G6 g& d6 N: I- O, v! | je WBT4 i, ?, e# X( A, [( ~/ O4 q1 i. t
cmp al,'B'
$ T2 X3 z* f6 u- M je WBT
8 f s) \) Z/ n4 d2 { cmp al,'w'0 ?+ d& f k! B" Q
je WWR
5 L6 Y" ~9 t r cmp al,'W'8 C+ o) R( `; l$ b
je WWR9 a9 A/ s. `0 `
cmp al,'d'& s, y7 j# s2 z# q* T: Y
je WDR0 h, d d$ c3 q( k
cmp al,'D'
- X8 l' |. L5 b1 ^ je WDR- Z$ X* N: P, P2 Y/ D# g5 i
RBT:/ f1 h- J* ?! {1 f
call PSP 9 D+ b8 i; m! x5 d: l1 f# G
call crlf
" v" r; ?4 s' i) a' D0 ~; O* ]5 E mov esi,ebx; Q6 |# z3 B" e2 C; f. H* U0 k3 Q6 w
mov eax,fs:[esi]
/ {( y; C$ R9 C- @2 X/ p! j out 80h,eax
h1 z2 v% a. e4 r: p, |# O/ ` mov ebx,eax
) Q- ^+ s8 u7 ]9 K" o# i call _8bits# p* @- t, }) o" T5 E' s9 Q$ [- _
jmp Exit3 V. N2 P. M7 d0 Y% r. x% K
RWR:
! A/ s8 `* \2 n* f Y) w' p call PSP 1 Y& w+ `% e# I5 @
call crlf 2 i' c2 }- @% n5 v# R
mov esi,ebx9 b% x! M1 J1 @/ ]
mov eax,fs:[esi]
$ A7 w& @8 {# d1 k out 80h,eax8 c, T. P( r; B# J6 g, g4 y6 C3 t
mov ebx,eax1 U% l: W; ?% `( l$ ?. a+ }3 T* T
call _16bits
5 l7 i5 S! O$ v$ f jmp Exit
+ O, [3 i- y3 j3 @1 P" f0 {RDR:
& M- A) C- Z, f& H4 _# e' [3 J ^ call DPSP
3 f$ m! K3 B4 P/ ]3 p4 L! F3 t4 O call crlf
4 K" R% l( V, r% D: m$ Q mov esi,ebx. f6 m% @3 C! Q5 P5 z* }
mov eax,fs:[esi]
/ s2 h9 _7 B* e out 80h,eax1 H) z6 q2 y2 M" C0 B) u$ c! {
mov ebx,eax D/ l. l" B0 T& y5 r1 \ [
call _32bits, L: l1 M6 h! C% |- o/ j# t
jmp Exit5 Z! }& q; N+ o6 T z( k8 `- b3 v( B
;------------------------------------------------------------------------------------------------
+ o9 f' u7 Y) j5 @0 i3 w) g# `7 p2 bWBT:
( q* c. Y( w7 e0 o jmp Exit
$ W+ z( f4 E7 `" G' w _WWR:; s+ |0 R8 Y( ^2 b
jmp Exit; S' P: ? y& f' v+ a+ e
WDR:# q- }0 b( n, m9 Y/ t4 k
call DPSP
. D' Y! g9 X$ ^# g' C& L2 H; g mov Maddress,ebx / a9 m7 x5 {. C' D k" ?. Z3 p/ F) Y
call crlf
$ n7 W3 c8 R' R) J$ \ call WDPSP
0 P( }5 f( h* E: e mov eax,ebx+ q- ^) x7 v2 v8 @
mov esi,Maddress B5 h' o! D9 ~* B( S0 T8 W4 T
mov fs:[esi],eax
$ T, r3 |0 q5 X# `$ m out 80h,eax$ M, r2 ]& X- U
jmp Exit
3 y3 ^+ z9 c5 m( X;------------------------------------------------------------------------------------------------
% B/ Z) S, u! F/ P2 _Exit:
9 x- Y. u$ V1 q8 `+ j& ^. ^ call real_mode 0 l% L( \. f! N
pop gs
, ~) a5 w8 E5 V; X7 ]% t pop fs
- C6 R/ U3 `- A) ^" C; V0 z pop es5 q; O) D0 A& W6 q6 h( [# g
pop ds % G0 z9 m" |9 o- M
.exit
& z' H4 h2 ^7 _" w7 \;------------------------------------------------------------------------------------------------
4 Z% h: B) j& k# tbig_real_mode proc near# q( T7 z- V; g' }8 T z
in al, 92h, o9 o" a6 ~$ T3 ^4 I( c$ d
or al, 002
F# D2 R9 ?+ U# ^) H out 092h, al# f. p0 t# S% r. C- L
out 0edh, al
( a0 e+ F- _( v1 U' Q3 l cli
1 B# a8 _! T, ~ mov eax,DSEG
2 ] k3 V5 k7 _* ]3 y8 O shl eax, 4
2 \; [/ _6 X0 }$ a, _+ K xor ebx, ebx
6 y8 z6 U) `2 B* m1 i7 S mov ebx, offset GDT_def
6 e0 l7 v. ~; D: w8 ~$ p/ W y add eax, ebx- E) B Q. k" v5 E7 z
mov dword ptr GDT_Addr.Base, eax
; |& M9 p/ G1 a2 E% C6 _2 E lgdt fword ptr GDT_Addr
# ]) v. a5 E7 o4 w7 V( n5 c mov bx, 8, v% z6 o0 F& H @0 z
mov eax, cr0# m F; B# x6 Z
or al, 1+ d m- ], D: A0 G: a' P
mov cr0, eax
7 `3 V5 E7 w$ w( a2 l/ ] jmp PMod4 d0 v: R% c5 w: O0 @ t
PMod:6 U4 h. x3 x) T, ^, o8 s
mov fs, bx
* e4 r6 q: y& b4 c5 Y5 @" a mov gs, bx1 y; o; D) E9 t8 e& [$ H
mov eax,cr0
0 X" r3 t5 J% D4 d" M and al, 0FEh7 ^& w( B+ h6 |2 ~% g7 m/ q
mov cr0, eax ) r4 j3 |- ~1 J. z \
jmp RMod
5 i6 ^( i0 ^& E4 Z% gRMod:
2 c, s! J4 s& h. V# ~8 ^ xor ax, ax1 }* ^2 ], S0 l" b \ A: @
mov fs, ax( V, I6 m. J& n$ E( S
mov gs, ax - x8 q1 i# d R
sti # J& `4 u4 `) Q# `) t2 S8 j
ret" v: J% @2 c" M6 q# N+ Q3 {
big_real_mode ENDP
; @$ N1 b. H8 ]5 [;------------------------------------------------------------------------------------------------. A6 W0 I% D" x4 S; N. g: O8 c
real_mode proc near
& d# q4 H5 |% c in al, 92h
& j1 I) W% V* M" s and al, 02& w- v' g: S4 H
out 92h, al
2 `' \; a0 E; g ret
Z/ f; v* w0 ^, S' ?) _9 \5 R. qreal_mode ENDP
4 ?( W* Y* @6 |2 N;------------------------------------------------------------------------------------------------+ z4 O6 h. l* Q S
Get_Commandtail PROC near
; F' \* W. ^* M* r mov ah,62h , u$ `% ]' e5 M( a* j
int 21h
6 Q5 I l& T; w* N mov es,bx2 }0 Y" m' K6 ?& b/ @5 i
ret
# B3 P" d" o, o/ X. o4 p: i, T+ fGet_Commandtail ENDP 5 U4 g/ C6 Y% G F6 g# y6 u E/ k
;------------------------------------------------------------------------------------------------# d. H4 G/ w9 B8 l& L: Z
PSP proc near
# _' P0 v) d# V* ?2 i' b2 c xor ebx,ebx% `: r# b- |. T" U f" W* b
mov si,89h
8 A; ^7 w+ P# W2 V; R+ R4 w1 d/ I: F7 w S mov al,es:[si]6 S I9 E. R! ^
call Change* c% \- U! y. e1 w2 |+ z+ K0 E
mov cl,4
9 p$ F9 f9 y9 d+ f7 I5 v1 F% e0 B shl ebx,cl4 d* h6 b, [3 s% r% N
add ebx,eax! Y4 D' { ^% D8 L5 f( |
mov al,es:[si+1]( M6 e3 A0 c. U9 Q; J+ n7 p% y
call Change: a1 I& ` U. N1 L. w2 P
mov cl,4$ E# L/ ]* Q( {& c9 Q6 e/ T d: Y
shl ebx,cl
& l* _9 x. F% T add ebx,eax, C# x% l8 @9 c8 V: G" ~
mov al,es:[si+2]
5 a" f+ `4 D |: y call Change
W: E1 T4 J" s/ ~9 r3 D4 P mov cl,4$ y1 {% G7 y: h+ O9 F
shl ebx,cl. a1 O8 ?1 ^8 [
add ebx,eax @. w8 W8 K# x. F6 i
mov al,es:[si+3]
: [0 E4 t9 f8 Y6 { call Change: p- e3 o. e6 v
mov cl,4( D% ?7 m% y" j% k/ I S P
shl ebx,cl
1 [1 I, H- w* i! ` add ebx,eax$ C/ P& ]$ Q, r$ q; D7 S& \
mov al,es:[si+4]! C7 Q* v {8 |& T
call Change
7 _* C0 ]% e9 o( ~ mov cl,4
! a' ^5 X2 b; o0 ^0 d, L3 y; z/ N shl ebx,cl. c$ r) ~; q0 ?# `6 S( H8 z* E* ?
add ebx,eax- j. _) Q6 d# h- o+ k
mov al,es:[si+5]( j4 K, }' a& Z3 s) m+ \
call Change) r B1 m9 ?" R$ J( O# h
mov cl,4" N" h0 _' C5 e6 U; P; o3 U( H3 O
shl ebx,cl
7 Z6 \7 m+ a; u, C. L8 y$ s+ E0 E+ F add ebx,eax$ o) X/ `, W1 M7 O# E. p- N$ Y- X8 u
mov al,es:[si+6]
3 l1 m8 y( m3 k$ f$ b call Change
+ V$ X9 z& T6 [ mov cl,40 j& s, q# T% |, q! m2 j
shl ebx,cl5 w- W3 @4 Z7 M \
add ebx,eax
' j3 n" H; ]! C- a* c. m+ V3 C mov al,es:[si+7]
# M/ f- U* A4 {+ G& u call Change/ ^4 r* v# P% P; `% h1 {, p
mov cl,49 E1 x4 _# `7 W. i
shl ebx,cl" D% n6 j0 R. L" A
add ebx,eax
# r, T* M+ p# }* ]4 d2 H ret
0 T% Y4 k; R8 mPSP endp
8 v* a( A% e" _;================================================================================================
5 k6 f" |# L( H8 ?" {( l u xDPSP proc near
2 r* i9 D, Y# ` xor ebx,ebx
( r; q3 N/ F3 t% J: `$ D! T' U mov si,8ah
. w' a$ ^2 }6 D; O/ P mov al,es:[si]
$ B2 {4 u8 I) q$ D$ p call Change
7 p! F) q$ W0 I mov cl,4
9 `2 k, A r5 l- ] shl ebx,cl
% K7 O! n& Q$ z, D! d1 U2 O add ebx,eax9 ~7 c; ~8 W8 P
mov al,es:[si+1]
5 e+ T# R; ~ B# z call Change
0 N8 R* g3 N1 m+ m# t# D% n mov cl,4
" c4 b8 D- P# a- E# B% c, N shl ebx,cl
6 q( a. ] L/ h# l9 Y add ebx,eax
, b; {' B' ~. g mov al,es:[si+2]
- H; u7 [$ ?2 h A$ r+ y call Change& b- u3 T9 C \- {- _+ A
mov cl,4
* x+ l6 R3 m R6 d shl ebx,cl3 n7 n0 i y3 b% {
add ebx,eax
% f; \9 s' s" M# U mov al,es:[si+3]
5 v- w5 Q5 J2 Y7 k9 r call Change3 m3 C+ f/ \. E9 b6 }
mov cl,4
G+ I4 P4 X: z% ?/ f shl ebx,cl
9 G: M) X( E: X. s5 p add ebx,eax3 a' W( P9 t d$ G$ L4 r5 c
mov al,es:[si+4]. ]1 S. ~7 j/ I+ t# Z$ v$ {
call Change! P# D/ t$ ]& h4 r
mov cl,4
9 b/ x; {3 |. H+ \ shl ebx,cl
W* Z# ^; P3 t+ ?3 p( _ add ebx,eax
6 E, z* r% z* N0 @ mov al,es:[si+5]+ |. M1 K, j5 W0 `/ [ v- Y
call Change
/ a$ Q1 G1 |8 m& z. k* o( G mov cl,4. D0 P7 Z& @" R1 Q. z9 j
shl ebx,cl
d: B5 n7 F- f add ebx,eax5 ~) ?1 }5 Z* I' r
mov al,es:[si+6], C; T& y4 F% @' j6 T$ @/ E
call Change
' U% b& c5 U) S. h mov cl,4
3 {$ a# t! k1 f! N shl ebx,cl( F9 \1 N* C8 J$ V! }% S
add ebx,eax- }: W) |: R# p: y
mov al,es:[si+7]
: H6 ]) n- A, W( l' s) C* Q0 y call Change0 U8 H' d9 v" V
mov cl,4
/ y. e; u. {( h, R( A1 h shl ebx,cl
/ W6 x" `. c+ k* a. N; \! f* g add ebx,eax
2 i! P, n. j3 _- G; ~/ E+ D8 q ret/ x: B8 F* @& p4 h' H
DPSP endp
* @( ^7 ]% e1 G' W;================================================================================================
, e$ C" a! f7 k! fWDPSP proc near
/ D4 R- Y- @2 F5 \; Q2 p xor eax,eax
" n1 y6 d9 P! X% s1 f$ v1 k- ]/ F xor ebx,ebx/ }* ^! j, I( r$ A
mov si,93h
% K6 L7 E# o1 o6 n mov al,es:[si]! g- T% H/ y+ j2 f/ W( a f8 `2 \8 k# M
call Change
' P" i/ `7 T' W8 x6 R mov cl,4( }6 G; i1 }* W8 _. D
shl ebx,cl6 W" ?4 h* R' I+ z' M; Q* g3 L$ Q2 S
add ebx,eax, A% \, y6 X& D) U+ ~: x
mov al,es:[si+1]2 @* @+ w' |0 J
call Change6 ~1 D$ D' q. A# w( _" r3 b
mov cl,4
) ~9 F3 e9 X& [ U) m shl ebx,cl: n) R4 }/ n# N
add ebx,eax
( }/ q5 S5 e! E; T/ j mov al,es:[si+2]4 G2 T* v `1 h0 B0 u4 D5 K
call Change3 D8 C7 l4 T! L6 i
mov cl,4
. N6 j5 ^, O; s* s( o4 \ shl ebx,cl& _" n+ T* `: t5 N
add ebx,eax
9 ?5 ^% a. p. E, `3 a8 ]" O mov al,es:[si+3]( R# T# Y, L0 n5 F& i
call Change, B- j2 p1 O3 b$ A8 S# C
mov cl,4
5 z+ N6 s& N- o& t shl ebx,cl
" b' |. A7 w4 J+ ?; z add ebx,eax1 I6 r- ]& P1 G' R: Y
mov al,es:[si+4]% A, J- E y1 ]2 F h N- v
call Change7 @3 [/ s, b! V6 N
mov cl,4- m" |/ T* b8 Z$ E
shl ebx,cl
. ?- ~- s, n U0 N* K j1 H y( Y: ~ add ebx,eax* n9 }& e [% \6 d
mov al,es:[si+5]1 j5 O' {: A% S0 f) @% y
call Change9 w/ ?9 D% R# o+ ], ~8 R
mov cl,4
8 w3 A* d+ u! `6 S* v shl ebx,cl4 O3 w4 i% F* m# e
add ebx,eax
9 a3 w# B, {2 ? V8 [8 E mov al,es:[si+6]
/ f4 X! s7 w( [8 _ call Change
# I, l. M+ k6 t2 U( h& X& r mov cl,4
1 a g. T% K1 a+ W5 f shl ebx,cl
( D6 r! ~, X# x- n1 \/ V( f! } add ebx,eax% Y+ Y% v, R! ^ n+ b* G) W
mov al,es:[si+7]
2 r6 T/ q& i8 r* y b4 S+ K call Change5 L" V. G* ?3 J4 w# z0 t* V3 w& M& }
mov cl,4
8 k2 q5 ~! ~# C shl ebx,cl! P! X2 {2 }: d' d H5 }8 N
add ebx,eax
: g0 p% J m5 j3 w ret' ^' f' g9 G2 o$ }) `
WDPSP endp& ?+ s6 V$ B! K+ f0 \" W" J; Z" I* P
;================================================================================================, j) [' K5 n9 S4 B- _9 f8 l8 T
Change proc near6 a8 o+ T/ M2 T
A:
3 _3 d0 B' M1 F- i1 @+ S movzx eax,al
3 m2 y1 E. W& a9 | mov edx,eax7 f# Y! ]- |0 W6 n5 Y8 H
cmp eax,'0' - N0 ^3 M+ a! _
jb A
! a1 [" p; `* \3 u* Y% w cmp eax,'9' . `, g& E1 b7 H2 x# ]4 o
ja B7 F# n1 U o5 {2 B
sub eax,'0'
% U( q9 X* x7 s0 t6 I3 U3 j; z jmp short E
! B2 N& [7 M& _- }B:# E; ] i# ~8 A' N$ F* k, X
and eax,0dfh $ w( y3 X7 E9 q2 h
mov edx,eax
- T% Z8 h. R* x% I$ X+ Z1 s8 R sub eax,37h
7 }9 ~% X# D9 k3 I cmp eax,0ah7 g7 Q0 C3 ~" a# u8 g. x( @( t
jb A
/ Q# r1 }- ^6 ?( h/ F: Q: Q cmp eax,0fh
7 C6 s( P& {3 y$ ]/ r. S- Y ja A 8 d' a( O. R$ d0 |/ ]
E:0 @8 g9 u: E* B5 i" u
push eax 7 {, n' i4 w9 B; o
call PRT : W7 K! r$ v; q1 [5 {5 r
pop eax
* u9 @( A8 C1 l" F/ u0 Z- YCExit:
) t+ y5 @+ W, q0 P. Z3 j ret
6 G: g+ F$ ?& d# k9 tChange endp
, G, E5 p- w9 T& @% U+ i& b;------------------------------------------------------------------------------------------------) B! ?, [& d1 N2 m
PRT proc near
; U" t3 R+ F o0 r5 ^; c% e) v mov ah,02h
# W. ~1 @" G! I* [6 J5 c int 21h5 Q9 d% }6 J! a$ j
ret
6 }8 r5 F2 L$ z8 ^& J( NPRT endp4 P& r3 M( [8 h8 j1 U6 x
;------------------------------------------------------------------------------------------------
( Z- } z5 N$ b, O ?crlf proc near9 b" g, p: U, j* g) k7 h5 I0 [
mov ah,02h3 r; g3 f- n4 B; t! N! a( t0 F/ a
mov dl,0dh% Y5 q; t( ^4 e6 N& b
int 21h
$ m: |$ ^% r W% I& H" X r mov ah,02h# @7 g" @+ n9 i, i
mov dl,0ah [; s& @( A1 l9 r
int 21h/ H1 e4 i2 y5 G. Z
ret( d/ H( @+ R5 a; h1 |- h
crlf endp
7 o; J( t. e, C2 I$ f. H;------------------------------------------------------------------------------------------------
% M. ?' o+ ]- N7 r+ __32bits proc near t3 F. b# @4 d* z6 T$ z7 l
pushad
9 o/ Q1 x8 l* e mov cl,4
1 a4 b: p. v; U rol ebx,cl' k7 h4 ]0 x- h$ ?8 T4 `0 V
call print_4_bits
( x0 w8 F4 J/ h5 Z" e0 k k2 u rol ebx,cl: T3 O, \7 G6 \+ G
call print_4_bits, P, N2 i" R8 L) Y
rol ebx,cl
5 X) v) H; m7 b call print_4_bits' @. f# U( }# Z; a
rol ebx,cl
2 B2 W |# ]3 @& { call print_4_bits
2 `0 }; z# z) j1 F, F. A* ~/ ^ rol ebx,cl
: w" k1 }, S# V% R3 L8 ? call print_4_bits/ e2 ]6 j# `0 \1 b3 w, i B
rol ebx,cl
# ?# q4 S( R# |6 w4 ], c3 i* _ call print_4_bits
6 P4 P! U4 M7 C5 G rol ebx,cl
$ t4 W7 R' ~8 d9 i( @ call print_4_bits8 o8 w: S. M1 `
rol ebx,cl
4 | ~5 o; q' d9 W" ^ call print_4_bits
2 c0 H1 i# S2 c I7 T" R& d rol ebx,cl* _- e/ [) }* b: i+ @" g9 `
popad! Z; u$ @! p( Y: W0 T* _7 x
ret
2 ?. c! A" E) F7 q$ z$ j_32bits endp- X! C7 f) l, q7 A: P: q7 n( ^; K
;------------------------------------------------------------------------------------------------
$ n: t' {0 x9 [0 M1 b_16bits proc near/ J* ?& G; n( O" h7 V# Z
pusha
/ t# p) z1 [+ G6 c: k4 X; O rol bx,cl
# z1 B: W6 p% H4 e call print_4_bits5 f0 }( z- e& h) f+ B! I8 {' L
rol bx,cl+ z8 t0 G# V2 @/ Z- X6 R: u+ d
call print_4_bits8 Q( c$ |( b/ ~1 [; z0 r
rol bx,cl1 A. N! h% Z5 _8 U& J
call print_4_bits
( @) V5 s0 }- O1 c1 m; u1 l rol bx,cl
, e, X2 Q: S+ H* a2 K call print_4_bits& ?! M: q$ I" v8 H
popa
9 m# r7 S* c( O$ j ret
! I6 D- D8 }8 U5 ^' g/ |* I: n_16bits endp3 @* Z- v- s9 |) l9 g: G9 G
;------------------------------------------------------------------------------------------------! Q' B+ y) F# B# x7 A* m# F
_8bits proc near% P- R$ G6 I% C7 s; O" s3 ~
pusha
a( j$ A+ D a& L* ] rol bx,cl! U* `& K0 M2 w- `- P7 `) u, ^8 _9 y
call print_4_bits
* N! ?4 K9 g+ h# P8 ]# w c7 u rol bx,cl
) t9 d+ W! F! V( [& ^' ~ call print_4_bits
6 m* o& }8 l9 d3 V popa; ~ |7 f3 q' z8 w
ret
- d: _3 \3 T; P1 W_8bits endp$ c4 T7 J& T: }, o0 d8 T
print_4_bits proc near
& b6 n$ L. g: [4 }5 a mov dx,bx
- R+ A" X/ \$ u4 p. X- i5 O and dl,0fh/ @9 j' P0 d9 ?! \
add dl,30h3 j# k! k3 g: [" n" L" u" A8 V
cmp dl,3ah0 Y$ P) g( O% h1 u0 i# c
jb print( E' |% ?$ y$ w0 j
add dl,7
9 f: t5 N) D! M% R( }1 [print:
9 ^. r( K A8 r" B* {" G mov ah,2
8 k: D1 i3 O8 T* `) Q int 21h
. b0 I( B( d4 B+ m" N ret3 z' {( v4 S* U7 j4 Y7 }
print_4_bits endp $ E! l) |( _0 c- p) m. [- S
CSEG ends! [ z1 K- H6 Z- z" x
END |
|