|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)3 {7 S) ~1 q& T2 {7 }
' e6 c$ O) G5 Q5 m% H1 G+ A, ~: v
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'. v7 P- X: P6 X3 S
" k% @* u, T# S" f: P宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝 + ?' C# ]) V2 W
9 f0 t1 L- m3 q! I
.model small
7 Z& o1 K! L5 h6 g$ {6 Y3 n/ K3 k.386p
) K, `. n+ g, s. }. UDSEG SEGMENT USE16'data' + h! l# D# Y+ \$ u4 F2 E. I
- d% W8 A, h; D |$ y0 m
DESC STRUC9 t: L6 C3 d& \
LimitL DW 0 ; B z9 V$ A, P, d3 _
BaseL DW 0 * }3 S0 M" v/ A# h
BaseM DB 0
+ j8 \: s2 ^) o$ l4 N% E Attributes DB 0 - S3 p- w* r8 `# @# p* D
LimitH DB 0
5 |. f( d" h) J. I0 M* {+ H# U BaseH DB 0 - m9 ?( d" W+ J, P6 N
DESC ENDS: d! c. F' Z' G/ `2 p2 I
3 c3 M% N' X% A$ ~
PDesc STRUC9 ` N% Y1 V- c, h
Limit DW 0
9 O+ m; c6 r: P6 D Base DD 0
6 i/ \: c0 E: U( w) G- \PDesc ENDS/ N+ }) P: ]% J; g
$ _! T4 Q8 \# n a6 a% _. x( WGDT_def Label Fword
$ h6 k# J. t, e$ ]5 H: r0 K8 JNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>1 Z; c0 Q& {, k! y
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
7 P0 Y& i& ~+ c& NGDT_Addr PDesc <$-GDT_def-1, >* W$ w* C0 c# T1 M% N c
: p' K# @* @+ O% ]- w4 ^* A" Y, N
Maddress Dword 0$ U1 n- ]/ D3 x
/ w }8 @2 \, m O
DSEG ENDS 6 K9 C* X N2 ^6 Z. H# \1 W
ASSUME CS:CSEG,DS:DSEG
1 F* Y; x/ I$ k0 S, l8 u$ c
+ w4 B9 F) A8 d7 N, H, sCSEG SEGMENT USE16'code' 0 z* @& w, R% m- I+ t: Y; z" Q
push ds9 o2 X" w/ l7 h1 L5 ?' F
push es, @& m! c5 D4 [3 g( q! \
push fs
+ q6 p0 O- k2 m1 x8 F3 e push gs& g0 p1 D' u& b$ m- f/ C' j" e) d7 r
call big_real_mode
# U& n; v) R. \* S4 ]& B6 g call Get_Commandtail
3 O# l/ b% x: u4 `5 I1 N xor ebx,ebx5 I/ G6 Q7 s9 P V
mov si,82h
9 L: z: |" W& S8 m0 h mov al,es:[si]+ n3 Q) {/ A g: O8 J( K* O
cmp al,'r'% o2 i$ @$ ?8 i( i" D, N
je R6 j& f+ H6 }, k+ N
cmp al,'R'
# q* e: l4 T1 ]+ f. X% R6 g( V) c je R C2 l7 a2 j v* ?5 x8 O& \
cmp al,'w'
6 Q8 c+ W+ y1 ?, L. S je W# b$ ` i: r0 C+ [, u$ |
cmp al,'W'. N% W' s. ]3 l% I! }
je W % \' I) A+ }4 u/ {5 g
R:1 s- ~' P) }* A* @
mov si,84h
# s) S+ n+ d9 F" q+ Q mov al,es:[si]
y5 ]! U* k- d7 \. q cmp al,'b'
% R! E: U3 j- D: I" ] je RBT6 r/ m$ [" P& m% c1 e6 o$ B
cmp al,'B') |* I6 u2 A( U
je RBT. m2 @3 p4 M- ]* g6 Q( i3 O" u" ?
cmp al,'w'
5 T! c& u+ y F je RWR
# _# w# U( O' w! O) m6 n% M8 p cmp al,'W'
# s R/ _0 z% R3 P; k je RWR& D( X( T) `, `+ a4 Z
cmp al,'d'9 B* w7 A5 H* ?8 o; J3 @; f
je RDR9 S5 Z$ z1 X; y; A
cmp al,'D'* Q* |" X* d1 w$ r: Z! P# `
je RDR
* V4 q8 B3 ^+ k* n. MW:
$ {) ^3 J3 F5 t' _ mov si,84h
' m( ^6 M, l- d! Y1 F mov al,es:[si]
1 u; p) [9 z# L& S! U7 c, y8 o! x& t cmp al,'b'
9 I7 g7 P0 {9 x0 s; { je WBT
$ M6 E Y2 B; z' ?0 r3 d cmp al,'B'! d: h/ t0 E Z9 R( f- g9 ^) z
je WBT
: \3 s0 u, |! P, P cmp al,'w'
& u. I8 ^) E9 C! n! g* h c je WWR
$ o2 i* L* D$ r cmp al,'W'
! E: }. X0 ^1 {5 @6 @ je WWR4 R; Z. v# s6 f# c9 x
cmp al,'d': |: F' u3 X Q
je WDR
3 K9 g# V! X$ k! R# R1 ? cmp al,'D'; J8 T& E% A3 n0 z: O
je WDR
) H* X( x3 s; t9 o2 B6 |& yRBT:7 B2 L; U. C" G7 v+ c+ C
call PSP
1 e; c6 y5 n& [ B4 D P/ U& p call crlf $ q5 J0 _# F: M0 T/ V/ ?* L
mov esi,ebx
4 {, g5 T( {5 `: z! _6 _2 X mov eax,fs:[esi]+ M# W$ J' y* \$ `
out 80h,eax
% X, H F# A# t mov ebx,eax
5 {$ o% P1 l3 T- Y' @1 _6 c# @ call _8bits
& K3 [! M" a3 L! F, b- r& Y. f jmp Exit& ?( \# ?# O9 l! x
RWR:! j. x. j- h9 x
call PSP - b& R" h6 W0 W' f
call crlf
' j6 e' ]7 q! J- I mov esi,ebx
$ B. q) n/ Z: J5 g7 N mov eax,fs:[esi]4 d: |: }' `- l8 _
out 80h,eax
1 m4 g" M. ?; [ mov ebx,eax
. L: v: u4 K( Z1 Z+ F% v* R call _16bits
. S3 m- o* m& G! \ jmp Exit
$ A9 Z) T( h& @( n" Y: @4 u; ~RDR:
. ^; y' |. R; [% J call DPSP % l$ K' U! [+ J) j
call crlf
) b: q5 y! F& X8 U% ` mov esi,ebx- a, F6 ` G0 w4 ?
mov eax,fs:[esi]" m& N/ q. p8 ]2 d' S
out 80h,eax
. t9 s2 ^. H/ X7 X# A! r/ P mov ebx,eax
l3 N& v0 {" P& x5 c0 t call _32bits
8 k% k% I7 S8 Q1 c jmp Exit& n1 M) R* d0 B6 q
;------------------------------------------------------------------------------------------------
2 T' A! p% h; h8 @; [8 u6 D4 K1 q$ hWBT:& O* [, p! p6 s) U
jmp Exit! z6 }; v8 b2 ^& _. I4 `
WWR:
Z) A6 N- k, ] jmp Exit9 H1 E( t! q7 O5 f* o7 G
WDR:. R: N {" g9 x0 H c- A$ ^
call DPSP/ N1 K) E4 \( Q3 G( q; S; R
mov Maddress,ebx * i- j. C- }% _% w
call crlf
7 x. E4 v( G) _& _- j call WDPSP' U) g3 f% v. ~- r+ D
mov eax,ebx$ n2 S! B/ p5 F# L
mov esi,Maddress
' o( f, m, j% `& |0 a: f( t5 ]* Q mov fs:[esi],eax
. O, r8 \) j+ R# } out 80h,eax
, Z" g+ y) @/ @$ ]$ p7 Q jmp Exit% J Y) v A* J, Q* A, c
;------------------------------------------------------------------------------------------------ , H5 o' B: m. p, O4 o. x( Z
Exit:
& Y/ w- E# x: {+ V call real_mode
/ ]/ A; q1 r' j$ }, x, m pop gs. }, o% c2 S4 s
pop fs
% K, P' K5 J0 K& I+ ]5 @; t; y pop es4 ]/ e) G5 y6 e" f! B+ `
pop ds
1 o) P" s" k% f( u. L) J5 E .exit# x& @* V; c. Q% J M2 m
;------------------------------------------------------------------------------------------------
7 A$ w4 o& `$ @& Sbig_real_mode proc near5 w5 g5 P9 ?3 D7 ]) k
in al, 92h
3 ]; q* R1 y9 C# D0 T; r8 \ or al, 002
0 h+ G5 n7 S1 D' N4 E$ q5 w out 092h, al
1 E- V; [/ [5 K' Y4 P+ k out 0edh, al* e9 V8 H* {$ W4 I5 f% D2 D
cli# N# ]/ {# A% ~8 i' e/ K; M
mov eax,DSEG" t4 |; @! y* `0 x+ U( p
shl eax, 46 [/ Z0 C8 X+ `3 D# h8 N
xor ebx, ebx2 s0 C) ^, x v+ \0 X" f
mov ebx, offset GDT_def: M- c- b3 f: T6 x3 }
add eax, ebx
) f, `0 U6 Z& l) g& D8 y, [1 k mov dword ptr GDT_Addr.Base, eax2 E5 N8 o2 }% k+ S6 f9 s) P
lgdt fword ptr GDT_Addr9 @& m2 ~- N8 F( U% U, T4 |0 V1 O
mov bx, 8" t! @$ d2 B7 F+ }; W- Q" v
mov eax, cr0
) Z( ]* q+ M* l* } or al, 1
0 `1 N g1 V; C2 E0 b; x mov cr0, eax2 C% S# H7 x2 Z/ O1 G3 @5 _
jmp PMod# h. r: ]7 o3 K4 R I e P6 H
PMod: r- `: j6 M" q
mov fs, bx
; c' W& X) M8 \$ t# F$ U mov gs, bx6 _% W- N& g( m" j) F
mov eax,cr0
& R5 a8 k) T5 ^/ F) P and al, 0FEh5 q j+ _! E y) s! k: q* l! d( s: \
mov cr0, eax 5 U: y5 p- H$ P5 D2 ^1 w
jmp RMod
# D2 w1 J( n0 j/ G) D5 j, ZRMod:5 ~! z8 z( L+ B( L1 t; U3 [8 K4 ^
xor ax, ax5 B2 n& s7 p. y
mov fs, ax
: [1 {# d6 ^! q9 F. y5 M mov gs, ax 2 u1 t( ^' ]) B- L' X5 K( n
sti ! N$ g+ V. M b: H# T1 `' G* f
ret
+ ?; v- @; P6 O) }, Q% u* Ybig_real_mode ENDP
) T! b; ?5 G1 B7 y4 m;------------------------------------------------------------------------------------------------
. N9 U+ t& O$ u* D% Areal_mode proc near2 p. y/ _9 g7 ?+ E: g* c
in al, 92h& l. B0 D1 V! E; A& p
and al, 02
& y' A) N$ Q; o" G, a( n' T out 92h, al
9 t1 D& m& @0 I6 z& s; z ret
( X! d7 Y3 P+ @! T8 {real_mode ENDP
& E2 H9 k( T! M. E! s0 [# A;------------------------------------------------------------------------------------------------4 N$ R$ F6 W4 c
Get_Commandtail PROC near
' P! w1 s" `6 h4 `* } mov ah,62h
/ V/ I* {; E4 n) z/ \6 j9 V int 21h
, t L# Z7 S2 G, O; ?4 [( a mov es,bx
2 e; [% S) \# I( s- b' P: _ ret
" V( h0 n# O5 o8 e( x kGet_Commandtail ENDP
# s8 J+ H6 U: w( B( I" Y8 f) s;------------------------------------------------------------------------------------------------
6 ~6 d& n$ J- l$ Z& l v( WPSP proc near
7 L, _) U% s" F( [ xor ebx,ebx1 } y9 @ b, }3 k8 U' y2 W s: u6 p
mov si,89h
) @- ~; a2 c7 ^5 B: _ mov al,es:[si]
9 ^2 B1 Z0 ~5 _$ @& l0 ~ call Change# m; e! Q' G3 q
mov cl,4
* S* g M" O: n( J9 _# [( O shl ebx,cl
+ m4 I4 B, U1 q; s. T5 J; B add ebx,eax# P) p% Y, G0 ?5 h2 \7 e/ x1 O* R6 P Q
mov al,es:[si+1]
@( i3 G, Q4 G0 v call Change
7 r0 G' ~ R: Y$ R y6 W mov cl,4% `6 B4 j7 ? _+ K% P
shl ebx,cl
( K3 Q' P( m% X: L add ebx,eax- k# U/ B. O4 Z! i
mov al,es:[si+2]
: v- d% C6 v! }' A4 o call Change& |- ]* E8 [1 t R
mov cl,4
5 l% G7 I' z' t1 W; Z5 I) P7 W- c1 q0 Y shl ebx,cl
% p9 N4 l8 C# e5 T! n, t$ G$ X add ebx,eax' `8 V9 h3 Z Z8 x7 \
mov al,es:[si+3]- T+ {' J/ E6 J2 ^1 F
call Change/ u; g7 T8 F0 Z* E6 U) \" \+ Y7 C
mov cl,41 m+ ?% K. a/ c/ F% Y: K
shl ebx,cl
" k, P! M, |" B' S( G: F add ebx,eax
6 U' E" |. d5 D' Z/ C. y F mov al,es:[si+4]
# N% ?/ J: Q5 n2 i7 Y call Change
% W) W# T6 S% Z# A* B+ v. R mov cl,4
0 x T3 p( \7 i5 { Y; K5 M. G shl ebx,cl
; r* c9 H" U- k' p( u* S" Z8 U( @+ L add ebx,eax
3 r# b6 M& c G7 X mov al,es:[si+5]
+ g8 A3 L: I" x2 G- g1 u+ p/ y call Change
# `# B3 K. v/ |" L' m+ |0 b mov cl,46 M8 }' k/ X- h, [
shl ebx,cl7 y8 k' _0 U; V; }4 d# F
add ebx,eax
. ^9 U# q) z7 p9 M mov al,es:[si+6]3 s0 h# m$ t2 m% T
call Change
+ d' c9 `, P" X& S4 }0 w! J mov cl,4
F! [8 o/ b4 K ^ shl ebx,cl6 O4 A6 O9 F0 i" c! I. m
add ebx,eax
" z" j2 T" A8 Q mov al,es:[si+7]
9 a& Z6 ~' {: d) [% w) \ call Change
/ Y. [8 q- [/ r4 y) P mov cl,4/ N' S2 b5 v3 U5 P2 D- z* e- {/ R
shl ebx,cl% A p: S, j" h
add ebx,eax/ r; p7 z, D* Q; |4 u% _
ret% a5 p+ r$ H- q% v T+ L. l
PSP endp/ G9 m0 u1 U3 v- F3 H' ]4 g
;================================================================================================$ p7 v C8 A' g, x4 E: m
DPSP proc near* A/ a8 }: v! y0 c. u) s/ z
xor ebx,ebx
: V' r! j/ R: L/ ?7 i mov si,8ah1 ~9 b u" F% r) X0 y5 i
mov al,es:[si]! ~) z4 e' I7 e4 _
call Change1 v- l5 ?) ]2 ]) d5 Y5 d
mov cl,4
; y$ E3 l' ?- I/ {9 R shl ebx,cl
* \& g0 G/ g& F3 n$ h add ebx,eax$ d& E& K {* E" N$ f1 F7 u4 ?
mov al,es:[si+1]
, o5 A& l% r S! T% Y* i call Change
o$ E' D$ b3 M ^- p$ F3 e mov cl,45 V. X3 A: @* x. C/ S
shl ebx,cl
; P; b% C0 d7 _( Z t# G2 a4 v add ebx,eax1 [) V5 \" U5 k" j7 O& V
mov al,es:[si+2]
) r% A- n7 U7 l% g( B# h call Change Y1 `9 c Q; ^
mov cl,4$ Y( U F& L5 @& [+ e! y4 ^
shl ebx,cl9 k2 A G: W0 U% S
add ebx,eax* ^9 K2 s9 v9 D0 [4 Y/ F' @
mov al,es:[si+3]
P& w. R" ?! l! k! p1 q call Change
7 z3 ]. G" p6 n! D- e/ m7 p/ c mov cl,4! [3 J* N6 X: P- i6 |. C* m
shl ebx,cl
( D* t! r, E2 [ add ebx,eax
3 Y3 D( [* s$ m, l mov al,es:[si+4]; j! M. e- P, m7 J$ o5 e( O
call Change
+ k2 S. E% u B mov cl,4& Z+ z1 H0 _& x2 B& I2 {+ G
shl ebx,cl% E+ Z7 x8 @& `! P/ `3 q* A
add ebx,eax
* U1 C# `, k4 a: i3 u mov al,es:[si+5]
% h% \3 ^; h' k! M. k1 |( y# p call Change
# Z7 L; g& V5 p. l mov cl,4
; C8 N" S, V2 t l( i shl ebx,cl- F) N" n4 Y- m; }2 T: B8 j0 B
add ebx,eax; G! y" f% _, k0 {; r0 b8 A& ]9 \
mov al,es:[si+6]
4 H8 M2 G; w- B+ d2 E- [. P call Change
& o+ o7 O: E; O- O, S; R mov cl,42 j0 N1 Q1 ?4 X. y6 ^
shl ebx,cl
* V6 h F, x, [% |3 M5 l( w0 z add ebx,eax0 o- {3 h1 t" k4 J
mov al,es:[si+7]
; b- `- i% R0 |3 u8 T6 E \ call Change
$ S" i+ {6 j( s1 }9 n mov cl,4- M }4 A! W5 G7 [' c$ o4 j4 x
shl ebx,cl
% s2 J9 m$ f) L# m add ebx,eax1 k9 f8 w, H* b) k
ret
5 v0 R0 A7 h7 {DPSP endp
! V3 o) u, }. V+ `: T6 `;================================================================================================
/ ?" r4 i& a! `( N! ^WDPSP proc near
) w2 _1 M2 A8 k5 v; [ xor eax,eax
& f' }' X7 t( D8 q+ }5 k: Y8 ~ xor ebx,ebx
( q, R7 a$ x, Y2 R* E mov si,93h1 S3 D" R- [2 P6 V3 \9 {1 A
mov al,es:[si]- x0 P9 u+ m& C, K! d
call Change" Z0 J0 D& |4 H3 u
mov cl,4
" T8 s5 D7 c9 s shl ebx,cl T# @' [% {% P. i8 Z( ]2 p. ?
add ebx,eax3 q3 f6 A4 C/ Q8 x8 X6 R C B
mov al,es:[si+1]
5 T0 G8 |8 \+ l0 I: }" e call Change V" j7 f, z+ T. H. a4 K. J
mov cl,4
+ ^- R6 O0 t7 U/ G/ I" K shl ebx,cl2 o. B7 g4 E+ V/ ~4 e! G+ O
add ebx,eax
" p6 d& C1 V# p$ I8 g3 V8 j! H mov al,es:[si+2]- [7 G5 r0 z1 L$ @+ ~5 m
call Change
; N- R- |$ [! `& L mov cl,4) b m9 ?+ ~0 G6 u
shl ebx,cl1 w' j0 [( t3 W6 L5 t' O( n' o6 |
add ebx,eax
" {+ U% B5 F, ~8 t9 q5 d mov al,es:[si+3]; b" F/ |" h9 l
call Change7 O. T0 u2 Q2 D, A$ ^
mov cl,4
; H+ l4 P9 p% f- k' i shl ebx,cl! ]% {# P5 ~1 _7 V* K
add ebx,eax
+ `1 l5 M3 q5 Y, w( o mov al,es:[si+4]
`2 C; S2 }' D0 e- @ call Change
, ^1 N) r1 X- y mov cl,4* q' C1 P. U# z8 ]( I
shl ebx,cl( P" @$ G: W5 z; ^# ^$ @' Q6 t
add ebx,eax2 l0 [8 x F& `! @9 i
mov al,es:[si+5]" }9 }6 V# [% h+ |4 J
call Change; b! O5 M; w7 F3 S) o' ^9 a
mov cl,4
3 [' y, ] e2 B3 [ shl ebx,cl' u: y6 H2 T. j' ~7 z/ w2 i# Q
add ebx,eax
4 r5 x$ c6 G$ U) o( l/ v mov al,es:[si+6]& Z" W- w1 M4 L r
call Change' E2 j% \8 r" S, `/ n
mov cl,4
/ n8 `( J% r' q- { shl ebx,cl
! S0 {) g4 V; d. C# K" a" t3 k add ebx,eax; P2 h6 ]( _, N) }% ?
mov al,es:[si+7]) t3 N& q" W* I9 t
call Change' S7 w* l$ e/ [
mov cl,4) k" X8 i$ k0 W0 w) C; k( I( e" \1 S
shl ebx,cl( `4 M: Z, I" ]# l" h. H; k
add ebx,eax3 k$ a; n/ o! `. Z9 b$ h
ret7 B0 Y( j6 R/ m8 m z' E
WDPSP endp% B+ G! F( O, q2 I: C
;================================================================================================! H1 V# C6 M, A7 w+ o
Change proc near
; P" o7 Q; `+ T! YA:
* m5 ]* W# ]( i( c/ A5 k movzx eax,al
9 Y* w( e% I2 k" s mov edx,eax* F3 A& {* @; _
cmp eax,'0' 6 D0 W6 O6 Z) D: J: z
jb A% _$ c) D) O& w, C2 [8 V& I% e
cmp eax,'9'
, r! l2 K' m* l ja B
4 m5 T1 I, @" d3 ]1 q% @6 z sub eax,'0'0 I6 d6 U/ K a5 e4 g1 R6 b
jmp short E
+ U* z5 k$ N, e4 u9 k) W. K" G) [B:
# D! L, C- h, e2 D! c7 N and eax,0dfh
0 s! `! ?3 t2 ~- P6 X! N1 N. R6 q mov edx,eax+ P& b- X( R8 k) k+ u" u6 g! ]
sub eax,37h 4 I. h+ @$ M4 D
cmp eax,0ah
7 f0 B$ Q0 ~/ U: Z jb A
3 L2 C6 |4 K, W0 n0 }# U cmp eax,0fh0 g0 d( G9 X* t c P$ X: o
ja A * }+ `, L3 ^' _$ l5 f
E:
2 _) f3 r0 a" f* c/ C/ S" h push eax
. d: o( f9 e7 w1 o+ o/ @ call PRT
; W4 T$ P) w: v, q pop eax
$ g! \" ?9 {5 T3 ^6 UCExit:
0 C; [# v9 `" `5 T1 y7 V' L ret
7 O. L" E) U7 \ ^Change endp9 ]* `, Z8 I1 B1 y. ^
;------------------------------------------------------------------------------------------------
; W- t& W. x: l$ @PRT proc near
: ~6 y; T9 x) u! ?. X% W. P' O mov ah,02h9 `/ M+ u4 T" ^; u
int 21h% H9 C5 K& ~( N$ N: z) r: u
ret
m8 K0 W/ \% o0 @PRT endp) ~# V* }' _3 ~
;------------------------------------------------------------------------------------------------: n# x) i8 t! m: w* J+ W% y
crlf proc near$ @# ]9 G% w$ T" L4 o2 z
mov ah,02h% }+ {4 T C. d$ U+ N- k
mov dl,0dh
0 x% L' v& {6 @9 S! l int 21h
. `$ J3 ^: x( ~, q+ Y8 d% i; Q/ F mov ah,02h
* \$ I9 ]1 N% a+ p mov dl,0ah
! d" M0 q+ o! H$ H* E8 Q8 }/ E int 21h
7 G5 e9 O0 X) j L0 e6 ?7 s ret2 z5 B0 t( k: d) C; h+ ?
crlf endp2 K3 i3 Z8 c$ [) _; g
;------------------------------------------------------------------------------------------------7 T' S) ]0 [; F( ?
_32bits proc near- U# N7 \; _$ M: W2 X
pushad( E8 u% I7 L r( A: _
mov cl,4
7 Q# Q3 N6 ~+ m rol ebx,cl
+ d3 |. z( \. R4 J* N$ V call print_4_bits; d a# T- @! V+ Y% l
rol ebx,cl/ a" `5 ~+ |* {" H/ Z
call print_4_bits
2 u' f! o0 m1 `$ m rol ebx,cl
+ \8 H6 h3 ~8 S call print_4_bits& r0 o! Z0 b! t7 T
rol ebx,cl' I/ u; Q/ h0 `7 x) d
call print_4_bits
& N$ `. p3 r1 } o( E9 e) ] rol ebx,cl1 F- E, W: p# q- l; p
call print_4_bits* P! ?6 ]( M* d5 J6 r3 I
rol ebx,cl6 P& f$ o- C' G" }6 n3 L q. W
call print_4_bits
! |3 U1 x5 R; Z4 ?* W rol ebx,cl
; E w$ F; u* A6 f' Q6 w8 C1 D; C call print_4_bits
% R: d% i6 ]7 G% v# o5 `! y rol ebx,cl
0 _7 ^5 [, U! \% U call print_4_bits
' X+ ~3 y8 f. v8 Z rol ebx,cl# l! O7 M2 b G4 b
popad8 ]# ?( j( a- I1 Y# I
ret
* M" Y& W5 d) W7 N$ N_32bits endp
, R K# Z. q2 e- r+ E2 M# ^8 H5 y;------------------------------------------------------------------------------------------------6 q7 c5 S& c9 Y' ]& T/ k% p$ ]- o
_16bits proc near
; v" c" ~& g: [: f9 i/ W8 ~ pusha ) T' N5 ^* M& [& D3 @# Q( ?2 G
rol bx,cl
3 x& h$ f- ?' w/ | call print_4_bits9 u" x( ^! \7 J% {6 x, J
rol bx,cl2 c, l- a, F( M w' D5 h+ Z4 l
call print_4_bits
" m* w$ ^# e p+ X, i rol bx,cl
/ b8 V# z& h# H/ {& i call print_4_bits! s/ `6 m& Y# z8 w( X
rol bx,cl
. J5 E: f! B7 g# T* H call print_4_bits* l' P4 a+ Q. [, @0 _" O) B
popa, v0 U: R0 Z: H9 I6 C
ret
* X" A" O# g( m& |% g_16bits endp
+ W2 {( p& P- U;------------------------------------------------------------------------------------------------
1 E7 P" l" c) s_8bits proc near8 p# W% F* W' z9 t
pusha ; f) k" | B+ R* t9 h6 V! ~
rol bx,cl
& _% E% P, {2 N# A2 J$ J call print_4_bits! T* p! F* ~6 N' o
rol bx,cl3 M- F; E5 ^% ]) ~3 r
call print_4_bits
( B+ y' T8 ?/ ? popa
' M( P- R: O" d/ o$ C7 X5 X9 M ret
' H/ r) e) {8 {' D_8bits endp
" E" ]9 d' A' ~8 Lprint_4_bits proc near
. _( F+ n7 H9 ~# H+ E mov dx,bx) `6 ]2 M0 t" E6 ^) p1 W
and dl,0fh( X. L: T3 l5 R1 e9 I' G
add dl,30h/ y2 l4 Z% o. ?- L8 _& }
cmp dl,3ah- w' ?! w: _- e5 ?- S$ |
jb print0 L! B. [2 W" s
add dl,7" X0 Q3 X2 O( F4 p: {. R
print: 9 W+ N, a8 Z6 {+ v
mov ah,2, ^# E0 V9 t- Y/ `7 _
int 21h
# M: h7 C5 _: C$ [/ ?7 d ret
, A4 N4 n! s4 `& C/ s- Fprint_4_bits endp 2 n, ?$ R% |/ G
CSEG ends# N6 L0 `8 {6 v7 h" V: ]
END |
|