|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)) L, Q4 x' u. d3 H* K( k! [
/ h. o: r) ^; g2 b則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'8 X- V6 |; m K7 M: X" M
q! o2 {; s7 q+ D% q宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
( [- M2 f; M1 u! o+ E; }9 e0 g9 F4 Q* o4 b( _' f4 m- Z# X: N
.model small
# k9 {; A, ]- m5 f0 x.386p
5 z, K! A1 z# x# r8 R' `' [7 PDSEG SEGMENT USE16'data' 0 m; x- H$ w( J
+ C7 r8 b c! j2 h& C& `" D8 mDESC STRUC7 z. n8 f% A/ ?9 m
LimitL DW 0
1 R2 m1 v! E! {1 v" a7 R% E BaseL DW 0
" c8 n1 E* V3 [2 _ [ BaseM DB 0 . O/ B4 a0 _/ b# v8 Q8 \, {
Attributes DB 0
k" u" e$ E. w LimitH DB 0
. {% T6 x9 }1 @8 Y BaseH DB 0
$ C1 [" Q- o- u/ f. BDESC ENDS
2 g q: w* e" r. K. q5 U y7 q1 d* v# K3 o+ Q6 Y
PDesc STRUC: t" ^6 t* t! ^
Limit DW 0
" R- h! i- B' o, j% J" ~: J/ x5 Y Base DD 0
/ x/ s0 H0 E- ?' Z- {; ePDesc ENDS
$ L$ r1 X* l. K6 n8 y g
2 O( @0 L; _. p* p/ yGDT_def Label Fword
9 R: q" w$ z+ m& p$ QNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>2 d U% [0 E9 f3 I8 h& N' S
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
' z; d2 w8 K! C; t4 Z2 KGDT_Addr PDesc <$-GDT_def-1, >5 v; @6 c" ]; z; w
; a, r$ [/ y+ Y8 \
Maddress Dword 0
$ k. c* J9 H4 A B2 D0 C. q( r; S6 I$ v; B
DSEG ENDS
6 S: F0 P7 `; a; K$ C+ _2 g* DASSUME CS:CSEG,DS:DSEG
8 X( z# J& ?) R+ B$ i2 O" u' {9 @
$ i4 h3 s% d- fCSEG SEGMENT USE16'code'
; s. L. g$ r) D6 L) X8 J, @ push ds
6 f# J; ]+ l* ]: X% b push es7 g+ E0 ?2 U4 W+ Q4 ]
push fs
5 E, x+ y! U' @: u ]$ Y) Q8 r push gs
, ~, Q0 F6 R6 Q/ A call big_real_mode
0 f0 c% ~* P+ B: Q call Get_Commandtail
$ J5 o2 j, H: p2 c6 e xor ebx,ebx
4 k R" F6 I5 r1 Q" _ mov si,82h4 k: f S+ l# ?" A& d( o
mov al,es:[si]
& A; d. y' j8 M* R" w cmp al,'r'
9 y2 t" N5 B& z% F7 {- Z" p je R
. \2 y) R( G- Y6 { cmp al,'R': f, l" a, H9 _3 J
je R
% }$ c) e3 P n; Z* Y' e cmp al,'w'" a: |" }4 d5 y& c, h' h3 w
je W3 _9 X, G5 O g! K5 b, y, K" g
cmp al,'W' t. u) i7 I! c7 H, G
je W
1 v2 W# n& F8 C, QR:" n2 u! b2 ]: p8 Y0 a' `6 {
mov si,84h
; X: t0 ]2 p) L( D mov al,es:[si]9 W1 F/ }4 F& Y# @( o9 G
cmp al,'b'2 f' s6 b% r' p( X/ E
je RBT
! i' ?/ J7 J% i+ D# x' f1 r5 ` cmp al,'B'
+ @" D; L% L. k5 B je RBT5 x6 F0 ~& H7 X* q D% J4 o, u/ G
cmp al,'w'
) B% p0 P1 Z# D4 m3 e. q3 V6 ? je RWR# T* I5 T3 f) E+ A
cmp al,'W'
7 j) P$ d3 X+ b8 M je RWR
1 ?2 T* o& l, I1 c2 k4 l cmp al,'d'. {7 V# ^( x) G% h
je RDR
/ ]0 h" G5 ~& a: q cmp al,'D'5 @- c& m+ [$ C2 y9 C
je RDR 2 E0 K, u- C2 \. H
W: , o) ? m7 ]! u
mov si,84h% e" C0 n x. D4 d6 J" R
mov al,es:[si]6 O/ ]7 t8 w7 V- m v
cmp al,'b'
' P- S9 ]- h+ q+ L) ]! | je WBT3 T6 t( J2 R7 X) ?+ `" @: n0 i" Z
cmp al,'B'
2 N! M2 T% [0 Y8 q! @6 I je WBT
+ `' K5 x r$ {9 R; g v& u cmp al,'w'2 P& v; o6 g; ]. z( }& G
je WWR
6 C; B6 F, L1 p$ J4 Y/ H8 C cmp al,'W'
# s7 ^& W- ]3 k& Z" p8 A+ B. s je WWR A) w7 m# O& q C* W# b
cmp al,'d'
; N) ~! u* ^" r$ ]5 O% g a+ r je WDR
" c, P) v7 S! h/ b" [ cmp al,'D'
2 s. z5 x% }. a8 f5 y2 E. y je WDR
5 _! e D f, B; p9 H8 L) MRBT:2 v I4 X/ i" [# B
call PSP
8 M, t( P2 H& k* ?- ~0 Z0 i+ B call crlf
, [( @# J, T) P4 _ mov esi,ebx
9 L0 A$ }4 k3 M0 \) d0 Y4 e9 q6 @1 r mov eax,fs:[esi]
0 }) s& ^! X. N out 80h,eax* x5 j) M, o1 z. ]9 M
mov ebx,eax0 A* G o! U& s7 R
call _8bits
3 a- k$ y) c$ h( M0 r: e; U% I jmp Exit* E; u' I3 |& U" V/ U" @
RWR:; @: t6 w) P0 T1 m. n2 T& x
call PSP
" q& P% ^2 G! a: s" A" q call crlf 1 ?( Q# C5 X, I- h4 A: M
mov esi,ebx
1 c; G4 V1 i! S/ u( z* v8 l4 g mov eax,fs:[esi]1 X V$ ~# x% m
out 80h,eax1 g8 r2 I. D) V" I
mov ebx,eax
2 w! q) f: `, m/ L$ o+ p call _16bits
; k' Q& H& K( I% _" e jmp Exit
3 K2 P9 Q* _# g) f* ~RDR:
- z, n8 [& x4 H2 G/ {* ~ call DPSP
! t% l/ }; ?% Z1 Q/ _, B call crlf 1 j y0 E4 J5 o8 q) b/ e' u" T p: M
mov esi,ebx
# n4 G! C# m' x% j mov eax,fs:[esi]
6 t: [# u& Q& Y+ A k out 80h,eax
5 }( e% J* v- g; W/ O8 t( N1 i mov ebx,eax6 q- J4 m" ?8 Z3 H9 b
call _32bits
5 x9 ^4 n( Q# p0 f' [9 o jmp Exit
$ f* A: n8 T* n;------------------------------------------------------------------------------------------------% @2 I8 _9 H* ^
WBT:
) B/ D+ Z) x2 v' w" t" T jmp Exit" f+ I( g( A% M% M4 ~
WWR:3 U' N% C; ?. I% K; h) j
jmp Exit
* n+ B7 n+ q; H1 yWDR:- n8 U5 B0 z6 w6 A- W5 ]0 m( K
call DPSP; k; U% M* Q; |) a7 h. g
mov Maddress,ebx : _& A. B6 N, K* [
call crlf, S' ~# i# w/ r+ x
call WDPSP4 n# W9 j( H' _9 f: y* X5 ^
mov eax,ebx# M( }0 ]% L7 Z$ F
mov esi,Maddress
F! e7 j# x: k0 Z ?" b4 h mov fs:[esi],eax7 ?; P$ A$ V3 t: q1 i! g3 F4 q& A' L! b
out 80h,eax8 K7 y" Q1 _1 `
jmp Exit
1 E1 F9 i: w9 x/ d9 S) p;------------------------------------------------------------------------------------------------ # ~7 J# q, N4 P" @1 E9 h7 O
Exit:1 P' Q2 b3 [1 O
call real_mode ) ]9 ^$ ~0 z1 {
pop gs- e& f) B0 ^2 t+ \5 x7 z- u# `
pop fs
$ Q+ Q( D! K" f% X pop es
1 G( z+ w( k- K8 O; ?2 _1 W+ _ pop ds - q5 h0 a4 ^! G
.exit
0 N: J+ _1 i+ @8 `' ~;------------------------------------------------------------------------------------------------6 I5 v* ]% r9 M0 H2 u- [
big_real_mode proc near
- @9 A \! ? j1 N& V: d6 y7 O in al, 92h8 W1 e$ G3 Y% X7 A
or al, 002/ @4 B1 b- h: F7 ~; Z
out 092h, al
. a7 ]0 q7 u* p; Q out 0edh, al& k! k! Z K+ y4 `/ t' Y
cli, c2 e% p& t1 y: t9 X1 y6 }
mov eax,DSEG
! G. p( l& A; C9 y: J$ ?+ X1 L shl eax, 45 R8 l5 Z5 ~& D: N% V$ |
xor ebx, ebx( y1 Y. S9 H; n$ X$ v+ J
mov ebx, offset GDT_def9 Q E, g- H7 e- [- i! u
add eax, ebx
- `# c: l9 V' B mov dword ptr GDT_Addr.Base, eax
6 T* Q4 z2 E7 z$ f$ @ lgdt fword ptr GDT_Addr
2 ?6 Q! {/ J# i+ s mov bx, 8
. B. \3 T# |2 j/ g/ P mov eax, cr0
! F1 H: ^3 i' J9 X, } or al, 1' P% d* D/ j" ^) A& {& u4 f
mov cr0, eax" B& K2 V( z) n: e
jmp PMod# Y% q6 @, U+ s
PMod:
% i$ M$ h' H2 R; t' a9 S1 Q) _ mov fs, bx* [, Y5 f. P m/ z1 j9 E
mov gs, bx
Z% U4 q1 J+ i5 ]7 d7 O" w' c mov eax,cr0
+ d, i1 ^& L4 m0 g" j0 ^ and al, 0FEh
: z' f3 J3 _4 v. O. k$ d' n8 C7 ~ mov cr0, eax
# y/ [7 Q' S6 a jmp RMod
" W$ L5 W$ B0 u3 o1 QRMod:
' A& Q4 I/ `% C) c$ Z! I, l xor ax, ax* F* ^) J; X9 r( T6 i3 o5 i7 c
mov fs, ax$ L, V" o/ p- K9 P
mov gs, ax - d4 u$ J, ]9 w3 B& H
sti 4 M% _5 F2 f8 m
ret+ \/ f2 k; w% Y8 m- ^
big_real_mode ENDP/ ]8 E; v" S; ?- D& H4 Q: ?
;------------------------------------------------------------------------------------------------
8 _7 e- P+ y6 S9 G! I1 R; Q4 rreal_mode proc near' P' X5 I* y/ N6 U' [* @
in al, 92h
p# Y- y7 b0 s' B+ R3 \ and al, 02
! E/ Z' f8 A6 j% V out 92h, al 2 B' [; v# {. w+ ^
ret
) e4 z8 Q5 m% i9 W3 Greal_mode ENDP
+ S4 C' R7 u( [1 G;------------------------------------------------------------------------------------------------
1 }& F- ~7 w2 {: g: T8 XGet_Commandtail PROC near
& O' h' l# m5 [" D5 D mov ah,62h 2 y N1 B: q7 K
int 21h; k+ P8 i4 q( p2 K+ y/ W' {# H
mov es,bx
( ] h" n- s) i1 W ret
- r. i7 {4 b9 sGet_Commandtail ENDP
% @2 r: A# E. g' }: I0 D;------------------------------------------------------------------------------------------------1 Q' p1 n/ n- B# c9 n& n
PSP proc near
- f3 d1 j$ W$ s, s5 L ]" V. J xor ebx,ebx
9 G2 S# M" J/ M( _$ @/ S- A mov si,89h6 m; R [4 l3 q( q4 ]( R' V
mov al,es:[si]
; A) r# j% A, K$ d/ s call Change
: `5 i- p- D& c" ^/ Z6 w% j mov cl,4
9 Y# A, \8 S) K8 @) {) W5 u shl ebx,cl- h9 g" L. ?( l0 N2 u, F
add ebx,eax( X: z: v1 Q7 ?
mov al,es:[si+1]
, z, l% u& e7 _ call Change
$ t+ Y; t1 M+ \) K7 | mov cl,4
# h! v% |9 Z2 O5 u: |; ~3 K shl ebx,cl3 T" q! Q9 g$ E, m) v9 j' u" j
add ebx,eax
0 [/ _! y( u7 v mov al,es:[si+2]2 T* i9 \: v$ z/ Y/ V% x) a
call Change
+ s0 p- a% b8 Q0 O S mov cl,4" G! R+ _. [- b
shl ebx,cl# s4 |6 ]9 I: T# s2 H
add ebx,eax# ]' M, f2 s0 n! f+ `; o5 x
mov al,es:[si+3]/ Y8 Q- p8 F: N9 I4 i
call Change
9 k H# y* {5 P+ ^" u mov cl,4
2 [$ |# q# A) C( z- B1 ? shl ebx,cl
3 t' C9 r4 D8 [6 |4 J, M, C) y$ Q add ebx,eax
$ @9 i6 A, D. D: n! f/ g& Z2 C; U mov al,es:[si+4]1 e8 _4 A9 x" Z2 m
call Change
]8 T8 f) x, g6 q/ q0 A' e mov cl,4 w! S `& F/ K8 y- ` z- v
shl ebx,cl3 z @( N, `& U
add ebx,eax- Y( c7 c, E1 J$ ?& ^! Y3 c. Z
mov al,es:[si+5]
: `0 Q9 D3 Q: }! j call Change
4 A& `, }* O- ?4 R6 k mov cl,4
8 }! k) g) g6 H* w. c6 | shl ebx,cl: K Q6 g+ }) m9 \
add ebx,eax( G [+ w a8 `% l9 O( B( P/ z1 l
mov al,es:[si+6]+ }5 T1 Q, _* K4 k( n
call Change
# o, H g) R- T8 C' X4 P& r mov cl,40 o9 ~' }6 l+ b) }- R1 r' L& W. x
shl ebx,cl
) N t; w5 i: Z add ebx,eax7 {$ J- ^8 G! h' V' v+ h
mov al,es:[si+7]
' _6 y& j' v! J, f5 l call Change! M2 y- f* j5 M0 a/ z
mov cl,4
! H& ~6 `. k) |$ ~! M5 e shl ebx,cl
$ u$ D- O7 x9 l; }# R) g add ebx,eax4 [5 |1 ?1 N0 h. s. B/ q
ret8 `8 | u5 h2 W: X( f
PSP endp
+ j7 Q& P6 i# z' H/ C;================================================================================================/ W% l3 k3 d6 O" p, d S! {7 `
DPSP proc near- c3 F5 }' |6 g
xor ebx,ebx' [2 ?# n' W; H5 }( K% o9 q/ P
mov si,8ah1 `' A$ d% I( g6 K6 A
mov al,es:[si]
5 f+ f: Q; j9 i0 H' a call Change! m8 ?' [: {. P/ l* i! U \& `
mov cl,4; A& V+ D1 l I6 ]; n1 b
shl ebx,cl
& G; y1 ^/ k5 q8 U add ebx,eax9 N+ X( ?! N! n7 }
mov al,es:[si+1]% U6 n$ ]" M0 b4 t) I8 f( z
call Change
) o% ?' E# e; U0 T" C- m' [ mov cl,4: ~5 z6 c' Z x% C9 ^$ d
shl ebx,cl$ N( m$ x; L- v
add ebx,eax
4 [; w8 a: `5 Q3 b: M mov al,es:[si+2]
8 i. C/ @6 r' X% i h, z call Change
\9 A, d+ _& O1 k( @ mov cl,47 x2 {& J& u# Z2 v6 g0 T
shl ebx,cl
! {7 m* L2 u" Y1 E$ V% u) h u add ebx,eax2 j: M' \( a' ]; }
mov al,es:[si+3]
! H/ A; ]; X! _, k call Change C9 T- x1 J$ ?; k* g5 }3 t
mov cl,4
+ {7 k( E+ v+ o' S) `4 W8 L shl ebx,cl/ C/ E0 F6 O1 Y# B
add ebx,eax% I. o. T! v* T, h/ B; \7 c
mov al,es:[si+4]
# S: J/ F* H: v7 [8 o call Change
; Q% ^0 S% I$ x. p$ d' B# R mov cl,4$ N( i' j9 E& T l3 I) _* g
shl ebx,cl
; F K% S: C! G9 L add ebx,eax \2 s$ B* u9 }3 p$ f7 Q% M( ^' _
mov al,es:[si+5]
+ V! J; P% } Y* ~6 ]( r0 \ call Change3 E, Z" W' u! C7 ~
mov cl,4
/ q( ]6 v4 X1 p: I5 U# D2 r shl ebx,cl5 ^' ^8 [4 q2 ]2 T1 n4 m
add ebx,eax
% p% ]# e0 @/ |7 m D mov al,es:[si+6]: T; I' G5 a. p
call Change) x8 r! w. _0 S
mov cl,4" w9 w1 M) U$ }
shl ebx,cl* _4 \5 E( U' O
add ebx,eax2 E0 ^4 t4 F6 G% m% s( q
mov al,es:[si+7]4 x A/ {/ I9 C7 I" e
call Change
J, |) s. O! B) p: a( \% j( G mov cl,43 N$ c$ h3 u/ X2 z6 t$ }4 N- ~1 ?
shl ebx,cl
/ W" m" A- G" ?* ^, B. D8 a add ebx,eax1 n2 i2 r& N- i, {! R) L. g- K
ret
. R+ }" }5 f" J7 }9 S* B0 Z+ |& KDPSP endp( s+ t/ Q! y+ t% a% P0 _
;================================================================================================3 T/ y1 a+ h! c
WDPSP proc near, [1 q1 Y9 K b: i1 {
xor eax,eax! ]4 E2 w# U" O, g2 n
xor ebx,ebx; e5 j5 p9 D) d: c! \
mov si,93h
, ?6 b/ Y2 R) t% p mov al,es:[si]
: I3 B8 C3 \) S9 n" d, h call Change( H( P+ B9 y' o/ I1 l* _
mov cl,41 n; G. M' X+ J( P5 q( L
shl ebx,cl
; s0 ^9 Z: s8 ~ add ebx,eax
j9 U* e6 i/ ~1 z# C mov al,es:[si+1]
% C( q! \" t4 y call Change% M/ C6 e$ ^4 g
mov cl,4
4 ?' S" k T+ E& G' c S shl ebx,cl
; ^8 b, E5 T. R7 w add ebx,eax! q8 G2 r! t1 V9 }
mov al,es:[si+2]
, a. q3 n" d+ n& ^ call Change9 x/ O$ ?2 f# ]6 w8 z
mov cl,4! }5 o- s5 r! D
shl ebx,cl
8 Z: ]4 C, N: h" i$ }& N2 V add ebx,eax8 o: ?; B* h' S/ q! J V
mov al,es:[si+3]7 } c$ B$ K6 _8 R) n. }
call Change: r* i& i! i- ]& L$ D
mov cl,41 c5 A% v8 Y; v) D! p
shl ebx,cl N/ Q5 b7 C, j
add ebx,eax
$ U6 N4 T: n7 Z" J mov al,es:[si+4]
& V$ a$ j; q- n7 W/ ]6 a' { { call Change
, {0 b) D0 T, f' u1 s% | mov cl,40 ]) Q: |# ~. Y6 n
shl ebx,cl2 Y' @! `4 k1 K6 d3 {7 C; A* B
add ebx,eax \9 y$ c2 C( u2 y' \9 I- U
mov al,es:[si+5]. ^! Z! Q; H; C0 Y2 q2 _3 k8 ^4 X
call Change3 I9 ], k9 n, Y. ]) z6 Y
mov cl,4! n! o9 ^: z6 T' P
shl ebx,cl6 ~* R* }3 C( D+ l
add ebx,eax
9 k' y* D! Z; | mov al,es:[si+6]
3 S1 [; U: w0 @# b! g call Change+ x- R! N& e( @: d% ]' _# O: W- A
mov cl,4& F' b) [5 w: y" E0 R; Q
shl ebx,cl
8 d& |4 ~" d4 g0 z9 b$ _ add ebx,eax/ {# T' O* P) X$ U3 z" z$ n! G# \" M
mov al,es:[si+7]
6 g% {, p1 h% X# V call Change; U S! u- L- w _
mov cl,4, ~9 J4 z" x( |
shl ebx,cl
3 X0 S% I) h9 ^ |$ e& C0 W' B0 S add ebx,eax
3 P7 g( Q, x# b8 L) b7 r ret
) O/ T3 d& o1 w# u/ rWDPSP endp: q! q6 ?$ O7 c; s6 a& m/ s
;================================================================================================
. J: ~6 l: i+ k: q7 M- UChange proc near& X0 [! ]% E2 M( _: r2 o* C3 ~
A: 7 ^# } m$ r" X
movzx eax,al' l" b9 I: @/ }* S3 t' ]& D
mov edx,eax
* A- z8 T/ A1 n. ] cmp eax,'0'
7 C) l+ c4 X' q: G' z* Z jb A
& ]! h Z" q# \. |/ J' f# w7 [; B: f cmp eax,'9' & ]0 o; O0 ?' l9 R/ ~6 ]2 x' N
ja B/ Y0 a# R! L# x, w+ \
sub eax,'0'( L* B% A8 a2 A' ~$ q
jmp short E: M0 y5 D" t! R+ q/ q$ K# ]
B:$ W5 y6 i- B( y. J
and eax,0dfh $ i0 ~' I+ R- }- @: _% D8 W
mov edx,eax
. B6 a2 _3 |& p, R) {# E sub eax,37h
, O( e* j4 [ [# A* H5 v2 ` cmp eax,0ah* x9 `: |1 }- k9 u" J. A$ W9 C
jb A ' l4 d7 H$ B$ ?2 k3 d% P' O1 @% _
cmp eax,0fh7 r8 r/ _# w0 a# _ L! o, t
ja A
) }% ~+ g- w/ _8 T: B) s# M7 RE:$ F. Z2 ^( h9 |5 Q3 m
push eax 5 R; o% Y+ R- i. `% |
call PRT ) E3 e' r' c4 d/ a. g
pop eax
- ^) |& o- ~1 } h2 ~# y2 ECExit:7 ]: D- h: _9 ]+ C; e0 H
ret
4 b* y) P! H& _% ^: ~% fChange endp4 |: c4 P) g& R5 C5 ~: N
;------------------------------------------------------------------------------------------------& Q: W/ V" C# O6 L3 F( W- i
PRT proc near$ Z# B' e9 e4 p' i& E# U0 T
mov ah,02h
/ U, P7 y( B O* D0 G0 w7 K int 21h
6 i' a" l `% z ret
+ R v( x, n2 `" Y7 pPRT endp. c, w) \3 f4 b+ `2 Y( d9 _
;------------------------------------------------------------------------------------------------' X: N8 e3 m0 L, t
crlf proc near
n y6 A" B: b# u mov ah,02h! M" B2 |. q- t* K
mov dl,0dh3 c, w2 d3 \, t( m* X' X" s6 B" S
int 21h
/ o* C' ^ z( `/ F; K1 }3 B mov ah,02h
6 W5 k( S5 ]' d2 c4 l, o, c# T mov dl,0ah
0 `) k2 s `0 L( C! j int 21h) @ b* H; X% _1 s. h! L( E
ret3 ~* C. q- ]( n4 W, j1 a/ z" K& Y
crlf endp
9 {. t# Y. F% \' c5 O9 E;------------------------------------------------------------------------------------------------* ]1 T# F' g0 s% D! U, r9 C; d+ X
_32bits proc near
7 l O2 T! g$ w+ s$ D B/ L# n8 R- P pushad' L( D8 O7 g7 R! G
mov cl,4 D$ a. i* X T+ D
rol ebx,cl
; u( R: H2 u7 {! j call print_4_bits3 P( K9 F" D2 i8 F4 g# {9 X1 |
rol ebx,cl
3 G# W$ p8 t+ J4 K6 s call print_4_bits
5 C- c! ^" P. B" V# }- E8 s rol ebx,cl
- Z \8 ]* I2 b( E0 m& i call print_4_bits
7 l3 O! `* C3 R0 p: ~4 T$ x& d rol ebx,cl6 L0 z/ }7 H Q
call print_4_bits
# ]# O6 Z4 y( k rol ebx,cl4 F w" J* s( t+ |4 ?, G
call print_4_bits1 ^9 }- Z7 b0 ~" B, E
rol ebx,cl6 m% m' W; A0 F; f. P
call print_4_bits
) @' ?5 p+ g( T& Z rol ebx,cl
3 i( S1 H! q- m call print_4_bits; k2 z0 U5 e8 e" `+ f
rol ebx,cl/ l4 r7 K5 _1 K& I4 D3 z7 G
call print_4_bits
5 W7 P, k1 d6 i$ p$ m rol ebx,cl) [, l1 z1 d% N
popad
6 }/ y$ w, F. r% M7 y3 w, c ret) y. l* ~. o9 E1 `; s4 O) D& T' Z
_32bits endp
: A$ Z- c* ]$ h. m5 \" I;------------------------------------------------------------------------------------------------
( l9 u( Q$ M! i) n9 m_16bits proc near
; s9 x/ A D9 s- E: m3 _4 e5 U pusha / v/ M5 m5 q5 n. S
rol bx,cl! Q' h: O$ q) B( T
call print_4_bits8 X( V, r6 I+ p
rol bx,cl9 ^) D, S: X0 o* n, R
call print_4_bits
% p6 p* A) y$ O. } rol bx,cl. x* H0 t) Z4 K3 e
call print_4_bits
6 U" e9 [( \) v* x8 A2 G rol bx,cl
5 v2 ]8 n* ~2 J" k" ]% @& z call print_4_bits
4 N- R y3 x2 @$ b( F) A- [% B/ c; Q popa: k/ k2 Z$ w X9 O
ret; v9 x/ d( q5 b9 J8 j- x
_16bits endp
$ F# N; ]. W" n;------------------------------------------------------------------------------------------------
$ W2 \# u1 l$ n+ }( K2 Z; r* a_8bits proc near* _6 \5 Y" M/ t/ d% o
pusha
& _3 A, B; n b, f r: s. h. K rol bx,cl
0 G' \0 |1 [0 x call print_4_bits& Y! v* G+ i( @6 g2 M- v9 B
rol bx,cl
& P9 {& J6 g3 I$ @; u call print_4_bits
, o- V- P! J& ^6 E popa
, f3 t1 q7 z6 V& h ret
( v0 M( u/ q* ?5 E2 o_8bits endp
( S3 s7 J/ C7 P' r9 J( ^, P; rprint_4_bits proc near8 l% P2 T: F4 |. A( ]# l& V
mov dx,bx
, k/ F; x& H/ ^ g/ C8 s and dl,0fh
; u; M4 |0 f a! v+ S add dl,30h
/ w6 H" i5 }. ?4 O, L3 Q* \; W cmp dl,3ah1 ~1 I' k, h+ v6 b1 d
jb print. k2 q' I1 {; {: g8 f7 Z# }
add dl,70 z' H; E! o6 U
print: $ b) f* e5 t' R0 ^9 [! ], ~0 X- }
mov ah,2
4 E" m! c) l! Y5 `, v: f int 21h9 w9 G, `+ E' l
ret
) R* o. x5 {& x0 Dprint_4_bits endp
2 e& l8 k/ m' P4 q. VCSEG ends
7 a" L9 O( l) kEND |
|