|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)& `: K& V- y, K
1 w y, a5 C/ z: }. d! @
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
5 W! N% E7 D" d# T9 d' i
7 t$ e" K% V. @2 V宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝 9 }' |& L+ s7 g2 Y
: g4 O+ G" ~# d4 h: ?6 T/ Y$ Z.model small
/ d* a4 T' C/ x0 } q" h8 N' t.386p
) |- H; B8 F" k: YDSEG SEGMENT USE16'data'
# f9 _, R) W! N5 }. |$ g) Y
4 M, w: ~: a/ m9 }/ N5 XDESC STRUC
+ S# @) r! R7 v# A6 {! w LimitL DW 0 % Q% j8 |! G7 g$ e
BaseL DW 0
" @' N6 S3 \' t% G( Y A' k: P0 x) Y BaseM DB 0 * c( z6 S& M j v2 ]4 a% f
Attributes DB 0
4 N/ O( o- E* b: a LimitH DB 0 + K H5 ^" K- g4 h
BaseH DB 0 f( U( Q) R. E
DESC ENDS! n- n' u- r2 H
3 Y8 @+ ` Y t! v' WPDesc STRUC* J9 \& d e2 G3 i# M
Limit DW 0
( T- l) y ?3 K. L; n5 T& I" |8 I Base DD 0 0 k2 g9 D* v' N
PDesc ENDS
+ N; J* T9 | W6 e0 k7 Y2 V7 H
$ k% {' O# d6 JGDT_def Label Fword
& S$ E& H4 l( h! y1 UNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>- y9 w% x6 [$ \, J( c
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>$ V( ]4 P& j b6 N+ u
GDT_Addr PDesc <$-GDT_def-1, >5 H( e0 D$ V, b, o' S2 R
" d& v$ ~) }9 ]( M4 L9 Y M' _
Maddress Dword 0
6 u; ~; k% e# L% t% f, E6 t- M6 a8 d" Y9 L- s" `! I* c
DSEG ENDS ( C" f( j# q& [; u0 N# l
ASSUME CS:CSEG,DS:DSEG
& A8 C6 m `1 t5 X9 u; y5 h0 N5 ?& e/ l" Z3 c
CSEG SEGMENT USE16'code' ) y" U% L/ S+ N8 |* c
push ds# t. {* \- E4 ^7 d; U2 j: d" |
push es
, M% a3 l }3 k _, _ push fs4 i/ V6 ? n3 a: \
push gs( G ?! Y3 y& X4 }+ Y) U/ D; v
call big_real_mode 2 O" ~7 y- y0 t" y
call Get_Commandtail" @( o# c( B Y# ~4 r; X o7 P
xor ebx,ebx( }- [; X4 }3 w
mov si,82h1 Y2 [$ E" J! X: N1 `
mov al,es:[si]
3 m/ ~% ~& L, A' O4 l( N cmp al,'r'4 @' O& D% U) l2 v. _
je R; Y3 ]0 Y0 |8 x/ W8 q+ L
cmp al,'R'
5 E7 ?+ d, }8 k1 L je R) N M. t9 p, j9 I. K& Z
cmp al,'w'1 T( L' R) t* G4 c% R, J
je W, ]: I, _9 {5 r* p+ f$ N6 W, ?, [- e
cmp al,'W'
* f7 C' U6 S; a je W - q2 l0 t6 ], v3 Q3 _+ e7 Q
R:
& J& a% S0 G6 ~2 V( y0 ~6 C mov si,84h% n6 C( C6 z& B! U- V1 j" T
mov al,es:[si]
2 @ v5 H$ z9 G+ b& y cmp al,'b'
9 W" }: A/ ?/ S. W. @ je RBT
4 j5 {8 T4 l/ ^5 E' J cmp al,'B'
2 @ }& I0 G. e9 a6 k) n9 X ` je RBT
, R) ^2 s5 Y; m9 e8 s- J cmp al,'w'# V3 _( e, K) P6 b! J3 w8 D
je RWR
0 n1 r2 m) D9 V, L cmp al,'W'2 }! ^7 O9 y# N7 f
je RWR5 C5 o8 o5 \6 `
cmp al,'d'
$ S* X1 n* ]+ x. \) o+ I0 m9 a r je RDR, j9 x! P9 m+ }& S3 P" {! E( ^6 ]9 L
cmp al,'D'7 j! p; c1 u) q+ i
je RDR
1 b7 f5 [/ C4 e( d o% sW:
! x* T4 {6 q1 S8 _/ K0 T mov si,84h* R' R- S/ V. | F9 z, }; e* u4 {1 C
mov al,es:[si]
5 B8 f6 l3 ?" }; t2 h$ u" @, l2 T# l cmp al,'b'3 R0 [9 k; \8 y; d2 U2 _
je WBT3 R) `3 L; y J1 \. k
cmp al,'B'
# r# z) p7 z" p, S! R: H je WBT3 l' O. c$ h( @: \9 [- a6 c% i5 J; g
cmp al,'w'
# ~$ J+ |5 G9 s9 ]2 [ M6 X je WWR1 S, D0 g) j" [ \8 Q! J) h5 y
cmp al,'W'
' |& r9 Q, F" C' {' n1 ?( C je WWR6 e' e" i# k! z
cmp al,'d'
3 ^9 \% |; P$ T+ S9 f9 S$ |/ ? je WDR& I3 O- ?& }: w( p) I I
cmp al,'D'1 V+ D' _1 x: ?! Y
je WDR3 o- C5 N8 a! p% j6 L f p# G
RBT:
2 F9 _+ y2 J' d4 g call PSP
8 \; Q6 a' {7 X: q* F: Q. ] call crlf 9 b7 l7 ^5 z3 g: \. N) b& N) i
mov esi,ebx% n! e" l. B* H; r: l
mov eax,fs:[esi]$ a/ [! V, i. A, V2 R2 X8 K
out 80h,eax5 f% P7 _1 k1 f1 G: }2 _- g
mov ebx,eax
" h( x- ^0 x- N) x/ R( |4 w9 A* L call _8bits) A$ I7 P4 B H. D. S5 u. ?
jmp Exit' h, |& n9 ^% I8 j3 Q: N
RWR:2 Y: {* H/ z3 F. }( v' Y/ d
call PSP
( w. B S% e! ?. q0 e0 T/ d# k* h call crlf 4 P2 ^2 ~( Q4 R3 f# f5 w" @
mov esi,ebx! F+ ]9 x6 W' F4 v. v2 O U6 G3 j
mov eax,fs:[esi]$ p P; L# M" _5 o4 ~! o/ Q0 P) W
out 80h,eax
& Z- w0 {: k0 K: F0 V; t mov ebx,eax
2 k$ g+ O* s4 \; P) L call _16bits
5 v# ?4 d! \6 e% l+ V) z4 H$ { jmp Exit
' h% {- N8 q2 `& X# _& n9 ORDR:. p: f% ^+ a$ j
call DPSP x" e7 h$ |* K
call crlf
( }1 W* v E' y: `: h# W" ?6 o mov esi,ebx* }+ s1 {" V4 M' v. ~
mov eax,fs:[esi]) b+ w8 [ M+ P3 D/ x! c
out 80h,eax
% p6 P" B3 l% V$ M mov ebx,eax
1 B: z; L8 ?! O# y5 L call _32bits* H. Q& _2 }$ y) o \, H( N
jmp Exit8 p( k3 v1 s9 i$ v: w
;------------------------------------------------------------------------------------------------
) o) [$ n* C9 `3 R0 _8 o4 KWBT:6 |- C/ _1 {# x- Q' s
jmp Exit2 L+ x% s& V/ m% E; Y
WWR:) V: I2 l/ L* D5 T
jmp Exit% r; x6 m2 w3 `
WDR:
- [ Y) @- I- ~. ^7 p2 L4 I call DPSP/ p- d8 w' w L! `# [; [
mov Maddress,ebx ! r4 \: ]$ j% ^) `, E
call crlf
" L; \+ @9 ]; J( D) q call WDPSP
: A' k) d- F; k/ r+ t% c8 \$ r/ q7 ?) | mov eax,ebx
& Z) r' x) O$ ?; q mov esi,Maddress 3 P! ^* G& L! k7 N9 Z4 p9 u
mov fs:[esi],eax- y, Q1 ?% _" i% o3 w- ?
out 80h,eax. v: N& }* N0 }- e6 a5 w
jmp Exit, z# T% t( s. ~8 p( a/ R- S4 |
;------------------------------------------------------------------------------------------------
- B4 [& K0 K! V# Q# Z+ b0 gExit:
) j- B; E8 e4 G, S6 K) u$ a call real_mode
' K" Q, n; L a7 c+ `' b0 m pop gs
# B. S( D3 O- g) L/ P' @9 Y7 r pop fs
4 F- X3 ~* U' M* y pop es
5 l ?% J& J. N x' v: U- D pop ds
0 Y7 {$ h6 R, X; P& \/ t .exit2 Z; {! l+ l8 p5 ^7 ~
;------------------------------------------------------------------------------------------------/ m! @ I( _$ N4 O/ a! g) x4 F
big_real_mode proc near2 E" Q, S7 G" ]# r
in al, 92h5 d# j) Y W/ J3 m
or al, 002" ^% s: _+ H( {: r
out 092h, al, G) k! o* ?6 w6 \) X
out 0edh, al
4 k, L9 h/ t5 ?& _( c cli
, R5 W: N0 g) L5 _: F- } mov eax,DSEG
; V: s$ O6 T, K) h0 Y/ a& Z- H shl eax, 40 ]6 O6 q4 F0 h8 e; F* o4 `- f
xor ebx, ebx
: R1 y! W) z5 ?! d& u! y; u& Z7 {$ J mov ebx, offset GDT_def
# @; z4 O7 w8 s" `1 u7 Q$ [4 T G add eax, ebx8 J, E' u+ r, _% Y% d9 @1 Y
mov dword ptr GDT_Addr.Base, eax
7 p A! R4 B2 h: ~2 `$ E, E lgdt fword ptr GDT_Addr
: D% _" a k1 v) J7 v+ B mov bx, 8+ h& k& u9 ^8 {6 `- t- R
mov eax, cr0
$ e" T$ O L& T2 } or al, 12 N& @7 ^8 F/ }* Y& f7 S% U% k* _
mov cr0, eax
$ _0 y# J! n/ @8 R; a2 E jmp PMod# L5 i+ s' ~, Z: Z7 H0 y, c4 }
PMod:: O: K! P. |% D2 n6 u8 A
mov fs, bx
: M! {, ~, D9 t) O* x mov gs, bx
1 Q# W! {8 F# Y2 `. `8 ~, u mov eax,cr0( ^" O" J1 r W/ Y- a
and al, 0FEh! }4 k) d1 T4 A
mov cr0, eax
/ b' W8 R0 ~% c& F$ S; B jmp RMod
0 m$ K2 i- \0 G6 `RMod:
0 k+ T9 y$ r7 v! K xor ax, ax
0 l& b7 b& V& t: _3 d0 i, t8 ?8 B% S mov fs, ax4 `6 r6 Z* r5 t- S; @
mov gs, ax 9 o3 S6 r5 W, b1 C- l/ q/ D+ H
sti
+ Y+ u+ \) v# E3 t/ L& q+ N ret3 q! E) j! R- _0 X
big_real_mode ENDP
% [8 |* o U: _5 p( \( j, |;------------------------------------------------------------------------------------------------
, c* a7 h0 y$ J" dreal_mode proc near
! H) v. s$ V5 U& G in al, 92h1 ^! u P$ w. x8 n
and al, 02
+ M# K9 L& G6 p3 Y out 92h, al
8 X; C1 G" x) S6 j& b; N* W% B* O ret" S% w- E- l' k) K
real_mode ENDP* K6 [3 i% O5 L9 D% S5 l
;------------------------------------------------------------------------------------------------
2 e' ?- @+ V3 }; b* D) dGet_Commandtail PROC near
* g4 @3 D" ?6 d/ }' {3 L7 e+ l mov ah,62h
' J5 q) C" A) K3 T int 21h4 D4 r& j" e7 t4 Q4 l, K
mov es,bx' w$ i4 n1 v. ~7 A, W" R; w
ret
) C3 F* y# ^( [2 g6 cGet_Commandtail ENDP
7 i; r# b6 m# {$ G/ B3 }) @9 |;------------------------------------------------------------------------------------------------
; \4 x8 W3 Z2 ]& L9 O6 f) U6 _0 [PSP proc near
* f- K* `2 G g! ] T5 R1 [ xor ebx,ebx
0 l1 W( m4 G. A& {) S mov si,89h
; T: s" _1 C0 x5 X( x mov al,es:[si]/ f: |8 N1 \+ X! `. A, Z* i
call Change% X- j$ r$ ~# k
mov cl,41 _0 s" |) u ^' n) u0 [
shl ebx,cl
" |. m, F1 e9 i% b add ebx,eax3 I- L7 J3 e: H. q: K& N! h% q% ]
mov al,es:[si+1]
; n' q0 w" B% R' ]5 R call Change
* I" C0 ]: D/ g- B* Z" H' D% G mov cl,4; i' H* ]) Y1 M/ r
shl ebx,cl
$ K! U$ Y8 \- U% ?8 {2 H5 M add ebx,eax
. t* U/ B: T9 a% ]1 |. C. e. V mov al,es:[si+2]$ F: S% b' ?/ @) B, t: N
call Change
* g* c0 _1 @2 n# t mov cl,42 m: [) J/ J; T# t
shl ebx,cl
% Q, ? X' m2 f add ebx,eax, i' L O( h$ l5 `, w; o* q" v; t
mov al,es:[si+3]8 I3 g; Q) ~ T) l' t
call Change
# w" S+ N9 D* ~$ P! ~ mov cl,4" w0 w1 k) r& @
shl ebx,cl
6 ?6 |' P1 [; B6 B; u; ^2 e% m add ebx,eax$ B& N$ h4 r# {# C" j2 v% q
mov al,es:[si+4]# O4 m& S, v: y$ B! X5 E0 t; M
call Change2 A1 Z3 A4 |, g5 n/ V( E) p% L
mov cl,4
$ L5 o5 t+ ?- t/ E1 s g, q% [% ? shl ebx,cl4 @' ?8 N: B j z5 [: k
add ebx,eax
: q: T3 P |8 s! P! i: m mov al,es:[si+5]
8 N, e( ]& ]8 s call Change) l$ T" _ D1 z C
mov cl,4
" K3 O/ ]3 p6 K9 V0 K& L shl ebx,cl
R! f. W* j4 q# v: \( b add ebx,eax+ j& ?. ~8 h8 V" S7 z- a4 b
mov al,es:[si+6]
7 l5 ^# R2 P! x! P; r call Change
$ b- b2 p( h3 M mov cl,4
9 W, b; Z* w( C6 k shl ebx,cl
: u) I; P( ^9 Z8 V y add ebx,eax) L* }: ~! m3 G$ ^
mov al,es:[si+7]
9 t: P0 H" D* K call Change0 P6 T+ b( Z, R; y$ o7 E. b4 \/ g
mov cl,4
; j" r( P2 [. s3 M shl ebx,cl0 _- E6 L% |0 K7 C" s# T. T7 N
add ebx,eax, ?2 u: U! L; L' B
ret' ]6 z# ^1 ~3 W0 f( o! u9 s" K$ n
PSP endp" |9 t% n/ N+ G$ S3 D. _, n
;================================================================================================: H4 ^3 r3 I( E3 R6 _7 c
DPSP proc near+ H, c) n. N2 x8 n+ a+ K$ S+ p: ?
xor ebx,ebx
* d, j6 l7 C9 v mov si,8ah
, b% ~8 O: V8 ^0 b! Q+ n& k mov al,es:[si]1 n8 C$ R( f: R! \7 l/ V0 F
call Change
: c, N( ]* a4 r3 X( i$ v mov cl,4/ \* }! m; P% h
shl ebx,cl& Y& e) k& {6 s2 i8 {# ~+ w
add ebx,eax2 l# U) \6 y# X, ]7 ~
mov al,es:[si+1]
; U/ Y y& N) i call Change& g e. V7 g/ r4 S+ v+ a& U
mov cl,4
1 _: Z: G3 g* I' O7 j8 @/ ~, d shl ebx,cl: b _5 Q; x( ], u \
add ebx,eax: F& Z4 V5 s3 z8 X
mov al,es:[si+2]( y- L+ B2 B. ^- C5 i
call Change
* K# p* @9 M9 c G- ] mov cl,46 d1 t8 S, {' n* }* P9 i
shl ebx,cl
. L9 i+ L" e) B% x# P# a add ebx,eax6 H" H6 Q: E4 C. ?
mov al,es:[si+3]
: c: t# \' X( X. m+ J call Change; \4 A( h: P/ R" `. _2 O( E! ]
mov cl,4( G, C5 ]/ Z7 ~) K. p) b
shl ebx,cl/ W3 `3 H% d) F0 f# P7 \; G
add ebx,eax
( j( W8 k& _0 Q% K% l3 n1 Y mov al,es:[si+4]) A. m$ ^2 M9 U( ] O$ ^5 ^# K" X/ m
call Change4 X1 }! p0 i* y8 X/ Z# C! B
mov cl,4
; a! {* r" q# C- u( `; ` shl ebx,cl
6 j3 G& e, o2 z6 p$ }/ @/ a; W8 A add ebx,eax0 {' u8 h7 {) F# E
mov al,es:[si+5]% q: h8 v2 _5 f3 x# O
call Change
5 q8 U' r5 r q# b mov cl,4
* o% R& g0 Q, Z/ y% U& R shl ebx,cl; U9 z+ }# M6 a r% k T$ D7 ~% k
add ebx,eax. c+ f+ T6 H! E j. F2 U w
mov al,es:[si+6]
# d ]1 U6 v* c6 @ call Change
+ `. }( B: A( p, ` mov cl,4
+ W# s* X& a; E/ B2 ^! s% P( ~- ? shl ebx,cl
1 F. p u" e3 w) U add ebx,eax" h+ E0 k$ n* F( k: ~& p* @
mov al,es:[si+7]9 O# n1 H# E( w, D4 G3 v t
call Change% Y/ H& a9 F; t2 k& B- J, R
mov cl,4) ?9 C. K, D3 L+ x0 ~
shl ebx,cl) B; O( P0 Y: W2 F& v+ F, N% p
add ebx,eax/ P' p! U& N0 A
ret
; t; _8 Z' p% ZDPSP endp5 O0 Q0 t4 z/ g# G! `
;================================================================================================" @+ ~/ @" G) C% u
WDPSP proc near
# p9 g0 c5 H: D0 q; W1 ] xor eax,eax; a" i9 q' q7 Y% j+ B% B" T6 j
xor ebx,ebx! Y: \5 A; n; t! D
mov si,93h6 \) W' c3 t9 _9 D8 P; ?
mov al,es:[si]) m0 v! ^4 S/ F9 D& n& o
call Change
1 N- R1 |, b7 X$ z% Y3 @. j mov cl,43 A0 i% m0 O. R X0 V
shl ebx,cl" Y, U! ]$ v, {$ V
add ebx,eax' |6 Q5 X9 C4 l; I# ^$ _
mov al,es:[si+1]
: w4 c+ S8 {3 p2 V% m- ]+ Y call Change
" d: t+ ?' J) S! F% G! J( J( m# K4 H mov cl,4
* M; k- J) |. r7 L* `- T _ shl ebx,cl7 E6 r) F* D/ \1 n
add ebx,eax
* z% f# v) T; k' N$ ^' F mov al,es:[si+2]$ ^, }! U# W! h: T# `
call Change
- j& i1 M$ F4 d5 _ mov cl,4+ g, ?7 I: ]1 s1 W5 d
shl ebx,cl
& M; E9 K0 H% {2 W" X- } add ebx,eax
% t* P. D( R+ ?. M mov al,es:[si+3]8 C, u; S2 z6 G) X
call Change
+ n! G8 o8 @/ N/ z7 f mov cl,4& H5 q; Q3 J- r0 u/ S
shl ebx,cl4 [! ~' w( z o: W4 g7 W5 h
add ebx,eax
; l; t! \0 f8 \6 A9 v0 A$ `+ o0 E) _ mov al,es:[si+4]
; m# w- L$ Y: @7 k2 n# O call Change* W2 D# l0 n, Q# ^ N
mov cl,4
& V. M7 k, I% f shl ebx,cl/ [6 c1 w. g, b) {' @/ d# x
add ebx,eax
9 B: K8 I8 u% _& U& \$ b mov al,es:[si+5]
9 W" ~- |! x, f2 `( J- t% |( _ call Change% v. Y/ p/ R8 e+ b$ {- W7 H
mov cl,4
2 Q: h9 v# U% M! o. j shl ebx,cl
7 F' w+ K+ O$ C add ebx,eax
+ }! Y1 \! S& `0 m: ~! q( J mov al,es:[si+6]2 w" [, A) K! S+ O
call Change- _! _3 q" k( n$ p! k0 Y- _
mov cl,4
7 z7 ?: f: D; d, h# |' C shl ebx,cl
/ \* R# M2 `! @- v" Q$ l) J add ebx,eax
, r* {! I0 }1 |" o7 Z mov al,es:[si+7]
9 S7 e! ~7 b: c/ \/ v. y call Change; ^! _% f1 T. D; {; C5 ]
mov cl,40 w; H0 q4 q' M7 h( a
shl ebx,cl
5 w! `4 h0 ? M6 a( u3 g add ebx,eax
6 ?9 h* x. j' C8 e4 S( d. c: d ret( G" o) o6 q, m1 p' p, ^
WDPSP endp- ~) j; @5 Z9 h" l5 D( R0 }
;================================================================================================
; Z' E' b. r. g. o% BChange proc near& h8 _4 C) D( A
A: 8 c8 X( k5 f& U
movzx eax,al) t! f$ `+ O# L) s: O
mov edx,eax
8 _) F+ g! e3 b: l% i8 l$ k5 |8 b0 i cmp eax,'0' ; V1 K7 I) f1 _
jb A
* s3 |2 @9 f. @- ^! M( o( E" V cmp eax,'9'
+ n T' \* j9 V% t p: j ja B
* D% q0 \. _0 ]" H' Y. c sub eax,'0'
& @: n/ A/ s: p4 }! K jmp short E
/ q' L' k7 J; c* h; KB:
! f5 ?( `7 L) @' r and eax,0dfh
5 @. }. M I8 K3 J" [7 b mov edx,eax# |- ?) Y- ] Y F: s4 [3 G) _& @4 b, _
sub eax,37h
I s% F) p7 Y! C) W cmp eax,0ah
. _) \1 I4 }: z7 i; {( l1 n jb A . @% Q* c9 v- r1 N- u: X
cmp eax,0fh$ B+ |' o. V- s& @7 `3 p9 T! V" R
ja A 8 b7 |! |4 o; y9 j( P4 i
E:2 s; V% v. H: t4 F) I- b
push eax A3 c7 c2 z" U! s3 v4 b+ Y
call PRT ; i6 t# X, A+ @4 ^, S( f; r: ]& i
pop eax1 E- K$ q1 \* M# m
CExit:
1 P' J' @+ o$ \+ D# o! E% a ret
" h) s' `8 R; u9 b5 ~! N, bChange endp$ R( F0 y- ~- d9 T2 @
;------------------------------------------------------------------------------------------------
( n+ r8 R, i; N" RPRT proc near
! a) k8 O6 z. J7 L mov ah,02h
* ^7 [( }9 G% C( P" n int 21h
" V& r8 S; \) \6 e% E/ l% Z+ s ret
- D6 o7 C+ x2 q" _+ n- QPRT endp
' W; m9 X6 I- l ?4 w; C* z;------------------------------------------------------------------------------------------------
( L4 [, E n4 N- n/ U) }% B& \crlf proc near; G; S$ T! k; Y% N$ [; x5 w7 ^ R
mov ah,02h1 Q' }8 ^- W/ |* A' [' U( C
mov dl,0dh, L) g$ f5 B; P2 Z |# B
int 21h
+ l5 {! |1 I3 b& I# p0 ]8 c3 c mov ah,02h8 _; w+ ? D) p3 p. P4 P- P
mov dl,0ah
& |8 b0 L& F8 r4 S( o, t& F int 21h. v' _1 @' ]9 M& P# {
ret
. ^# j H! K9 C. q$ ^crlf endp% W9 N n d7 A/ a) A' k% E
;------------------------------------------------------------------------------------------------
8 E% U5 W6 v6 |8 W. z_32bits proc near6 C. ?' t( a" L& h! g
pushad0 _' A! j$ [2 a. k) m
mov cl,4' T6 b1 k6 D+ s# J- G6 ~
rol ebx,cl3 ]- O8 t" K! o( D$ _( t. V) V
call print_4_bits
2 b4 T. V9 `) U+ u8 I/ r7 q rol ebx,cl% g: I6 q6 o7 O
call print_4_bits& Z( z: _1 f( W+ S+ y% w7 y# J
rol ebx,cl" G+ i4 v, C) v2 U( G
call print_4_bits$ I! \- k* E6 |' b q
rol ebx,cl
! P6 y% H+ K+ I" L" h/ u call print_4_bits. ^6 F8 h0 E3 s7 z+ I: @/ V# ?1 q
rol ebx,cl
% z7 v5 B( `0 r. `% T call print_4_bits
$ h Y! H9 p* n( \# W. y7 W/ N( T rol ebx,cl' @7 p1 B8 j+ x5 R# [9 ?
call print_4_bits; D J+ z3 P% K; k g. u
rol ebx,cl
+ o8 b* g" `/ B2 a- b" q call print_4_bits
" [/ x J$ V" U* h$ a* a rol ebx,cl
1 V( b" k ]2 M- I( v2 q call print_4_bits% }$ ?) [. J+ \3 r9 p% z
rol ebx,cl
) {" I# {1 I M, S popad
8 ~2 ]' J) i: K' D } ret; l2 K1 X* Y7 B4 g! ^* B: a
_32bits endp" z% P t& H G' ~6 A
;------------------------------------------------------------------------------------------------
5 i, }% @* c- z, }8 }6 G9 a' n_16bits proc near0 B5 K, F1 F$ O/ K# j
pusha 4 `5 M7 k+ V. c" y* G
rol bx,cl4 | w% P* ~( y& I
call print_4_bits8 B2 ~& m1 R/ l4 v
rol bx,cl: A% z$ t# g1 A$ r$ r: }
call print_4_bits
: V& P6 D# V) B* ~9 e' Z. z rol bx,cl2 h* B9 a, l1 u0 D
call print_4_bits
5 B- {5 p; z: A* G! V4 |. i rol bx,cl; ]- [2 ?" q, ~) }
call print_4_bits
?+ `: P* V2 e2 L popa
+ ~5 F/ Y t0 N ret
7 w9 _# }* {: v0 \_16bits endp
2 N( y; M/ D2 p# s8 x;------------------------------------------------------------------------------------------------
. n- L6 y" `4 e_8bits proc near! V! M% w, `+ b5 A+ T! L- p- X
pusha : M1 Q" w5 T& i& T3 k0 `
rol bx,cl w% i9 N- D. P2 _6 I# N3 {/ `
call print_4_bits
+ Z8 R% A. }+ P) E rol bx,cl; L; g, b/ ^$ Y6 x- f1 C
call print_4_bits
1 y4 q& m& R# d% d popa
h' m& Z l- q! r( G/ }1 P ret
& d: w; x5 ?# E7 K$ H2 {' e_8bits endp# P+ [0 v/ f5 V8 P+ ]/ J( z' B
print_4_bits proc near
0 J8 W/ z6 m1 K2 C3 g mov dx,bx9 f( I( N7 r5 F5 `
and dl,0fh
/ h* F5 ]8 m. x. D4 q add dl,30h& \4 v- n6 C/ R/ B8 {
cmp dl,3ah5 g- T; M# Z! L+ X
jb print8 M9 t( A0 Z! A3 j; \: I6 F
add dl,7
; ^* a: J) @! y5 x, mprint:
* j# P5 M' l0 g" b7 {+ z mov ah,2
" A5 J* Q) m! m, Z' T5 | int 21h; d6 O- _/ |9 d
ret
5 g% j7 H! c$ ?5 n1 Z% qprint_4_bits endp , B; I1 a! ] q4 N! J0 o
CSEG ends. G6 J* i7 [& f/ Y5 B. b X
END |
|