|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)
% q( P& X5 j, q1 j Z" s" H6 u
& s1 `, p4 F) c9 U則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
" a0 W6 K) b4 G) X8 A% Q* r- A8 u/ {5 e+ `, S' s
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝 : r" O, Y4 I) @6 c9 D
' @* y+ T# L$ Z4 x0 G m9 i.model small1 t) J! R) q# n: ~
.386p# h5 W) s+ r1 F* R* B
DSEG SEGMENT USE16'data' 0 p" m- D$ \: O! |1 ~, N
, N. Y7 {" m, j( g8 f) ]3 Z
DESC STRUC$ j% _) W: J; g$ r" j2 u
LimitL DW 0 8 S( d/ _) L; F# W
BaseL DW 0 # q! n @3 X S+ _. H
BaseM DB 0
. B3 s" h: @$ {' Q3 ] Attributes DB 0 ( H, k {+ F3 E
LimitH DB 0
8 t; C) |, W; X5 ^8 `( m- N/ S2 L BaseH DB 0
$ g' Z+ K/ Q( ]' Y2 L1 _$ RDESC ENDS# F) p. Y3 G0 a% m
# \( G4 ~, y) P9 w& s% YPDesc STRUC
0 n) S5 V9 {( u0 O$ E- z Limit DW 0
" E" ?4 x/ k; m7 ?0 h& O, Y Base DD 0 ( C5 I9 S9 m2 h
PDesc ENDS
* ~" Z2 ^1 i+ d: }
. v, W. ~1 X9 ~' g! b3 HGDT_def Label Fword( h6 O! q7 z( z
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
0 i7 i, `' y( @) ^- h4 Y& ?Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
4 d! o7 _* L4 p% k) x/ k! [5 k& ]GDT_Addr PDesc <$-GDT_def-1, >
- X1 H, C& \# N; g( U9 d
, g3 k$ [# a* A0 k3 zMaddress Dword 0
, A3 X4 L6 D5 X4 x! e% Q0 h, G) J: x" W3 o, N! ~0 A- R/ g2 o" l
DSEG ENDS . g/ W5 t) i m% T
ASSUME CS:CSEG,DS:DSEG
" C' [/ o1 m+ j( J1 P. I2 g& U/ w" H0 g' |& w% O' k' c
CSEG SEGMENT USE16'code' " H) _/ i1 l% |2 |! K k
push ds
1 P s2 F5 `) ]# T. E push es* y7 z, z1 P* O& w/ T
push fs( Q/ M+ S% {# ^ j, j
push gs$ @ {. p3 ?% d C
call big_real_mode
6 a; u- q* z$ H call Get_Commandtail
X4 E5 j# b+ S. p, L k7 R0 r* i xor ebx,ebx! A# Z, s2 }4 @. X6 I* z( }2 f
mov si,82h. F0 m! R* S: l# P! M
mov al,es:[si]& [2 U8 c! p8 V* D+ T1 r+ C0 x* W
cmp al,'r'
1 I5 D" a1 z7 }- X je R
5 j0 o/ _& Q- v' V' d cmp al,'R'
3 N4 E, U- T- n; D: e: Z je R+ e7 l2 [6 }0 C& j1 w& }, S
cmp al,'w'/ b7 u4 ~& B* R6 _8 U; F
je W
1 z( h0 o( @5 V2 k) S. J cmp al,'W'4 k# E# i7 m8 c1 x$ ~
je W 9 `/ w2 m3 C O" s- l M9 q
R:
$ k6 u8 a- ]$ ^1 X0 W: z: C mov si,84h
: R! b# X& G: f5 F mov al,es:[si]% Q- j* ~1 @! k$ g+ b0 d" B9 f
cmp al,'b'7 l7 V* v- x+ S8 D! c
je RBT
+ ~8 D3 ^* t- ~, V) N5 ] cmp al,'B'9 k; C: L+ q0 w8 j" b
je RBT. i" A: t4 Q# L1 x/ z
cmp al,'w'
" @; k0 m7 i- J je RWR
" i3 |, V2 S# t9 [ cmp al,'W'0 M8 _9 a# t- h7 u, `
je RWR
9 u% i1 N. ?. c" y, v. }* t. H" j cmp al,'d'
/ X9 G' ?" Y8 |* a je RDR9 M+ y; K8 v1 ^' Z/ c/ x1 m6 }
cmp al,'D'% E+ z2 ~* ?3 l( ~, h
je RDR ! F: I3 D0 D0 |9 L8 R/ [7 F9 I
W:
$ [2 H& T. d/ [) e4 E, d3 D6 E mov si,84h
4 d o# O; y% ]' I mov al,es:[si] B; Y: p+ E$ x
cmp al,'b'0 _* |4 h @8 |( e
je WBT! D1 y" u* P4 S
cmp al,'B'* K- a( W, a. A# ?) s3 {
je WBT6 J h# ^8 }6 C0 ?3 A
cmp al,'w'
6 t1 M: E' D5 F9 F5 H* v je WWR
6 W: f; H' g* W6 x cmp al,'W'
2 }! s1 |: M+ f0 k je WWR) i3 e/ w0 |/ w8 G! B
cmp al,'d'
. a/ j4 D, w4 \5 x; K7 O3 T je WDR! x' T6 z: V+ p
cmp al,'D'2 u3 E3 `+ W$ [+ Y- Q
je WDR3 v0 x+ H6 P! c( R
RBT:- B# a& J4 X* ?9 A2 e. d
call PSP
" v* O, A' H' ~* E$ F: A( {! w call crlf 0 ?6 w4 [/ Z9 S6 p2 `8 \# n
mov esi,ebx0 ^2 j$ l* `+ g8 |6 U
mov eax,fs:[esi]! T8 {2 s" g' V5 T+ A3 u$ c a
out 80h,eax2 P9 C' u2 i. n% `0 K
mov ebx,eax
0 t0 |" R$ v( U" B2 ]- m1 Z call _8bits
/ s5 n9 ~& {( f6 H$ W& B jmp Exit! h. o4 A* t4 J% A, }
RWR:) e. o) B9 i( ^6 C2 Y3 f
call PSP
. O7 ^! e( }0 ?& Y2 N call crlf ) \1 z: ?' O7 L# T6 v9 w# a3 |
mov esi,ebx3 F: i$ r' j* E$ G6 l4 k* F* k) ]
mov eax,fs:[esi]
, E/ }# c3 j/ u8 v7 a7 T7 t out 80h,eax
% Q2 b" [0 Y( O" W8 c mov ebx,eax5 s k( R+ J8 w
call _16bits
3 X, U" I6 ]5 \ jmp Exit- _3 u9 z. f+ h( J" t
RDR:& L7 u4 r: w" z/ m: g0 i
call DPSP " H' N9 u6 J) K
call crlf
& ]+ b d/ z( m4 Q& t mov esi,ebx6 R4 U* E9 w1 m" t6 `
mov eax,fs:[esi]
( k% L. M( E* B a0 @1 T0 X0 K3 _" A out 80h,eax
9 C0 p9 j5 {+ ]0 s: ?. j! k7 T mov ebx,eax! A8 M' Z7 Z. u. {& W2 }& B% w6 x
call _32bits( ?; a+ W3 R* R7 m! [
jmp Exit9 p$ S& c7 a5 a- F! }; M0 k* s5 D
;------------------------------------------------------------------------------------------------; {5 ^0 M1 B: I# U S
WBT:$ v# L0 ^5 s8 V, J. x5 C8 x. k9 X
jmp Exit, J/ U S3 R$ [4 b$ W, m# P/ E
WWR:
4 c/ p! r- i5 B4 C jmp Exit% f/ c n" P( I1 J$ u4 p( A
WDR:! ]. l# ~1 c" t; |1 a
call DPSP
' h$ z! V# U& l( `/ [8 R" w% G0 ` mov Maddress,ebx 2 W- m# V/ }" K9 R- G! a8 M( D
call crlf5 _; E" S& E, i( ]; [5 D
call WDPSP9 {' b4 v; U6 @, i4 A( W. [
mov eax,ebx
* I0 r$ F3 L. x& F( A1 o( ]8 p mov esi,Maddress " d7 k4 ^* {9 B' }; |
mov fs:[esi],eax
& ~ ~, K- F# n3 K# N out 80h,eax3 E, i2 g6 F5 A. J/ x1 ]
jmp Exit
|7 b+ \+ C* Y( N, ]) \" _8 C;------------------------------------------------------------------------------------------------
7 l" j2 g) Z9 _8 H( H5 O0 w! iExit:- m+ K5 ?# I) N4 r- D2 d/ g ~
call real_mode 1 c, h4 k8 V2 @ J. y
pop gs
+ z% n8 o7 i9 r& \' K: k pop fs5 F" M% C, I" M
pop es! Y1 N$ R* R/ X* `# ^6 k
pop ds 7 ^- J0 t9 k7 |, n) C6 A
.exit
! Z# f$ s" ?/ ^; P U;------------------------------------------------------------------------------------------------3 a! S7 P# W$ z7 z1 m
big_real_mode proc near
; L& Y$ U0 v2 c+ h) v7 d) b. k: e v in al, 92h
, j1 i" o: i$ B( v. _ or al, 002
: C$ e% w7 v3 e) d( S out 092h, al
$ V) d* u9 J! W$ ^! O$ f+ G% [; x out 0edh, al
- s! U5 \1 \5 z/ N- R1 [) I# C cli. M; ~; w) j. `" I9 X. ]
mov eax,DSEG( I( X% ~, O* j( l* A8 k7 {
shl eax, 4 c7 `5 ^3 F; F
xor ebx, ebx
* |8 u0 Q) S7 x2 e mov ebx, offset GDT_def* q& B7 A; v/ @2 f8 u* J
add eax, ebx
6 _: `# ?; L/ N4 ^9 m* { mov dword ptr GDT_Addr.Base, eax
7 K8 f* Z$ A' z; [9 C. o+ e lgdt fword ptr GDT_Addr
3 k( h5 f/ \" B+ D$ Z mov bx, 8
6 I# b5 m+ h: P4 Z" y3 ] mov eax, cr0; v9 l& k) w/ B6 T& i# ]
or al, 1, v" M9 B# b$ b; ?/ t% T
mov cr0, eax
: p2 [# n) m; N- @: G3 J9 t jmp PMod
2 a" X4 O8 F6 P. z- C, @- d$ T& mPMod:
6 M- y7 H; a/ Q' `7 ~% g mov fs, bx
. @1 _3 H$ h9 _, H4 K! F' X7 a4 Y; w& { mov gs, bx
8 r; f# n4 g3 Y- x% d6 T mov eax,cr0
3 V) w, o# J1 O and al, 0FEh% Z# u5 D4 A9 l( f3 E# l
mov cr0, eax
) K& G, z5 \* D# [7 d. C5 B jmp RMod
8 C, I' T8 h2 W+ E% e% T" zRMod:
# k* ^- o$ A4 c G) _1 @. D xor ax, ax
' j' C/ R5 G6 J# Z- h) J; d/ i9 J mov fs, ax5 m4 o6 [* W) {$ t
mov gs, ax
6 Z5 j6 j3 A- Z% ^2 S# s2 K, f sti
. S, F$ N7 C! i# M# q$ t. ^ ret
0 j+ B9 j1 M. hbig_real_mode ENDP( F; M& L7 R3 d
;------------------------------------------------------------------------------------------------1 o( S2 [0 s, i% L& k: P
real_mode proc near A8 ]: G& F% j
in al, 92h
( T. m7 A9 n5 t( `6 D and al, 02 P+ f3 I- M' L( W. _8 a: N0 }7 t" P' W
out 92h, al
3 S# ?9 i2 T" p: R! U% g8 X ret( }! s: s5 s( C, L
real_mode ENDP8 |4 i% O8 E$ ?! T, m$ H
;------------------------------------------------------------------------------------------------* X5 j% ~' a5 O2 Q: ~3 n
Get_Commandtail PROC near
2 ^) L/ @) O0 i1 h1 V2 E5 v; ]9 K2 S mov ah,62h % J7 G8 r4 s! w# P' p+ l
int 21h
8 Y" x0 q5 A# M, X mov es,bx
- y* z/ Q/ U/ k' o ret
$ e/ U5 h7 Q1 t6 @+ G$ a8 RGet_Commandtail ENDP
9 i# d3 S+ N) [# k;------------------------------------------------------------------------------------------------5 g) G6 o# T8 p- J- u
PSP proc near
8 `& x3 u5 g% i xor ebx,ebx, ?8 y% x ]* Y
mov si,89h
K4 ^# O2 A' q' D* f* f7 ]& N* H- } mov al,es:[si]. l$ d E/ O* A
call Change6 B# Y/ n0 p7 M
mov cl,4
, S6 u9 ^# e, p: `9 J shl ebx,cl
, t( T+ ~! r; H1 [* S5 k1 h8 {$ g" ~ add ebx,eax3 u% S# h x, |, ]) Y
mov al,es:[si+1]
- z, y- \; E' F3 g3 N; F; | call Change
% @: k# g+ y3 W% i9 } mov cl,4. w( X4 U7 K2 Z& _7 i$ V
shl ebx,cl, o: }0 H. Z; x
add ebx,eax5 E/ B9 n8 {8 ? l: Y
mov al,es:[si+2]
, w, d: k' y! G. r0 M8 _ call Change, } v5 \. L5 t- Y4 R3 e
mov cl,4
- B7 g" M' ?1 E3 i% e4 r shl ebx,cl
J& D+ W% Y. H5 M4 ^$ K add ebx,eax/ L, k8 O: O. b7 }" }
mov al,es:[si+3]
$ O8 j9 m9 V8 q% V* } call Change
2 ~2 J% U5 G: r9 I mov cl,4) X/ n- t' \, |8 k
shl ebx,cl
$ v* K* i& Z1 k2 Y add ebx,eax) V) E5 E3 a0 Z b! n1 H
mov al,es:[si+4]
& S. i( I. o7 S/ W5 P1 u) N call Change
& m8 Z: x4 J0 {4 v; {8 E mov cl,44 m6 U0 z6 \& a1 q7 T. u
shl ebx,cl/ \/ r# P7 U; q
add ebx,eax D3 m- p1 {4 r; M
mov al,es:[si+5]+ h9 ~1 s0 v& K) H9 Y* X0 _ Y
call Change3 ~1 }; w5 \/ D- O- H4 _1 S/ d
mov cl,4
6 {$ @; S( G1 p. V9 w- M5 s3 p shl ebx,cl
[$ V8 c# }& w( L. S } add ebx,eax* }4 I* T' i6 _; n) q
mov al,es:[si+6]
$ [; K1 X% y7 w% V! z% [ call Change+ z+ K0 N7 J9 O- T& m& T* a
mov cl,46 O, B+ O- o1 H5 s: Z! d' X
shl ebx,cl
5 ]9 p$ ^5 u% M add ebx,eax
4 b9 g0 i3 x, n0 C7 c l. d O mov al,es:[si+7]4 D- Z- }5 U9 B v
call Change2 X7 h; p% |8 z- _
mov cl,40 U6 M; r$ ]5 p
shl ebx,cl
+ M( ~$ { x7 F* B& E add ebx,eax+ D% X2 b8 v$ |# m7 B
ret8 a3 z* ^( `) Q' }6 u: B
PSP endp
! q2 W! {& M, M;================================================================================================) i- f0 A h, @
DPSP proc near
M9 d, \% j: W+ N5 H; O xor ebx,ebx. R. |6 k) N; [7 U5 A8 x( \ G, E
mov si,8ah* F$ Z& _, g+ P2 V; F1 _1 Z3 Y
mov al,es:[si]
* j" m& y8 n# J% j* H: b% y3 { call Change) V/ n6 }8 G1 u
mov cl,4
5 s: q5 N; B! A shl ebx,cl% K- y* J7 n3 F* @
add ebx,eax
; ]9 N* }2 ?+ ^ mov al,es:[si+1]
$ \6 P+ K6 o( F" B: h1 h call Change3 q2 P6 s1 u$ o
mov cl,4
/ B, K0 C4 A: N. ~% s shl ebx,cl
& q. I) R( S; U" g6 v( M( T+ } add ebx,eax
6 Z8 K) _' i' H. |! R; i8 p* K mov al,es:[si+2]
' H, K: v# Y8 ^7 ?+ {5 | call Change# d0 S1 Z e5 A) L
mov cl,4, u( a; M: B6 ^4 v a/ @2 |
shl ebx,cl
% Z8 G) x5 E$ b( t% y1 _ add ebx,eax( N- g3 b3 W3 b- w5 Z r0 v
mov al,es:[si+3]! E6 T6 I- V5 g+ C, K, j
call Change+ M ?7 o7 w7 D m5 i( q l
mov cl,4
8 \% ~2 s3 r* d! u: k! K2 q8 N7 `: } shl ebx,cl( Q' i7 g( a* e- B
add ebx,eax0 T3 [8 z4 ^+ G/ a' c
mov al,es:[si+4]
/ l: r7 J- l G; `! Y9 g call Change
{4 d7 p9 X) u mov cl,47 C* F7 \& J4 D! k1 L: a: X9 a
shl ebx,cl \9 `& z1 r2 z4 J1 q. E
add ebx,eax, z8 H% h ] Q. ]1 n z# n
mov al,es:[si+5]
- w8 \' Z# |* x. U3 }7 o9 T* D call Change
+ I+ \) v0 b9 t/ W, m# q mov cl,4
: J7 ^1 O: T0 t" ? shl ebx,cl
9 L- u M+ o' E& a" @- q# }! f# A0 H add ebx,eax
1 k* n: j7 }( x mov al,es:[si+6]
4 F' |# P @$ N3 l1 C call Change8 I6 I8 p* _ e7 F- D4 m3 r! y
mov cl,4
9 S- q* D y/ a: j shl ebx,cl8 E. S! \$ I2 m/ G4 h7 Q: T
add ebx,eax: @# q J' j% w) P3 y- m! [6 Y9 t
mov al,es:[si+7]
% N; }8 r5 d( h call Change
`5 u0 |3 c- L# ]$ s mov cl,4
6 C2 ~9 j+ q- s# E5 }9 G; j shl ebx,cl* _1 T! T1 V8 F
add ebx,eax7 j$ F D/ B0 M0 Q$ w; Z
ret. N5 q' `: }( \8 z* e% Q5 E( |
DPSP endp2 t% N! M& k9 ]$ c
;================================================================================================
" B' T- R5 _; Z! B# o0 v# M% YWDPSP proc near
" Z/ Q" x8 e5 R Q xor eax,eax+ s6 ~3 i; U( G& P8 Y, d7 [
xor ebx,ebx
1 L g( g$ K( q: k& ~ D6 l2 @ mov si,93h
2 |* Z6 F l3 z x6 S mov al,es:[si]- g5 w% d5 \. n5 |/ f* L* T
call Change& h6 z& K9 `: ^; H! |8 {- F6 T
mov cl,43 [2 p3 C5 I! d0 ~
shl ebx,cl0 c7 ^4 Q0 I; u9 E
add ebx,eax
* a: z/ l- w+ l; i5 L0 ` mov al,es:[si+1]5 @1 X+ f W" K% y2 {9 \
call Change, u2 r# N3 K/ t8 _/ |
mov cl,48 i- K: H# V1 @- I1 u! b2 w
shl ebx,cl4 B* Y; f; S' B; v' ]
add ebx,eax4 q0 U: l, e e+ D) A
mov al,es:[si+2]
& r7 V3 z5 T% u' R$ o8 z- q call Change
) C4 m8 i* ?: y0 q1 K mov cl,4
# f) `8 K4 v0 F- q) d) u* J shl ebx,cl
. R, O! y, s+ r6 @$ D j1 I add ebx,eax
2 U+ H9 f$ t7 P# o, G mov al,es:[si+3]
, W! O: ^# c( k( w call Change
X3 A5 C' a; D( x. b$ H mov cl,4' z& c: {! [9 J$ u; W- r
shl ebx,cl
6 A: Y0 p4 I9 c! y add ebx,eax
: A$ e$ y3 \1 N1 M4 a4 n8 o mov al,es:[si+4]8 X/ i$ V+ u" [4 E" q
call Change
9 a4 s1 I2 w8 t$ F+ Q; ~ N( y mov cl,44 I9 U6 z' k: a
shl ebx,cl
; `% I: L7 y) P: V% e add ebx,eax
2 q# z$ i& A* W7 h mov al,es:[si+5]# f' C7 n4 k9 }5 D
call Change% M- b' p3 G( X. y- Y; t# m
mov cl,4
" Z9 l9 D c- r! E& [ shl ebx,cl( J' N; ^( Q+ k% v/ O, k' j& N6 k
add ebx,eax2 L& z4 F0 e( |
mov al,es:[si+6]
( G3 u6 V+ I' _& j call Change& g5 O" H6 [; i* n
mov cl,4
9 _8 W9 P- u( y, L3 V shl ebx,cl2 r1 _% [2 j3 `
add ebx,eax
3 [( v' y: B1 y( Z* I3 t! y& P, T mov al,es:[si+7]
0 \6 V3 y6 s3 R4 o3 T% j/ d$ n call Change6 {6 m8 s- W4 U. ~; u
mov cl,4
" J* e. N& I& y shl ebx,cl1 I; x2 b% n" A3 s
add ebx,eax' f) k8 G$ y* A+ c4 M( ?$ ~
ret I) @' `3 o5 n B, O
WDPSP endp' s8 V3 X9 b' G2 k
;================================================================================================
2 A, ]3 p( ]( P6 [Change proc near
4 s; H. |# {: O6 p4 Q' rA:
$ [1 `+ \" S& s- ?* V movzx eax,al- x$ m. }( c+ [8 ^0 i# v! O+ }
mov edx,eax5 E5 P) V" [# @3 ?4 y8 ^
cmp eax,'0'
" N& `& n9 a* Y, [2 _ jb A
( `% [3 a& _" @5 w$ I, u1 z, Z4 k cmp eax,'9' 6 R; U4 N7 c" j, k0 F
ja B
1 h; G9 _! Z; P sub eax,'0'
4 _) u. d: L0 ` jmp short E5 f5 g) F. f, q8 ]/ w4 K, Q3 W
B:" G! c7 A; ]* D6 q5 T* d
and eax,0dfh X1 B" G' w# P: U9 \5 [; [: R
mov edx,eax
4 T4 F0 V# Y9 ~+ B1 O) }% K* X7 v sub eax,37h " q, B- u' i F9 y. b6 n5 z
cmp eax,0ah% x/ ^ N6 J8 Z: w$ l0 f$ G% q
jb A * Y: U$ t2 a! L/ F* [- A H
cmp eax,0fh
- w1 u* h [* q$ _ ja A
$ n' @9 N$ X/ t }9 IE:
0 `" Z' `3 }, ~- J" |8 r0 |8 i/ | push eax
' ]9 B, h+ Q2 t call PRT
! ~4 G+ e6 n) ^ pop eax
5 `/ w8 N" U" `+ uCExit:
3 V" K) ~9 F/ ?* U4 D) D3 z ret
, S* G( g4 t- ~9 V5 S4 Q* [Change endp; t/ J/ l8 ~$ T D
;------------------------------------------------------------------------------------------------* c- `) l4 E* z4 r) c5 L0 V6 H
PRT proc near
0 C2 f, t5 q: f. Y8 b! t mov ah,02h
. L) ~4 h9 u* O; v int 21h- G( y& U# n) k& k% d/ {# a) b
ret8 ~$ G, u. \9 l8 [% B4 e
PRT endp& Z. {( f: v4 O r P6 M
;------------------------------------------------------------------------------------------------. V c& O; a0 R4 J. f' e( E* w3 @
crlf proc near a; M; [! _9 Z+ ]6 x/ F* P
mov ah,02h
6 l" j. {6 I, X: H3 D6 |* r4 J mov dl,0dh
; I9 d" D9 I1 i7 y1 R* S0 L int 21h
3 b+ \; p3 \+ Y6 |; z mov ah,02h3 s& ~! @4 Q k; A- i
mov dl,0ah' i9 ?( Z( O, J* e& e8 [
int 21h
! R& q6 a; Y, G! K) K5 i4 @% U& N ret% `5 Q2 c7 _+ K- Z
crlf endp
1 W4 q( C9 L8 `) _9 y;------------------------------------------------------------------------------------------------. A* S% k8 m4 g3 X" u4 T( @: j7 k
_32bits proc near
3 o" U- Y e) @3 A+ Z# ? pushad
8 n. l3 V1 `$ O$ V6 b* ^ mov cl,4 o8 ?8 Q& t" e ?3 y
rol ebx,cl
+ Z/ |6 b8 g d, \+ K9 N' Q call print_4_bits' H6 R" t: a, b0 @1 }; o4 Y2 T0 E9 n
rol ebx,cl
7 W2 W* h# k- E; p% a4 t0 K7 k* n call print_4_bits6 h _# `& D0 Y, ?0 c
rol ebx,cl( b* v2 L1 O2 `: ]
call print_4_bits
( p: g! Y3 d. t- x% S1 i rol ebx,cl
+ I) T# L8 m) P7 d" z! k% K# F call print_4_bits1 x. i( _- {$ ^9 w4 `
rol ebx,cl
7 p u$ A9 I2 K( E' o+ {, z call print_4_bits
' y/ d+ `+ v& {6 G0 Q" \' { rol ebx,cl% R' x6 L) r8 f5 F( l" U
call print_4_bits V% L, k1 O7 |( I |1 e$ s
rol ebx,cl
$ m2 k3 L" h! z0 A call print_4_bits
8 }6 B0 I' N9 U6 Z- i. Y" _ rol ebx,cl6 c0 g* c9 o* m% Y5 E# ^
call print_4_bits
9 ^7 X+ {$ c5 L) Q& j rol ebx,cl6 ?. `, J8 F$ d9 o4 y% c2 ]
popad ]7 p6 l- X% J1 ^% ]: N4 s/ J- K
ret9 J0 U8 c& M. p+ }
_32bits endp* a( X+ H7 d" I1 ]! F! h6 k
;------------------------------------------------------------------------------------------------' O2 n' a6 @7 l6 R
_16bits proc near2 o. |; d5 |8 G' V
pusha
$ S4 k! x' I, j" Z rol bx,cl$ }/ Y5 n9 L! e* v2 e G) S0 e8 L+ e
call print_4_bits
0 O# e! l) i; A. w; Q9 T( R rol bx,cl
' r' `6 C- t3 W& ?5 V call print_4_bits
7 s* l6 l# G0 p rol bx,cl
/ c( T1 h7 g+ ]! @* W call print_4_bits
l. T1 y: s. g( ~& J0 o+ @# G2 A rol bx,cl
& P( @4 P9 Z; o4 g, U call print_4_bits* A4 C5 S" Y$ Q# ?. ]6 U3 R* j$ F
popa4 F! ~* B2 m- j- i! Q: d
ret- }8 L% K1 \* o% ^/ O# w8 D, `
_16bits endp
6 B g8 N8 p X' h. m* r;------------------------------------------------------------------------------------------------
/ i5 t7 X2 Q' {# h& [" m_8bits proc near( `: @, v2 @; {- S
pusha 7 [7 k! p0 Q7 k4 J/ N/ W% i
rol bx,cl: \# A8 r9 o: n+ J2 c2 a
call print_4_bits: |% K6 _ l' ~1 Z e, Q b) J
rol bx,cl5 p$ b: o/ f1 y, t" S+ ]- C
call print_4_bits
5 `3 {, [7 C3 Y: Z! `$ \ popa0 \. @& g. ~' t$ y- R
ret
7 J) I4 m& f! a, R! t_8bits endp
2 a) K {4 F1 Q& w. E0 y1 S [' nprint_4_bits proc near
2 k- j5 m3 i7 C7 O mov dx,bx
+ ~* S1 A! A( \0 Y and dl,0fh
, }6 ?/ j9 E. |# I6 A9 M: a add dl,30h
# n1 J& l( g9 f: l. x4 T9 c cmp dl,3ah
& m) [: w1 P! z* ] jb print, \, S/ n; R) M* Z
add dl,7
4 j: B3 O/ h( q: `& u/ Fprint:
: x. h$ d9 [ r mov ah,23 L6 A% n3 y5 E- z# L
int 21h7 }) {( p; ^' s" p/ P
ret; E+ a# P* q+ [
print_4_bits endp ; y1 k8 Q+ c/ z K+ Y
CSEG ends4 z' ^) i6 z' I( S# M4 W* \
END |
|