|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)- F F1 d5 u6 D) G
5 Z; T4 z: J# |% u+ b則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
; m4 w3 l: V% n4 d5 [/ I. c% i# D! M4 x, |# l
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝 6 P: W7 m( D2 G& P
1 |- L( @9 E+ ?- O5 N
.model small
* A I* S5 x$ J$ o/ ?) p4 E9 K.386p
) h0 ^8 B3 d& @0 N* k6 XDSEG SEGMENT USE16'data' 7 @3 K6 _0 i0 O/ g4 T& o1 M
2 [/ v2 i0 \5 M+ N6 x
DESC STRUC
7 `! q1 \, V8 H1 T% `. \ LimitL DW 0 ) ~6 U/ s) C! x
BaseL DW 0
4 u: T8 k$ ~: v s/ u BaseM DB 0
! w; C0 o- A; Z# Y Attributes DB 0 4 v5 F2 o- K5 E4 A9 w
LimitH DB 0
: n7 X$ @5 t% L1 w1 K BaseH DB 0
4 G3 e. K- m0 G) H1 v, ADESC ENDS
' m6 \+ n C8 u0 Q9 U, r: I' a B ?( j$ ~1 S+ W3 |
PDesc STRUC
: B9 r$ n0 y+ D4 h Limit DW 0
5 W5 K3 Q! U: d" n3 K Base DD 0 + j- B: N1 U. d' ?
PDesc ENDS0 e% a) o, b4 N- j! t$ Y
6 e1 K5 Z& ~& s# t# g- C- a
GDT_def Label Fword, q8 L/ R% T( {
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>% E% U3 l8 N! T7 Z7 f
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
6 q, K0 T: i1 k H; F% oGDT_Addr PDesc <$-GDT_def-1, >
+ s, N2 c# O5 _" f' q
# s7 J/ O% S; B- J3 c3 ^Maddress Dword 0
/ d0 L' o/ h8 X
y9 f9 z" S) X- V3 T/ F$ ~DSEG ENDS . a+ w. U6 K# D% T$ F c
ASSUME CS:CSEG,DS:DSEG% _" l- M; U( O4 F/ P6 L" n a6 Q5 R
! p9 j% T( u, w2 M# x4 sCSEG SEGMENT USE16'code' 6 K L+ E8 J* p: H" |- b, v5 u
push ds
3 H8 \# W, k7 x, \ push es
3 |2 x6 m. N( w' g push fs! i% [# a8 | D7 {/ P% `; |
push gs
& x" A Y) h) C: C+ j+ @ W) F8 k4 Y1 m call big_real_mode ; z+ V( ]2 s) C: s
call Get_Commandtail
4 l* M! r1 Q$ d% M0 w% v xor ebx,ebx
# `4 T1 M* O1 b$ R) j! x2 m mov si,82h
. M2 s- l0 o# x$ O) A mov al,es:[si]
$ X; p- W( W' A5 W9 R) v0 C+ M4 s cmp al,'r'- G$ S' O1 E* [6 p T
je R- }' X$ F( g* y0 ^( O/ E! C ~
cmp al,'R'
( L1 d& \. q6 r+ x je R
( V& J& s% Y. J! ] ^# a2 N cmp al,'w'
" V0 _3 _: @) r9 j4 a je W2 l$ m" G$ D+ Y4 W s; f9 b7 a* `* A7 W% k
cmp al,'W'/ g$ h" c$ W: b' S0 B1 Y
je W 6 C6 q7 w5 n5 L% _: r
R:- y8 t; w" x# X* Q6 e* t
mov si,84h
: D2 a* O# r2 ] mov al,es:[si]
9 l0 v1 k. r6 F4 {; | x, H cmp al,'b'
2 k- x, T" w# W. i# Y5 w je RBT
8 e/ Q2 T4 t, C; U cmp al,'B'1 Y1 o5 Z- h3 e4 K) q4 Z
je RBT
+ K7 G" P- ~. j1 E3 v6 H+ g cmp al,'w'; t( ?2 S8 |8 \8 D3 U. @2 e5 Q* k
je RWR
# {0 W* W m6 o& F, B7 G5 t0 I: i4 j cmp al,'W'- m+ [" V( Q! |
je RWR) j# K5 B/ N9 J: G
cmp al,'d'4 V" `& y2 l. }: F* k
je RDR
! ]1 J q$ K- [ cmp al,'D'1 G4 S3 \) B5 a* L6 T, x
je RDR
) I, d5 R' C8 Z( v6 aW: 0 y+ F4 m( [6 i0 r2 T7 F" O
mov si,84h- U% v! i/ @* M7 A/ [& X5 }
mov al,es:[si]
6 o" p' ?, W; f: f cmp al,'b'9 i9 Y$ [ M, M
je WBT
* ]- r2 K& S) h6 K3 d: [8 [6 M; I' g- n cmp al,'B'$ \( I& a! N# h! \
je WBT
( e3 i5 H2 p' [- F0 P$ p4 ] cmp al,'w'
! K3 s! X/ u$ o M( P je WWR
w% x/ _- Y& q7 ^7 B& L cmp al,'W'! b' O3 T/ Y, @5 x3 d5 X
je WWR
?' Y' M- q' c cmp al,'d'
( F7 {2 c& f: Y8 m5 F je WDR, I0 K& R$ T7 h3 B& m' G1 |
cmp al,'D'
; _/ @, g5 X) K1 Z! L2 @ je WDR
/ I# o0 z$ i8 bRBT:2 t G( S; h8 ?, R" e- R
call PSP : r# q0 I* I' U4 [( a, z* }
call crlf * Q7 z7 @" b, s0 a, r* D1 j, X, B
mov esi,ebx
: n7 D3 n! O& \3 u mov eax,fs:[esi]
! O/ O7 h W8 t out 80h,eax
) O( d+ f% F" s mov ebx,eax
0 g/ ]4 I7 L" }% A7 X" G call _8bits" ]# \$ h5 F/ {$ e1 N( ]
jmp Exit) Z8 `0 o0 a9 F3 Z A4 {! n6 o) X
RWR:' X' G" y2 Q% q
call PSP
& W$ [; c& a$ L7 w" P call crlf 8 Z4 r4 |- p0 F
mov esi,ebx
3 E2 k7 s) B- S# I3 Q s8 N7 S mov eax,fs:[esi]) M; L- _9 U) s
out 80h,eax
1 j7 d1 ] r+ F5 r7 X mov ebx,eax
4 r$ X& z/ t: v6 R7 S. q: b call _16bits
; w3 U5 F9 q% J6 N/ T jmp Exit
8 O# x5 E. `; Q2 x& P& pRDR:; t; _& j6 d! ^1 a1 @' L9 Q
call DPSP 7 P! X: I( j# \/ h
call crlf ( g c9 O, B# z. p( j1 B$ d- `
mov esi,ebx% f. C% H9 a) R& {2 [
mov eax,fs:[esi]
2 x1 G' b3 H: V" v5 q' [; ]6 L out 80h,eax
8 F3 S3 \! l, s/ m& w9 V mov ebx,eax
4 S( O, n& Q9 S' N& [ call _32bits' G" E) M% z8 r' a: I9 _4 U( V/ z* g
jmp Exit
- w" s: U" T$ d. c( h;------------------------------------------------------------------------------------------------- R" m( p3 _) R) F3 G$ c
WBT:" @3 A+ V% Y" ?$ |8 a+ n. P
jmp Exit$ |! Z' t$ f. l) g$ D" p5 _' u
WWR:( u/ Y8 H# U7 ?' E8 t' G! G
jmp Exit h E; ~! a4 Z& l& v
WDR:6 n7 v0 [- k) {7 _9 a; m
call DPSP6 v$ d+ _3 @, G
mov Maddress,ebx 1 ^) }3 C, a/ t1 X6 |; f
call crlf/ o# @0 b" ~' g9 a
call WDPSP# L6 B3 y+ m# A8 g3 N
mov eax,ebx
6 k) l5 q4 Q; S& r mov esi,Maddress % w2 U' |4 y& h
mov fs:[esi],eax
8 y1 M$ Y3 w. r/ i8 P: Q/ X out 80h,eax
: |+ ]8 T' K( U; ` e4 r jmp Exit% ^( {' |$ M& D* C# h7 j2 l
;------------------------------------------------------------------------------------------------ $ {3 |$ u+ M3 `8 h0 O: b
Exit:+ o# }7 z# v2 A+ _3 v* d3 S
call real_mode
: J( i: a: K" |: O* y pop gs: g/ d6 c7 N2 ]1 o7 y7 V
pop fs
0 N [# `7 v4 h pop es& q" c; k2 Q c
pop ds 2 Z# ^# f; S2 Y5 k7 b4 `
.exit
1 a3 C' ~2 K) S! G2 Q: _;------------------------------------------------------------------------------------------------
5 j2 _( v2 @2 l5 t. r& {big_real_mode proc near/ Z5 Q! ~% n# @3 U2 I$ u& X
in al, 92h" m$ t \0 j3 L" I& G
or al, 002
& l0 t( z8 w6 W1 \4 y. Y; A6 g out 092h, al
8 V% r8 G, [' J% ^% A1 a0 U8 f4 l out 0edh, al& m8 S( g8 N9 d$ Y
cli
3 ?& I) x3 M6 B0 A' r) A mov eax,DSEG
# @& _. t" _5 ?) G [& H shl eax, 47 D' T7 t3 Z. Q4 ~% V2 c) `# Y$ M
xor ebx, ebx: I: ^& m" @6 l* n: q$ V9 ^8 o! [
mov ebx, offset GDT_def
7 q, R6 w! h! W# p% @ add eax, ebx/ v- F3 n! X3 s$ Y
mov dword ptr GDT_Addr.Base, eax
+ I' a6 Y% H: n2 ^ lgdt fword ptr GDT_Addr7 X) h* l$ e0 I; X7 \: }) B
mov bx, 8
i1 i* S- A) D- z( _# M% G mov eax, cr0
( }; J1 T* k& O0 S% k; x& f- A or al, 1
) ?8 n# s/ _! U7 I" v, } mov cr0, eax
8 n% x) d4 k3 L$ y- Y% X( H3 { jmp PMod
; F% p* [$ R2 G1 WPMod:, [! O, F; x: J7 m' r) A: D1 E. M
mov fs, bx/ ]; F2 q" }; X5 d6 ?: H
mov gs, bx$ R+ _5 U* k, {* p: W
mov eax,cr0
5 m# G8 N2 W2 k and al, 0FEh% [ k5 Q. I9 S4 i# |% _' \3 G
mov cr0, eax
9 g: Q# m" ]7 t/ Y0 z jmp RMod
* t3 L2 P. c O+ o2 H- _RMod:
: I2 j# R: U- c- f xor ax, ax
0 B1 y& G7 r' j5 ~ mov fs, ax
5 o4 w" F+ O0 H8 @. a mov gs, ax
$ x3 m; t5 L* `8 l& ] sti " {) w9 k: l+ o/ e: }3 Y3 Q
ret
0 U) j( f" t/ o5 F; U; nbig_real_mode ENDP
4 V9 K! I+ v J0 y;------------------------------------------------------------------------------------------------1 D: X3 _8 r* X `6 Y4 c
real_mode proc near$ m; q, g6 c$ a5 F7 [. u0 ]/ O; J
in al, 92h
& l. m7 d2 c' `! n and al, 025 m5 I: k+ y& f* E/ ^* y1 {9 C% S
out 92h, al
6 e; F3 x; s3 u3 ~7 F: D ret
3 [% H& b% H/ C2 R) y; H/ S; Areal_mode ENDP, o5 Y% Y% r/ x! x; y+ P. Y, J
;------------------------------------------------------------------------------------------------7 s4 [1 Z/ v: V
Get_Commandtail PROC near
8 P/ i- f- d' W3 }1 W6 }( F ? mov ah,62h
$ f/ F6 M5 x: G. `% a1 K+ t int 21h
' v! ^3 Q; n6 J% h f mov es,bx, U3 ]) C5 W- z
ret* A9 _. [4 o" {: P
Get_Commandtail ENDP ) a7 A% [4 l" G; M2 W
;------------------------------------------------------------------------------------------------1 c0 E4 y9 ], D6 E4 I
PSP proc near
3 g' r' q' I& r5 B xor ebx,ebx$ B2 e/ n7 J# r# r. U
mov si,89h! F5 |7 v/ J! l% _/ D" Q
mov al,es:[si]
, L* ^% u1 _8 X$ {3 _* ?- ^ call Change
3 w, F4 V/ j( z& ] ~, L; F mov cl,4, F8 ]6 R: S- p5 w3 ?, _4 {: y
shl ebx,cl
+ n8 ^! H. R: F4 f& ^9 |) B& X) ? add ebx,eax* `+ c4 Q& \* K# f
mov al,es:[si+1]% h. O9 o* z8 W, U& t1 C4 C
call Change) N L# O! v2 g2 ^& b, [/ z, g; Q4 d
mov cl,43 U4 F, f5 G( E7 |- {% R
shl ebx,cl
' i4 w$ D9 b' T @: i add ebx,eax
( @, M( @) M9 Y( F1 a5 q, M mov al,es:[si+2]
/ `* C! |- k% \ l9 |1 T* \1 } call Change: \6 i) ^1 M+ g5 s/ T5 a* n
mov cl,4 P) B0 I/ o+ U5 P( x
shl ebx,cl
$ `3 y6 d3 G3 F0 D! [1 [4 P4 \ add ebx,eax
2 f' {+ L$ V% d9 l: { mov al,es:[si+3]. B( ~' _$ J, n, T0 o; s! T8 {+ g
call Change$ T: q/ T% f% w, G5 L+ S" O
mov cl,49 z, b0 k1 m& I1 {) \
shl ebx,cl. `$ V& f) {9 T! G/ G5 H/ u
add ebx,eax
4 q+ T3 w, `1 n* {* n4 m mov al,es:[si+4]- {8 }7 i, }4 p4 x. l
call Change
7 x$ G0 |) G+ ~7 w0 C( V( r mov cl,43 S9 i3 W) X. f
shl ebx,cl
9 C. F; a4 F- ]: A# T add ebx,eax
6 f( a' C+ X! ~% E6 L( _ mov al,es:[si+5]: }4 K- P, w" A
call Change, D9 r* f) d- ^$ ^+ n0 e9 n
mov cl,4% e! X- q+ |0 |8 D, Z( Q0 R+ g2 {
shl ebx,cl
4 P* L; h; i$ o9 V1 W) _ add ebx,eax
9 T. C8 B- T- X' s* ` mov al,es:[si+6]0 W4 g3 l9 c) l$ _/ A
call Change4 W+ Z9 {' J. b7 e5 e
mov cl,4
1 A' I% p6 K6 f* I: D" K9 T: v shl ebx,cl
3 r7 R- |- C2 m7 T5 h5 d add ebx,eax- L0 h2 X6 ^0 ?7 m
mov al,es:[si+7]( | e: K' X5 u1 A" j! ?( R
call Change4 ?% X5 G+ @( ~' ~8 i% r! H$ J
mov cl,46 c# m$ m; y8 Y
shl ebx,cl/ B" r" F3 @. ^5 m
add ebx,eax) L/ J" q# y. h7 r! V1 n+ t
ret) a+ T5 [# G/ s8 _
PSP endp
- D! S; v2 B! K% h;================================================================================================
5 ~! O& A; w& L/ D% w, o# SDPSP proc near
7 R6 I4 \, ]0 W% s8 Z; n xor ebx,ebx
5 V2 d" J: n v% @' A( O( m8 E r mov si,8ah2 e0 y b8 V2 j7 a0 D2 s
mov al,es:[si]2 }) O5 P/ l- W" o* Q
call Change& Q9 H8 d- _0 a) k7 X6 u9 H+ k$ X- v
mov cl,46 t5 n6 \8 Z" [5 O, y0 W
shl ebx,cl
]; T( p5 B) k) P add ebx,eax' |8 N' {" n2 |2 I
mov al,es:[si+1]" y! A; ~) r4 T2 O3 z1 l
call Change2 b: H- a9 y1 B9 ]( {% {
mov cl,41 U. z# `: u0 t4 \/ T& D/ g
shl ebx,cl
" J: j1 D! b+ X7 Y4 \ add ebx,eax' r+ s& _0 v/ b: M: V# E
mov al,es:[si+2]" a! \5 T& }7 | Q1 ~
call Change
5 c; D3 ~ }% {, q: o mov cl,4
7 ?; w$ R) i6 ?% O! h5 E shl ebx,cl
; d/ I, a$ m% f, ]3 z$ _$ }' s add ebx,eax
, k9 c( m8 P* R3 @* ]3 k6 _ mov al,es:[si+3]
7 z/ t1 }2 Y4 K4 V) O/ m/ ~ call Change% p1 Q9 f! P$ S3 m7 h9 E
mov cl,4
( M9 W& X, E" E6 ?% p2 E' a shl ebx,cl) M3 ~6 y- [6 f% U3 ~6 R/ n2 d+ W
add ebx,eax
. _& v% K7 ^2 x5 ~" T4 s- X$ _9 D mov al,es:[si+4]
7 ]5 n2 R+ S4 A" O* R, \ call Change# n) P. x$ l5 j* \, t, Q5 q
mov cl,4, |- }' c# h( H( Q3 X. s
shl ebx,cl1 U) m6 G( {) C; g8 }6 t
add ebx,eax) N# L! X3 f4 Z
mov al,es:[si+5]# Y( L4 B4 ~5 J1 J: x
call Change
8 |- w* ~0 ~4 H) D( t mov cl,4# y3 X/ t3 d0 a( O
shl ebx,cl) I8 |2 M' ?+ _9 }- U
add ebx,eax* E# d# T; e f' M2 K, r: S( U
mov al,es:[si+6]9 D% I& a7 G3 m, f; p% }4 b/ v
call Change
7 F( F2 G! A7 k mov cl,4
, C: J3 n& |, C) Z2 e; B' C shl ebx,cl9 D1 x0 R4 ]. C, y- q, u
add ebx,eax A* ^8 w2 e: Z7 _" o
mov al,es:[si+7]4 x. q- D/ F0 M4 y6 k
call Change9 r! s7 S' @6 g
mov cl,4
: z0 r8 g5 [+ x6 k' U shl ebx,cl6 F& Z1 K3 t) B! A3 g
add ebx,eax+ O5 L% Z) ?: J
ret
; j( F) D6 J* d! JDPSP endp4 {& P% W1 g" s* ]( M8 D( d
;================================================================================================
$ \+ G7 S8 W" sWDPSP proc near
! v, L; g. O2 Z2 c. s h' f xor eax,eax& V+ m8 G; n( M0 d1 t
xor ebx,ebx
9 X0 v/ Y5 J7 E q' C; b& V* R mov si,93h4 g3 R$ k9 f6 K9 A/ A" Q
mov al,es:[si]0 c* {- y# F+ S) v
call Change& Q6 _3 L( B9 x& ~
mov cl,4
6 u! s% X+ D9 o) F$ E2 E' d2 ^ shl ebx,cl7 _: Z/ T) h, k7 b
add ebx,eax( W7 V2 ]$ }" C# A, ^2 o: X
mov al,es:[si+1]4 u( C- I/ O# C. d
call Change
, q3 O2 _: f" I" R8 } mov cl,4& o, e/ A; l' `: I. D/ L
shl ebx,cl7 W0 x( {9 C/ p- ?
add ebx,eax
2 `# K: V/ U% { mov al,es:[si+2]. i$ N; V9 J; S6 ~9 a( D
call Change' _- ], ~( z M) o5 v: d1 I3 `
mov cl,4: V5 ]/ u* B8 D1 c: W
shl ebx,cl$ @, `8 |# D) ]8 ~- A) {- U
add ebx,eax* B9 v' M; l& ^, n
mov al,es:[si+3]! K/ t7 d6 {6 v @1 i" F
call Change
/ t& i/ i, U$ \ r( W3 M0 ^ mov cl,4- r0 e o& M4 y$ ~/ Y3 E
shl ebx,cl
, R* Y/ |2 x* V$ e/ a add ebx,eax
1 z( t5 ^! }: A6 z+ u) }9 e mov al,es:[si+4]6 w/ I: H- y4 W( {* n
call Change' k. r6 Q' i# I+ z3 d
mov cl,4
4 D& E u* ]8 q" E0 G# M shl ebx,cl
; U5 E7 |2 T) I" R- x6 `. u add ebx,eax
2 o) E: n. W. `3 v( o mov al,es:[si+5]
. Z: h6 Z) c6 V2 ~+ y call Change
6 y7 w/ B" C6 d" C mov cl,4
7 r ]' u6 L; Z( m. o shl ebx,cl
4 H7 P) ]) R n( u) } add ebx,eax
. f3 Z! W* l& x% ~; s$ e mov al,es:[si+6]) @$ [ L- a7 E
call Change) G* a% Z, Y. t- O' e" X/ F* I
mov cl,4
& I* e- H! ^( S; N) s6 j; a shl ebx,cl* s5 a; J" Y e! T% X6 h& }
add ebx,eax
- P. X& O1 c" V mov al,es:[si+7]8 X. Q+ }- b. n/ x l- z1 j
call Change
, [. c* Y1 U8 M) Q; S mov cl,4
1 F3 B9 M. `" F4 l7 c' d3 `, u shl ebx,cl! b7 v; s) a3 {' l/ z, R& |
add ebx,eax# ~; E8 c; R# t) q
ret0 \6 F: p! J2 p# I
WDPSP endp# R( v$ Q: H7 V# @
;================================================================================================, T/ e* C; C8 G
Change proc near
0 u# M+ e' s' {9 M. kA: : k" t; w* J, N7 `2 c' w8 {
movzx eax,al' v) g: j3 j. T, P: t- u
mov edx,eax
6 O2 a- _0 }" w1 {" p8 _# l cmp eax,'0'
$ L7 }- E8 W% B" y jb A
0 i% ?# y. }0 C8 P" Z cmp eax,'9' $ i; b" q/ w2 s; w# Z
ja B
) a: C2 r; t3 D! d" A) S7 F sub eax,'0'7 i8 M7 Q: P- ?/ {$ g
jmp short E2 X& I! m. K+ f" h1 E; V" w
B:( }# w, Q- E( \
and eax,0dfh : `* S& h/ |- d4 a0 C7 s/ `
mov edx,eax1 b0 c9 h4 V* X; P5 I6 n* U
sub eax,37h
3 P2 t0 G4 q- p cmp eax,0ah* \4 X5 {( R& d! q0 X& k
jb A
) o( A# K( b" V6 O cmp eax,0fh
5 \4 O2 p4 U) e1 |) i ja A
$ J# F7 n2 L Z4 ^% AE:1 N% m! g L) u+ e
push eax / y' j9 b" t3 [6 d3 T& m7 }; D
call PRT
6 j6 p- D$ Q& K; A1 g- k$ r: ] pop eax
; _, w! N7 }$ ECExit:
2 @) b. {" `9 }# U3 H ret
" X0 v& ^0 S& s& f5 i9 DChange endp% m* T- P z0 X
;------------------------------------------------------------------------------------------------, p4 P+ c8 g6 K8 w5 R/ l* l! m i
PRT proc near
; ~8 t c% l% ^& r' A, q mov ah,02h9 D \! L! X! i, ^
int 21h3 U% O' L# K; C6 ~2 U- o
ret
# p% q: r. B5 k; ?1 VPRT endp
/ {$ j/ N5 ^- c$ b- D;------------------------------------------------------------------------------------------------7 U5 m! t# @ d1 S2 F1 Q$ a
crlf proc near
$ Z" J. ~* A, ^, f+ Z1 v mov ah,02h7 e0 p( K% n: `2 j2 M6 J! i6 i
mov dl,0dh
8 _8 M! G) w. H3 b int 21h: \) E# }: E' O d6 X; t
mov ah,02h
3 @$ c. `! X. y. I- ~! h mov dl,0ah
) n/ O- L3 n1 c& u, _; ^ int 21h) j* w+ J) x; g n/ V" @8 h
ret8 ~4 ?4 A. g* l4 K' [+ r) [7 l2 K; A
crlf endp: n4 A4 v5 }- x7 U. F) A
;------------------------------------------------------------------------------------------------! ]' `- H) o5 Z2 ]3 C& f3 o$ t
_32bits proc near
- w0 c/ O) A E0 ], ^/ _5 d pushad4 n% P0 h- G- H7 j9 Q
mov cl,4; Y y/ x/ D: f; z
rol ebx,cl' j5 W. k: Q3 Z7 ~2 ?1 z5 E; s) v
call print_4_bits% H7 C3 o& t" T- H8 J w- E
rol ebx,cl
. p" D5 J! V/ g7 Q. ^8 `! E" q call print_4_bits
* K9 C3 i1 g6 z5 u; Q& Q* A# W0 ? rol ebx,cl; B {* H% B2 Z6 @/ f- E# p% u
call print_4_bits
& A: o9 K% @' g' a" I rol ebx,cl2 y1 e" W8 t; W6 @1 w
call print_4_bits
- B4 u1 K" i" X# B3 \4 a6 M* O rol ebx,cl
0 h5 E8 r u, O% w7 Z5 U. n call print_4_bits
1 u$ S; S" L5 U" l* ?8 a7 b rol ebx,cl7 ^* a( a; S% D4 q- J5 x
call print_4_bits @, l) x; o- O) c
rol ebx,cl
" H4 T# _9 F. i' Z# [3 ` call print_4_bits
' Z2 E4 T q' A- v. \ rol ebx,cl3 @( ]" l: T0 L; b6 u% P
call print_4_bits3 E1 E/ v7 r8 v' l# R! c/ u
rol ebx,cl) y4 a( M3 ]$ e$ Q9 _' M
popad
2 q# S/ ]9 A3 q4 t5 p; ~+ e! { ret
4 ^2 F" t$ T! X9 | Y_32bits endp
% O8 P* I. T* r0 r7 H3 d. ]7 Y! R;------------------------------------------------------------------------------------------------
* i9 x0 L; A; S% D1 V_16bits proc near
- V7 q5 }# s8 H9 [) ?* g- } pusha 9 O, E! s8 Q! B0 K; C# _( L" }
rol bx,cl
z J1 N% D" i8 A4 I call print_4_bits8 C+ r% d& G. K
rol bx,cl% ~! x! B L Y! i
call print_4_bits. Z5 v2 g0 L; q- {' w# k( e
rol bx,cl. h" \# W I! x. k
call print_4_bits9 i& b' k3 ~7 \, R* U% z2 | I
rol bx,cl/ E$ M2 l. P) e6 r8 i( y- i" j5 C
call print_4_bits0 H, r$ Q! J W. @6 m+ @* N
popa) V# x' s8 ]6 n0 ^$ t6 d0 o
ret
: \+ o! i% u* s7 `2 {4 {_16bits endp
: P' i9 \! J- D! q O) ~7 g& |! E;------------------------------------------------------------------------------------------------
( } y2 k, {$ V0 H_8bits proc near; r( y2 U) ]: K4 N1 v4 Z
pusha % ^ A* s4 y) m+ _6 f
rol bx,cl
; i( ^' ^! f8 B& L9 k) `5 d$ ~ call print_4_bits& m) P4 a; J, ~6 W0 ~# ^: n" C
rol bx,cl" h/ e! {+ d/ Y7 u2 G, E
call print_4_bits, {9 F N: W4 F
popa
$ T7 V9 s5 L, D$ i ret
! p/ {) b5 b: k; @4 @/ q2 W_8bits endp9 {( E7 x2 S6 ^% z3 p
print_4_bits proc near
8 H$ E' V( {, O- Q' E mov dx,bx
" [. G; U6 R" b) n and dl,0fh( L2 ]' P q. [/ U' \- V
add dl,30h; J$ u( P# O7 n
cmp dl,3ah2 Z* O& ]+ c8 h) {6 L
jb print
1 I4 d) f4 E( E( m5 t* ~ add dl,7
# }) _! F9 @: B5 v4 yprint:
2 b- Q" K: w: m; J$ P* A6 q mov ah,2
9 r! D: J; }( U R" R int 21h/ h/ c4 J3 f" S) D" g' U
ret
2 W6 ~: J5 z+ U, tprint_4_bits endp ! [! Y+ X. g1 f( `* M) i: u- c) Q4 ~
CSEG ends
8 T5 D2 l( s8 KEND |
|