|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)+ o! E7 q. ~1 m* _: b
* U, U# ?$ D: l則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'% s% u7 i, D! ^
' ^& ~8 t7 Q0 c W宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
( M$ ?( K" N. R# y) p) `7 ^% |: J6 L4 V! H
.model small; G2 ^) {3 l9 E7 o# j3 B
.386p. k2 g; b: D! \- z' o/ \& @, N) A
DSEG SEGMENT USE16'data'
3 k, g& J) _! e! h) G, L" E; I) A6 T6 z* L3 w+ U6 L, G- p0 m
DESC STRUC/ C8 i; m3 C6 X! p6 S
LimitL DW 0
$ G6 \3 D/ F b, l BaseL DW 0
9 a- o4 [! `# k. |& O BaseM DB 0
: s, Q; X4 R" w* } Attributes DB 0
' ]* n0 A p. i0 {: Z! ? LimitH DB 0 2 y) s! L6 ~0 |
BaseH DB 0 + x; N3 E( L$ s6 Y* [
DESC ENDS$ q& }! W6 ~9 o$ x; H3 ~
: ] H2 U, k1 [/ k
PDesc STRUC
c( @5 N! } w& b. X. ?6 v4 w) _ Limit DW 0 " O4 E2 i1 b; t8 }" a; |
Base DD 0
# x3 {+ M/ ? S0 q- w# L8 WPDesc ENDS9 G" B# n: X) z# y! i9 p/ _
8 R' P1 }+ {7 i# c) C/ bGDT_def Label Fword
. q0 i: Y0 X2 G* JNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>* @9 X* G i! Y3 [8 n7 A; K! b
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>* G( q* l1 [! x! F
GDT_Addr PDesc <$-GDT_def-1, >8 C6 I B) h) K' x, X9 {
+ X! _$ c4 x& V4 ^9 L f8 g' WMaddress Dword 0
4 I0 H/ F: O/ \) g$ I/ Q3 f3 C( P. O- O
DSEG ENDS
+ [" M4 P8 U0 M) Q; WASSUME CS:CSEG,DS:DSEG4 G+ l) r6 @' {' M U9 c! A6 r
' _9 N- j/ @1 A: X) jCSEG SEGMENT USE16'code' 4 D# N# e8 z1 [9 V
push ds
+ ]$ i9 X# `6 ]6 O+ K' _3 V% O push es
1 ]2 P1 A( G: q A5 k7 z5 z( X push fs- \" O6 z3 T+ U9 H$ I
push gs
& V+ p# u# Z& i, e2 j0 g( ^ call big_real_mode
8 A0 [7 {+ d, ^: O# ?4 d& T call Get_Commandtail
, {/ F, E, b# W$ e' s0 o5 {+ p- U xor ebx,ebx
5 P( L J. e" W( m1 f& h/ ~ mov si,82h
. q) [1 f+ r1 q. c( Z6 S; o mov al,es:[si]
/ y6 d; c0 v w& ] cmp al,'r'
! I6 \+ K8 V3 H; k7 F) W je R& I* Y* W& g$ b& h# H
cmp al,'R') S; N6 R9 N! l
je R
+ ~$ u! B) _" v2 l* g- W cmp al,'w'
& n1 `4 g1 q3 A: `5 u2 j, U je W/ r5 s5 `3 N8 Z; C$ {& R+ E$ [ @
cmp al,'W'
, ]- n1 W P& O7 ? je W 5 A3 ~4 P( ?0 P0 {2 {, _
R:# g" a* G: t( x4 ]6 B) V; m
mov si,84h
5 P6 O4 Z& R6 T3 j mov al,es:[si]/ g2 l3 G4 m, @5 t
cmp al,'b'* y, u% b) V/ b( }; O) c3 ]
je RBT
+ u, b' S6 U) Y' Z& Q cmp al,'B': q* O, |/ C K$ z8 p; g
je RBT
, A# j: Y; t; S- l1 ?+ S cmp al,'w'$ J0 b; H" T2 L& M! p9 F1 H5 m# m& d
je RWR
: q6 i9 G: J* J$ T) ~ cmp al,'W'
) }5 U* f0 M% }+ c0 f2 i8 I1 t' m je RWR
9 x1 I# H- z! j' N! Y0 R- m cmp al,'d') a `6 a8 x# n ^! d* o- K
je RDR
* k! \. i+ `) x4 x9 @ y4 L& ~: i8 P cmp al,'D'
: o' K3 M% S( T je RDR
% k% a5 K! Q' u9 [5 B( gW:
( z- z3 a/ U8 ~* X7 @. ?6 ~ mov si,84h
! R' ] t3 Y" ?* d mov al,es:[si]5 E/ |0 o8 w B
cmp al,'b'
# j6 A$ |' E- z, ~& h6 ]! b, Z je WBT' g9 o B$ H$ E% }
cmp al,'B'
3 \6 `& E6 \' p je WBT/ S, i5 \% k! r) y
cmp al,'w'
, b6 t6 k9 |7 Q3 A% { je WWR
& \( w1 i( J0 o6 I k, }! W. ^' ~2 S$ a cmp al,'W'
; r; N% ^: p3 v, j1 @ je WWR
1 Y8 c6 H- C2 D" r9 X9 i: ` cmp al,'d'1 y$ y6 P6 @- A3 `( s
je WDR; j1 p( S7 W$ X9 W8 Y6 i
cmp al,'D'! S9 @( U' S; A6 ~$ \5 \$ H2 K
je WDR' t. d2 l2 l7 X8 g" m8 T+ Z3 w9 z
RBT: C: A- I4 m! l
call PSP
7 X' e r, M6 g) L call crlf . J" A* G. K/ S$ c% K
mov esi,ebx
" b! ]1 O* S% I9 K8 W mov eax,fs:[esi]
+ N Y, s' q! W out 80h,eax- M5 K! p# f7 O+ f' G
mov ebx,eax
% V* E: ?) D3 J5 \7 G+ a' k+ ` call _8bits* [0 T; A$ J8 `2 T3 N6 V' R
jmp Exit
" N' p. {. u" Z rRWR:
+ f3 i5 J% `8 B5 s4 T call PSP
7 N" C6 x8 d) H5 Q* s5 A4 G call crlf - j) L& [! j# i- u# O" D% K+ E
mov esi,ebx
' f8 ~# b; C& x6 R. C$ r9 ? mov eax,fs:[esi]5 \# T2 N( ^, i. M9 P1 f
out 80h,eax
1 S7 s- j, V* Q! ?: Y6 a$ x: d) ` mov ebx,eax
, Y' _+ B+ f5 g' g7 s1 \ call _16bits! F# ]8 n" }& o" P
jmp Exit
! n5 F" k( x0 E Z9 LRDR:
5 t. C6 [ L$ U8 F/ k call DPSP & y7 O9 M3 X8 E3 J- K9 o g! ?$ \
call crlf 0 S4 U) } H1 O2 b1 V
mov esi,ebx F5 E$ v; d# P5 t+ B5 q1 Y
mov eax,fs:[esi]* x8 g" m8 O* ]% u% z7 `' p
out 80h,eax7 I9 u& `! Y: l0 |4 y& v
mov ebx,eax: {0 l* ~+ T, e4 d) V( B- i* Z% Y0 q
call _32bits
& K" {4 S- E6 @" f1 h jmp Exit' x; O3 h6 Q$ f
;------------------------------------------------------------------------------------------------
, U& W6 x; ]. W+ i8 i" \1 AWBT:# o0 d: y& M5 i2 N6 O* ^, C
jmp Exit
' O0 G, h6 t5 i3 f. bWWR:
) a `4 F; m C9 ? J jmp Exit
6 a) z" z9 _4 s* AWDR:
. a! f% ~9 y# r- r5 ~+ ? call DPSP
0 ~2 a) d; ~/ g% _7 m% T mov Maddress,ebx
/ Y1 L; x& B8 f3 F call crlf
J2 Z" W2 o: O4 x" r' X) G3 m) ^ call WDPSP
1 v# e$ e# O: Y9 Y# E h: L mov eax,ebx
7 B; _: T& y4 ?4 B' c- h2 h0 A4 d mov esi,Maddress q8 M" Y) E5 u9 }' M
mov fs:[esi],eax
) o4 V; D/ M9 { [( u out 80h,eax
# N: \4 ?7 q- e7 j0 L( c jmp Exit
" W( z" d l7 h: _4 G: N ?9 y0 K;------------------------------------------------------------------------------------------------
8 R$ y* U+ v7 q9 ZExit:
# t7 W" d* `' U* x- |3 v call real_mode # s. c- O) j% f' c, z4 ?# J2 y
pop gs
, s4 { Z M1 M# T3 ~( N& Q- `. [ pop fs
) e* {7 K2 }! h6 t9 N$ g5 J: T pop es" j& T& |9 L+ k& e
pop ds
x/ Z4 n6 K2 X F& E/ L- U. a' ?+ M .exit
g, y2 |6 y( t f;------------------------------------------------------------------------------------------------- r2 E( g& x8 F
big_real_mode proc near. I3 @% Q$ u6 T$ n
in al, 92h% e6 F# c% d/ L6 w+ M8 A9 j
or al, 002
/ O N9 B# n B) m# M out 092h, al
9 O5 f/ m- E1 v' A* V/ Q# T8 @1 y out 0edh, al, q8 i) V' m! T! ?! m0 ?# J
cli
/ h2 L( {" P+ e' {5 B' ` mov eax,DSEG: m) e Y. u8 t* L! K) |
shl eax, 4( O, ?! H0 y$ |" Q+ j& j
xor ebx, ebx
- X7 L9 n1 w5 ]6 m; j mov ebx, offset GDT_def4 m: l7 a% L. j" [( l& J3 C
add eax, ebx4 O- I+ V s- }' ]# |( g
mov dword ptr GDT_Addr.Base, eax
- M: z7 N9 z' E* K$ V( y$ Z lgdt fword ptr GDT_Addr
% H9 D. s$ e: }+ } mov bx, 83 C; J* t5 d, g3 V' V+ H; Y0 [/ q
mov eax, cr06 d- ^% E6 J- d' u1 ~( M" v
or al, 1
4 C. ~6 G6 n: h) k8 y mov cr0, eax
! `. B$ ^8 Y( ^- h6 I jmp PMod' |9 r2 N+ I7 [* Q9 L
PMod:, G' P: ~- s* L" k! _
mov fs, bx O l9 |' a1 X% Q: `. ~% h# X
mov gs, bx
1 T/ w( L- `3 T mov eax,cr03 o& c! S, D- g/ _0 K
and al, 0FEh) }" P2 g F$ _" l& p8 N
mov cr0, eax
$ M+ \( V& n& @( T$ U. ` jmp RMod, ?$ Y' i; m3 } r. J+ c8 \3 y
RMod:4 a- p2 X: w! @" d$ r9 E
xor ax, ax2 ~+ v; L1 h1 I8 r% x5 R ?
mov fs, ax+ c" C1 g' U- `% w" M
mov gs, ax
5 Y& l2 V: }; d6 @# D9 h sti * C: U8 u- n; A4 v3 A& m
ret
! Z. z2 ~6 d; r4 G) qbig_real_mode ENDP
# B" c( l7 W; Y;------------------------------------------------------------------------------------------------
( u' o+ D/ T$ K. f3 |real_mode proc near% m1 ]+ Y( d/ a/ M' j- S9 }
in al, 92h; r: \5 P5 _6 M& R# K; q" ?, P5 y
and al, 02
, }, }( Z) l5 v6 F9 j' A" ?" g out 92h, al
6 R9 @' R) ~$ j( w5 @% C& N" d9 `4 w ret8 J+ S' c7 u0 a6 J
real_mode ENDP
& @ f0 M3 ] E0 X' D8 `% W;------------------------------------------------------------------------------------------------
. @) G6 A3 B4 k2 M( f3 u9 gGet_Commandtail PROC near
$ t0 N o$ i: B% _/ x1 q mov ah,62h
9 j. C5 s: T2 H( i; S* ? int 21h
* N! A9 |* ^' d$ g4 W6 T/ _. c) P mov es,bx: o0 B, J# W/ K4 I; ^
ret
8 F. g* ]$ j, E: D& yGet_Commandtail ENDP
7 l" N9 `" V6 n8 o/ \6 x, T;------------------------------------------------------------------------------------------------
! \( P7 p6 n* z# N3 H, g9 aPSP proc near) q; U* u: C% L0 h% {
xor ebx,ebx0 d4 m6 [% i6 D/ ~3 t: c
mov si,89h
$ g2 b4 O8 I- h0 a/ e mov al,es:[si]
) Q" `6 o: Z4 }! J5 ] call Change
- h* E L6 G3 d mov cl,41 [. v0 U3 A* [1 W. o/ \4 M
shl ebx,cl
- \* n9 ~0 J, Q7 ]2 a add ebx,eax
5 ^2 \2 ]) D: V7 U1 K, D mov al,es:[si+1]
) W. N" }7 @; F/ d) I: V call Change
/ E) _: u/ T5 B mov cl,4
. A7 v6 o' B( Z- P: _ shl ebx,cl' a" Y# s+ R0 `
add ebx,eax
q* J# p( U/ f* z5 t! d4 o mov al,es:[si+2]
& Q- l7 y) p; Y+ t4 r' R0 Z4 B2 L call Change
, } F; H, p J4 s5 ^$ ` mov cl,4
' Q+ `# n5 B! W, O* D shl ebx,cl
) b% B# ]& Q6 \5 {* Y2 X2 S add ebx,eax/ ^; c& m; k5 V0 Z
mov al,es:[si+3]
9 A) G0 Y. x: _3 i% L9 S call Change. D2 j5 Q4 k& M: O6 D, k
mov cl,4
) {2 Q( @' L- v/ r( C( u q) { shl ebx,cl
. ?% M: d, D9 h3 a3 ? add ebx,eax
1 J/ B7 v6 J4 ^+ T2 T0 q mov al,es:[si+4]9 o; X$ x( X0 H" h) {, ^# D6 d
call Change
4 M8 r5 f( ~3 n! a. s' H mov cl,4 X \: V) \8 C2 c0 p7 \7 C+ y3 n
shl ebx,cl% T& p9 g& O' {5 `$ R& o, d2 D
add ebx,eax
+ N: b: P) _* _" Q mov al,es:[si+5]
* @0 l. F: W3 I" q call Change
1 l6 Q5 d. p$ r, O- c5 Y! K& a mov cl,4( G# \( I& o v; |2 e K; ]$ B, H
shl ebx,cl: Y; x" y* G/ s0 P4 X
add ebx,eax4 k' r7 e# V0 F: [3 l) G& J
mov al,es:[si+6]
. g ?- f9 }5 X" n& G call Change
5 `$ s+ R; y7 [( E9 T mov cl,4
* l6 a* g3 q/ h9 j; S; R/ [3 @ shl ebx,cl
. L+ S. q9 ]. c0 @ add ebx,eax/ ~" P* Z9 ]& _8 g: V; V
mov al,es:[si+7]
; `# G) B1 L; ?/ b9 W8 ?3 F call Change/ k0 p. Z; c, V' g' z6 X b$ g3 Z( u
mov cl,4
/ |2 t8 `/ |4 A! M3 k: L shl ebx,cl
1 G* T1 V/ G8 `. F add ebx,eax" h" X- F+ ]# [+ d8 g
ret
( I; E2 ]2 a. |* E2 OPSP endp( n' b3 W6 ] P% ?: @
;================================================================================================
% D. f" ^* `& O, O) E9 U: } }! EDPSP proc near
, l; Y: z+ V7 X# B, v; ?0 k xor ebx,ebx
1 G4 @5 s/ ]' h- O mov si,8ah# N2 N/ G- d- }7 ^* ^% y
mov al,es:[si]
6 ^2 A$ m! u9 E/ c- T call Change
) |9 g9 } ]! t8 C' }$ M( A mov cl,44 R9 s# p- U/ C# X$ l& Q1 ^! R) B
shl ebx,cl
- ?7 f: @6 n& p0 L add ebx,eax
% B3 G" U7 V: H, N/ N! n, k( E6 K4 c3 T mov al,es:[si+1]
+ ~; n( q% F! o4 m1 O3 b call Change
# c; a) T) @0 I; l( q+ _5 ` mov cl,4
& o7 B/ r3 I! u9 V* E [ shl ebx,cl
( m( ^, U8 @) H add ebx,eax! M9 J" |- w8 ~& c
mov al,es:[si+2]
- v9 J8 E& Q8 H2 d) C7 a call Change
5 e& {. p, l8 |% ]/ i: M' ]; q mov cl,46 v4 z, a- A7 d) A' [' L
shl ebx,cl
6 y7 ]5 j( ]+ ~% p add ebx,eax
" ]. K$ E8 x; k/ Q% R mov al,es:[si+3]
( k7 q! b, V Y9 i) Y' ]0 F call Change
, H. m8 c7 Y( A3 H1 @) r2 ?. J: a mov cl,4
+ L$ e3 \; G# D) b$ v7 K$ L shl ebx,cl( T. ~/ Y& g+ K W; u
add ebx,eax. c4 L) b# _% U" \$ j2 r }0 e% C
mov al,es:[si+4]
: i5 B; M* E7 y" C5 e( s call Change1 Q' I3 U/ M; m5 e r& [) d
mov cl,4$ I. {, D" g3 q ], K
shl ebx,cl
8 s1 C0 h9 M3 d' i: F add ebx,eax
, y. A7 N/ A2 j6 F mov al,es:[si+5]
, B2 C& o+ o( l8 @3 e8 B0 r$ W* E0 ] call Change" t, A. w+ c4 w4 d/ L
mov cl,4$ v( }6 t3 ^, C, D E! K
shl ebx,cl. C8 d4 Z* W3 H8 O, T7 K: e
add ebx,eax
2 }! R: F& ~9 D, q mov al,es:[si+6]( @& a- e* @ r" r3 t! E
call Change9 X& f6 d5 N: d: q
mov cl,49 K. V3 }7 \6 W3 `
shl ebx,cl
' T2 Y' v* [! K5 @8 u& P add ebx,eax
: d! x* \7 H$ q% p& e+ l mov al,es:[si+7]
3 C1 \* h: z0 ? j& m( K call Change3 I' ~; }1 c" y3 [) H
mov cl,4 q2 f7 t( ?+ N5 `. z5 H
shl ebx,cl
# u* N1 Q( B$ o T* y7 \8 V add ebx,eax
3 o6 b B) w* K! {) r ret$ h1 S7 l4 K, N2 j
DPSP endp# P8 ? {* B& m0 V7 [
;================================================================================================
" o4 R: P+ n! _' K0 q3 MWDPSP proc near
3 ?% C5 K3 f8 r7 h9 e xor eax,eax
1 e9 s' G& X" R. @ xor ebx,ebx
9 f3 Y/ i* s/ a( \- {0 T mov si,93h! Z u9 H* G/ x- Z& u
mov al,es:[si]
1 ^* w8 X- O. W' u call Change' D" o; H' e8 n
mov cl,4
9 @* L" {$ P0 e% U shl ebx,cl+ b) S( R+ u* u
add ebx,eax
* C f; v$ G9 h! U mov al,es:[si+1]* c; z8 n# G8 M
call Change
* y# J1 r, W! R8 X7 Y% c mov cl,45 y' f! _! ]4 |+ {# C
shl ebx,cl4 G1 \. H) O1 O- e% _9 _* f
add ebx,eax
7 ~3 X4 b7 D9 K ^( W% @6 _7 y. J4 h mov al,es:[si+2]# y! l& Y3 e1 z8 P
call Change
' ?! c; d) f" y7 V5 h' c1 z mov cl,4& A7 R9 U/ t! o& I6 r. B+ J- k
shl ebx,cl
! ^) P* F1 K E( G8 |0 b p add ebx,eax4 \3 m/ N. C" z5 B" w4 S
mov al,es:[si+3]
L* G0 y; s2 C+ o9 a. Q call Change
+ ?* B4 T5 b% @/ |9 F3 ]9 {* P mov cl,4$ H {. f0 e( r! Q0 n
shl ebx,cl6 q& R4 Q8 }8 W% |% k* A O
add ebx,eax
0 U1 C" j. d8 U3 O' y3 ^! F+ d mov al,es:[si+4]; v" t3 q5 q+ g! W" E
call Change1 U% {/ _9 \" H/ p+ \6 Z
mov cl,47 I9 w" {: t" R7 B
shl ebx,cl
/ u V/ y6 G" a7 Y add ebx,eax
+ R Y3 ^, Y+ [8 L- x! Y" P mov al,es:[si+5]& P. n% Y5 n/ F+ |: m( K/ u
call Change
9 X* x L' F$ @* \! W mov cl,4! |8 y& ]/ W9 D- |: N; c5 H( S
shl ebx,cl
, N& Q7 p* S( ~# `& A! V add ebx,eax- {2 Z# i& N4 A& K6 x0 A
mov al,es:[si+6]6 }8 [( |6 ]; C3 M% X" Q
call Change
3 Y5 ^: z% K, S M0 v6 W+ |. C mov cl,4
0 g F" w! K4 M+ o! r& ~2 n shl ebx,cl6 l9 \! m$ t# {
add ebx,eax# S- U7 h( p* I0 P5 \4 q+ c N; {, n3 K
mov al,es:[si+7]/ `' u1 k" v! j( n3 k, _1 N8 G- l
call Change
' x% l% F) ^& c0 W/ w! ~ mov cl,4' V- P! g2 A7 z4 G% M
shl ebx,cl* \4 H& `5 T9 w+ N0 v! N2 o
add ebx,eax
7 `$ a- m0 L; M3 F ret
' i7 W3 A e3 Y- T4 @' w% wWDPSP endp
! t9 j# E& w4 U: a) b8 `;================================================================================================
2 O( `, @/ q& k) {. L; C7 PChange proc near
# P `/ T. M8 R8 ?3 KA: 3 d$ g9 ?1 \0 y: P
movzx eax,al2 J. q+ q7 t- R Z. B$ [, G8 R9 `- l7 ]
mov edx,eax
k O- M/ @; T8 g cmp eax,'0'
6 w4 j& r+ N# f3 i; S9 v jb A
+ \1 H7 ?$ x. K7 i9 R cmp eax,'9' $ `- @9 L2 _; W! \" E
ja B
( A$ g0 s; A; v' V8 k+ I5 j! \: A sub eax,'0'
- W2 F$ U! n7 t: C' K8 p7 a! x$ m jmp short E
- m% G9 E+ b) j7 s" L+ oB:
& j0 d( B0 [! d, \ and eax,0dfh " U9 |0 s1 Z5 m+ ^" ~2 x+ _
mov edx,eax
v# ], x6 `" ?5 d3 x' S& v' L% M sub eax,37h
; k- J* k& Y- T! _1 f3 ` cmp eax,0ah
( i' F, k ^6 B/ p jb A
. O& F5 g7 }4 G$ {% G: _% _. u0 Y cmp eax,0fh
) N$ d+ q9 I1 u/ P ja A
5 x- R) y3 K! p) o8 `E:6 m$ u# C: f& d. N* x0 z( W& l
push eax , [9 i* x K+ T, E0 c5 ^8 @
call PRT 0 Q. X: ]7 e) T& u. a% Q V$ X! K
pop eax
' K: S4 U. \. x- Q% h( T/ TCExit:' ]* M" p* d7 @9 r
ret* y9 A! g2 u, @3 e
Change endp
, k& Z( b$ O4 m3 H! E& [( {. ~;------------------------------------------------------------------------------------------------% I- c7 Q" L* l! D
PRT proc near' j2 T2 a8 w3 N
mov ah,02h
) b: K2 s) ]! H# l3 E int 21h8 H6 h. X; @# u$ p
ret
8 @0 W$ a) D: }7 _" o7 RPRT endp
5 n0 Z0 A! [8 J9 S% c/ u$ ?;------------------------------------------------------------------------------------------------
2 C+ a& N+ J, gcrlf proc near
! b* m4 ^8 D# D4 h1 C. t mov ah,02h3 \# u4 A% Y/ }' c; y3 I
mov dl,0dh- m, w# P; O }- d8 k/ `; I
int 21h ~! x8 ? M0 K& |/ B/ ^6 v
mov ah,02h) R: ^) R5 C+ z/ w
mov dl,0ah
2 }8 N% r! Q7 n B; z1 ^: q" F int 21h
+ R# M! I: U8 I. }4 P! H ret
/ w4 W' y1 A; A/ v- rcrlf endp, ?1 I( C9 m: s* U
;------------------------------------------------------------------------------------------------. g0 N/ @/ x- W1 x& e( s) Z
_32bits proc near9 U: M4 x! t ]$ A0 C
pushad. r2 P# V, f$ t: M6 z' d
mov cl,40 v7 U$ H1 l/ z+ V- G7 A
rol ebx,cl, E2 ] q: T7 l2 U& W5 W) {' [
call print_4_bits
" Y1 _2 _5 I; ~# J7 \, f! p rol ebx,cl( ^7 u5 x9 @4 f. \
call print_4_bits2 u, t6 n; w- f! n, V _
rol ebx,cl3 a! N$ J: l/ i+ O9 O4 k5 l
call print_4_bits
8 T {1 _, [( Q3 G8 w, z rol ebx,cl# b3 W+ y: V1 E9 J7 n
call print_4_bits
' m; S$ B3 ~2 m: ]- U rol ebx,cl
" W, H. B9 o! n call print_4_bits
# X; m1 S" Z1 S rol ebx,cl0 F) Q/ \4 e! l: C0 A5 Y$ e
call print_4_bits# y/ n8 i$ ~, w5 M# K/ N
rol ebx,cl
7 M6 Y: z' F6 ?; d call print_4_bits
: ]; X/ e! @( O" D rol ebx,cl
1 ?8 H/ u, |) p" b call print_4_bits
" n( F7 _7 s$ \" Q, i rol ebx,cl
" F( q, a3 M2 ~# I% W popad. z+ L) P; ?: v. W+ w1 F- g: W
ret
x x/ o5 t p3 r( S8 [( [_32bits endp% ^0 ^( T& C/ w( n% ?6 h( `# f9 O
;------------------------------------------------------------------------------------------------
& p) Z/ ^- F4 L8 p% B0 c+ n_16bits proc near
& t- w. X) G. D) D+ c9 n7 | pusha
: v$ W; A! k6 ]: q- Q2 k rol bx,cl
" ^! r" N% W- j0 h call print_4_bits( Y7 N( y( i! G/ E9 q, y
rol bx,cl
4 f9 d3 V$ m: D* t( z) C call print_4_bits
# J0 c* k6 T" S9 p! l) t ] rol bx,cl
" H# x% C2 Q9 ?6 `" k call print_4_bits6 d5 K6 x4 w' u" k- j ]
rol bx,cl$ C/ l/ j4 @5 x# Q! x
call print_4_bits
2 R- c) x; F* o- o popa: l8 |4 S/ D* O0 J X7 o$ t
ret' T. `3 K" L) V. G& ^
_16bits endp
3 P4 M5 `0 h! v3 w;------------------------------------------------------------------------------------------------
/ K* V) |* Y2 J3 q2 ?) @+ G_8bits proc near
$ ]6 Y7 [# H+ {- g' B, C& E) p5 M } pusha
# [1 i# t7 z7 c1 _8 H rol bx,cl
9 t: D" s- X3 f7 M3 X5 _5 W5 m6 @6 ] call print_4_bits
. {* l7 D1 o- A y+ e( [ rol bx,cl: B. ^ }& |. z$ V3 j H- j9 C/ L
call print_4_bits' E4 Z2 j' ]3 \$ y
popa
: W/ w! y0 q, s. V( e ret* D+ J4 f! J- h$ }: {) s. ?
_8bits endp3 }* a9 r" F Y1 j1 t3 R
print_4_bits proc near$ f; J, L y( n( j3 a6 c/ Z/ \
mov dx,bx8 O$ L" s" y/ v* H( a R) g8 a
and dl,0fh
1 J: W" E2 w( u add dl,30h8 f4 e- j$ S& U4 q
cmp dl,3ah% @+ N& D! d+ {& J# h8 V
jb print
$ s% t% D3 |! M1 {# {* t8 h9 k) ` add dl,7! p0 g5 [" [6 y/ F" M
print: ; |: }+ U+ Y Q! q! c. X
mov ah,2
0 e6 e0 X B& A$ l, n" R9 C* E- D int 21h
# c0 x& k/ V l& G3 E1 j3 { ret
5 x6 [! ]3 @9 T7 q6 F: T4 J3 Q% Dprint_4_bits endp
9 s! U/ d9 p9 _CSEG ends
7 E* |% B) n; x0 cEND |
|