|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)
# R5 @; i3 a) Y0 }4 G) r
+ C+ }7 B i- r& t5 M) U; \% M1 B則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data') ?8 a3 ~: q& O
* ?' ]5 x& e8 x& [ | b* }& }- U
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝 7 `! z& `/ ^: f5 P/ f, {
+ R+ N! r% Z1 M1 Z9 i.model small
! }4 t8 M* y) t* [: N$ x, B.386p! n3 w, v2 q6 ^: Q% N
DSEG SEGMENT USE16'data' 3 k* r) B4 ^2 E. e: G/ M
2 A0 s6 Q7 U! X3 |DESC STRUC
( K+ Y: \# `# B1 t% D6 @ LimitL DW 0
/ P0 |6 a9 b% D6 s$ k) _ BaseL DW 0 8 ~& Z& F) A! d9 L5 I9 J
BaseM DB 0 & D8 H- I/ R) a* }( ]" O
Attributes DB 0
8 ], b9 E% Q# j* d6 o4 d LimitH DB 0
; d! t) o( ]6 W) A( V BaseH DB 0
0 N1 h# ]4 a* @! O+ r0 v$ e3 pDESC ENDS
; X) |1 X: @# H7 W% ^. x$ J S- d! ^" e( a" L) e
PDesc STRUC
5 c* g' T' M3 c( m6 q% v( a Limit DW 0 / r4 `6 D: E' N# l6 F
Base DD 0 8 M# h$ ]: k' a& E/ F
PDesc ENDS
: t4 S, j V( ~2 e6 A! @9 f) _: C4 I" M- u5 F
GDT_def Label Fword+ d; t) g* p% y
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>2 [& E; t a3 G$ B. ^7 C7 {& A
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0># g( ]! M5 D: w- F* q0 O& E: @
GDT_Addr PDesc <$-GDT_def-1, >
6 K$ Y- ^/ y2 Q4 B3 d+ v/ S9 e
; N6 Q- z1 h% I2 }* ~# PMaddress Dword 0
4 g3 d/ ^+ F0 h8 V
& ]! S& l; y# O* n0 J5 LDSEG ENDS
0 ~" y& A9 k' T5 }8 x/ bASSUME CS:CSEG,DS:DSEG
1 }# U8 h6 P. d; N9 e4 W/ V- M/ M% b" M( H) e( P0 p
CSEG SEGMENT USE16'code' % S# k1 d. _: T$ i0 a
push ds; o+ z5 c% i! w& o7 j
push es
# U# t' d; }% t6 J push fs
$ A- z, Q# |+ B push gs- |! J$ A& {7 ]( D, |; ^
call big_real_mode
' D$ a! u" k) `) Z* }. q0 o$ O call Get_Commandtail, S) z \. c) @/ ~* A+ {& v" ?
xor ebx,ebx
+ \1 k. f8 Y( I: u mov si,82h5 H k! E1 H/ y
mov al,es:[si]( w& ~/ o( y: M& E, E5 d
cmp al,'r'
" V4 m* T& ^2 ]. ^ je R
- m5 R6 |. T: Q, e cmp al,'R'
( g" L8 F9 H& n* Q; U6 U je R% G" M/ D+ [, p4 p" e. u, ~
cmp al,'w') G# g+ C# `& F& V! ^
je W
L) w @: a, k$ G cmp al,'W') P2 |- a) u5 P# p
je W
& b5 A$ v' K0 p1 z# z5 zR:) b3 X% o z. ^* @- K2 l
mov si,84h, l: O. g" X6 ^; T; \
mov al,es:[si]# t5 d2 p* G- x
cmp al,'b'6 ~! a& q j: Z8 \ A7 t+ T- x
je RBT% g+ t- Z/ L: A( G
cmp al,'B'. p* s* G5 S) ~" i: I+ L6 S
je RBT
& C; a) ^& U! W# S7 w9 v& { cmp al,'w'3 |9 c' Z, m* T5 [1 O7 M7 O! U
je RWR
2 V( H1 H; a+ Z; p6 B m cmp al,'W'
7 C; c. T4 q/ T. T T" p X je RWR1 J% E0 f0 w8 z7 Z' c% |
cmp al,'d'
) R" B. \6 v& P |6 a' F je RDR
4 p/ p) u. u' d& H+ \ cmp al,'D'4 t! O p+ ]9 U3 `
je RDR . ]# J& V* x) k4 a+ z
W:
2 h" l7 c: s7 I5 a- X mov si,84h
; O; {& b) h! H mov al,es:[si]) A( x# B# C% N4 b# I3 m0 W9 Q/ D5 U
cmp al,'b'
7 o6 C$ r& d& J- X2 _ je WBT" |) ^, k Z3 K) K: n g/ y
cmp al,'B'# ]9 a6 Y; ~ \+ w3 r% e: |
je WBT
6 K0 y" T) }7 D+ x8 K7 |2 p cmp al,'w'
% x1 W# Q+ \. m$ e6 B2 x je WWR/ Q. E, L+ D: \8 z" q( F5 A' R
cmp al,'W' l6 z/ {" Y6 |2 d K9 N0 u3 c
je WWR3 r4 n' l% [- M a7 V
cmp al,'d'
" X* V& F5 N6 Y* |2 o je WDR
/ g) l$ x6 E1 A7 ~ cmp al,'D'
0 U2 o- C( f+ b g0 w7 D Y/ b je WDR
6 r1 a8 D, _- q/ {) sRBT:1 B4 b6 s! S# r- w. B
call PSP
7 a1 }3 x0 |9 `% t- m* j1 u call crlf 6 e1 ^5 c5 R. T5 H' n8 X$ Q
mov esi,ebx
9 y/ f3 Q4 s- M mov eax,fs:[esi]8 X9 t+ s# N! s5 X+ n" h3 l( B
out 80h,eax
" ^! x" [6 i$ s, J mov ebx,eax
' b9 X) a8 w7 F call _8bits- s8 [' N# G1 E8 v9 f+ U
jmp Exit; n0 f$ j& A+ {: n7 o8 S+ w
RWR: L: c* Y) p H+ ^! J# t5 E/ y+ e
call PSP 3 i3 P; H! G0 F
call crlf
% ~5 _9 V) g+ Q9 W- G7 ~ mov esi,ebx. g i; A. P( _0 p% V" a
mov eax,fs:[esi]. J+ c6 ]2 s l) h/ o
out 80h,eax! W6 |' y7 Z5 I, B
mov ebx,eax. w* }2 ^ X, i
call _16bits: K* {) t% p8 [5 h
jmp Exit
8 n0 Z4 X4 {" m4 s- rRDR:" y8 ^$ M2 h9 a x u- f
call DPSP
( b( x) _. e% Y, U* ~; Y$ F- H6 u call crlf ( G3 Z4 ~8 t5 H# U1 H! e
mov esi,ebx
1 O! _- R: }9 U mov eax,fs:[esi]2 o( `& l& ~( I
out 80h,eax
2 p) P% [. ~5 G: p" T mov ebx,eax' y$ _( U+ ^8 ?& e
call _32bits( G, v4 J2 w* R2 o$ _, A c A
jmp Exit
5 S7 c/ J8 U6 w3 e;------------------------------------------------------------------------------------------------
: Z( B- }+ _) B2 d& XWBT:8 |6 C9 L! x/ V) B
jmp Exit
' g1 v1 P. i) j5 yWWR:+ T8 E& o5 P f
jmp Exit" ?+ m0 W+ \( h) X) ?
WDR:
3 |) d; G( O6 ~4 d) } call DPSP- o0 e) t- t# B# n7 B/ Y8 h5 Q
mov Maddress,ebx & l/ f+ Z* K; F+ H
call crlf# v, K8 G; w- b% C. t
call WDPSP& j+ x+ p( B. d5 @9 V$ Z
mov eax,ebx
3 a! [6 ?# M) Q1 [2 q) u- O mov esi,Maddress
/ ]+ P, y# h9 _1 Z& ?' M mov fs:[esi],eax
+ ` e, B, r6 q# F' i9 S$ H out 80h,eax
4 k) S% D- a4 @% s& t; \3 w* G- q l jmp Exit
8 ?! P; H- c; N( G;------------------------------------------------------------------------------------------------
1 j2 e5 p: D% p! F4 dExit:
3 A" H) G" W3 o: p- P0 j. { call real_mode
3 ?6 d0 F2 h' E, O: o" t pop gs* r" H2 Q4 ?7 x+ _# f Q
pop fs
$ J$ \6 s/ u! x3 H/ t pop es
( G5 j) ^: U6 P+ S8 x! t pop ds
" \& ^' |& e8 e+ V .exit* t9 H0 d. R" J
;------------------------------------------------------------------------------------------------8 e5 D9 H8 Y( Q A) Q+ w/ p" M
big_real_mode proc near
@ G5 X- x h0 U$ ^ in al, 92h0 `6 m5 [/ T& C0 _& X5 Z4 P5 C* Q
or al, 002
5 K7 B. O k" h- Y" w @ out 092h, al
) U' O8 h* C8 [7 W. `/ y2 Q' S7 \ out 0edh, al+ N" X# Y- [! U% m( u
cli
4 ~4 d+ j. }9 g6 @/ d9 ] mov eax,DSEG3 g" T/ E, m, z. M, Z& K6 q' l
shl eax, 4 a6 ?; _) _/ b0 u! h8 }
xor ebx, ebx
3 ^4 h; m7 [8 T; y% X! _ mov ebx, offset GDT_def( f2 t( t; J& a- D) ?
add eax, ebx0 Z, o1 G' v; y
mov dword ptr GDT_Addr.Base, eax0 v5 f. v1 C: X
lgdt fword ptr GDT_Addr
1 n. f; V Q9 U9 R# Y" w, R6 D mov bx, 87 f8 w: o! ?. W$ ]2 J; x' c1 T
mov eax, cr0
+ {# |+ x0 h5 q* P2 `+ }$ x! ^ or al, 10 V+ K5 R, s+ _" h0 E
mov cr0, eax
' @, v8 d9 A: N) q1 P1 y' e0 D jmp PMod& R% w8 G4 ?" M
PMod:2 s9 d: p! j# h% C. ~
mov fs, bx
6 U- X% A- O% f+ f+ m3 U mov gs, bx
( \, x: D- [- U% y. R; U- H) u mov eax,cr07 d) z. ?/ O0 T* v2 C" A. O7 R
and al, 0FEh
K8 m8 w0 b4 p6 W1 R mov cr0, eax + I( L3 ~/ d! m/ `! P: P
jmp RMod3 G3 E: Z. [/ m5 h9 u4 }% P, s
RMod:
? F: v1 \* @7 a2 D7 w6 t, F2 e, j xor ax, ax
( _/ W* d$ ?: J3 [ p6 ^% T P8 ~ mov fs, ax
( f1 S' R% ^+ e; P; s3 r8 |, X$ T mov gs, ax . R. l" I9 y4 }
sti
# K1 S. V+ K3 a% t5 N" a ret
% P$ K7 W. D1 A. z2 G# F2 @3 ^: ]big_real_mode ENDP$ L G6 I5 D: u t
;------------------------------------------------------------------------------------------------- W- @8 z1 A+ N, v' J
real_mode proc near
@" Y) L) N; O7 E3 I# X4 i in al, 92h
# z3 V, p9 ]% Q4 Q and al, 02
8 b$ F6 o$ p4 Q out 92h, al ! [8 ]) I: a8 D* V& A
ret
+ Q- R. D, u$ _, b# A; }( Q2 }real_mode ENDP# N- M, H' j" R7 K" P5 h' c
;------------------------------------------------------------------------------------------------6 R3 |6 {" S% j+ u
Get_Commandtail PROC near
+ `/ d$ K# |7 c! f" n& T. A ^ mov ah,62h
$ \' i0 t( N @/ s int 21h
+ e; `" o, @* G. T mov es,bx
" E: u8 [1 `0 N Y J' c/ Z% D ret% D# m) V, m! t4 Q: I- f8 H; ~
Get_Commandtail ENDP 2 W7 X5 g& D+ F! F3 @
;------------------------------------------------------------------------------------------------% E; x1 N1 E( W; `7 F
PSP proc near2 Z* Q2 D* t) P# _! q! v
xor ebx,ebx
, f; s3 {; `+ O% G4 j# p mov si,89h `! f: O R, `
mov al,es:[si]" j+ }# x9 X) q- }- |
call Change. s5 K5 X+ X6 b' l8 n* F2 H$ [
mov cl,4& }; V2 T8 ?* j9 D( D, \8 G7 Q
shl ebx,cl0 {, q5 K- U4 a4 F: l/ @# H
add ebx,eax/ p, j' D. b' K4 I+ z/ u" d
mov al,es:[si+1]
' B6 ~8 n. ~$ g9 N call Change
, T" |1 }: D5 a* P9 s# x; R' B mov cl,4! T& e+ | f5 N! e# r5 |
shl ebx,cl
/ z2 `$ o2 b6 w1 _* X: T add ebx,eax
0 J& }8 z& \. L9 F4 T$ O, p mov al,es:[si+2] i) m; ]9 t) t% H5 p" g; u0 ]5 E; I
call Change
4 h7 A, v0 j( y4 ]1 |" r, ^" `6 m mov cl,40 F& F& a9 I8 }% S5 K$ J h
shl ebx,cl
% s; {0 N( \3 s6 I add ebx,eax
; q/ G% [ P4 u/ Y! `7 ^; ? mov al,es:[si+3]
; i6 ~/ J0 Z1 g$ P1 [& Y$ ]# b5 e, g call Change9 P o' G! E7 w+ p0 ~( g3 |' @
mov cl,4& I3 Z6 M0 z9 f1 E3 J2 I5 b& F
shl ebx,cl
) c! Z- f. P7 w: K( w1 _5 z add ebx,eax3 a1 X: l% Y) j( S! _
mov al,es:[si+4]' e) r ^, y9 y
call Change" }/ }6 M+ u8 w* j4 |0 T6 H- \3 A
mov cl,45 p0 Q4 j% a0 W$ Q5 J: W
shl ebx,cl
4 f* F: p: b u8 O add ebx,eax& A" ?$ h+ _& d# B/ l% h
mov al,es:[si+5]
" m8 L, y+ I- Q+ l call Change- i2 P% ?5 O9 d! k @8 I8 d
mov cl,4
& Y6 {! R. c0 w& \* } shl ebx,cl( ^3 A6 D$ I3 S3 A
add ebx,eax$ R( I, U3 G6 [, V* c3 I; H" G" I
mov al,es:[si+6]' U% v F6 h$ Q
call Change8 u6 O. i4 I4 ?3 ] p6 K% C) T
mov cl,4: f" J! e" J+ [1 a' b* ?
shl ebx,cl
! F$ g' |; x, {" S3 M3 f ^6 ^ add ebx,eax- |8 Z4 a; e7 [( \1 l/ ]; ?& G4 y8 G; X0 v
mov al,es:[si+7]
# j. ]7 Q8 l) d* k ?: W9 n0 B# } call Change! ]2 j" {$ Z* l+ g
mov cl,4
3 U8 K8 ^, I2 m3 p0 B shl ebx,cl7 c8 c; O" _3 L5 M0 f
add ebx,eax
# G/ Q: S) p' g0 ?) @ O ret/ G4 a% Z/ v! [* ?2 }2 C2 D$ L
PSP endp
! j2 `# p6 ^ |/ _# F# r;================================================================================================
% \2 K3 s; x* s7 YDPSP proc near
7 Z: l- }5 Z! _- I6 n) w7 V8 V4 h( X8 H% E xor ebx,ebx
* m: q6 `; E5 H, d mov si,8ah
5 i' I, J+ W' m mov al,es:[si]
1 q- `4 d* ?9 B7 U u3 V8 c j9 r call Change% _6 d! ~4 {, f
mov cl,4
" P) M2 f& q: R9 U$ h shl ebx,cl
0 z4 w+ `$ x+ G1 r$ N add ebx,eax
$ U" k5 k5 s$ S2 I mov al,es:[si+1]
+ _0 x+ g! Z% o) O0 e' n call Change
9 O$ w, @6 L- A: r- n mov cl,4
7 b- ]7 @- N! M& J( F shl ebx,cl- W- K+ Q8 k4 [3 A* [9 O
add ebx,eax
1 H; V9 F3 U# P( O3 l mov al,es:[si+2]' D+ r9 Y6 g1 @" I3 d- c
call Change
1 Z0 m" \ m4 C* a0 z0 Z/ t mov cl,4
! U4 v2 T. x8 g" w9 o3 Z shl ebx,cl
: V y& M: Y6 H( A9 }1 J add ebx,eax, S( j ]+ e; a+ Q" j# I. B
mov al,es:[si+3]
* y2 h% g- O. E" r: n5 u% _3 b* ^ call Change
; H" i( g$ s" o8 M mov cl,4
+ h0 m# ^# n6 ?2 G x: s q shl ebx,cl$ _, |. V8 R7 Q
add ebx,eax
7 x: r$ {" U" z. p% K) K$ _0 J mov al,es:[si+4]
0 d3 N+ r9 @, I: k9 Y; P# e3 }6 I call Change
. e4 i. i% X* g2 b$ w mov cl,4
7 t5 T, ]0 b% b! |1 X shl ebx,cl
3 f) s! Z+ ^) ?) c, n! d5 M add ebx,eax: Z$ A% D: F8 r# v2 x
mov al,es:[si+5]
3 H; k9 H; g0 R& O/ `) q, C0 s5 f call Change# q7 S5 i2 L5 N. g1 X' ?
mov cl,4
8 t, Y- p! {: j: H# d6 K shl ebx,cl* I3 t, N+ N8 e: E y( E) G
add ebx,eax7 ` X0 T/ z) N+ v/ M
mov al,es:[si+6]
0 y# z7 n/ T9 @- C call Change
, N& ~ V5 T& \/ j; N- ~+ x mov cl,4& y, J* q6 M" x4 q h1 k) w
shl ebx,cl: G; f1 D5 |' G0 c8 S
add ebx,eax+ p& ]( M* s2 i8 X: @5 {, y: V6 ^) l$ }
mov al,es:[si+7]6 [7 ^) @1 q. p: d) B/ @
call Change+ L2 e, q( n, W, b" V
mov cl,47 I' f& ]/ W! k
shl ebx,cl
; [- T7 [' n1 C6 T add ebx,eax) c& D! b0 z: p' I9 _$ M) ]5 z
ret
! L* O. f* k% Y5 `5 D) t' ~DPSP endp
) E! M; O0 P! e4 b;================================================================================================7 e% Z, t# W) x: D6 t: U0 K0 c) x
WDPSP proc near
$ e3 G# I: Y3 Q6 `5 I4 b( L2 O xor eax,eax D' I( r' R6 L! p! @# Z
xor ebx,ebx/ H, h* e2 t: \1 w& l% w' U7 ?
mov si,93h9 N5 g, g5 q/ u3 t+ O# o0 j: V. e% M
mov al,es:[si]
5 j$ V- U7 K: F( C) O2 Y call Change
" W& k- v. q7 E' v% M @3 V mov cl,44 O u# P4 H( F0 k2 U
shl ebx,cl* {( x4 g7 Q5 w! g* A: T
add ebx,eax
9 B) j1 u- h$ l, n8 O7 ` mov al,es:[si+1]
9 {2 S- c H1 ~7 f" D call Change9 T2 X+ W$ M& B7 A% P3 F: T
mov cl,4
( l0 {/ d3 a) q# y- @& s+ B8 ^) g3 z& ^ shl ebx,cl
- P! b% ?* J" ]: _) b; }6 A( I add ebx,eax
, }8 W4 H! E- q- N S mov al,es:[si+2], i2 E: g6 I5 ?% m; _
call Change2 o. p5 s7 p! i' X m( ?
mov cl,4 S e1 y- U4 w6 J5 ~
shl ebx,cl
6 {- d* c, O2 | add ebx,eax
. \( Z! W1 Q- G; B7 a* o( G mov al,es:[si+3], b) I" P8 X* {; n# `
call Change* |* V0 Y" J1 y
mov cl,4) O/ T3 f: I* Y
shl ebx,cl R# ^1 k8 W& p8 }" X- i% O
add ebx,eax: K, a" _4 f8 F' K! \6 j
mov al,es:[si+4]% S z0 Y, r: k! c
call Change
, L. A, a, f) e, {$ [8 L mov cl,4) \8 s& |; {' h+ s( L
shl ebx,cl
. r$ a6 q: U8 l2 b4 g0 Y' p9 [ add ebx,eax& p: {& P6 W: Z/ k* c4 `) t
mov al,es:[si+5]
& g3 g4 h2 @* `) b call Change
' O8 g$ g( U* r* E mov cl,40 Z, s$ F) @( u5 |5 N
shl ebx,cl
$ `7 K2 N1 k5 @; `& B add ebx,eax
9 }3 z, K2 K+ G Q mov al,es:[si+6]" B! K; [! l8 y. @. F3 D6 r
call Change% r1 b, u: J# Z! B
mov cl,4' @1 @: k) u) p# o! }6 q2 P
shl ebx,cl# H, k. @' m/ g
add ebx,eax
. f# G: z! [" ]- G# V mov al,es:[si+7], q. X! {7 F7 Q `: \
call Change
' u2 p9 P; K% @4 W( J" W8 x mov cl,44 M( S3 e8 f# A- k0 d3 i# A" k
shl ebx,cl
" H# M: H7 ]* W. f: L. Z add ebx,eax
# F+ I" `. \+ |( P# r) j/ A4 o ret
% u% N- q, b9 ^! b/ i% b" N6 _WDPSP endp: c f3 z. Z% S* l$ f& z
;================================================================================================
0 j% C0 Y) p! X( B5 Y9 u [Change proc near
\: L$ n% Z0 tA: ! u) R; b' M, ?7 J# \% V
movzx eax,al( `2 ]) }, q1 U5 v; Q* b; r$ M! w
mov edx,eax
6 O# x- w2 v/ [+ A( ? O/ I cmp eax,'0'
! U1 p( Q. S) {& h# l. ] Q! u jb A
+ u% K1 D7 e9 I5 W4 Z cmp eax,'9'
& j7 r$ ^$ [* y& Q" ] ja B
) @2 y1 Y: v2 c# ~5 a7 P/ P sub eax,'0'1 S" j- q; ~5 M
jmp short E. Q$ i) c4 v, M5 k
B:
. g# @/ F& ?2 a+ O" S and eax,0dfh 2 ~$ a( y/ f6 D0 @ S
mov edx,eax
5 w6 H, J/ w1 q* ]- E& L$ S0 k sub eax,37h
) C% j. z2 [2 i9 J. }5 {$ o0 \ cmp eax,0ah% W$ F: d* S2 K {- @. M
jb A
: ^8 k, d1 W: i8 p' g, y cmp eax,0fh
5 R* W5 Y$ Z. N( \* ^; n; j) Y ja A * z$ }* n* H# L0 K
E:# F% J: h. Y: J1 @; T
push eax ) [: l, [! ]* U0 \
call PRT
! Q( l6 ~4 N( a: Q2 z4 c pop eax& ?4 B" z6 D5 V c0 ]# E
CExit:
! E: d- P; E) \( _3 h2 C8 r ret
2 j& x6 Z2 c1 F9 u% Z7 z5 M* fChange endp; i6 g4 q, m5 n. N$ N
;------------------------------------------------------------------------------------------------
% d2 J1 B: K. I- C$ ]# {" Q1 P2 RPRT proc near
0 y6 C+ p2 ?4 a' L! p% D mov ah,02h: p5 M+ ~; ^2 E9 W6 H- g9 Q1 F
int 21h
: r- m, c/ {% i" W ret
- \6 q& o% S' A6 Q+ l" a& ^PRT endp
7 A; j' \2 K2 @;------------------------------------------------------------------------------------------------5 s- \: B) R3 N! x
crlf proc near
9 V( v. }. r+ {1 U mov ah,02h
: Z2 e) F1 @/ @ [; k$ y% d mov dl,0dh/ _$ j# x& @6 F, O6 E; D o
int 21h
( X* f( ]- }! h& o( h( v6 v1 Y mov ah,02h, M! E0 `% f! e% q* G# w
mov dl,0ah
e) M) U; f/ W! | int 21h5 V, p9 E) b y
ret
# J _4 V* L2 `! Q0 Z- G7 q3 Zcrlf endp3 P7 \6 f% k: \, K1 v: l
;------------------------------------------------------------------------------------------------
# D4 P7 |3 k7 A4 U_32bits proc near
1 z$ D! w% Y/ k pushad" T9 M+ U$ f h$ i8 ?
mov cl,4
* s% A n, H- h' p rol ebx,cl
9 j q9 ~* o' ` Q$ r" l# a call print_4_bits; n4 A* {8 z( {6 ^, z A6 \
rol ebx,cl& Z- `( ~ f! |- O! f7 a$ b6 }
call print_4_bits% z4 J. H" D$ t2 t- Q8 Y
rol ebx,cl
+ Y& f' |1 ^) p+ [ call print_4_bits% H/ g$ d# {# i! n6 `
rol ebx,cl
- u% m, ^6 F2 [& z' M' Q call print_4_bits
( F4 z* [- ]$ X8 T8 v! x rol ebx,cl: w% h+ L6 d/ s p
call print_4_bits
7 }! Y/ n F" _9 o: ` rol ebx,cl0 D* b% C8 t# Y4 w2 f
call print_4_bits
% G* i4 X$ _7 v8 j rol ebx,cl
' P) n, x5 x/ H6 G9 i call print_4_bits1 [% a4 Z2 `) A4 H
rol ebx,cl# l3 F1 {" L' [$ x0 L3 C. r5 e
call print_4_bits
. \) [( h9 l7 F8 k' K rol ebx,cl& E6 N- D+ N* U9 S$ [# O
popad @$ q( z- R$ S7 p1 c# ]3 d7 m2 C
ret
' U# ?' h4 E. Z. `5 e2 I_32bits endp
! Y/ O, A+ m. l) C& H8 T;------------------------------------------------------------------------------------------------
, H7 b7 g2 _4 d_16bits proc near$ y. `3 l5 O) t ?! N1 E
pusha ( m* N% p8 g$ @
rol bx,cl
% c; I+ s$ z. V) [ call print_4_bits% {- F6 }" c3 H5 X
rol bx,cl! Q S! C; j5 f3 ~, |/ y, Y N
call print_4_bits$ i9 \* l- |/ N6 Y {
rol bx,cl
2 S& y1 [# t; w/ l" h a call print_4_bits
0 G+ \& J4 q2 M0 I) F" x% s rol bx,cl
+ a b# Z5 \6 }+ e3 O+ S call print_4_bits
4 l k$ @- H2 m7 |% Y popa/ O$ m6 @( u9 M* r
ret
5 y0 k8 \+ ^6 Y* C1 v: V, P1 {_16bits endp# i: z5 F9 p b, [0 O5 T, z! E
;------------------------------------------------------------------------------------------------
! l, R$ y5 i2 Y4 E3 N5 B_8bits proc near
' ~5 q# U% M% U2 W9 b7 T1 ]- n- v pusha & A. }( w+ N7 E
rol bx,cl0 l, ?6 \2 C) {8 U
call print_4_bits
& a) \* E& k( f" ]3 U/ V rol bx,cl# C+ Z7 ~/ F; k& F n7 `
call print_4_bits; a' }: O! I0 m- i5 K9 z( E F
popa, ?: D/ X3 |5 `+ M. r1 \6 \9 V1 s
ret2 c' u( g5 w$ L
_8bits endp
) t. E: d' c. I& o7 g3 M! Kprint_4_bits proc near
; |6 B0 A; r6 h8 \( r" M mov dx,bx
4 D% E4 ]+ [8 Z L R" a and dl,0fh
: l$ i- O) K" t+ e# `0 d add dl,30h
9 S! {. _2 ]" m6 ?9 S- x! ? cmp dl,3ah
! n0 T4 T) y# T" K% _/ { jb print
" u, A4 W3 C* }7 \5 q: o0 s# l- Y add dl,7- R/ E4 F# r; G! t* z3 s) \
print:
J/ N* p' @9 [% ]1 M mov ah,2/ K8 F5 ?: [- k/ s5 g
int 21h, a7 z8 k* T& f& u/ T7 M
ret
/ U3 L5 J8 n- d0 bprint_4_bits endp
# c) `7 B& S3 J/ t7 vCSEG ends
/ c* j( u/ u" q8 f1 j! ?END |
|