|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)+ [# _! Z$ j8 G% t
$ o) \" H9 ?/ k5 [/ M
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
8 V! T3 V. @8 M- d4 e+ S9 Y/ Y( p$ K$ Q
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝 6 H! s* U1 y( Y% Y; f$ @
. u; L7 ^$ f9 Q
.model small g4 @( \" m n- o1 S8 C% d
.386p; K& s6 N2 ^& Y! J1 C
DSEG SEGMENT USE16'data' 9 g9 G0 m6 G- { k
P! R4 o' V6 q- g! B% }+ H* G
DESC STRUC
: B4 _) A# `: Q# `# P2 g LimitL DW 0 7 x$ [ E* q9 o! d9 W0 c
BaseL DW 0 ) p8 ?2 W0 ^# B& U# [/ v" j
BaseM DB 0
, ]; {3 l! c. X Attributes DB 0 , w8 `! O5 O7 T8 u3 X$ z
LimitH DB 0
4 q; W8 w4 O9 u z BaseH DB 0 % {/ A7 u! {/ F$ ?4 p) r/ }
DESC ENDS
( |2 M5 z0 a- A5 o. c
, X1 h. s7 \2 l7 F9 GPDesc STRUC3 G E- m$ r2 R
Limit DW 0
& P2 A3 n# Z4 E/ n( L0 ?$ S: r/ Q0 Q Base DD 0
7 e. i0 X( J' G; d) vPDesc ENDS9 d1 E2 E) p+ g5 c4 E+ _6 A' i
/ _" ?+ d+ H& oGDT_def Label Fword
' b; t. U6 j4 \' e$ fNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>$ ]: ~7 |" @8 {$ O* i$ g* f. r
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>) m: Q, A- h$ V
GDT_Addr PDesc <$-GDT_def-1, >8 h: b) i: M N3 I' b' g6 S
- A# l8 I" @% P. oMaddress Dword 0
4 B( J+ N8 \- A
" x& Z. Q. s/ c6 s: i9 dDSEG ENDS ! D1 R; v! l2 K( T
ASSUME CS:CSEG,DS:DSEG# y, p+ |& e8 g8 S9 n3 c: A( G8 p
9 h+ X- O8 J) @CSEG SEGMENT USE16'code'
: Q% q" @6 R. q3 t2 I( g push ds/ M; w2 J: |% C2 y6 s; R
push es
3 O8 X- r5 K" }% u- y push fs
) U: v O/ T9 y' U8 F6 I# X push gs
d( G M r7 r. ^, x call big_real_mode 4 n" k& ^" y: h
call Get_Commandtail
* Q' ?; E* x8 Y0 F+ \2 C- J xor ebx,ebx
9 n0 [: |( A' e mov si,82h
+ U9 ]$ [8 g" x# W, u mov al,es:[si]3 @9 E: }( u( j* P, Y# `
cmp al,'r' Z4 E/ c" F, [; n7 M# i
je R* _; E1 T4 w% V" [
cmp al,'R'
0 |. n6 H! H; ]4 g i) M3 Y$ F$ R je R
/ X% h& s: [8 z1 A: b5 Z cmp al,'w'
4 }5 d0 F( M/ Q, k je W6 n* M- U/ P3 g4 x. R
cmp al,'W'
& S7 N! m) G U7 e9 F je W 5 H6 P/ B) n+ b% m8 ~, ]. E
R:9 d$ I, c8 D1 `8 x9 ?/ H* U
mov si,84h
+ |2 i+ r. L2 C/ _" N! i$ U mov al,es:[si]
$ ~9 @8 X" R u- q5 Z; J! C cmp al,'b'
t0 J- U+ r8 q je RBT
+ X$ A) m* E8 S- h# z! R9 W/ o* M* X cmp al,'B'6 y: F3 ^: F- S# ^
je RBT8 g3 ~) l1 S5 j9 u3 m! V
cmp al,'w'. ]& f; B. C* g9 H# \/ z( S* \ @ \! w
je RWR' T+ l. f4 T8 z$ N
cmp al,'W'! ?' d1 L, e1 H( x; h
je RWR
/ s" Q! E4 O: Z; J5 f4 G n' w cmp al,'d'* n% X1 g* U# g$ t6 @+ k
je RDR+ c2 [' X$ W5 R6 T \
cmp al,'D'
- P% {2 Y5 z9 M- ` | je RDR - h0 j) S1 I5 F$ q' d! |; Y
W: # j% ?) V) u( ]3 }( M* Q' Y
mov si,84h
: F F6 E H Q0 P mov al,es:[si]
% D) \$ e- Z6 B% x cmp al,'b'2 T5 D G; i3 d& T; M7 n1 l
je WBT! H* W5 W; _. ]3 r5 @
cmp al,'B'2 V1 T% r9 ^, Q+ q4 h: Z
je WBT
: b# n& J L* r9 n7 a N, q9 {/ s; O cmp al,'w'
5 i& p. x4 g z. x je WWR
0 ]) x, S, l# [, K) ^$ j cmp al,'W'" f2 U& w. Y* J
je WWR4 r$ J( ~7 ~! V- w9 t
cmp al,'d') X, ]$ W- [& B2 A$ ^1 M, E* e
je WDR6 Y3 f0 L$ d4 ? k: W
cmp al,'D'
! f# B' q4 o0 s' h5 H3 ^ je WDR
. @4 a3 N H2 B+ }, v& B- ~+ L) ~RBT:0 N) u' k& F+ M! i# P
call PSP
( r( I# T, Q+ n9 ?# S. h! w call crlf 1 }: o0 L& S8 P) ^- V+ u: H. {7 a
mov esi,ebx- `" w7 C( j N: F8 g( K
mov eax,fs:[esi]4 y9 [1 `2 }9 z }: u$ t. i6 S
out 80h,eax
! n. K" H1 }0 _ c mov ebx,eax( x! k" A d) ~" x. N/ N
call _8bits# W4 i8 v3 s! H# j; h* u
jmp Exit0 L0 ~/ V+ r# }& X
RWR:5 J+ t* C0 g3 J3 F3 g
call PSP 0 _' X0 b: Y& C. g" }, N
call crlf . N6 l0 a- f6 b r
mov esi,ebx9 P$ S- B. q$ i/ g# T( I: y' m
mov eax,fs:[esi]6 Y7 M. q1 a+ N, ]' G2 e5 m; Q- o( J
out 80h,eax
3 x) E; y, N$ Z& ?1 v N4 t4 X+ G$ u mov ebx,eax1 X! F6 M! s7 S% @( e+ t" r
call _16bits
. r; w4 B$ w2 h( U# T+ J jmp Exit& b# u$ Y. _& X' N
RDR:
* {! N e& M V; O# Y! G$ Y call DPSP 0 U9 M0 S5 J7 @" T( |; Q) M
call crlf
9 L$ F0 P' K8 H" U! M, u' N2 f mov esi,ebx) @4 g" ]( P8 [' N q8 f' }& i
mov eax,fs:[esi]
" P! \2 [% c* o. e+ w* q out 80h,eax
) @/ [. L7 v' w% W mov ebx,eax4 Y- j, E# I% E, q- W, b! t
call _32bits5 J& A7 r) e4 v% N" G! R
jmp Exit5 r6 E3 l V. Z, L; e
;------------------------------------------------------------------------------------------------
" _& P/ p' d# u2 @( ?: MWBT:# H/ a3 w7 {0 C& e0 A8 H5 L+ a
jmp Exit4 }# _- S2 r4 ~. B5 W
WWR:$ ~. j5 ^; Y x
jmp Exit
" Z) R( X3 K# S5 N9 R' ]WDR:- ^* h+ r* ^2 Z
call DPSP
2 e+ A% r: W, I+ l; J6 J+ J+ n mov Maddress,ebx ) d$ U+ I* m$ \, v' \
call crlf* P' B' I- f2 n) r6 ]7 S2 ~
call WDPSP
4 m& w2 v8 G8 E/ {" s0 [! M8 o mov eax,ebx
9 W: e4 f" [6 A& _2 T& u mov esi,Maddress & x, [& g6 ?6 K' {: D2 W1 s- a
mov fs:[esi],eax
! s: m+ \. V( A) P out 80h,eax' G. B. Y: C8 k H$ x
jmp Exit. O7 D( l- ^0 X8 |; @
;------------------------------------------------------------------------------------------------ & ~. ~# L( M. u d+ h2 a
Exit:
# d& S+ k' f9 m9 \6 r9 | call real_mode / g+ f# T3 D' O9 J
pop gs! n2 F# n$ N l, @# ]
pop fs
: ~& k9 J2 }" S$ b' U* d pop es
% _5 k9 T! b( w pop ds
6 |; R" x+ z# j; z0 q- D7 Y .exit: i. |; [# I, R: ~
;------------------------------------------------------------------------------------------------$ u9 p* f0 Z- R" R" e, |+ u
big_real_mode proc near9 O+ T. Y( [: Y* e1 U/ n7 k4 a
in al, 92h
0 R. {) E5 X9 Z# i: b1 w or al, 002; ~6 E7 p1 I: B# C
out 092h, al8 p% s; u. f& @' y( s! N- @3 n
out 0edh, al& Y( E7 j) j. ~* @ V
cli! G$ x+ U3 h! ]
mov eax,DSEG
& G6 r6 K- N5 E shl eax, 4
6 F! \: s! ]1 n- A3 x" l. p. l- x. B xor ebx, ebx
3 @, ?+ I" I6 o1 T# E mov ebx, offset GDT_def
- Z& z3 W3 v9 X5 o6 ]) l. [ add eax, ebx7 Y' v$ H v, n/ @- \7 j
mov dword ptr GDT_Addr.Base, eax
% a2 H+ Z; K, X9 O1 k( ~8 I9 Y; D lgdt fword ptr GDT_Addr( X% }; ^7 R1 U3 F
mov bx, 8' B& M$ ]) k# d1 p. ~, p
mov eax, cr0+ M! x. T, D7 u6 R9 X" p( ~
or al, 1
* ~% k( ?( W: X6 U5 ~& g9 @ mov cr0, eax
5 Y! y! `" Y# D; E jmp PMod
1 a8 l% `4 T* D$ qPMod:
4 u6 e% ?0 Z! F& n mov fs, bx% m! _6 \. |! o
mov gs, bx0 s5 x/ n2 C( k6 {2 d
mov eax,cr0/ D4 ~$ E' C; Z: s7 ]
and al, 0FEh
5 H6 T* l% Q) A4 u1 l1 J( ] mov cr0, eax
4 Z2 R) @9 M6 H+ q! |2 {) } jmp RMod
& M7 Z7 F8 r0 F% ORMod:7 K0 o; t; D% X& x n! u4 A+ A
xor ax, ax
4 }- P0 C6 e9 u9 d8 }- q7 d mov fs, ax
9 I$ a; }- l- T# [. U mov gs, ax 6 ]% j7 y: I) H
sti . I1 T! }* y2 `, t$ F
ret
+ y6 _- j8 X! } jbig_real_mode ENDP/ P) X% u6 ^4 p& p8 T/ v! p- K3 n
;------------------------------------------------------------------------------------------------
! |( h4 K+ K8 ^" Ereal_mode proc near: x0 ^3 F% r* Z
in al, 92h. c8 u. e( G# ?
and al, 027 E/ c5 @0 O5 N: _7 F& Z: g! V. d
out 92h, al
2 C% m1 S* ^5 N9 E$ B. k ret/ H8 S. ^6 C ^2 d, ?" {4 b
real_mode ENDP& f; e: B# R5 A, C. n' a* I
;------------------------------------------------------------------------------------------------6 [9 X6 c; O. ]$ I2 @8 Q
Get_Commandtail PROC near' i/ M+ ~8 O1 V5 J8 h3 T& U$ O* M3 V
mov ah,62h
. K8 ~4 ?- g, Y7 I2 R. ` int 21h
& j5 W( K( F V4 N3 w/ c& |) | mov es,bx
' X( Y! M, ?* h# K ret/ Q/ K- z& R, Z2 W, Q, I! N! s8 w
Get_Commandtail ENDP ) z i8 j! T5 D9 f7 {6 ^: O
;------------------------------------------------------------------------------------------------8 J* _- v7 E/ |% r1 K. _; ?
PSP proc near
, E' m; Z% @! C) b, a" } xor ebx,ebx
# N* c# y R- H1 n8 d; P mov si,89h h7 Z8 \) q3 Q4 t% X9 `3 s, S
mov al,es:[si]) ^4 E; @' f6 S7 c; E- S
call Change
3 i" {0 ] S' Z1 Y" D; E9 F7 n% ] mov cl,4
- X n/ _ y2 J. F0 b* W3 @ shl ebx,cl
, D) j O+ ]/ I8 w0 v( D5 K8 V add ebx,eax
% O( s: L, [0 Y9 z+ E! ] mov al,es:[si+1]
Z2 S$ W2 c, f- Z call Change0 D. A: d5 p7 u1 G2 r% w
mov cl,4
9 ]: x" a$ }7 x! Z$ M shl ebx,cl
+ l! M1 _" Y% A7 v; F$ H add ebx,eax
: W3 Z4 A- i7 ?- I! c- [ mov al,es:[si+2], o: k7 r/ y) V; y# D
call Change
; U* t$ p* _, g; @ mov cl,4
* d% M$ {: B {3 N: G3 j shl ebx,cl- |1 N: D" ^( A* |0 T( B5 @
add ebx,eax4 f5 e1 t) {3 p
mov al,es:[si+3]5 i7 ~3 J/ K) O" c- y- K
call Change
2 Z7 ?9 l2 c. F% ?( c, z/ a5 P mov cl,41 E- _ W6 U9 b
shl ebx,cl# S* i7 T# U: U z
add ebx,eax2 ^$ N9 x/ u5 j# Z& n
mov al,es:[si+4]
8 g9 G6 ? X1 C; F; S, X9 ?- l call Change
: d4 d9 c! X6 K& x+ Z mov cl,4 V e8 F; h+ U: N, r7 v
shl ebx,cl9 W! ~( E! J5 ^ E
add ebx,eax
" \% S2 z2 w( |' l+ S mov al,es:[si+5]9 }( \" H0 i; A K& z: \
call Change
5 R( V3 P2 ?/ U8 M/ r$ V mov cl,4$ r! {( K7 u. H. u
shl ebx,cl
/ F, P" Z0 [% p5 a add ebx,eax
. f: n8 I0 _+ y w0 \ mov al,es:[si+6]9 l1 P( o/ V+ x7 P( @* z
call Change
6 y% T$ n; ]8 D. {2 ^( y0 L mov cl,4
( J7 ?7 _9 J8 G6 h. \; [- u% z6 u shl ebx,cl4 N, { `2 ^6 I4 G0 Q+ ^( R
add ebx,eax; `! ?; v4 }! z2 J
mov al,es:[si+7]
8 c1 `! D: t* B- h call Change& K6 s% t4 Q. h" a1 g
mov cl,4
- {( c# D0 K2 A, m- [- p. v shl ebx,cl3 L( P o1 m* h
add ebx,eax: y, S# s/ E! q0 O* u
ret9 \# m3 E# J8 P& k# F- D$ r' ]
PSP endp' k% n, w( K1 [+ v) } W
;================================================================================================
0 b; U/ I: e$ v3 f$ v* W% [DPSP proc near/ g( r8 h- B2 r( W1 n* s& b1 h
xor ebx,ebx( K3 |+ R4 ^! M. W" L% C
mov si,8ah
+ _- F3 c! d4 m3 t mov al,es:[si]
( x" | j! s. P4 M call Change
. `3 q- r, [+ n% p/ a mov cl,4" n8 [8 H1 R: E) i8 Y- Y) y, k: ]
shl ebx,cl
2 l# L* Y, `) q; l$ _1 J& k3 c( W add ebx,eax
# q1 s* H4 G& P* m3 P' R mov al,es:[si+1]9 U. U L+ `% X1 a( T! Z$ s
call Change7 x( I! o* f* i x, u6 y
mov cl,4
2 N+ W2 J$ I# C4 a shl ebx,cl
! }7 z( O' w) T, r5 G6 j* h4 W; ] add ebx,eax1 Z+ [3 r0 h& r8 r
mov al,es:[si+2]5 E9 ~4 q$ K+ \0 a7 P& ?6 |) {2 O; l
call Change
5 V# x3 `0 s* g2 K5 O( e& ]. U% X mov cl,4
% ]0 k0 W0 }1 y% N shl ebx,cl1 M% O5 I0 w. ?% C* c
add ebx,eax
5 ]0 j) `9 Z) j( `' m mov al,es:[si+3]! g- r8 w* ~, ~- A; @% r) F
call Change
, a) ~$ h) H, y$ `7 ^: M% c mov cl,4 X$ Z$ B$ g- W' ]5 c) i
shl ebx,cl" `! u5 e/ c ?) F9 N( v; K/ ]
add ebx,eax) H; y& C4 `% }7 a6 e0 z9 O7 b
mov al,es:[si+4]. N* V2 c" ]8 |2 Y6 H
call Change
8 E4 f9 e' A8 x mov cl,4: ]# Z. |/ |4 N6 B. O4 ?
shl ebx,cl
8 e. X/ L% i9 V# O: c7 f- Y; m" w add ebx,eax$ f' K! a+ q; k J8 K- |
mov al,es:[si+5]3 y6 @5 k" l' Q$ t7 N) {
call Change
1 Q4 e |" x* N: k mov cl,4
1 \! u7 [& P( @8 b( b1 L shl ebx,cl
0 t( x+ D/ C. n6 ?, M1 f k add ebx,eax8 U f0 S+ C, f, U: u% a8 n) N
mov al,es:[si+6]' i1 V8 Z( U( j* E* A
call Change
A7 Z7 n3 @- ?. t L mov cl,4; b# t: d; f$ f
shl ebx,cl/ V0 w$ C$ n) M
add ebx,eax
4 Q9 S! s$ Y& w5 w1 L4 h$ U mov al,es:[si+7]
! V/ i& x; E$ p$ z# \ w call Change
2 n, r# u4 F c* J' T4 V+ W. {" V mov cl,4
/ N4 A* H- |7 c6 L9 |; p: u shl ebx,cl2 z8 C! H: M4 ^( j
add ebx,eax/ w/ t5 j3 ~! ~7 Z% [) p
ret3 B& j) G0 ] k) x/ s
DPSP endp
! a# _& R& F) N0 f;================================================================================================! L T* Q2 J7 C& ^& T
WDPSP proc near
- d, F, }2 N K4 S% ~& b) B! V4 d xor eax,eax8 \- ~- i& y8 Z2 V4 f8 d
xor ebx,ebx
8 L; {; G: a$ u4 c mov si,93h$ i3 }$ A1 N! r& V3 e* |
mov al,es:[si]
% i" Y1 P. `# O ^7 G6 r; L$ ~ call Change6 W) O+ K. V0 q& D) ]# N7 `0 r# ~
mov cl,4
, Y% a+ z. v9 n8 |- Z shl ebx,cl: Y! D4 t4 W" m% v+ D
add ebx,eax
5 q0 B, e$ E' J7 ^ A! [ mov al,es:[si+1]
3 J3 O: `. d5 @ ~* j, C call Change
! c4 M: D* W% g5 U1 s mov cl,4
, L6 b0 h7 M5 u: C shl ebx,cl
4 L: G% w6 c% b add ebx,eax
# }. Z( e5 m& \. B9 N$ h mov al,es:[si+2]
# K0 J$ A7 ]7 I) S) j2 G call Change! x( I8 Z8 ^$ o
mov cl,4/ P. s7 {7 A% O
shl ebx,cl0 m9 d6 W/ m# h1 _: W; D4 S. y
add ebx,eax
" r% f |. `8 p8 `; B mov al,es:[si+3]. L* j }4 _% B* b/ a w
call Change
0 q/ y5 H, B* _4 \9 A+ ~+ N- | mov cl,42 }, p+ |# V# v8 v8 A
shl ebx,cl6 e3 y& v7 }+ G) @
add ebx,eax; m8 ~; [' [* M+ R" n6 U$ q
mov al,es:[si+4]7 y+ c% U; G+ G( T6 |* p6 k
call Change$ w( a! q) j: c: L* U0 c
mov cl,4
1 a# T5 ?( e% b; \ g5 @ shl ebx,cl
* Y7 ~ G! q$ F. O0 F: n8 [ add ebx,eax1 M2 l2 [" E; W9 N, n- G! U
mov al,es:[si+5]$ G6 ~0 q/ q/ w9 H/ ?; L& b
call Change
& J2 I, A2 }( g2 H mov cl,4
- U. g( }- i, H) J% z shl ebx,cl
" W. K$ b$ ?) z& A4 ` add ebx,eax- f: F7 B: W9 h! R! J
mov al,es:[si+6]
+ v5 d: {( u3 _2 k$ C" w; h call Change
( i q* t% d+ x$ x$ M+ r' }) I mov cl,40 G9 Y- m0 T6 Q( m
shl ebx,cl6 A0 ]. b5 w2 ^3 S1 o
add ebx,eax8 t% n) \' c6 z/ L4 q6 r
mov al,es:[si+7]6 F7 p T% }8 H( t% N
call Change
0 Z N3 O0 Y% e, \, s mov cl,4& n( v n: F; Y$ e+ b8 }' l2 w! s
shl ebx,cl
6 o* t% ~; ~0 }6 r8 W8 x add ebx,eax- G4 L3 ]4 {+ f! j- h
ret
; h, f: N9 C, G5 Y5 @# V) l3 UWDPSP endp
6 k' s; X {. r$ c! r* J- f;================================================================================================2 G) I0 I& z7 a# t* _6 x2 s, O
Change proc near
# b( ^6 y) v1 n7 c4 f9 rA:
/ y" z' G6 K6 P' x$ S, P/ K movzx eax,al
" r8 m4 g4 S2 @4 _; H" Z mov edx,eax
3 p3 x% M# T( A2 U: ^. @) p( a cmp eax,'0'
3 _% ^- H* o8 F' u I0 Y9 I1 V jb A- x. D4 P, R9 U1 |' d/ A
cmp eax,'9' 7 k. Q5 y: W2 z1 t
ja B
$ f- e/ t9 w ^* W I sub eax,'0'
/ N1 a1 s: m2 g0 a* w3 Q jmp short E: K/ z `: D% F+ ]7 ]. ^
B:
! x" q9 I: _2 d% U0 S, { and eax,0dfh $ K0 w0 e! K/ q. f' R) w- U& p
mov edx,eax
5 j% _2 Z8 z5 K sub eax,37h # t8 N, ~1 E/ T- \
cmp eax,0ah' Z5 L9 f1 m# l2 g% ]
jb A
) ^- f1 Y- f% g6 a) V/ f+ c2 F cmp eax,0fh7 ]' x, S1 ]! X
ja A
: b/ [" p$ u- F8 h. hE:
7 U* @6 V; a. f' w4 p6 _4 m- Q }# T* e push eax ) N* w) Q$ c! R1 x z1 t: v3 ]
call PRT 4 |, t- D0 d8 o; f& r T- k9 Q
pop eax
`' @# F8 V$ z* L( YCExit:
* g$ m" _" `) ~0 O* c, R. R) z ret9 N% n0 Q+ G- r" F
Change endp
4 D0 k( X8 c! x;------------------------------------------------------------------------------------------------
/ c4 j3 h n) o5 KPRT proc near6 \# I8 r; S- n9 u1 S2 V: O
mov ah,02h3 D1 S0 C, x* I* I1 U
int 21h5 g! I9 F! X& Y w4 w4 l
ret; k1 [1 ^; r' D& X" {
PRT endp
/ D$ }7 R- r8 s;------------------------------------------------------------------------------------------------4 B$ n2 k2 g# b: w
crlf proc near
* ?2 s, p1 b/ r; O9 I) e mov ah,02h
5 u# \* G" k6 l mov dl,0dh
4 x ]5 |+ _7 C3 `2 i1 P* M; ~ int 21h
/ t2 k) f& W: |! r mov ah,02h2 k! M( {* D/ m* R' q
mov dl,0ah5 p4 E8 Q1 ] {
int 21h/ S$ Z& f4 F M7 j% T9 N; n0 E' D
ret0 E- @+ b8 }& m1 E
crlf endp
2 a. ?6 G7 o% r' I5 Z1 d3 \6 h& S6 G;------------------------------------------------------------------------------------------------. M3 `( i# K* q4 }6 h
_32bits proc near" W( @& N% a! b
pushad
9 d, c( d% Z: A mov cl,4 d9 m6 T3 I7 P# z6 K
rol ebx,cl5 z+ J t t' ]8 F8 T
call print_4_bits
2 K" n( K* H: C; i+ \! [ rol ebx,cl. h: L% m& n* l' l
call print_4_bits
h/ W# `# r6 s" H" t/ F% Q2 S rol ebx,cl
" M- z2 ^( |" s) d call print_4_bits6 G- i" ^. X q9 b ~ h2 \ A7 U
rol ebx,cl6 n/ H/ ]. y) T) Z7 ]
call print_4_bits% ]$ j! l5 d7 Q, q# P5 v
rol ebx,cl
3 f9 ? t6 O# D, b, H, f' r call print_4_bits
, L7 ~/ {0 [# H: i9 u5 P+ y: S rol ebx,cl, n/ `; J- P2 p( H$ i9 I" l' b
call print_4_bits
$ g5 e. y( Q e2 ]+ `3 C# Q rol ebx,cl; F; {) A4 r- T' U
call print_4_bits5 c% R$ ~$ W7 u0 r# B
rol ebx,cl" v/ ~) u+ c6 S5 ^& k! q
call print_4_bits8 }# o J1 a" `: }
rol ebx,cl: t, { K! e1 Z* Q4 m& A
popad4 b. f& y" s' Z/ \! D$ l
ret& m! E! V( n/ ?
_32bits endp0 t* d# ]$ T! b
;------------------------------------------------------------------------------------------------) i# X0 l( x4 b+ h8 \- c
_16bits proc near0 h/ H9 c1 q6 V. ^; z- z
pusha
3 p5 a+ c8 x% n" L rol bx,cl
r: q: S, X6 V0 J" K9 B call print_4_bits
! e( w, }) e7 k& W, P rol bx,cl$ P2 o5 {' L$ t# [) U) G
call print_4_bits
' n( \2 U6 y/ z* C* K4 @ rol bx,cl
* T6 Q+ V/ c" m% f: u" _' L call print_4_bits
7 I6 L( }! J% C% p% V7 X2 A rol bx,cl/ O9 B' |8 |3 [. `, H) H1 `
call print_4_bits; z8 B5 ^1 Z! u
popa0 {' @( C: ?0 e) s
ret! p3 P% H# Z# B# {- ]+ {: K
_16bits endp
# `4 q( g8 e4 z, T;------------------------------------------------------------------------------------------------# I) x: N: N1 ?3 ^* R3 B
_8bits proc near$ M) F( s6 a# k# r6 u M
pusha 6 b0 Y8 B- P, o \/ q7 x E
rol bx,cl. M: I, c7 u7 N# b# O
call print_4_bits
) H- `& Q& y& R2 E. B, f) g rol bx,cl/ G, U+ K4 g) f+ ]
call print_4_bits5 R4 ^- G" [7 u8 D9 f- u d7 v0 `
popa
1 C3 z+ o" t* [* K0 ~- P ret
$ @, f8 K3 d* h_8bits endp
; a, C6 G1 l. L4 t! F% iprint_4_bits proc near- J! S( s: A7 ~/ L
mov dx,bx
# ]8 H, e) M N& O and dl,0fh/ E8 U* k5 D2 S
add dl,30h3 T0 G" n4 x" E: _$ M, G" Q
cmp dl,3ah! {' c; b% @2 [1 G$ A! @
jb print
: A' x$ k4 |' C* m, Q add dl,7! D3 L/ M8 h2 v. {* G7 j
print: ( H1 @2 g" F( y
mov ah,26 ^+ Z# ]$ Y1 D) T% a* k
int 21h5 Z7 G% g2 q8 k, V2 u
ret
* |/ h4 f7 T0 }) `9 u. s E: v% _print_4_bits endp
0 z4 M, L& d( N+ w" T& S$ g) zCSEG ends
/ s1 R5 ^/ f+ d! S0 k4 IEND |
|