|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)
* ~% r! T4 H; G# T6 h0 k# ?2 o n9 u6 i& [
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'1 q2 ~ v/ t" E% U3 T! Q$ f
& j: @, N$ u v
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
. p+ _) `/ ~( a: o4 l1 D/ l' l; g/ x, O
.model small% z( q0 g. \3 O7 W) i
.386p. [" s0 Y( p, J: r3 A
DSEG SEGMENT USE16'data'
9 M; k2 |3 Z% u3 F5 w* ^; X+ w& b+ c0 c5 }; h6 z; c0 G: f/ o" Y
DESC STRUC1 W" k# m, ~: t' r) l; x
LimitL DW 0
5 j) U5 I/ |0 L$ b/ l, k/ h- R7 S1 K BaseL DW 0 * n8 m' N% `3 W6 \1 |# A1 K
BaseM DB 0 % R5 R$ D* W7 p- C& [. @
Attributes DB 0
0 R9 G3 z8 @; `" }# l- W% m LimitH DB 0
! z) s7 f' P2 z1 e- }: d8 \ BaseH DB 0 # c: |. l; {" W7 b/ R5 l6 l* P5 Z
DESC ENDS) e- d( `& j- q3 m, V- X2 @; M4 l
\+ Z' c6 Z* M& U( J A% B
PDesc STRUC
2 ]1 x( Y7 e, }. Q0 @+ K% @, B Limit DW 0
3 n' w4 e6 e% v5 G5 |: ? Base DD 0 % n, R1 L0 `4 ] k x( s
PDesc ENDS7 x5 Z7 r" }* w% B
$ i6 g0 o; `+ NGDT_def Label Fword! a* G' u( z2 O8 M
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
. Z- h% s0 Q' K1 ]& M+ g3 fData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
9 |7 T8 b* ~7 y' `GDT_Addr PDesc <$-GDT_def-1, >, W; u' J' Q5 @7 C( Q/ M2 z, i1 v+ j) G
# s l5 [7 I! N2 U% y
Maddress Dword 0
+ A! S. p0 w8 ?! _6 }4 C( S8 B
$ N4 F$ u) D# n6 T; Z3 VDSEG ENDS
. Y. D/ O/ N: x. _% Z: yASSUME CS:CSEG,DS:DSEG! |' l9 G# m1 N3 [
+ ]- S4 B+ _7 n X: SCSEG SEGMENT USE16'code'
1 M0 a5 V2 ~8 T9 J push ds2 q' t- \9 b- x# F
push es' d4 G, `; c$ C2 k, A6 L
push fs
: G1 @- ?9 u! t, o' a5 o, X( l0 ] push gs- _( V0 m+ o" \7 M. {- G
call big_real_mode 4 D- t. D+ }; a5 z% J
call Get_Commandtail
, H/ _/ l0 Q7 g/ }4 J' Z& u xor ebx,ebx/ ~, V' @' @( m3 P7 J6 f8 t5 C3 \
mov si,82h
' D0 s: f M, m/ Z" J. t mov al,es:[si]; w# Q, Q1 p* g5 P
cmp al,'r'
! E+ f; F9 m8 d2 m2 q) \) o4 | je R
4 g2 L G0 U0 @ cmp al,'R'
8 h0 w, ?: |% N$ Y je R7 ~7 D4 V0 B# R
cmp al,'w': A+ H* W& @ s. y
je W/ k. x2 x( u* _, s, `1 `1 C) i! n
cmp al,'W'
$ Z9 O1 \0 j) `6 E je W
* P6 D: a/ p& B: ER:
0 ^% {/ k& P% i2 v. P mov si,84h
- O9 V( G1 A7 Z$ c1 a. I( D' ?$ x. E6 L5 P mov al,es:[si]
9 [! Y( [9 y+ _, ]) \+ }! C* B cmp al,'b', ]; k2 a+ t- T4 M, F9 v
je RBT. |2 R: x8 C" q. n
cmp al,'B'- ]: ^* H$ e# h n4 q/ ?- R
je RBT
+ g/ h# v6 |5 n D$ f5 O$ N cmp al,'w'
2 M: q# l ^: P& ~' B7 V% g# }1 ` je RWR
5 H- v( ^$ n% y6 P6 B cmp al,'W'& i4 R8 n; O0 p4 }
je RWR0 I, U: Z) B1 K/ p- C5 ~
cmp al,'d'0 Y2 T/ b$ P+ {4 W0 @; S
je RDR- h# a+ g& y+ c, T" ?2 P
cmp al,'D'+ i8 u; E/ U- _# N- b
je RDR
3 T0 K# E+ s5 R0 s9 w' n% e9 ]W: 2 J# u4 ^9 P2 U+ {( x
mov si,84h
6 A" Z4 d/ ?3 z* o mov al,es:[si]3 q) b: l# Y; M1 Q( u
cmp al,'b'/ M4 S0 U# D8 D1 ]* f2 H
je WBT
- L+ m: r* w! q$ W, m' {. A0 D cmp al,'B'
2 i) |) j( u5 F, H3 n je WBT
6 z0 H- ]7 e) C cmp al,'w'
7 C; J& Y: x% ~ je WWR$ g! y6 X r) }( |, S" m- }( Y# v
cmp al,'W'4 s) n8 L. k8 Q2 C5 j3 v/ K
je WWR
) y2 s# g! C) U! |9 B& ^ cmp al,'d'
/ n1 x% V6 f$ O9 O: | je WDR- a _8 @. b. a' O
cmp al,'D'8 V0 c# e1 Y: o9 ]
je WDR
9 z: s) Z, Y6 ?1 i$ PRBT:
' [; E7 t1 q* w0 n8 e; F call PSP
& B: p8 f) s/ ]) i# y5 V% i call crlf 5 w$ G( S- z4 x7 I( U/ _; \) h
mov esi,ebx
# l- e7 s$ {+ q9 M& U( L% B mov eax,fs:[esi]. d- i; _% `& O u3 y
out 80h,eax
0 K& ~: `" T# ^ mov ebx,eax. m0 T* l9 `8 C7 u) s
call _8bits
# Z) E |7 W" M: q; d jmp Exit
" b J& e+ O! uRWR:
; T6 I* r* M. l. ] call PSP
t' u# `" ]% Q9 T" A. k Q: D call crlf
0 n; d: X. }/ j1 K: R mov esi,ebx( d8 v* e4 a6 T7 d8 b4 S& H k" Q
mov eax,fs:[esi]7 x: e% s6 Q9 z
out 80h,eax
- t$ z/ _! {" d, c8 f mov ebx,eax
: c+ r; ]4 L, h2 [ call _16bits/ Y" c( g% c) e4 l8 V8 r
jmp Exit8 G( R5 G( D2 Q
RDR:
% q! ?2 H4 V& B! E7 N+ z0 K! g) h( d call DPSP 2 g: P0 v4 ^- j; w0 C2 W) ^
call crlf
+ f! F4 i5 n+ \9 Q/ y mov esi,ebx
4 i' A! k! R$ o! I2 P mov eax,fs:[esi]( s( j$ H( h s
out 80h,eax2 s) \3 {# d t Q! k
mov ebx,eax
" M/ @4 \6 h; H' N call _32bits
$ R, }& G* B. x( g r jmp Exit+ b8 x! U) r5 y
;------------------------------------------------------------------------------------------------% Y0 d+ t4 g$ U8 b8 a* |+ _6 s7 h
WBT:
' h4 T7 X! x0 d1 @ jmp Exit
7 {; [2 w( p2 w5 lWWR:
2 b8 W! H5 ?1 U) H# |! S; a jmp Exit
* o0 s, P) z3 c+ j. { PWDR:
( v5 H& B5 {3 S3 z$ ~1 p call DPSP
$ l* o0 n9 t) |0 ~. { mov Maddress,ebx
3 j! P6 o! i; ~" r/ E4 `/ f call crlf
3 I8 r3 B! |" o( Q call WDPSP
+ H0 P; r6 z' Y! x K( Z mov eax,ebx: ]1 w: g+ s7 u
mov esi,Maddress + v7 I$ ]2 s S4 v8 m6 U
mov fs:[esi],eax k# b; s! Y) b6 y6 U& J' S) k1 i7 z
out 80h,eax7 g4 P- ^& ~7 t1 n5 y4 h& d
jmp Exit
8 f+ y" D: a! v2 h" [& f$ o5 g;------------------------------------------------------------------------------------------------
! z' p' k% K6 m$ aExit:
6 E0 i% t: V3 l# J0 y9 Q5 `' k call real_mode + ?" u7 o( q9 O: ~. m
pop gs4 n. E5 [9 F5 o6 X7 ?8 B
pop fs& y2 W; C8 h" L x, W' |3 A
pop es
8 l9 C) {3 \, B1 ?' |* | pop ds ( O# Q4 j/ \% }* X
.exit
q/ _- W3 |; v3 ]: A;------------------------------------------------------------------------------------------------
y/ P& w: F+ q& jbig_real_mode proc near+ |, u6 U) d3 V
in al, 92h3 \( ]; {9 r! m
or al, 002: x( W5 x( u# G% }
out 092h, al T$ B4 o z6 i& z6 q/ w; m
out 0edh, al1 U- a1 p# `3 `: R' ~
cli# s8 A1 w; D8 c7 U6 ]
mov eax,DSEG9 |0 M9 Z) ^# r8 r: _9 E
shl eax, 4
3 I' ~ Q: n+ Y6 Q; j xor ebx, ebx
+ d! q% x& V& ~5 R mov ebx, offset GDT_def* y3 o, ?: x9 P8 Q+ a1 R# ~
add eax, ebx; g3 r# @. r6 l& L( F1 i ]
mov dword ptr GDT_Addr.Base, eax
* o4 ~ Z0 j, F! b lgdt fword ptr GDT_Addr
1 e, ~2 u2 b( M, i+ s mov bx, 8
+ Y. r: B; `' ?0 { a0 ^% n mov eax, cr0
7 ?. w( j n. Q or al, 1
9 _& q; f! J- h6 f' X9 B mov cr0, eax
4 O7 v$ q* N8 d6 o( J! p jmp PMod; h v! `3 |1 u$ O3 Z: N, Z* `5 x
PMod:4 p* F* N1 _% A4 _( z9 J; O" [
mov fs, bx
( ]2 v- f5 l& ^ mov gs, bx
: ~$ O7 i6 G: h* Y3 r mov eax,cr0
$ G e3 x9 m( V2 Q4 h/ B0 ^ and al, 0FEh
5 X- G3 B2 v+ c mov cr0, eax
* D" O7 c0 C* u+ j% e p# E jmp RMod+ z% A8 `+ ^0 m+ h! d& z& x
RMod:* z2 J6 k1 h0 G% a- F
xor ax, ax# a' _6 W# ^0 t2 ~9 Z3 s
mov fs, ax
b& R5 n& x' a' k mov gs, ax % \7 U& P+ K- s. j/ H
sti * _+ A0 k1 ^0 g4 }+ B2 ?
ret$ W5 m( t6 g L) F; G: i
big_real_mode ENDP% K( S G" g$ ?# D
;------------------------------------------------------------------------------------------------! a) [2 k/ C, v8 j+ ]% b
real_mode proc near
5 l6 F7 D: V1 w; x% D in al, 92h: ]; Q* N8 }0 \: n* ?! T8 W# s6 X
and al, 02) ?' e* ^% M, X1 ^$ Y$ w+ z
out 92h, al
( T) P% b; l! o+ X6 X ret5 J% A! e4 b8 }/ F6 d" A/ D
real_mode ENDP
% U0 J& u- \5 v; B O! P;------------------------------------------------------------------------------------------------
, C' m; K: P, G _7 eGet_Commandtail PROC near
( }8 z0 y1 X8 R7 Y0 }0 ~- ]) w% v mov ah,62h # j5 e/ E' h! u6 _2 D" z7 `. r7 n
int 21h! T4 \/ J# T2 I' ]
mov es,bx6 F' `9 H. I/ k Z
ret
& G5 c& O! ^; E7 I2 iGet_Commandtail ENDP
+ }! ~2 F3 C, {& V' u;------------------------------------------------------------------------------------------------
|7 k p O$ ?7 I, d; i1 |PSP proc near# q3 d/ _# C0 m' ^( A; Y* P
xor ebx,ebx! l0 O8 k. c1 y$ l5 P. I( d3 i
mov si,89h3 s+ M N1 X% w) j" n0 P# M$ a
mov al,es:[si]
9 b: d; @% u2 S6 K call Change. g1 G) [' r! p+ J$ @7 X& ]! s/ V
mov cl,4 n# m' N4 d4 \3 x, _9 b3 \
shl ebx,cl
r" w# Q) b) z add ebx,eax
0 ~* U5 q# u: Z! p mov al,es:[si+1]. k7 [0 B3 f: x
call Change9 J0 u- A$ C- D8 B8 r: U
mov cl,45 X7 G3 A, }2 u; U
shl ebx,cl2 ]1 }- A9 }+ r5 u5 ?/ s8 P( J2 m
add ebx,eax
/ X* C. ?2 y: {0 D# o mov al,es:[si+2]+ R1 D/ t4 u# S$ }
call Change0 ?* q% N: U$ M" W3 l- P( v
mov cl,4
7 O- c- u: R: Y, ~ shl ebx,cl
7 t( B8 L; U) b5 X+ q add ebx,eax
' L+ Y* v0 g6 D7 ?- H mov al,es:[si+3]
# \4 C% z: j, F& O; K# f call Change {6 G9 x1 ]! s- l
mov cl,4
: T ]( ^% p! f4 t; Y; C7 r' H2 \. p% W shl ebx,cl4 ~, M" \7 b# y' ]# _
add ebx,eax- y1 Y2 v3 `" ]: h" v: _8 y, J0 b
mov al,es:[si+4]
! i1 f. A) f6 t7 D call Change
) t; c! m& h# Y! q# z5 ^ mov cl,4; D) ]$ G! r& b( g/ l8 G
shl ebx,cl$ c4 K- _% A# ~
add ebx,eax
9 X4 j! Q& H9 n9 H8 g; F' Q1 I) W mov al,es:[si+5]
1 f. r- F3 S, w# ?) K) v call Change
" t" B o, j& Z, G mov cl,4- a5 [6 z. V; F% `: ?4 q: Y: m
shl ebx,cl
, r# [6 W& S! [) I2 Z8 h add ebx,eax8 @1 P9 q7 ], s& q
mov al,es:[si+6]/ K( ?+ H' L2 Q
call Change
2 R g& m) @7 s0 ? mov cl,4
: h% t) A% I4 Z7 }8 | shl ebx,cl! g/ |5 J& B# z; a" n5 E$ ^
add ebx,eax8 J5 Y4 l2 m; r2 J/ h1 f @
mov al,es:[si+7]
$ L/ z) E v" u. q* t& w2 {1 \ call Change
- q4 ~3 _! J0 s; H$ r( Z mov cl,4
1 Z* o* H7 M( ?! r; x& M$ _6 r$ m shl ebx,cl: G) f4 d$ s+ G. u1 A6 U: I
add ebx,eax
8 ~% I- Y2 l5 E, o- @ ret
) M2 l0 ~" S/ J. cPSP endp* M' C4 U! v1 i5 z8 X) E" H
;================================================================================================+ k: L5 F1 ?+ N1 u. k, r
DPSP proc near& [1 \' @' U1 e8 K: Z% E
xor ebx,ebx: z' p1 K, ]5 ~; v* C
mov si,8ah
) E2 P4 m# R5 w mov al,es:[si]
! [5 n; f3 g/ Y1 y2 [. w% a call Change/ |" ?' a1 B J- v& _+ p/ `7 a
mov cl,4" R% m/ _; e0 @8 F* @9 H0 t; e
shl ebx,cl
+ n5 Z8 L, w8 n _; F' F add ebx,eax2 f: F' s) U, p, i2 t' C
mov al,es:[si+1]) W. ~) n' r# }
call Change
/ I8 v, z; v0 T4 @ mov cl,4( A i/ R/ s2 ]: t2 w
shl ebx,cl! a7 d; n* |, S
add ebx,eax
% o+ c# H: s2 P F0 y, c% O mov al,es:[si+2]
! r: z5 V/ y3 z call Change
* v4 z4 a) E) F; x mov cl,49 H9 r/ Q7 w, x
shl ebx,cl
& ]' Y/ r6 Y F) x3 \: b add ebx,eax/ p2 D+ |3 R3 P7 f0 c4 E
mov al,es:[si+3]
( S% A. M& ~" P! D* _* m9 K4 t call Change
" M4 x. }2 r$ f, { mov cl,4
) z. E+ N( q4 k' l shl ebx,cl
/ V! n* V/ W; Y. s5 f$ Y# L add ebx,eax% F- S2 |" R# D1 _: _$ c6 i3 h
mov al,es:[si+4]
8 \$ n; G* j, c5 U call Change' M* l6 I% \5 j+ f6 e
mov cl,4
$ t; C8 t: y5 t* G" Q c# a7 T shl ebx,cl4 B" q1 y' |! u% U
add ebx,eax2 R. }5 k; ~: g
mov al,es:[si+5]
% d. E+ y! t! P3 s. V8 a call Change# ^6 j8 b' b# B1 v" N& r$ d. ]; [
mov cl,4
" ~* {, ?' A$ K+ J1 u: r' _ shl ebx,cl& ?; H. w5 j) b7 |
add ebx,eax0 C( \$ ]4 r7 d
mov al,es:[si+6]
5 w. G% G% H1 y1 C( ?+ d call Change
3 @3 k" I* a) B$ G M% h! ^ mov cl,4; x0 I. Q$ w) r& y/ P: D
shl ebx,cl6 |, c( l" g& m- H& f8 u
add ebx,eax' Y* k& b" C% d. }2 T
mov al,es:[si+7]% d- I9 X5 v( m8 N9 j; {
call Change
6 u! ]( T: o2 k2 o n% | mov cl,4
" E6 p; m1 S' o+ ?# K- [/ K shl ebx,cl. x& I6 q) ?/ a5 k" X2 a% G M
add ebx,eax) e& |8 h# }5 I( v1 f
ret' p* x) X q2 x6 K
DPSP endp
, S: c+ g) b- F; V7 p. _: |;================================================================================================* f1 Q5 m B" ^, |$ ?
WDPSP proc near
t2 `) O: y; Z4 y& ~ xor eax,eax, G5 }/ H! x- x5 O
xor ebx,ebx" ^ ~( h; B9 S
mov si,93h
# f( S! I5 S% U* V3 W& F# X& ? mov al,es:[si]4 e, ?. W" m- U' d% c! X2 U
call Change8 x# f8 c1 ?: ~: m
mov cl,4
# D3 s- X) M6 d# [4 p7 O# u/ w shl ebx,cl
5 s3 s9 S7 D8 t$ T8 F/ O0 n0 I3 D add ebx,eax7 M* n% p+ M. a# M
mov al,es:[si+1]
9 v7 D8 J+ Q8 |. d& u- b8 [ call Change
: ?) |0 e1 ?( s K mov cl,4
0 w3 w/ {- }( u0 _/ h shl ebx,cl
5 }5 E5 i4 D9 |; Y add ebx,eax' A" [' a* o# X/ {$ E. P8 E) l& |
mov al,es:[si+2]
, j& x+ ^% r/ A0 T' C call Change
- G+ q$ d. @, ?# o/ E mov cl,4' t; W" u( R, |5 \2 k4 L
shl ebx,cl
9 B7 \7 }; L. T7 e2 T/ L add ebx,eax
, Q c4 ~) u+ k- {2 Y. i3 P$ a mov al,es:[si+3]. w+ B3 g8 M: M! V$ U9 V5 N
call Change& `, N8 Q1 C. j3 X) B
mov cl,4) d; K- `1 f! q6 Z' ?
shl ebx,cl
( [, ]- I, d; }1 i/ w add ebx,eax4 A2 M- K* ^/ o7 \) M
mov al,es:[si+4]
4 a, c3 J0 q+ j( t call Change
/ g. K7 o& c8 o' Q; r/ f# e mov cl,4
8 ]$ D- K7 S1 |/ N" p7 V shl ebx,cl
" y6 ^" f7 j1 S0 V- H, P: I( X8 ]9 U add ebx,eax
) u& K( |. i! ` l1 B) X mov al,es:[si+5], u- b: A4 d8 S( b# [0 N3 b
call Change
( k6 i! B* n, X% p& E0 ] g7 L mov cl,4
$ ?! N R3 @' d3 I1 o1 B0 W6 h shl ebx,cl7 W! @* R; M! q3 p q2 g
add ebx,eax% |0 k" {, k" R) I
mov al,es:[si+6]: N- ]1 I4 }5 c' Q9 l! O) U
call Change
1 I/ l @4 o( I0 d) p. ] mov cl,4
7 U" |) q3 e+ x* ]1 m shl ebx,cl
2 J9 ]% d7 f, u add ebx,eax
: J' U- {4 V$ k! x mov al,es:[si+7]
' ]4 s* C! s# s% N, E7 _8 W call Change
) h7 @3 b9 Q! K( o3 A$ P/ G mov cl,4% X3 O; R; x* J5 O7 b
shl ebx,cl8 d& v/ k; A, T( |
add ebx,eax
; r8 }3 x! p% Q. q1 j ret
f, ?( P3 s5 s# EWDPSP endp
1 u. g8 T" Q, _6 m;================================================================================================
1 u! N8 h9 s' F: c3 b0 l, {Change proc near
- I' A8 n9 t3 U5 xA:
7 ?1 p1 E5 j: P2 z0 N movzx eax,al5 R5 W" O, P5 ^- V G2 G i- C" y( n8 y
mov edx,eax! I- I' s3 `4 `& \" |
cmp eax,'0' + y H- r9 F$ n) r z0 T
jb A
' H* `: V/ y8 u$ y4 A1 K cmp eax,'9' 6 J: n6 z7 V5 T0 u% e( z
ja B
2 O; l6 t7 _5 p; C( m; E0 Z0 W) N sub eax,'0'
+ i8 v4 X7 x1 R jmp short E" C- h5 }% }( \! B, B9 w# l
B:
' D9 k& }$ y8 r3 Q o& W and eax,0dfh
. ~" L+ F0 T/ x* m" h- h mov edx,eax* J% N" j) x7 m' n. {. D
sub eax,37h % F5 n- |( B* C# ?% h' j- Y
cmp eax,0ah
) i9 i/ d: w9 `1 T" g6 I1 J9 K' L" s jb A
0 h5 p* q% i* g% ]" P) N cmp eax,0fh) r7 A! W) r8 [( x* r- D2 A
ja A
' t+ E2 M/ W6 f uE:8 a. ]8 D' P/ h. N" d% X
push eax 4 {& N3 O! H4 g' V; m5 Z
call PRT
; D: H# P" q8 C- t; z5 C+ ~0 _ pop eax
7 U3 l5 S7 c; K5 g! fCExit:
4 n' a* Z+ @' @ ret
& @# g) I" p5 h+ ]" u. c6 WChange endp6 w- u; [, ]" J% i7 ^3 P( |, p
;------------------------------------------------------------------------------------------------
# x% x! L$ p+ z; S" i4 u5 cPRT proc near
0 B" G& c8 A! ^# y% Y" B+ _ mov ah,02h
; o; {4 f8 X- `" A# u2 ?9 z int 21h
$ \8 M! _$ C/ | ret: Y4 I n# X& A) i* j& a) J
PRT endp
9 m' q/ @0 G8 v$ |4 f$ N" z;------------------------------------------------------------------------------------------------2 s8 @$ u5 u" ^8 k( i; ]
crlf proc near
) I# H. |" t: X mov ah,02h: K* L5 e q4 O& ?
mov dl,0dh
7 O6 t. A4 d3 h+ F int 21h
# u. f; T5 Z% n! X7 z5 g8 a8 E+ M+ ^8 e mov ah,02h; I% a" J ~4 z- u1 f
mov dl,0ah
5 l5 y2 f+ k* X# G int 21h
$ o" S0 ]6 z4 Q# b E ret7 J* M6 c% w5 J0 v }$ q _ _$ r
crlf endp
3 C" H3 z3 {3 T! Y, G8 k;------------------------------------------------------------------------------------------------8 _1 d7 g1 S. |6 d2 ~0 ` a
_32bits proc near
3 ?/ w+ l7 `3 u+ J1 u pushad
5 A& A- h& z' |; N# I2 ~2 r- | mov cl,4
, i7 P9 W) \8 ^, v/ E rol ebx,cl
6 O. z# Y6 v, l1 W& Q9 M1 K/ Z call print_4_bits
( ?7 R- x4 d; w9 s rol ebx,cl
, i, I |5 r+ e4 r. Y call print_4_bits; ?0 u! A9 j2 n+ W6 y* Q1 _. ?" c
rol ebx,cl( z7 Q+ \& D. P& y b$ U7 F
call print_4_bits
/ P9 D0 _8 f/ h( X! [; W! l rol ebx,cl; A4 F* v' P% K0 ~; |
call print_4_bits
A) O* y" K+ a: i4 C* C4 l rol ebx,cl
9 F5 H* Z: c6 {$ p call print_4_bits. P E8 L8 N! G( W1 E& L: X% ?
rol ebx,cl4 q* \6 a. t: j. f% S9 Z" f9 L
call print_4_bits' K4 w) ^! ]7 M0 A# |$ ~. c
rol ebx,cl
9 X( y2 u, _. H4 ^ call print_4_bits: ]2 Z5 R* n6 C. |
rol ebx,cl& i/ @. ^; c# R& G: w, R1 A( H
call print_4_bits
% ]" L1 m2 G6 I% s rol ebx,cl- s* z' ^* `0 E- E$ _$ o
popad
, r0 [- D- \" n9 R: V ret |& p7 Y5 L+ u. k+ _
_32bits endp
! w5 a- m5 _6 `" D O ~;------------------------------------------------------------------------------------------------/ _# O' V' U5 q K0 A: Q
_16bits proc near7 \! q, v2 Q( _2 Q* m; y/ F
pusha
7 T5 A! h( B' j1 |2 r5 ~ rol bx,cl
/ H! {4 y3 W, H" }+ }! k. d call print_4_bits0 F* u# G q: q3 U2 Q0 B: E/ ]
rol bx,cl
% M; ?9 u( r. f9 J d call print_4_bits
. b5 }0 C' c5 ^6 Y rol bx,cl
9 w H8 \% i6 V8 o call print_4_bits \( E6 ]& [$ n# q
rol bx,cl, Y; q% {* O" G" q1 j5 @
call print_4_bits
9 I% ?- i# i; R- n* X/ B* \1 m popa
+ a8 j; \9 Z0 N5 D ret
. H Y# c% m" X. P_16bits endp
6 q% I5 ?& U9 n5 _) P' x;------------------------------------------------------------------------------------------------3 Q; n8 W+ f' j, j- b. B% S
_8bits proc near$ x* x& n6 a! M+ o6 E
pusha 3 } L; G3 {! z/ m* J7 Z! k. d5 L
rol bx,cl
: \- M# _2 i$ w; k3 r) X! G' \ call print_4_bits
x6 h% _. X8 H- J rol bx,cl
! }6 _' }, d: a call print_4_bits3 R' C& m0 [/ c( I
popa
+ W, M! {1 } h& E. D1 E. T6 U% [ ret
) ~, Q8 i& \% z: D6 V3 a5 w) \) @0 U_8bits endp+ X A# Y+ a: b1 h$ t+ E- u
print_4_bits proc near
# b- R: ?/ P1 H! l! j mov dx,bx
5 W1 C" b% [/ \6 I9 [0 g/ f and dl,0fh
6 ^6 y, z3 f7 V# Y8 }( P( z add dl,30h: Q- E, U2 D; H$ ?6 y; l0 e
cmp dl,3ah
9 L; J% @2 l, h6 v jb print' U0 T2 g' F; R" u4 w9 W
add dl,7
$ m+ o7 ]( k u Q$ I/ hprint:
2 F8 v6 P$ C* u8 L" Y1 w mov ah,2
/ e% M5 A" l9 L int 21h
. `" w/ `- W" x4 C. r Z' R ret
" {7 v8 n& R' t n$ R+ q a( |print_4_bits endp 1 x) _: ?" ^1 r8 U( X5 Z4 V9 u
CSEG ends2 S; v6 A# @) ]+ ~' Q
END |
|