|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)2 O; _$ M( _0 h. s5 m6 P
( d4 m* v" ^6 f7 ?7 r4 p則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'- Z j0 A3 X: L( r
6 ]! h% d+ m( T8 y# {' v
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝 " T* A4 z0 x) [) q/ n! Y
# j9 h$ C) n$ g
.model small
# b$ w% X( E1 Q, z0 }.386p
- H2 p5 B1 f" C! U* ?) k+ DDSEG SEGMENT USE16'data' * _" ]9 T) X( I
7 x5 v: i, m( z; q, rDESC STRUC% b. \4 @2 f t$ {0 t- k
LimitL DW 0
& D& e( |( H7 f BaseL DW 0 - ]) w* I" e2 ?& s5 B
BaseM DB 0 $ {; w; U a: R8 a" n: n
Attributes DB 0 3 Q9 V- s: b" {( P
LimitH DB 0
p2 _) u7 H* `' W, V BaseH DB 0
* Y( c8 n I7 w* l! ^1 f$ X9 n+ IDESC ENDS3 g3 n- f- c5 l$ y4 z4 o W
" W k2 A% ?# P1 `$ T* j
PDesc STRUC7 o4 k' w+ t7 S! b+ e1 ?
Limit DW 0 2 ?; V5 X& X1 D2 I7 ^: Z" Y X
Base DD 0
6 t+ J7 ~* J2 ~* aPDesc ENDS/ Q% x# n, f( l+ G
( V5 _, t3 P" v4 E' \GDT_def Label Fword1 J' E7 M4 ]3 l1 d3 W! Q4 ?1 j
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>3 L8 {' c5 t+ b
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
" R4 g% y/ [" M4 a% |GDT_Addr PDesc <$-GDT_def-1, >1 e" B$ v2 S; V6 K( Z
8 e1 l: d2 @; {0 p4 t+ R/ W
Maddress Dword 0' j2 h+ H k2 O1 J
* ~5 v( p2 i/ G) ?' \
DSEG ENDS / O( H% K6 I( v9 M: x7 c1 o9 {, G" t
ASSUME CS:CSEG,DS:DSEG
* k4 \3 ?4 m/ d7 l- @: c* l! E3 y1 B3 H- }+ }
CSEG SEGMENT USE16'code'
2 @# v( V6 A. f push ds; I/ N( h# b" J5 R' W
push es
3 x, E) C- x' a$ y: ^+ @ I push fs9 X: @1 y/ x( G# l9 ]
push gs
+ s; w" J2 k! R. q* _2 o1 `& ]% s) C call big_real_mode
0 V1 E" n( V. I$ Z! w) x+ h call Get_Commandtail. n ?4 t5 G' W4 N
xor ebx,ebx& e7 C8 m: f9 i7 o8 A9 \# e' Q3 Q
mov si,82h& Q% B* |7 v/ T5 P
mov al,es:[si]3 O! h1 u$ x# g, r# X! [+ Z+ G9 n
cmp al,'r'
% S; G; D4 p% l. R5 k# ?/ j je R
" ?: a9 G9 O( Z' |2 D! P* ? cmp al,'R'3 F- f. g3 ~3 p# a* u, [5 t
je R
- R) V, ? A+ |7 C: p4 E) S cmp al,'w'
- P7 E- [) h1 L$ k je W" A4 l6 e: \( y7 [& |6 W7 c" G
cmp al,'W'
) G Q7 M* a: d/ M- i. v6 s" u- ~0 ` je W 8 b" K# W2 ~' j# {0 `. k
R:% R3 L: Z* s4 C( l
mov si,84h! Y% X+ k7 j, F$ l7 T; O& T: Q" r0 e. } Y
mov al,es:[si]; Z, u) g) B1 I0 x; _
cmp al,'b'; l% C/ F( e+ ?9 p/ [* K- s
je RBT5 Q; F: I6 t: l$ S0 L
cmp al,'B'
6 ^4 R+ W* v+ }$ `6 x$ P( N( _ je RBT1 S- L0 ~1 K* V
cmp al,'w'* [- i, y. u0 n; X
je RWR
( X/ l& G9 |4 O Q" u8 P6 p cmp al,'W'% P: w0 b! c6 t9 M! y
je RWR
. o G. R. G) ?" h! a cmp al,'d'& z0 e, C. r0 c2 D2 [4 ^) u- U; [
je RDR3 \6 l. l- {* [1 q
cmp al,'D'* w0 N# L& f9 ^6 O0 n! T
je RDR ( S U. A9 M) z& }* y, _0 e+ Z; o
W: & n2 t [. u# u5 b! K+ ` j
mov si,84h
: q1 b6 c: R) w% j mov al,es:[si]+ C0 b/ P; x3 D9 P) x a
cmp al,'b'$ D1 M& m7 j4 l" X B
je WBT0 X* z7 o H; A* v8 t6 r
cmp al,'B'
" O& g5 [' C G) Y Q je WBT
h5 {: f- J8 s, v6 Z! l' S0 V cmp al,'w'
" U& x& ]4 C5 X8 x1 H" @0 d je WWR
b8 F: l/ n+ ?& G& L+ K cmp al,'W'
# I6 G1 E0 D; W2 N$ c$ b4 ? X4 S je WWR
( ?. p. C9 j- C9 q* K cmp al,'d'
0 S7 r/ R) C, i5 y1 _6 e3 X, o; ~ je WDR
' s% l( ] p9 Z4 D$ O% x! { cmp al,'D'
+ ^" v, B! ~+ m" u+ N% L je WDR
8 U7 d0 `% t0 Y- ARBT:- [1 c) G* l5 V( b
call PSP ! i" K( b r/ P* ^% @) w
call crlf 8 k: L+ q" P8 R8 H/ R4 T
mov esi,ebx
% Y; I5 I/ W, h, h6 D+ W0 y mov eax,fs:[esi]
' p) K6 m$ h7 h# E out 80h,eax
% B8 y7 W" j. x/ ^ mov ebx,eax
" w- Z- W/ g+ a# J' b* N! m call _8bits5 m. U2 O; a& T5 R- p0 L
jmp Exit
) O* ~& p! V H9 kRWR:9 O( A& c- y- |% b
call PSP
4 Q3 Y5 n( e( V# [# D7 X, S" x% [ call crlf , X: V6 E, a+ x7 e8 s7 K: \$ U$ q
mov esi,ebx
/ T) y8 L- N3 \' p& y/ K5 K% K mov eax,fs:[esi]1 [+ Y# A2 V1 [5 L) O- o8 L J
out 80h,eax
% G" D8 s- U! y3 |% R; k# x mov ebx,eax: }5 ?4 q& z3 O1 j) Z0 Y
call _16bits! }+ m# ]* M6 ]; R( i2 R y
jmp Exit3 K' u6 ?& Y" y5 K) t: g
RDR:& m0 P7 D; u' ]; E' g: l/ Y
call DPSP ! w n* l {7 ~9 x5 w4 T. C
call crlf
+ w& Z3 ]3 h5 g" F ~( U mov esi,ebx
* e% u! `. T+ f mov eax,fs:[esi]2 {; o5 c+ N r3 Q$ x* L. t& K
out 80h,eax
* v e8 S. B5 N+ M# M mov ebx,eax
: A5 |3 | L! F' Z+ j F2 O7 S call _32bits$ J7 i, o! I4 Y, u7 u
jmp Exit
0 P2 i6 z2 D; g6 N3 z1 R;------------------------------------------------------------------------------------------------, X0 n5 W" N7 |$ [% Y) Y- L$ [
WBT:8 L$ |5 S" k" |1 ^
jmp Exit
7 r3 C7 L' f# `. \WWR:
9 d y+ T& r$ C2 q8 s8 _ jmp Exit
M+ n1 U/ |- ?" nWDR:# N1 ^" H# `" ^1 T/ _# M% y& V7 p' R! ~
call DPSP; _% E2 W* S+ Z! o4 s
mov Maddress,ebx 0 k# c: ~0 |& p% a) X$ V7 m. w
call crlf+ S9 K# D2 A9 q3 W; F9 E Z
call WDPSP6 X& g9 \! D+ `" |& u
mov eax,ebx, X* W. x, }7 {+ }: Y
mov esi,Maddress , ~0 U' ?% q9 R% _& d/ O' O
mov fs:[esi],eax* ]( u! x2 m5 M c) G+ _3 h: e5 x/ J3 n
out 80h,eax
' H/ Y) b; N/ F9 @ jmp Exit
/ I# O1 Q5 D/ d6 o6 p;------------------------------------------------------------------------------------------------ y1 s% Q) s9 ?" w8 n4 x
Exit:8 @9 J7 j1 E( H1 v5 Q5 x
call real_mode
# G7 u2 S' d+ n4 n- R pop gs7 j: }( M8 x; P$ C" G
pop fs
1 v0 @ y6 y8 X0 P4 }* s pop es
' Z# Q6 G" o9 D: M! h pop ds
) \9 v, i, @+ y p$ c .exit
& B. Y( ^! ~5 c9 a6 p6 d;------------------------------------------------------------------------------------------------
7 m: j+ Q" A, n" fbig_real_mode proc near
/ |4 `0 w& }8 g+ L, u in al, 92h
. ^) i3 ]8 r/ g& T or al, 002
& u! Q f" q& f, A. h( Z out 092h, al6 U% F8 n3 `# Q' R+ W
out 0edh, al
- Z- H/ c3 H2 g( T" V cli
5 }& e: B; u4 f9 j: s4 | mov eax,DSEG3 p& \" Z8 G& i ? @, `) c
shl eax, 4$ t" s6 w: A5 d6 ~7 u& f4 W U
xor ebx, ebx
' V6 y8 b8 @& ~! \* Z; g$ r- J$ ^ mov ebx, offset GDT_def
/ {3 ?. V5 w# Z1 T/ D0 O add eax, ebx
2 @' O1 M0 P" l" X) q9 \9 s mov dword ptr GDT_Addr.Base, eax, a5 }) A; T" V
lgdt fword ptr GDT_Addr
" |7 Q* v" p. x mov bx, 8
! `1 a) T2 P/ ~! W N mov eax, cr01 c) \4 b$ o" H8 ?# X
or al, 1
5 A% s) W3 W* u mov cr0, eax
) e8 b: ^: A/ p, n7 n0 q4 s r jmp PMod
* f6 R$ I8 C2 z" `9 mPMod:! R: g& S$ T# N, f) |5 N
mov fs, bx; l o1 a. c1 O0 a4 V' S6 ~' S
mov gs, bx
. F1 n2 M- Y8 a! f) S mov eax,cr0
( R: |4 @% V. X' J' D and al, 0FEh/ i) I7 o! t2 X7 V" k
mov cr0, eax
5 x$ F. L+ K. Z# l: t( R jmp RMod
" n7 C8 K& f$ q2 q" _1 ^RMod:' g$ n% g+ O& e4 ^ H( [
xor ax, ax
, D. I/ E6 D) Z7 Y- M( A! s mov fs, ax) b8 N1 n# a' O a8 s3 y* a
mov gs, ax
0 m" [9 g- q" ?7 ^# `% W9 l sti $ }9 e6 L- t/ f0 v8 B7 Q; ?
ret
$ b8 L# z! j/ X- k: Qbig_real_mode ENDP
! h* X3 G. o9 D0 I+ c7 P- w. B;------------------------------------------------------------------------------------------------
* {8 M2 A% G7 j6 Ireal_mode proc near( O- W# F2 v3 x1 x/ z$ I
in al, 92h5 K( g9 y2 j5 b1 C" L; E
and al, 02" J8 |7 i- J! ]6 ~( H
out 92h, al
) G+ [8 v+ K. X1 j ret0 s7 ^5 [3 }1 h
real_mode ENDP
) R4 w8 U8 _" n( Q. V3 ?* l% L;------------------------------------------------------------------------------------------------5 v' {+ @1 |( g( G
Get_Commandtail PROC near
% }( R# h: O$ I: g# Z* \9 j. } ^ mov ah,62h & m& ^) U9 L; e, Z; b7 s2 H2 W6 O: C8 X( \
int 21h
( [: D9 t( H( n- ? mov es,bx$ o. N& n' _! z9 q. ~" N5 g; r7 [
ret
, f1 G( b O/ ~$ ]$ {Get_Commandtail ENDP
) b$ y' m) k# `( h/ g0 \7 ^;------------------------------------------------------------------------------------------------
& w3 h" X( B& R/ T; iPSP proc near
! Y# I3 A j7 R9 @" C9 [ xor ebx,ebx
1 [# P: T' A6 f0 X, {8 H mov si,89h
; K) @& t1 l% }2 }, b mov al,es:[si]
q: a5 X$ M/ M6 K# g call Change
/ m, W( c0 n% Y) a2 Y7 @( ? mov cl,43 z* L" `/ @5 f& e1 x9 S
shl ebx,cl
5 q+ } B- A) ]1 Z9 A add ebx,eax
+ z9 T3 Y* L8 J6 Y. y" k% t# o mov al,es:[si+1]% f/ o4 G- p* h; \! _5 {! q) b
call Change6 P: ^4 s- v: \5 p4 d3 Q: g
mov cl,4$ }) L6 W* |) n- r# a8 ?6 v
shl ebx,cl- t7 J" Y: m5 q R$ u) ~
add ebx,eax
L" R; ~5 H+ K6 Q% {7 w mov al,es:[si+2]
7 r9 c( K: |0 G9 j$ s$ \4 b call Change/ u( `2 {8 W7 {* I' x' x
mov cl,47 Z, O l* O4 [ `6 g7 t
shl ebx,cl9 |8 G$ ^6 S8 d5 h7 L, |* ^
add ebx,eax( R8 t7 ?' K. V W8 K
mov al,es:[si+3]
3 U7 u7 T1 d( G% g. b7 ^6 W call Change: I$ m# ]- m9 k5 i* r
mov cl,4
6 i: G# S8 E$ i5 N2 ` shl ebx,cl
2 h# M$ q2 j4 v* j9 q+ E add ebx,eax5 G% S& y6 l. T6 E" B
mov al,es:[si+4]6 H/ y2 m. ^' M w# o& P3 U
call Change
7 K$ m7 _/ i* K' F mov cl,4
( N6 Z, L! m; k: s shl ebx,cl
$ F6 J) L, H, k0 [7 o add ebx,eax
& G8 D; t* w' ?6 c0 z# u( e3 a mov al,es:[si+5]
: x# r2 S/ m6 V" {% w: [# K+ y6 ` call Change" d% S! d: x) ?. j0 P! P' G
mov cl,4
. S% k& p, v1 M1 y+ d# i7 o6 i shl ebx,cl4 F$ ?' {. w; v3 N
add ebx,eax
2 V& R& H8 h( K9 w( [ mov al,es:[si+6]# t- E% n# D z! r: u) P, }
call Change1 Q) R$ @% d7 M; d. M& @( F- `
mov cl,40 E. W Y2 D! L2 K; B% t( Y
shl ebx,cl
0 R, m& T, ]8 M6 x" n add ebx,eax5 a5 P/ `) ^; c0 }0 L5 w
mov al,es:[si+7]" S1 W+ S* @. T' B# Z: _
call Change) Q7 T: `6 ~; }' p
mov cl,4
* G+ m, |& C& ]7 ^+ H shl ebx,cl3 @" @. }1 i* t/ }3 D% P0 c% q# I6 Q
add ebx,eax" G1 w! y' Z5 f) E5 n) w
ret# V3 ?1 ]5 g* c S) i- H
PSP endp' k7 V9 R: f9 A
;================================================================================================
; o4 n9 I4 W* o8 |9 \DPSP proc near: [" g0 ?, O' U9 r! O2 Y
xor ebx,ebx' Y# ^% R/ ~$ ~+ r
mov si,8ah
* \1 `* k( {9 @6 }, J* o7 G mov al,es:[si]
. q3 U! V8 k( [% V% m/ F% G% X call Change
* l g0 s9 U2 F9 H8 d mov cl,49 A) V$ h0 d. i1 g& ^; ^
shl ebx,cl0 [1 {/ e4 p9 X& U2 Q
add ebx,eax, a6 F" ]: b" k$ i4 k
mov al,es:[si+1]
- r- z3 D8 {: ^" p! K" ^ call Change/ y; J6 f0 i+ J5 P
mov cl,4
* M9 p$ v; @1 B( I8 Q/ B shl ebx,cl% w5 _% v5 Q' p; G/ b! u$ A0 j" C
add ebx,eax% u* N" q7 x0 j" |
mov al,es:[si+2]
3 }( P d: |, K1 D call Change ?2 F& G: \8 C
mov cl,4
5 Z# d* u+ h( u1 X& h4 W shl ebx,cl
6 q! c8 R- A0 t add ebx,eax, h2 _1 ^& n8 W& h2 f
mov al,es:[si+3]
! t5 r6 D' m* B; D: Y8 m call Change1 k% ?5 V+ C7 M$ Z6 A1 d5 ]
mov cl,4
3 T4 A: z4 \, y; s- i; ^& q; q/ e shl ebx,cl9 ]7 A9 q3 Y6 r% M |( y
add ebx,eax
- k" J4 p) P4 a3 d0 S0 |0 j mov al,es:[si+4]3 r% m0 O& b8 J# F$ I
call Change6 j8 S" E& Q& l- q! e/ M3 g# F
mov cl,4
: d5 Z0 @" z7 }9 P. ]) R: A6 J5 U shl ebx,cl
& ]) T* D% h4 C8 p* Q( ~" ~9 k. U add ebx,eax
: R7 U9 M, [5 w& J z mov al,es:[si+5]
% _6 i* s; C/ _; C) X2 a4 X call Change& g. [7 d) B0 z3 p! l
mov cl,4% H0 y- {% o' L$ A O% ]# o4 L
shl ebx,cl/ K& |' j# |* h! ?$ m" {& ^6 L4 v2 r$ K
add ebx,eax
4 p( Q! v8 O) H( P9 U# a mov al,es:[si+6]2 o: L; d9 V& N! C1 m
call Change \, w! E6 R1 Y9 F8 T: I0 C) ?! j
mov cl,4/ m7 U7 [9 V1 e% s U
shl ebx,cl
' Y# D0 q2 F( k" r2 o( c add ebx,eax
/ M3 b. Z9 t4 n" M" r9 F% s mov al,es:[si+7]2 v/ G9 S- G: v( h7 h
call Change3 e3 ?0 _! `- m& m
mov cl,45 `: p% _/ |( O
shl ebx,cl
4 g# f" X3 s% ?* n9 ~ add ebx,eax
& w; T+ ]$ C) P: v3 h# T ret
# d7 y: R# [" {! K) s1 Q, gDPSP endp% R1 v& @) Q1 I( l; M4 d4 h
;================================================================================================1 K$ c$ O' t6 d* `2 R& Q) B
WDPSP proc near
X3 Z3 Y: {, M- u xor eax,eax
3 y& S: A; c; ]) \( H: P5 ?6 h xor ebx,ebx& J+ E# |8 B0 V* g" `9 `% A' ~
mov si,93h, g# J* d" v/ Z( x; c
mov al,es:[si]
' W9 g, k; F E( \$ c call Change$ n) F: l C0 _7 ]6 X7 ?4 v. X
mov cl,47 ~7 n, ~: G; P7 J8 n
shl ebx,cl- B$ j" _& \3 S
add ebx,eax6 J/ V+ V4 o2 [4 d
mov al,es:[si+1]% ]. o. N; I: ]4 d+ w
call Change5 k# [! }6 t- ]
mov cl,44 r$ E. s2 I6 R, x" M4 C: v& q/ [0 Y
shl ebx,cl- W0 ^, { U8 ^ h" X+ G
add ebx,eax
6 ^1 U. i4 ]9 b/ A mov al,es:[si+2]/ A% O1 P5 X R0 R9 S" X: i
call Change6 M2 }4 M8 o; s# V
mov cl,4
1 }" A) ?/ b1 M; n6 i shl ebx,cl
; v/ z6 {! ]& y$ v/ F J3 l add ebx,eax$ V2 k5 E1 U8 g
mov al,es:[si+3]
4 E& ?1 e. r. X3 c% k call Change4 J$ {$ Z' d7 O# T. f q, P0 k
mov cl,4
0 f) ^4 A8 U0 C3 ?, j, l e) f shl ebx,cl/ H9 t( ^2 M; A! X3 _
add ebx,eax1 E9 W, |* ?: s& @
mov al,es:[si+4]
& Y( G# l6 s5 t: p call Change, o( ?8 e6 _+ G: p
mov cl,4/ A* D, C: k! [* b, _+ D4 [# p
shl ebx,cl
- h) R0 M0 a1 ?: \6 m/ ?+ V add ebx,eax
9 i/ k& q, j0 F* H8 r: ] mov al,es:[si+5]6 ]' Y* K2 y* M9 }% Z6 N
call Change# }# v9 p# U. ]
mov cl,4) f. j3 ?+ j' r
shl ebx,cl
. T& S7 L2 K0 [' p, h add ebx,eax6 t' T6 u) \% _) M* V+ {
mov al,es:[si+6]
# ?+ q3 `6 Z" { i I7 `' H call Change; s$ r s( z$ B V
mov cl,46 H9 j; k' V) T
shl ebx,cl
! h: _1 F0 O" Y6 l add ebx,eax
" f8 n9 [1 [1 G6 g mov al,es:[si+7]! X) P: {; G0 P8 T
call Change
# v- O t1 y1 i, s mov cl,4
! ?, ?" y4 P+ e" e4 n7 q shl ebx,cl( O) I- L( k8 w9 I7 r# ]6 a
add ebx,eax$ r( y" ]" g7 P: e( j5 @( d; n
ret: f7 c5 `5 `% K
WDPSP endp
& F I! ~" `0 |( N! q;================================================================================================
! Y5 U1 M- q; w' {( H' `' \Change proc near
. x1 L* I$ ^2 l1 P1 YA:
* e2 V1 |# }' h( l1 ? movzx eax,al
6 @& v: Y1 d# ]7 H9 {' Z mov edx,eax
7 Y# E" U% {+ j; I3 t& b cmp eax,'0' ( W! a7 C( K" K# i. R, Y
jb A
* w, j. J( @* _9 b; V8 {# [- J cmp eax,'9'
' f0 G7 c- z: }& p ja B7 V6 c2 @( }/ U. w, \7 r
sub eax,'0'
! t$ l' |5 u7 d/ G+ o jmp short E' ~( X1 S: K t6 }* c8 m' u
B:
- e" S) j6 y1 Z2 e and eax,0dfh 6 K" C) o* `& M
mov edx,eax0 U0 c3 X) |! A; p* O% Z0 B
sub eax,37h 3 F+ r6 v. S; ^. K( f2 H
cmp eax,0ah
& [( D, c( r& k; f0 j$ g/ t jb A
/ ~% r0 l4 N% j3 {2 i7 R; e cmp eax,0fh' B T, W) s* S" z$ o
ja A
5 Y y' X7 F3 @# G: e1 BE:
( K3 p. ~& V r& p0 `) r push eax
& l1 Y/ E. u% Q# O! S4 W1 i* R call PRT
`- G% _1 q3 q. F& _$ M pop eax5 e- _' _. N6 f, H) s9 [3 X
CExit:& f% p% [$ l/ h% G9 ]
ret& s$ I" _5 w: c6 V, o+ C$ g
Change endp
1 r9 m# h' R- T% d$ D;------------------------------------------------------------------------------------------------
1 p% b. J! b9 h# C; }$ W+ Q, h* P- EPRT proc near8 z, ]5 Q0 ~' ~. _; D6 o
mov ah,02h
& {) y/ q7 c) R* x0 g int 21h
1 b; x2 `4 G- k ret
1 Q3 n T0 q! a1 dPRT endp
3 C. T) ]$ B( i/ F* a7 ^* n0 Z;------------------------------------------------------------------------------------------------8 T1 N; o, c! O+ [+ I" m0 L
crlf proc near. Z- v ?' d& R- x3 E
mov ah,02h
4 ]* G& ?4 k3 [) M7 q6 r mov dl,0dh
- m( K# n; a$ Y8 F int 21h
& c+ W. S* e' F6 g' Z+ u; E mov ah,02h- J9 ~- C4 C* ~ Z: |+ ~
mov dl,0ah
- U0 O3 n) ~" {) O# r. o int 21h+ i" f6 I7 e4 u9 y# q
ret
7 P4 O4 a" I! h% Z& \crlf endp" U7 [3 s: q( R# j+ J
;------------------------------------------------------------------------------------------------& v, C9 E* R+ N' j; ?# p8 L
_32bits proc near( }; Z" j+ }7 s3 o& \# {/ R
pushad
4 b/ H# |0 u1 ]5 A mov cl,4# v4 K# G: [6 z
rol ebx,cl) F, O( W1 T" c9 X. h+ f. ~5 K
call print_4_bits) g% t3 s# ~# j' Z6 W
rol ebx,cl
( O$ [: b* r. i' a call print_4_bits
( M8 u G* I8 }# O' g rol ebx,cl* x; U4 G B& I% }
call print_4_bits; U7 b* [6 G! S3 j; s. x2 S
rol ebx,cl/ q, J$ e) ]. ?3 N
call print_4_bits
4 g, x+ L+ |) [: X+ p rol ebx,cl, H! Z2 o! ~0 g$ M- F) x
call print_4_bits" Y6 ^9 Q' [ d
rol ebx,cl' e5 K9 w d- c0 }
call print_4_bits
5 ^; r9 t$ I1 J! h rol ebx,cl
$ k: S2 n6 X% k" y) Y call print_4_bits
% \$ ?9 A' [7 @- _! ` rol ebx,cl
|8 s! ?5 I0 j# r7 f3 R call print_4_bits( ]( B `6 M' i- z; }
rol ebx,cl
) c/ L8 w& V2 J7 [6 H0 q! Y popad1 D9 J) J5 ?0 |/ ] Q
ret
. h0 @9 A( f8 k% m; r_32bits endp$ P4 v- y4 d, b2 I$ W$ m; B/ D' x
;------------------------------------------------------------------------------------------------
8 H+ f1 w) b6 O A1 C+ i. H_16bits proc near
9 j: G3 O3 i: }4 ~+ [9 l4 Q6 V pusha ( ^# m( B; I8 G2 f/ R9 x
rol bx,cl
* m e; v' ~( r4 Y* U; y. c1 a7 L call print_4_bits/ p, Y1 q' w2 {$ t
rol bx,cl
" x! Y9 }, y% W0 e call print_4_bits; p' W% |+ J( E0 [% v4 p0 }" o
rol bx,cl2 F/ C: O$ M0 W9 V- Y3 @
call print_4_bits
! z w1 R i) n$ d- P( S rol bx,cl
" w8 O4 A0 E! _ call print_4_bits
: i9 M2 L* W$ A: b! _/ v8 S popa( z7 P/ l- R0 m+ [) V) Q0 \6 [
ret2 m# g) D3 G: M8 s% P( K
_16bits endp$ J# c' w! Y8 R$ E9 L0 C5 p
;------------------------------------------------------------------------------------------------
1 a( Q% t" n* ]7 u; j& ~+ Y_8bits proc near
0 r- I O- s/ M) S1 j% z& t pusha
Q5 |# F% S' [% N3 ~/ k rol bx,cl
- y' o+ y# ~4 Z' y8 c, F' X call print_4_bits- _/ W# k# N" @9 q: l3 {# Q; P! e$ R
rol bx,cl+ ?9 u* K4 `" w
call print_4_bits
: }( |0 [- Q0 L. V; ~& u8 ~ popa8 C5 a8 Z. Z6 |
ret2 v8 _) C @5 t8 N
_8bits endp' ]) C# o5 q- r: P
print_4_bits proc near
7 r! Q0 D! u" I, T$ y: r mov dx,bx( q$ r( v1 N- d5 G* [
and dl,0fh
; Z6 n8 t: Y: x/ ^ add dl,30h% o e. F# s- G2 H6 H7 d$ ?
cmp dl,3ah
* G% O% F+ z! W7 Y0 u. { jb print. P& w( M3 j9 n+ ]1 E, t4 |. \% k
add dl,76 C! f$ \0 y) c! z: k
print: ; p3 z$ |! G+ h
mov ah,2
# \ u: V8 A/ ?: E# B2 R int 21h+ J$ c9 ~/ k+ b9 T7 j" [
ret
+ F: d* Q, Y2 K3 k8 [' l0 C( U/ _( Cprint_4_bits endp " [ {) k1 K* D9 c( N8 P, Q3 `
CSEG ends* A t- ?4 y% g( v" W
END |
|