|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)
/ V5 V, }) L/ V, B
( j! T5 P9 h; e) u; v f則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'+ K0 \7 N/ i/ z; f
4 g3 Q$ |& f9 w7 b% v) S7 \宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
# Y' u' j6 ^) P' f! \; V1 x
4 ~. ?) h* T s: ^.model small6 y% E- k: i8 j$ m. D
.386p0 l! K z: t8 M' V! s
DSEG SEGMENT USE16'data' : t' r- d# @" g7 ~
3 s) j' v0 ~& F) _$ a, K* XDESC STRUC5 W$ O* @# z7 B1 [& }
LimitL DW 0
% i+ B7 F& [5 w! E( l! ~ BaseL DW 0 ( m6 l- R0 [' a: W
BaseM DB 0 ( A4 W1 A! }4 n3 G Y3 n$ G
Attributes DB 0
+ y6 C7 y" H: J& }4 q6 _ LimitH DB 0 * M& \9 P- _8 T& ~8 X6 y
BaseH DB 0 7 N, o$ }. l7 M
DESC ENDS8 j4 @; O* n2 G5 G' L
( n/ M" P3 r- f1 V. x
PDesc STRUC
5 \# D, h: h: s/ _3 M Limit DW 0 # d" R. Z& w! g- Q: s
Base DD 0 # q V; V5 Y; m: {1 @ V
PDesc ENDS' G/ r5 U. y1 w; c+ V) Q
* n f5 j/ q i8 M1 h3 \GDT_def Label Fword6 P: Z. i6 X x, U
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>3 H/ ?" n/ e- U T( e
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
) v7 j; [7 V! F) mGDT_Addr PDesc <$-GDT_def-1, >* i7 s* k6 b2 r/ |% L
% V h# r. I( e; N# h4 H' EMaddress Dword 0
$ b* z, `. {: T5 g! L5 g! x' \/ a3 n5 E R) d9 }6 R6 u
DSEG ENDS * P6 j) V' F% i B2 g6 _( m! l
ASSUME CS:CSEG,DS:DSEG
I, ?, R$ Q9 s
7 U2 i- ]# H6 J9 E/ lCSEG SEGMENT USE16'code'
4 ]' Z) ^5 {4 C- L4 x push ds, ]# Q( q. h% D+ b% `
push es7 v+ a) R& c2 }0 O" I
push fs: P+ F% ?3 _8 F8 r! d7 ]
push gs. b+ Z1 y+ F/ N5 V, d7 O* H
call big_real_mode 5 ]$ Y) }2 I3 E" I2 j; e
call Get_Commandtail0 D, }; s8 j F1 t/ p
xor ebx,ebx
/ e, F8 ^: F# d" O; J& N mov si,82h; F; P8 ]0 }+ V6 z; X
mov al,es:[si]
4 e1 l- D9 e' B2 v1 d2 q cmp al,'r'
1 z% |: f% q3 i* f je R' n/ e# m& y# ?2 O1 A" n, S; H
cmp al,'R'* ]- b# V9 C* }6 K: B7 i2 _
je R
2 x4 v, E" Y. E4 O. Z. i cmp al,'w'" H* N: h9 r E( R, Z. m2 f
je W
9 r/ G/ ^+ F, }) ], ~, z cmp al,'W'
9 _+ E# h3 V# _9 i6 Y* M+ j9 G je W 7 m* S9 e- p! ]5 X2 P- K3 j2 r [
R:# F6 @9 g7 K% y1 }- A& y9 T
mov si,84h9 O9 c/ Q( f! I1 J0 l
mov al,es:[si]' [' [, ]2 {6 ]" m
cmp al,'b'
o# H# f$ i1 w7 P9 R je RBT
- S- [% w8 R! H: u# l, p cmp al,'B': a3 F1 a* H. C, k$ l# i
je RBT
2 O4 X2 ]. H( x. ~3 Y$ \ cmp al,'w') B; d' b$ R) M% t' q
je RWR9 F# C: X; @; {4 B5 g
cmp al,'W'9 D8 X/ L$ U4 k1 d
je RWR3 {5 O; v) x0 f3 I& o, V% i( `
cmp al,'d'
6 B }+ p, ?# [+ n" d8 ^ je RDR* Z3 l4 [5 f2 }0 ]& u
cmp al,'D'; d: ^+ K. }0 j( D8 D
je RDR 5 x* m9 C5 Y+ I* Z- [1 p% }* W6 w
W: ! D* P9 q4 `" b0 V/ J& d
mov si,84h
$ e9 c' p) y& j; ]- w2 g mov al,es:[si]- d) n( A9 v( p$ J$ b. @$ c
cmp al,'b'
& @! [5 d. h' I je WBT
8 ]" O- }3 o9 z cmp al,'B'+ D9 X6 t6 `" V- P T
je WBT
, T: x6 @9 W7 L! \) M& Z6 f cmp al,'w'" \! ?" I q j2 t# x
je WWR! E% J9 ~9 O( C& }7 s- \# H
cmp al,'W'
! L- Z9 I* |+ l9 B( K( l s9 f! H je WWR
; a/ ^/ v% Z$ q) g; ~ cmp al,'d', r' C3 q! z' R# k. ]
je WDR0 ^, f+ @! U/ A6 x' e& b4 }
cmp al,'D'% o- j) X4 Q n0 A5 b/ k+ w. S
je WDR
( H* S5 Z8 ]+ j9 O7 K4 t6 b- aRBT:1 a+ h+ D! n: P6 F; @3 {2 w- d
call PSP
3 h' ?( a( H5 o2 l" G- \& x" ]$ V& d call crlf * }% J$ _ g6 _5 w" t9 d0 I' V
mov esi,ebx ?9 P. l$ l' a: C% R* ]8 v2 R/ f
mov eax,fs:[esi]( T& H* O2 c: ^' |2 F- b" [$ v
out 80h,eax
' W( W' Z( D9 n6 D mov ebx,eax
0 I+ H4 z9 U* u, N9 c call _8bits
7 G0 C6 k5 g* r0 z5 q$ ^# X4 P jmp Exit
) |! B. s, j/ V' o" dRWR:
1 I' l; u7 W7 Y* C2 N call PSP
! B) S& A N' v$ e; b0 N, i2 V call crlf $ B# E! R/ W( C1 j* Y# D9 g
mov esi,ebx* b/ g- f. Y" r* u9 K% E8 V7 l
mov eax,fs:[esi]; c; Q2 b, Z& E; b, `6 F0 Y: ~
out 80h,eax( q F2 L7 S S; g
mov ebx,eax
1 t M0 `: V6 D2 j7 e- G! D E call _16bits; a0 _ F3 N1 L$ n/ I; j# Z8 b" _4 E+ ~
jmp Exit+ a7 V# a# i" M' U
RDR:
% J, V: Z- ?" j9 ]. G/ | call DPSP
& m T/ G9 y+ ~: H- b2 _0 P4 U call crlf
) J+ T% [/ V$ j! V+ @ mov esi,ebx, U& v* P5 m) z9 v1 |/ U
mov eax,fs:[esi]* [0 ~) C1 L3 I" _; t
out 80h,eax+ t% X' a1 g3 u
mov ebx,eax
% L! p9 l# Q6 w8 R( s( F/ q call _32bits
$ g- W& l0 Y& w8 g$ J jmp Exit/ G* e( N1 V {5 O4 F) p
;------------------------------------------------------------------------------------------------
* w9 B$ U5 a$ |& C% Y2 BWBT:
4 N+ A; t9 c+ {6 _, s1 a jmp Exit
! B7 K$ M+ S. @9 E# h( A2 F' ^WWR:2 {: `4 q/ @' j1 ?
jmp Exit& g. B4 S8 ?3 x
WDR:7 r9 c5 Y! s1 V+ a7 V1 q/ h; V
call DPSP
6 h3 N# r3 I$ L6 R mov Maddress,ebx
S4 q$ M' |7 F6 o* I4 C4 k call crlf# T( i$ n. \/ i4 S; ]! [
call WDPSP4 A9 [: V% j1 M* \8 ^
mov eax,ebx
( y [9 T# D. M! O" P* E mov esi,Maddress
) W: E/ Z; B; }5 Q1 K7 B' W! }/ v! u mov fs:[esi],eax; b4 ]- ]' [) V) G6 S, s6 @% c+ U; P/ J
out 80h,eax$ k" r u% M6 h0 t" F2 T
jmp Exit
+ `, O* _" \# `3 x m;------------------------------------------------------------------------------------------------ . s* y0 n9 \$ O8 |3 {# A1 J
Exit:
& o0 X: ^+ [/ v6 U* A. e call real_mode
$ r8 M( J9 v7 M/ q/ O# N pop gs
- M; Y6 j) |3 R" [4 v3 l" F9 r pop fs
! p) c( T, u ~1 D pop es
" ~7 H$ k, L( s7 e) H3 {4 C3 W pop ds 4 u. Q- N9 E/ `* Y# g
.exit
0 \, s- Q7 D; A& V, i;------------------------------------------------------------------------------------------------5 d- Y$ p" J r$ i Y( I# J( z
big_real_mode proc near) t( i. ?( W9 M0 j6 Z5 O
in al, 92h& P$ Z$ r6 h+ A) W$ M2 q* i; j
or al, 002
1 y5 {4 c5 @- D9 a* G, S3 e/ m out 092h, al
; [% o6 K4 C9 L' q% y out 0edh, al; ~1 p$ T+ i$ i8 B& C3 u
cli( J* k0 ]* Y' R9 A! P) ^
mov eax,DSEG: i3 P1 q/ ?! G$ q ~% E* ^1 L/ J
shl eax, 4* p! y- `3 H' i2 n# P, z
xor ebx, ebx
" B( Q4 A! `+ e7 k u M mov ebx, offset GDT_def" x$ E9 m+ N, ]
add eax, ebx
$ l: _) a* T; q$ b- q+ U mov dword ptr GDT_Addr.Base, eax
1 s; K& }' [7 f lgdt fword ptr GDT_Addr% V* z1 d" k2 Z# ]! b& E" G
mov bx, 8
& C9 d+ E1 L. Z, J5 X( G9 y' ^ mov eax, cr0! @7 z% S; u% d. ?% G
or al, 1# E$ S) f8 `5 O' X& ` X+ B
mov cr0, eax- P0 S$ [0 j- O( G: s8 B1 j7 b
jmp PMod2 O4 Y* B5 ~5 H" h& h
PMod:* j5 ^! [& ]) V. H( F" h
mov fs, bx2 P/ V H. U$ d u* S: ^6 |
mov gs, bx
5 P& j; E# E O6 G7 J3 o mov eax,cr0
7 P6 p$ X7 \2 f& a" P/ \; k8 u7 I$ n0 ? and al, 0FEh6 f8 B4 [) V% t5 @3 }3 f0 b0 d5 z+ C
mov cr0, eax
3 g, G8 H4 u2 g) D" D jmp RMod4 l- k& T/ Z! e
RMod:1 ], p( Z; J5 a: ~) i
xor ax, ax% |/ y7 f5 `, o" P) d+ o9 T
mov fs, ax
. Z& y) c) l8 o0 C V mov gs, ax # S# _4 D4 x; t& j7 T- `
sti N! s0 ?! x" b2 ?0 C2 K
ret
0 k: N0 b5 H9 j1 c" rbig_real_mode ENDP7 t( K$ g( J8 V$ K, Z0 R9 C( z
;------------------------------------------------------------------------------------------------
# m9 W! F6 j- D5 w/ _( ?real_mode proc near
! @9 N% h. t4 @) N# [1 i0 n in al, 92h7 S: N- M; A5 @" k- y8 H
and al, 02
2 K/ V& y' I! M6 U" O out 92h, al
, ?% a& n9 X# i, D- y! j ret
- J6 ^8 C6 C, h! W% Vreal_mode ENDP! n1 O" O8 [, K; Z2 w# E
;------------------------------------------------------------------------------------------------# s7 q$ _$ O, G* c0 o
Get_Commandtail PROC near* z1 j% g; L, M
mov ah,62h
- G. }* C+ o+ h, _6 r2 X; ~" ^2 o: z int 21h4 P4 [6 M9 C; W1 R, |' v
mov es,bx
$ D( q) G5 e* Z3 Y ret
! A4 ]+ i" P0 |% X$ J0 `Get_Commandtail ENDP ! v+ B' H% G! }" z
;------------------------------------------------------------------------------------------------
5 ?5 i/ p) ]* ]2 } ?) U& C& vPSP proc near" A. {. H( r* j4 X: M$ v- I
xor ebx,ebx
7 Q" {2 Q0 p9 p2 N' q/ w mov si,89h
0 j6 ^7 a- s S# v. m# M# I$ k mov al,es:[si]
3 | I7 c: O: r" k- h' l call Change* H7 `! R3 S5 G5 c) _' ~, N B, c
mov cl,4
! s6 `9 I5 b3 g8 f& i( X shl ebx,cl
) e1 ?: H3 s) r3 D7 I add ebx,eax
# h' e* H: {& R. k: W: T; p. } mov al,es:[si+1], G2 R! |# b$ \) a9 X( N+ R4 J
call Change
8 t8 b" u. N5 C# R; S1 S: P( a mov cl,4& a3 S- Y: i1 [
shl ebx,cl) c% R& ~6 g) A) F
add ebx,eax
' m2 |2 x4 c, Z- E4 A2 L ]. Q8 s mov al,es:[si+2]
- Z5 @8 t7 z* ~" n6 c9 G3 N# J call Change
8 d% e& [% `8 {' E7 z! @! c mov cl,4( ~( E+ J a& f+ d; w4 J0 ?& U) T
shl ebx,cl
/ `+ O+ `, _% Y' [0 i' H- i; z add ebx,eax$ g1 I+ W/ N6 b( k# ^: V
mov al,es:[si+3]0 ^7 b$ m% ~" `% a9 v
call Change% h* r" h7 t3 t! {! [! s/ k
mov cl,4
8 ]9 q/ Y, h4 @- o9 W; g3 M shl ebx,cl
; ~( ^& Z7 t) z' W+ O. B$ j+ m: N add ebx,eax
) J% X8 t7 x$ ? mov al,es:[si+4]3 {; d5 R; C9 D
call Change
, ]; T: O' y$ m9 I! M* I mov cl,45 R6 ~9 N/ r' V# [/ R
shl ebx,cl3 h; p) z- a) \4 P7 d9 ?
add ebx,eax4 v: Q/ [- z9 G1 E y3 R8 d7 b
mov al,es:[si+5]
" Y7 p" B: S& O" L5 F1 k call Change
7 e3 z& d+ @- b# s mov cl,4* Q1 }. u/ z5 ~7 d
shl ebx,cl
4 [2 b K2 A, G; c/ z, K( J% a3 d add ebx,eax
K2 E3 @& y) W+ x( s7 g, G j0 u mov al,es:[si+6]
$ ?' e& J f8 r0 c+ \: l call Change
6 O! c" |0 W0 Q. `7 |, \ mov cl,42 k4 m6 h" j3 e, a; y' D* j
shl ebx,cl4 ^9 c+ u( a/ R1 i$ X) K
add ebx,eax0 w( L: u% \3 n
mov al,es:[si+7]
) d$ t/ \4 \2 W. S# _' ]- i. M0 s call Change- ~; V# w3 a# @& H
mov cl,4
0 t d$ l* m6 v, h9 ^) ]1 W6 |! {! ~6 B shl ebx,cl& X+ b4 G, W% e; ~9 M0 D
add ebx,eax
9 d$ A0 G" w' y* L; \# b ret
0 ~1 @. J3 l- s) lPSP endp- f& l9 k/ M$ N' o. `
;================================================================================================
; s+ g* p! V( H( V9 c7 @DPSP proc near. j( X/ G6 A# W2 T/ p h, o
xor ebx,ebx5 P; ?4 J# I9 C. v* Z- W$ y
mov si,8ah4 D; ~0 _3 ~% ^, x3 y
mov al,es:[si]
) t8 |3 S' m7 [2 c7 w+ z2 s" G call Change
, O0 f. L% R9 C mov cl,4) f, S/ Y3 u; i( B
shl ebx,cl
6 Y8 r4 Q' ^9 e& | add ebx,eax4 Z7 o" x f6 ]( U. v# p
mov al,es:[si+1]
( X5 e- y( ~ z& @8 m5 s& b* ` call Change) ^- o8 W4 \8 P7 I' {
mov cl,45 w4 t' b5 H3 x4 X( [/ K
shl ebx,cl
& Y9 j% L8 E2 ^% E& B- d add ebx,eax
; y5 c! K4 x% ?6 F7 J) y; n mov al,es:[si+2]+ y* F3 R V) {; A) S9 j
call Change
; `. M$ @2 f! S% [5 ~ mov cl,4
2 C9 |: f7 A( b shl ebx,cl1 C5 w, ^) }' z p- B" a- f& B' d: {
add ebx,eax
- l4 u6 u! l! J mov al,es:[si+3]
D5 c, @+ O( |0 y+ X4 A: O call Change1 l* G, j) x8 \3 `$ {
mov cl,4; I0 i; y% F* g
shl ebx,cl! E2 P, j: w* |$ q+ W! W; D
add ebx,eax
9 S5 ]3 ~4 s! z% c" H% l& q mov al,es:[si+4]3 @" I! z1 \% s! t, X
call Change
5 U9 `7 h3 ~, B' w; w2 _ mov cl,4
* d" X, f" j2 d4 |5 H- z shl ebx,cl
6 Y$ H- a6 ]- X* Y3 s6 r add ebx,eax
* s& N+ @+ U, E" e mov al,es:[si+5] `* Q: y) N6 }0 `: b
call Change! X- a3 @, W( M" N8 K- Z
mov cl,4
5 D$ z, v7 |+ V( J" M0 P shl ebx,cl, w) j: A$ i8 ~9 H
add ebx,eax
' P/ x9 K$ z6 F$ X3 H6 z. n mov al,es:[si+6]
( k* j) M2 L+ F6 O* L call Change
# g* W, u' s0 Z( v0 }! D, l mov cl,4 T% h5 w; \: l/ q) u. ?
shl ebx,cl
# J. r! m* g# J& ]) y7 b; ? add ebx,eax8 z. I% v0 ~+ y+ z/ i
mov al,es:[si+7]
2 T# {2 v" V# i* i @1 j& H call Change* ?8 Y/ X0 X" v& }/ L+ s! O
mov cl,4$ ~4 M3 m+ S" ~4 A* V* C+ D8 k% \
shl ebx,cl p1 A( \/ r) k) h% M# \0 D& L
add ebx,eax
; s i; B4 p3 z9 q8 d1 @ ret1 g8 }% J2 ?1 }
DPSP endp, d* ?( |( d& @3 x
;================================================================================================
; a9 N4 w3 E! {8 _. NWDPSP proc near7 l2 \# g* D+ i" `. K
xor eax,eax$ E4 _7 J* I' L+ n3 z/ l# u
xor ebx,ebx
. Y0 n; ^+ x9 B$ i0 J7 g' R( n# B# ` mov si,93h, v' U) S0 b b+ ^6 B
mov al,es:[si]$ ^/ e+ w' {" R7 U) h$ l9 b: s
call Change
& R; {5 |3 {3 p1 p) ]0 b mov cl,4) T* F. w. j M1 q+ B% a+ _" w9 {# V4 Q
shl ebx,cl
8 t5 m9 z+ I- k" @6 s add ebx,eax" k n/ f- Z9 _
mov al,es:[si+1]
: c% Y: { O$ _6 X+ S% Y2 D call Change$ ^3 P) {- d% h. }' B4 \
mov cl,4
! w! g) j; h) F9 ^1 [0 q, u, r& [ shl ebx,cl
* w- H( j, V' ^0 ^2 F7 j add ebx,eax& H5 t U( m, k9 c" j
mov al,es:[si+2]2 x6 ]+ U7 l U
call Change
/ x* N1 |7 @8 L3 R( l% Y mov cl,4
5 Y6 \. ]# F* ~% a9 w+ ^3 \ shl ebx,cl
+ N$ {" z7 o/ h- v' M2 N' B add ebx,eax
) |2 j3 K* `- M: H8 B# L% r4 C mov al,es:[si+3]
7 C2 K2 `4 l& ~) j7 R6 a7 R5 J) U call Change
; S: p' j+ |5 b2 h6 t& o mov cl,4- b5 |. Z" V$ ]
shl ebx,cl
! w( A+ q- i5 v; d4 m& Y add ebx,eax( x2 G+ \( M0 [' S, }$ `/ z
mov al,es:[si+4]2 Z) w0 l2 P# ?$ x. e
call Change4 c9 D8 f1 u1 U: p
mov cl,4/ Z& C% h' g) y! S7 }- L
shl ebx,cl
( x0 _# J6 G" V5 p1 N8 Q( V3 c add ebx,eax7 v2 r0 n0 l2 V1 G
mov al,es:[si+5]
7 N \+ p" G. A8 ^* b call Change& p& J$ J9 |" C
mov cl,4: W; |9 J. p1 U; U2 A) Z. |
shl ebx,cl
) h5 U* q3 Z2 }! b* w' Z7 H0 G+ U add ebx,eax& h8 v1 f! R. y; I; L% d
mov al,es:[si+6]0 a1 c6 T! ]1 Q: l
call Change
+ i1 \0 V+ \5 ~3 ^7 B mov cl,4" X9 ]; r# x. a' {2 h1 l1 k! z
shl ebx,cl8 J7 F- S9 l' u
add ebx,eax
: Y: w$ V: K) ?: R mov al,es:[si+7]
: c* M2 ?% h5 ?% W0 l/ e call Change
& x( k5 H9 U& K* B" n mov cl,40 f& m& ?% A- H- x
shl ebx,cl
$ T6 W% K, X9 h& O ]( Z* P7 a add ebx,eax, J% `+ K7 O! A, V
ret
2 Z% H o7 W" q1 {. G5 `WDPSP endp r/ |, }: a. q' Z( W" k
;================================================================================================
$ i: Y% q6 ^8 G, sChange proc near' N0 o3 T9 K2 ~
A: % K" _& I2 l+ L$ b( s" Y- f9 L
movzx eax,al
! a4 G7 M+ X* h2 o! d4 [. y mov edx,eax t4 H8 ]# T, q7 {1 p
cmp eax,'0'
9 i7 e. [' O" f V! ^8 ^% d jb A
9 N+ k2 v" O2 h( A# N cmp eax,'9' ) i: {8 I5 o! T0 N0 {
ja B
5 b; e: `$ M/ t3 O sub eax,'0'/ `2 a( `( t: @4 Q
jmp short E2 y# h5 e* ]& r, D6 J
B:
' u. i! v6 K4 D+ M1 F0 L/ N and eax,0dfh 5 A2 o6 {. C+ p S" G
mov edx,eax% d1 d7 }7 D7 y$ b A5 e/ F
sub eax,37h $ x! w2 L( z/ T3 Y3 |1 b5 A
cmp eax,0ah
, K# [% p u0 `6 \. u, P jb A
B$ u8 o0 J5 U5 ^* A cmp eax,0fh) P- ~. i4 X' S$ S
ja A
$ j2 D4 K3 n" f9 fE:4 l3 ~& {+ f. `) J- ~ E. v6 h; [" ~
push eax
) w2 D: H8 b. U2 M; [" l/ |$ ? call PRT
}: j. E3 A/ [ pop eax
8 v/ m6 I j0 |9 t: l/ OCExit:( y. q; l: L; r- j$ }& X( s
ret2 B7 G2 l2 |6 y. U- G# c3 z+ }
Change endp# U4 I. n1 p8 R7 T# W" N% g
;------------------------------------------------------------------------------------------------ C+ K$ f7 d A6 ^
PRT proc near
* C/ P! ~: k- S mov ah,02h
( V9 m! k- f- L8 v int 21h
3 q+ A: _& Q- g& F) V& R0 P ret8 H0 G# [( t' W1 q# P# j3 H; |
PRT endp
. U0 I3 u: r' ];------------------------------------------------------------------------------------------------
" i+ p* a* a& \( @0 Fcrlf proc near
( C* h( G4 k% b3 C( p9 L mov ah,02h+ Q1 Z2 G0 G0 r& B3 U
mov dl,0dh) _. j/ }- w H
int 21h, ]4 W& m( |2 L! ]
mov ah,02h. e8 b/ a6 ~- `/ T* e+ n, e
mov dl,0ah
+ U6 j- X2 W+ @: L int 21h
/ o) U( z" f* b. Z ret; I* v. ], A D
crlf endp
1 n* ^+ j8 t+ \! N% `" u. [& \;------------------------------------------------------------------------------------------------
* y3 h0 U+ g/ H0 v9 C( T_32bits proc near: y% M$ \2 C0 N/ [, |
pushad
; \3 Y8 H* _; u1 N. A+ G( Y mov cl,4
9 a& t: Q" m! l$ L- [' [ rol ebx,cl
7 w; Q: q' G# ~6 J- X. z' o0 U call print_4_bits
" {6 a% M1 Z' H6 ] rol ebx,cl
! c; N- Q- i! W; v* f. b# M call print_4_bits# y- z" ^, e ]1 N6 {* D
rol ebx,cl0 D: O0 H3 D" c8 c
call print_4_bits
+ \9 k8 K& E! H% R0 X rol ebx,cl% ]6 ?& q3 z- ?
call print_4_bits3 S! j) a1 L$ p% T
rol ebx,cl M( J% `, q; k( x- ?1 y! V* R
call print_4_bits
- f. U2 Y. Z9 `3 _/ g5 W% F; X rol ebx,cl
a8 s2 q+ k0 K% w! F call print_4_bits
) h# ?- y: A0 c0 ] rol ebx,cl3 `; Z0 a9 \' I" k
call print_4_bits
7 i2 g: f. ` m7 q7 c. {, ` rol ebx,cl
% D. p( F0 {& h' u) ` call print_4_bits0 g; Q: d) i+ m$ i- ~
rol ebx,cl
1 h6 a3 v7 P# G( h popad \& t1 P* v; b1 j$ Q# r$ |
ret
/ |( ]7 v# ^1 @2 T4 P6 R_32bits endp" |6 x `. I5 X ` f- u
;------------------------------------------------------------------------------------------------
. j; G _1 \% d' k_16bits proc near
6 p' N) ?' J8 c% o9 T2 E4 T pusha
6 m+ E" j. X4 b& q) Y rol bx,cl+ e9 S% T7 J, N7 q6 B* V" V
call print_4_bits/ C9 N0 Y4 u2 p, p+ X
rol bx,cl$ n0 b) o: E! A- I- @! v" W0 t
call print_4_bits
! T6 H% E3 X* G4 Q% t) R$ q6 E rol bx,cl
) |7 n1 ]3 S7 Y$ D8 _! i3 ]2 d call print_4_bits
2 |/ H0 j+ U3 u) ] rol bx,cl
7 V9 Y- N6 G, P; H call print_4_bits( d; D' Z/ H% C9 b' @& T8 o- o
popa
5 t- Q. I2 i) B# [( E# e. I ret
$ U- H5 z" d8 X: F, ?, u% i_16bits endp
& p2 n* i) |$ R" b ~% L% W;------------------------------------------------------------------------------------------------
$ M% `$ H L, @' a/ _1 x! O* o- e_8bits proc near
2 p/ Z: l1 B( e; H) j+ T, m pusha # p/ V5 g7 s! G, X. [/ \
rol bx,cl
* N* p/ V1 l( U: i2 c call print_4_bits& \. p) \8 _7 T1 _
rol bx,cl
; A, F3 M; W! [* d6 l call print_4_bits
$ K- [- ~% M2 B' j& [2 Y popa5 L* n/ n) y0 {7 ]
ret
' v# T _$ N6 O) f& Y& W_8bits endp
# n- m' v: H& @; b) s1 w7 `print_4_bits proc near4 w- V( w% j( ?! K% G1 K; O& V
mov dx,bx
) q0 R4 g, e+ `1 u3 l and dl,0fh
9 @1 P# w% k& B, X, [ add dl,30h3 ^8 i/ _1 U& a6 F+ {) V3 j
cmp dl,3ah- k- C9 ?: U4 m. ? L
jb print; a) l% {. `; o5 D8 M$ R
add dl,76 Z+ ]4 p+ |3 ~0 D
print: 0 V4 H5 n9 q3 X- y- X
mov ah,29 y5 x2 L2 I: v
int 21h1 B- M* o& G" P4 Q
ret* _, w3 F: f* r3 t* q# s" C
print_4_bits endp ! V/ n& T. F' M' j0 |
CSEG ends
% t: b5 f5 v, H8 g$ E; IEND |
|