|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)
) ]3 z$ E; ^1 z# v7 Z/ K/ ]
, z. S+ D3 J# i' l" n則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data') B7 H8 y- c# u5 c* Y' S& z
7 ~3 r4 }4 a" Z2 M* m8 ]. ~* p) ?宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
$ J c5 i* M/ N, `8 c3 d$ R9 \4 x0 t/ t! f; ~5 l
.model small
, E" h$ k6 ?2 V k1 U.386p+ f) [7 P* a/ \" s- g
DSEG SEGMENT USE16'data' 3 B8 y4 ~; x5 v {
7 Y% P! ]0 q. {% W3 q7 FDESC STRUC9 Z: |6 H: }& q6 `
LimitL DW 0 9 ^. M6 l+ d6 ^( m4 y" ]) X3 P
BaseL DW 0
/ X& e4 X7 H' p! E BaseM DB 0 % z# I$ P2 R9 r# h" |
Attributes DB 0 . \9 J0 T' i+ x/ U
LimitH DB 0 * u1 }. X I# N
BaseH DB 0 & [/ l% W) w6 |7 M5 g
DESC ENDS
; N, }# ?& V( R' e1 f" D2 ] H" r3 S: Z3 D7 I( e) \+ O
PDesc STRUC
2 F. V. j2 A S2 Q/ }2 D3 @ Limit DW 0 9 B9 m. t0 x3 [3 C9 |* a
Base DD 0
7 x u* p. l+ W' D. g4 \' z) W, s& ]PDesc ENDS
( d; x) v) @' g" ^* ^. y# f( t# E' A- Y7 g0 s5 Z
GDT_def Label Fword3 S& u4 L+ u' L; F. U0 R( _
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>2 O7 u5 c8 `: N. O ^& t# B1 |
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
8 j; V! _6 v# P: A MGDT_Addr PDesc <$-GDT_def-1, >0 C, M# V5 \: W" H0 m$ G
2 c s8 N5 S$ `. `- H/ s6 ^3 z6 q
Maddress Dword 0
2 b' N- I! k- [' h8 E. _$ u5 _/ F3 \) b- j1 j) O# l: v
DSEG ENDS - a$ t$ R, e2 ?2 s* W" i8 H
ASSUME CS:CSEG,DS:DSEG8 a$ M S; @; R0 t
9 Z2 X) D6 F! x8 I' q& C' J- P v9 ?CSEG SEGMENT USE16'code' % ?: E: a% p: Z! ~4 K$ q# y
push ds! e- M3 t4 p1 `, S" o0 ~* C0 W! J
push es. o6 M$ \5 G! Z' W
push fs' V0 A5 Y, C& g& M4 ^0 b0 x
push gs
7 ~) R7 w# p0 d" R3 A) e1 q call big_real_mode
7 x! q$ M& r3 U4 L+ {. u& L, c* i call Get_Commandtail+ C; V# ?# M0 n
xor ebx,ebx# W! k& b) }; q# }
mov si,82h6 a4 ]* i3 n! M* U; h5 l4 ?
mov al,es:[si]
; I+ n' H: N `/ t' S a cmp al,'r', a% p8 t5 F; v; ?
je R! B7 a$ E0 ~) b7 }
cmp al,'R'
2 x2 ^, u+ c) v: `) W F4 w je R
; w. V7 Y [+ g' V: G% G: L7 h$ m cmp al,'w'3 h. a- j0 g. t2 D
je W
- S6 U* T: K+ _9 k. x! D- q cmp al,'W'0 d. s7 u1 a1 H
je W 4 m5 ~( E. P' U# D% q
R:( z# [ X$ I; g: v
mov si,84h
* [, R( W0 h, C7 c mov al,es:[si]
; i" f% H0 ~- n' S9 G- ^( _ cmp al,'b'4 _1 H% P# N; y [
je RBT
) [1 O# I. {! C' Z7 H( \ M7 d cmp al,'B'$ `2 O1 E2 I. b, b! s, ]7 q& N0 F7 K
je RBT
. B$ K# D3 a/ {- x' F% C' `2 W cmp al,'w'
; B- Y3 ~5 V; ]5 W$ W" P( @ je RWR) }3 o% z$ H; M1 F
cmp al,'W'! [+ G3 K" c* r4 _! I7 q5 K
je RWR7 X. N) @! l4 z6 Z8 s
cmp al,'d'
" t, q$ m/ N0 a( C/ H. o6 L je RDR
! F+ T; s; s4 t; m cmp al,'D'
0 a ~4 ^9 n( ]" @' x8 D2 n$ P9 m; Y je RDR
' W. S3 e* v5 M _" n. B" EW:
- ^. R/ L1 T5 `6 x mov si,84h
& |# s" `" ?% X' N+ F: n mov al,es:[si]
$ [3 A5 y6 h+ ?- @5 A* y cmp al,'b'% j' q5 A& z5 j* N+ F# {% @
je WBT
3 f1 d7 Q' _- V cmp al,'B'+ r& @' Q' v! N7 e: k7 d
je WBT1 ~9 N- f4 w3 a1 G# i
cmp al,'w'. b: D; Y& S$ p: ^* [! I
je WWR
! W a4 p! d \* B3 H cmp al,'W'
+ l; r$ ^5 Z2 G+ T5 x2 u+ U3 ~ je WWR6 u# N# _1 H3 n
cmp al,'d'
& r" W5 ?& s$ c v I7 | je WDR; r2 K8 J6 n6 ~" |% Y8 ^
cmp al,'D'' b7 f" t1 S% w9 O" Z
je WDR# F/ t/ {. V! f+ O; {* u( O$ N
RBT:
* U- K# ^: X& y+ X5 d: W$ P3 r call PSP + f- v, v: S. x. C8 g1 I! {1 W8 b
call crlf / l+ ~/ I, N; Y2 T+ B: x
mov esi,ebx
- Q! n5 e8 u) ]& m6 E2 B' D+ m mov eax,fs:[esi]
0 Q: _" e& [" g3 A; P' F out 80h,eax& ?7 e' p3 z1 s& Q" r
mov ebx,eax! M3 O: m$ H b; F0 P9 ?$ E+ ]
call _8bits/ }% Q* i: y4 H" A! y9 F
jmp Exit# G: b9 t3 J j' I* L4 U# a( o% J0 b
RWR:! h4 K8 @1 H5 d% n* Z4 s
call PSP
# m+ ]8 n: |' Z, ^; Y call crlf ) _0 D7 U) n* Q) [ B/ F4 x. L
mov esi,ebx' u7 u( p% q$ c2 @1 B3 H% M- _1 ?
mov eax,fs:[esi]
; X. k4 S: Z+ U out 80h,eax, L( h3 m! h+ I5 B2 @$ r3 D
mov ebx,eax
; o6 a4 }+ d5 |; o# o6 { call _16bits: a. K% W" e% z* n& F! V. ]* O
jmp Exit5 m# x! V! q* K; C
RDR:
0 D( T" u0 c: c, {9 v2 U" q$ w) } call DPSP + l! Q3 J% j& D& L6 P/ a+ z5 w
call crlf ; S) V" Y, I7 r2 b" f1 y
mov esi,ebx
( w3 T' g0 |. C' B9 i+ a mov eax,fs:[esi]
% p. R2 S1 W; l$ F7 O out 80h,eax
% L- Q1 G2 a, t" \" y mov ebx,eax* V- w( M6 N4 e: M" C
call _32bits1 o5 K- ~; U. h& N
jmp Exit5 p8 _2 ?4 `6 v( I& x5 B
;------------------------------------------------------------------------------------------------% k9 b$ B, m4 j. ^) b
WBT:7 t3 x' q! h# z( h( ^
jmp Exit7 Z6 m: c; Z+ {; C% O. z9 O) j7 U
WWR:
0 U% Q" G4 ] @" C jmp Exit+ @3 L( i+ @! I* G! d3 G
WDR:( \8 O3 }) w, o$ I
call DPSP! x4 I# j" Z. K& K" G$ y
mov Maddress,ebx . G% M& @/ g w0 t R7 [
call crlf1 }9 J# Z6 U3 f' P& }
call WDPSP
- Z1 D, F$ p, U8 w/ n mov eax,ebx
' h! Q6 u" c* Z* V w' w mov esi,Maddress 9 V8 L# S6 C4 I( k" t: `- B
mov fs:[esi],eax F V* b3 y6 f, Y8 G- U1 `
out 80h,eax2 S/ ~; N# m" v- Y
jmp Exit
8 R! \* |( _( ?) t# {4 R;------------------------------------------------------------------------------------------------
' e: Y( k! d/ R" C: h2 j' \Exit:
" x4 r' a: t: L9 U1 @8 S call real_mode
( M" U5 G D, q, [6 E pop gs- x5 k! F7 T; ?" v! ` i1 B
pop fs5 \" ^1 ^/ h* K7 ~$ o
pop es
& o& N6 R C/ m4 S g/ w/ D! {% x pop ds " M7 k8 Q- X0 [! o
.exit
4 p( d D* h Q: ~+ E;------------------------------------------------------------------------------------------------
* c7 j$ `' {+ n' C& sbig_real_mode proc near
/ i* j& |5 |6 e- c in al, 92h' u2 B- L8 \! q
or al, 0024 {- w" S2 P" g/ J
out 092h, al1 J+ s6 Q2 z1 R- E9 t- a" A& Q+ F
out 0edh, al
7 r# ?: G; e# G; s# j cli: |6 y$ S( D( O+ b5 C3 }7 }8 R% a
mov eax,DSEG+ s* ]7 w5 F0 D: P$ ]
shl eax, 4 A! C4 c. i5 ]6 n
xor ebx, ebx
/ l, f1 z: u: o" O mov ebx, offset GDT_def
# j' G5 A+ r# c; f8 `( W add eax, ebx
" O1 h& D/ j9 ~+ g mov dword ptr GDT_Addr.Base, eax
$ g* Q; C! s: u; M lgdt fword ptr GDT_Addr
0 P, D( {/ I6 H: r+ H mov bx, 8
h6 m# S- d; w% a# L mov eax, cr0
. s) N; Y4 R- z! B2 ^9 N7 V or al, 14 l' E( w& ~/ p9 h
mov cr0, eax
5 l1 U; r+ Q; a1 n! t/ I jmp PMod
( l& P* h7 F9 ?. ~% v' A2 E3 aPMod:
8 M9 ]/ [& _; K mov fs, bx
: ~6 b4 T, [4 ^' t$ W, [ mov gs, bx3 Z& I& |# e0 ^) M
mov eax,cr0
~% u8 {6 F; T6 A0 j- O8 f9 Z and al, 0FEh3 l1 N- B$ C, }
mov cr0, eax
2 Z/ z) g. _2 \' s jmp RMod
0 ^) @& U' ?- d6 x( J$ HRMod:: i- `: `$ Q2 k, {4 W5 R2 i
xor ax, ax
2 K, J9 T/ |5 Y. B, {7 I mov fs, ax- [$ z$ {% ]9 f7 A% l+ n6 ^
mov gs, ax 8 j$ F% b' r' d! s3 V# M
sti / I' T7 Q/ E; C7 |% e- I) Y3 ^
ret
& U0 w0 F4 ]( C* i+ Nbig_real_mode ENDP
$ p, P/ h3 \8 E C+ l! @3 r/ m;------------------------------------------------------------------------------------------------
: |3 z' P( p- L8 e) q- yreal_mode proc near& N7 J/ _2 e# P1 R
in al, 92h
. I- L" @6 G5 \; `7 @* P8 K* i and al, 02! k5 ^. y. |& y( j- f5 T
out 92h, al 7 W. l3 k9 U+ O# Y6 b2 i: G
ret
1 m7 S+ n4 t) Nreal_mode ENDP
! x* ^2 ^$ a4 p. P/ w;------------------------------------------------------------------------------------------------
+ u; u' W4 i2 [1 d2 nGet_Commandtail PROC near! Z+ a1 h0 U1 c+ e( K
mov ah,62h ( \- `6 }* I" W4 P& D
int 21h
5 V' V/ x% g# @! G/ W mov es,bx
# [$ h- N, D" {1 x# N ret
% n G: D' E) ?( ?- a4 n6 v) W% xGet_Commandtail ENDP , K( F, J4 x' Y
;------------------------------------------------------------------------------------------------
2 A$ g m1 Q6 G: ZPSP proc near
0 f J3 q& }2 Z0 q6 w2 j; @ xor ebx,ebx
. y# k& G6 b. B mov si,89h- j2 x- G6 u* N3 e
mov al,es:[si]+ r% N! h4 b; G# t) o. z
call Change! o9 x2 e; `4 E$ ^, T. z" O
mov cl,4
4 S" Y1 X$ \0 B% F- I shl ebx,cl4 E3 C$ J t$ K* K- p$ C
add ebx,eax, `: e7 C" S& n0 F" y9 I" K
mov al,es:[si+1]
. N; x# y$ Y( O, J call Change
/ H' F. O6 b5 D8 o# Q4 }. G mov cl,4 W# h- k) f: ?4 L' v& e
shl ebx,cl" l& n! \+ n. z& z* f1 P1 R4 W. l2 x) Q
add ebx,eax/ z( A$ I3 r8 t# g* z
mov al,es:[si+2]
6 C6 c; ~; O0 a+ V7 b4 J, [ call Change
9 {. i6 e. U& g, c5 {" j2 ~: F M' q mov cl,4: k9 e. h9 v/ Y6 h8 u X5 D
shl ebx,cl" ^! Z+ r' ?" H" {$ X% ^: H7 E
add ebx,eax
: _* x4 F3 f! ]) h5 ^1 m) w$ V/ | mov al,es:[si+3]
# ^8 d! ]3 {7 d2 J7 B$ \ call Change# T5 C' A$ e% N$ Q+ Z& I( N
mov cl,4. X3 y9 u+ d0 w
shl ebx,cl* d' F2 r$ u( R; v7 o: A' ?8 t
add ebx,eax' ?4 N+ Z- x$ ~: h- V
mov al,es:[si+4]! {/ A, Z2 z2 i; q k6 e4 w, L( v
call Change0 ]" J* F X2 e3 L* G5 H
mov cl,45 o" E z. Q6 y& o4 u
shl ebx,cl
' Q1 {( x& e0 Z) U add ebx,eax
3 m$ M( T- M, ?/ u7 x6 |7 F) a7 I mov al,es:[si+5]
1 g8 O* S$ E( m# f' P6 G' a" d call Change. k% k6 [, T n! z% l- R- j4 U9 z
mov cl,48 h t) `2 L8 b% @
shl ebx,cl
/ `* C8 I9 Z, R7 I( X1 `9 i add ebx,eax& k- m$ R7 W( E% s7 z) \% {& j
mov al,es:[si+6]& K$ B5 K2 @1 o/ ]( ~
call Change" {& V, S" o% m0 J, J p! g
mov cl,4
0 _# e4 U( ^0 R1 ~7 Q, C shl ebx,cl
/ w9 @9 d+ {3 ?- J6 V add ebx,eax
# S+ Q p! {4 s" Q1 A mov al,es:[si+7]& A' C% j L( ]+ S0 R# B
call Change
9 w* u7 \/ L# R# g) q3 C mov cl,45 G+ l9 y5 A. |$ W! U! R1 h
shl ebx,cl
4 u2 s3 i3 v3 w& E S( m add ebx,eax
; ~3 k& e( l$ f8 c0 I( y: \/ W ret
) m2 F. d' |) k+ H- p) |0 nPSP endp
2 U$ v H B6 J" f;================================================================================================4 @& Q5 ^) p. B$ N# Z% q
DPSP proc near
+ W. z; q6 {- F# w6 u; |$ n xor ebx,ebx
% ^( m6 @( T6 j mov si,8ah
6 q9 _7 B" p5 f6 X1 W mov al,es:[si]
' z& \/ h8 `. |. e0 Z, a call Change
: E8 ~3 V' p w/ }5 Q0 G mov cl,4
0 E8 ~* ?% g( |8 O: i shl ebx,cl4 R I, A5 f6 F, C* h
add ebx,eax8 E- O9 N4 |8 e+ t) d# f3 j4 |( E2 S$ y
mov al,es:[si+1]
7 U6 x) U5 |/ h: b3 U7 ?/ f call Change9 K9 U a2 }7 k, v% m
mov cl,4
' G, E; ^5 c& c- k1 a shl ebx,cl: R2 P T/ c2 C0 p; a0 Y0 f
add ebx,eax
1 L! B3 n1 ~" o* p4 Q, l mov al,es:[si+2]
: F2 T4 a+ u0 ^ call Change( k& _& Y. h/ i! }0 O) P5 |
mov cl,49 B9 H( t; t3 ]& o
shl ebx,cl) G' g4 l5 d0 J3 R+ q
add ebx,eax
9 t7 O( g( e& V% f mov al,es:[si+3]
3 {9 N; r e, _( O' { call Change" S D2 k4 N$ }) p, i
mov cl,4
. \5 \; b/ a1 R3 }8 E4 x shl ebx,cl
- O" e& X# Y' t% V1 G add ebx,eax; z% h0 u2 _$ Q. q( s8 p
mov al,es:[si+4]
: y" A; |; e, K call Change6 k4 t8 K7 u2 w. r4 o5 Z
mov cl,4. [* W# L7 ^, k; N, I- T
shl ebx,cl# H& K- K& a; d
add ebx,eax
% U* U& u, p" E0 D ^$ B4 j mov al,es:[si+5]* [) a! J o' X, ?& A$ e( E
call Change9 f$ `& l+ L* Y4 i
mov cl,4& S$ B/ `# P/ Z
shl ebx,cl
. t5 ?; n2 ]8 J7 {+ k, s) _ add ebx,eax
% T- q' q, f% ^- o) E4 v9 e( d mov al,es:[si+6]
$ b" r7 ]" A$ q call Change, L8 R9 U( T& H
mov cl,4
( P% J; L0 k& l, z shl ebx,cl) f+ O- t \$ C2 D+ n( }- B: P3 Z
add ebx,eax7 E0 J: j4 S! Y/ ]
mov al,es:[si+7]1 X& F+ c- C2 }5 s( _
call Change& u( X* `" H; [$ v3 f. o9 o2 K
mov cl,4
8 v; `& C) R% ^: J+ Q& H- Z' d shl ebx,cl
: _& V$ C2 W( x2 K2 _5 p add ebx,eax/ K; R% h; D5 o: B3 \; Q1 D
ret1 h# L/ U' K( v* _8 A. v% s
DPSP endp+ q3 F: r# n* j. x3 c
;================================================================================================$ Y# K/ j- t6 V6 R+ I( Q8 Q
WDPSP proc near% L# v8 N( D. {5 W
xor eax,eax
4 w' i- X) M% x8 R) J9 L n* K xor ebx,ebx+ C; |0 f; H. U
mov si,93h% }: X& A p+ F' X2 B( q: ~
mov al,es:[si]
/ a% w, b H' a+ D$ o; ^" J call Change
& y1 u1 ~# A9 F% J8 x! Q mov cl,4
# y- ^7 V7 e/ Z1 m+ L. H shl ebx,cl
5 d9 ^1 {- q0 n5 ^ add ebx,eax% J: _# {& w4 G) a' }
mov al,es:[si+1]
4 C4 i R; G6 g call Change9 b5 v3 S; b+ J4 \) Q$ s& n
mov cl,40 D1 d1 j# a8 f
shl ebx,cl+ i* E3 L3 D) q# |
add ebx,eax
2 O w3 {& K3 C mov al,es:[si+2]8 }5 M2 n! p; f4 l% p8 x
call Change
7 X8 H) ?- |- _+ V mov cl,4' P2 E+ }+ x/ A( h# L+ F- \; D. v
shl ebx,cl8 q) o. W# K B6 R3 A* M/ v9 N
add ebx,eax
9 S$ ]' I: P+ S mov al,es:[si+3]
* ]% W2 F6 _+ C" n- ~# S. i call Change
1 `; _8 c+ F) ]: [1 u! Z* | mov cl,4
) X6 o O# P+ ^8 L6 r( C% v shl ebx,cl
3 Q) U( y/ J2 l; i% R/ v add ebx,eax
# i/ c ` w1 R mov al,es:[si+4]
/ ~# K) j: ?# d6 F2 f1 |& o4 C3 b$ P+ g6 |6 T call Change# p/ p- D# L. v; ~2 e
mov cl,4& { p, `$ n% [7 V& I3 j
shl ebx,cl8 ~- |1 w$ @+ k2 t" e% e
add ebx,eax( D! r- p1 ^8 W) c, o
mov al,es:[si+5]
1 }6 _5 O: U8 F3 V% Q call Change5 E3 b" D) Y: k% s* ~
mov cl,4; b8 c" a2 b! x" i
shl ebx,cl n' G7 d' E4 K2 f
add ebx,eax# H+ W* U# x7 q' I) q9 X0 j
mov al,es:[si+6]* ~4 f) E4 T/ F/ f# d) e" y, n
call Change0 Y9 M% t( x; z# N/ D$ y1 j
mov cl,4
7 P8 }: M! K. N! H! {4 x& B shl ebx,cl8 g! N) t ?0 C5 n" e" @
add ebx,eax
1 D) `& v+ p7 Z- f9 M* R mov al,es:[si+7]
( k% ]8 L# U- p" O3 D3 m, g; }- ?5 S call Change6 j2 Q+ g4 c6 }, m" e, z
mov cl,4
, f ?0 x2 u! D2 ~+ D shl ebx,cl/ O5 }4 d* H# J+ K$ W
add ebx,eax
8 d6 r. j* y( z$ z- ~ ret
& a$ o/ N. e6 X- P* KWDPSP endp7 v5 \; ?. `' u
;================================================================================================
5 x+ T; B e( P EChange proc near
' L+ a3 x. ?, W' ~A:
2 Q y( p3 I5 F, A6 d& R movzx eax,al
' J; U8 N$ ^+ X3 L' L mov edx,eax8 e& [" ~2 |& _: E/ l
cmp eax,'0'
& {2 @0 E" d" I7 f% I1 C jb A
- k5 ?3 o e: }0 M cmp eax,'9'
( i3 `' J5 | D) ^0 v4 P+ k& }' Y ja B8 _8 V! `# D9 s4 r1 _
sub eax,'0'0 m, ^* V) M( r
jmp short E) c8 Q4 o8 ]4 c* H. a9 E4 h" B/ M
B:/ m6 T$ C; R9 i* n3 e' Z
and eax,0dfh . W. {& p2 ], x! H
mov edx,eax
9 s/ Y2 w3 w" f: d+ b. s3 W5 g4 | sub eax,37h
' K+ N+ Z- Q1 Q* V( b, T cmp eax,0ah
7 j9 F7 n1 K* c+ z jb A
$ n* y: l& N; y" a" F/ u cmp eax,0fh
; T# k& }* s# L; V ja A
4 ~8 m2 z" i4 E7 u) lE:1 j: i* |" m& D8 u
push eax
- D3 \; ^( X- e call PRT
5 |; e8 X. E$ s pop eax
. A, ?, a0 v0 I- `) JCExit:" P6 P% t9 V, ^; p% z r: y
ret
: K1 D/ i5 q5 P7 }2 g8 p: VChange endp
, I' @: f7 a. ]3 S3 j;------------------------------------------------------------------------------------------------% e. F1 p! F# J+ d9 q
PRT proc near
" h( v5 E) K; i/ | mov ah,02h
1 f/ M9 b# ^- p0 e8 b' M int 21h
7 e [. P% m' P) i& P/ e" Q2 @ ret
/ `( K0 C/ l- N6 e5 |PRT endp- a% g9 V1 F# _! {
;------------------------------------------------------------------------------------------------. E- z& g9 ^! T- s# A% u2 V' y
crlf proc near
# ?+ S/ ?3 H( }- b mov ah,02h( Q f3 a, R ]1 n' g3 v9 j
mov dl,0dh* C) \( @/ X6 }/ S& ~' Y1 O
int 21h
% J. R, W+ R# }: A5 Y ^( u# \ mov ah,02h0 _ {4 e# N& Z* j' u3 V
mov dl,0ah
* e$ V U( p- _: x int 21h
( E. R$ O, k! t* b% A ret ?8 c; U3 C, b% R D" U3 [
crlf endp1 N; k1 @/ t( c, k
;------------------------------------------------------------------------------------------------
8 b; p- a6 D* h8 [! a, {6 Q_32bits proc near
5 \4 e" C3 _8 b$ F$ I0 g pushad
. I9 l; d: H- B+ `4 T( |9 C4 {5 ~ mov cl,4. o1 U$ \$ C# |9 d r+ V' ?
rol ebx,cl6 L% [2 e; F! x
call print_4_bits2 B6 C9 `0 h, w$ G& Q+ u0 r* B0 U
rol ebx,cl
" N" m/ h( O' J f2 F: K5 w0 U call print_4_bits
. F( f9 c! ]: q+ b( a rol ebx,cl; G. H' p) t, [% W% ~# g0 ?
call print_4_bits1 p' B) a% X( n7 W+ k
rol ebx,cl
7 _. g! ?8 R; o4 I& y call print_4_bits6 b5 M; W* A9 k3 P R: r
rol ebx,cl3 {3 W B( \. E' _
call print_4_bits
/ n' `$ F) x7 }& m2 O( f rol ebx,cl1 X9 k+ m/ s( ` r R
call print_4_bits
9 m9 T, ?$ o7 M' L$ U$ c rol ebx,cl
" e/ I) `: P6 Q call print_4_bits1 q/ M6 `3 F" |
rol ebx,cl* v/ P ~( W, Z$ d9 Q+ W. n
call print_4_bits- S( O$ b4 A" ^6 q7 N. R; L
rol ebx,cl
: c2 U! \% J9 ?! p. x popad6 ?! s. f' g0 B6 Z8 c* X( S
ret z |. k1 [& M2 y* R# e5 H9 M
_32bits endp
- X! @9 q7 Y. h1 z) a. _9 u6 f# f2 w;------------------------------------------------------------------------------------------------ k# @2 R1 }# |5 L& [/ P% k
_16bits proc near
! m/ v0 F3 w0 {1 ]) ]% z pusha
( } l7 W$ q1 G; N3 U rol bx,cl
! e( o) I/ m2 J- E1 u+ E call print_4_bits1 W. Q- s. }* {8 t
rol bx,cl
2 E/ A/ o1 T9 o N# U call print_4_bits% A1 o2 o( h8 ]2 b& y Q$ k B
rol bx,cl+ J2 `+ x. q: V! F: M% H% b
call print_4_bits
* U* L3 L1 C( J9 Q& D( v0 K: q rol bx,cl2 \$ H6 d- W' o1 w
call print_4_bits
- h4 }/ E% h8 y1 S D popa g1 z& {1 N4 E4 I" ^/ S; f6 q
ret
9 f# h, ?. ~) M q. P_16bits endp
0 i4 f4 V# {4 G" }% k;------------------------------------------------------------------------------------------------0 N# t3 x- R, W* N% P
_8bits proc near
) y0 y# O y7 F5 Y pusha
1 e1 j- S- G R1 }: A: c/ Y P& V rol bx,cl
' ~5 ^ |! Y' D& n7 i1 X2 T, | call print_4_bits
) K: S( T! D1 s0 B rol bx,cl
; S1 E/ j; H* b2 G& h; S call print_4_bits
9 v. t1 M, j6 K! H0 C popa
' p2 n( Z: L P$ ?* z ret
1 ]) U" T0 A- ], A7 {/ ?% k_8bits endp
# G# i1 l4 M& n5 w* X Y; Cprint_4_bits proc near
7 X, a! B6 |" Q5 Q2 q1 t mov dx,bx1 g! J$ z+ i+ |. n( k
and dl,0fh& g7 U% d! F8 e3 q- e% H
add dl,30h
. i- l9 j! i% g, D% Q cmp dl,3ah! @5 R, z. B" x/ o. T
jb print# c, h4 k9 y" [6 R# }
add dl,7
2 W* t- X; S+ Aprint: & R# M" {$ |1 p1 |0 ^+ H. E
mov ah,28 G3 F8 _% b! |% I
int 21h! v4 R; Q* o7 D& i
ret- y) b! f: M0 D. O
print_4_bits endp 4 M8 A4 ]* b1 {. E$ e
CSEG ends
& e+ ^% Y! S8 t& BEND |
|