|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)
. g. }3 P* y- l9 a, k3 d" b! n. ?* z! R* t5 R8 j# ^, E3 Q* M
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
6 [- ?2 e% p5 H: z1 o8 s
2 U1 o5 h: m. Y& y }5 T/ V8 I宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
+ ?4 W" b+ A4 ^0 c1 G! g( p
8 B$ T M* a( M1 t+ [0 y1 O* n.model small
4 t7 I; h+ ]7 B/ L- I8 V.386p
, j7 ^6 e4 y: a3 V8 y* v' j, YDSEG SEGMENT USE16'data' 4 r3 Y7 M1 S. t( C ~! l
G) m6 n7 h2 tDESC STRUC
( g; d7 v+ n1 e% y/ k0 x) h: D LimitL DW 0
, V# D y6 W9 t6 m8 r5 V& B BaseL DW 0 * X2 N: W6 t' }6 H* S7 D# z
BaseM DB 0
4 K, a. F9 g9 ^0 ] Attributes DB 0
1 l2 E; b$ n. y$ i2 P* Y' [. [% b LimitH DB 0 " f1 @3 W3 [( N4 v, T
BaseH DB 0
/ `5 o0 [& ?0 l SDESC ENDS
, N# V7 s- l/ E7 W, W) |. r7 \/ {" j$ _, o, w
PDesc STRUC# S; q, M8 V+ j* U
Limit DW 0
' z# I1 l: p' G# s! k% M Base DD 0 0 C8 k4 j( |; O, `1 x
PDesc ENDS
. m, E5 J; T& C6 j- C$ P0 b8 A4 M: B3 {6 ], _0 V: ]
GDT_def Label Fword; Z# B# i7 D# `' h! q5 e8 I
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
4 I0 N$ b# p: d wData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
3 G+ ?: z# ~* G y' g DGDT_Addr PDesc <$-GDT_def-1, >
! u& o. K; w2 ~4 p2 b: r8 _9 i+ a; f' M K ~ C5 u& J9 L
Maddress Dword 01 s3 ]) _: f9 Y4 m, C
R4 a! K& E/ Z$ x8 K6 Z; S1 Z
DSEG ENDS : C, [, I% r$ H2 Z/ K
ASSUME CS:CSEG,DS:DSEG* l4 G" M( o5 W, b
* P+ E3 c( P/ B5 G! s/ C; u
CSEG SEGMENT USE16'code'
. m* U' N! H3 V# p$ \ push ds. L$ ?8 m* X9 l* B6 m
push es/ Y# [0 `8 V, x& }
push fs( _8 z4 X7 s6 ]0 Z
push gs
+ ?% L. n+ t3 q call big_real_mode " C! H2 [7 F1 D) d0 |
call Get_Commandtail
t& b4 i( D l+ ^( B xor ebx,ebx
3 m# t# K6 j% ?. k D& l- H mov si,82h) {1 r* z9 e6 ^+ ?
mov al,es:[si]+ s* D |, W! e; M$ R
cmp al,'r'; R* ?( S: x4 m* V7 ~8 e/ j7 T
je R- K* i) w: v) Z8 E
cmp al,'R'
8 E- r' T J1 C je R
, ^8 L& ^ b2 H! [+ f* X* t0 \' j' f cmp al,'w'4 J8 v i9 ~3 @( g7 G9 A
je W
# W x# R: X, w3 w- L& M7 c cmp al,'W'
/ y+ H0 [1 |) S$ w4 l1 q/ | je W 8 O& K/ j6 X, t4 C0 i* L0 {! |
R:# V! z- ]" ^3 a9 W2 D3 c
mov si,84h2 h; t+ x; l! f. T# V7 ?$ q
mov al,es:[si]0 W+ c1 P! P; r* }3 R
cmp al,'b'- q& U5 D7 d ]* d
je RBT! P+ V: _$ A* u1 \* y: S, \& E
cmp al,'B'
2 ~ D- r& R; z$ q3 z; [' t je RBT4 @4 ?% Z6 }/ k" c9 S
cmp al,'w'
; O5 V) J3 Z: N2 n- \4 h6 E$ G+ N je RWR% o( q/ A6 ]3 A% g- M
cmp al,'W'5 G4 s3 I9 V# G' J1 c
je RWR7 j% p) G$ Z- m
cmp al,'d'3 `: L4 n7 C j) S9 V
je RDR' z- G- `( r, \: r' A+ h
cmp al,'D'2 H4 Z! z8 o7 f9 x6 Z& N0 ~: f
je RDR 4 ~+ Z# B+ T% V" R. I }% I5 T
W: / W0 Y4 w- a8 T# B8 z/ W2 n
mov si,84h* d! S& v( W, }
mov al,es:[si]. V! e% X' p: e* y2 w' ?
cmp al,'b'
; n8 @/ ]# \! c) w je WBT
( x! y @: Y: B. q: P) {5 A( Y cmp al,'B'5 E; l5 ^1 M: k
je WBT
* S! {7 K! G$ s. _ cmp al,'w', U$ a' z7 D: K
je WWR
; k5 @, _3 ^9 R1 C cmp al,'W'
1 k+ N* H5 z; b: l$ ` je WWR" u8 t, ^& A6 F! x% l1 \
cmp al,'d'+ p/ f1 u( }9 U1 Y* D
je WDR1 n0 c; n% ~/ f$ v5 V# ?
cmp al,'D'$ W$ h' U+ k# J/ w6 b7 A1 a
je WDR
& [; c5 L8 p. J) A3 Q7 {. |; nRBT:4 P; e6 N" }: a3 \/ f
call PSP . e: \$ E- w4 U+ K7 }) i
call crlf ( |9 q- Z0 X" ?2 x: z- l
mov esi,ebx
0 x/ @" b# S3 ]* N9 P4 a* @ mov eax,fs:[esi]
% b) U& g: J8 j8 H0 Z$ E% ?; x out 80h,eax
1 B5 O6 n' ^: n# ] mov ebx,eax6 l/ O% C* e- H) F' G1 s( L
call _8bits/ e4 f+ u, N# W; n. F
jmp Exit5 I# @8 i4 c/ F" e
RWR:# S& N' p& ?7 m1 F" F# g
call PSP
& G, X- _& L% F1 F; ] call crlf % O9 A1 `6 x, D; ^
mov esi,ebx6 s% m5 T9 }6 }$ |1 G3 y8 u! N
mov eax,fs:[esi]
% S0 w: p2 I1 h, W out 80h,eax; l7 E+ o6 O. Z: a0 }
mov ebx,eax' b( {0 ~3 Q* Y
call _16bits
( }( q: [! P& d8 S' c% `; o) a jmp Exit. I1 o4 c8 u5 H. ?( ^ B+ E# c& p6 u
RDR:
% j0 ^6 l2 J: p9 e( K call DPSP 2 u% i( ?5 T# r( U. ]* ]- U0 B
call crlf ; @$ U3 A9 k. w; F
mov esi,ebx
$ ?0 d, z U5 x# ~! }- X8 L mov eax,fs:[esi] L% S- q) o3 T7 }
out 80h,eax3 A( `. Y- _5 q! Z" j
mov ebx,eax
M8 _# q4 X6 g" j call _32bits
7 k! D* Q/ d% f3 P; O jmp Exit
+ k$ O5 t7 K" G1 C" h" A8 f c;------------------------------------------------------------------------------------------------
; ~) {5 ~9 C: _4 S- v1 B" DWBT:
4 _ M4 L$ N# I/ U: Z3 F. K+ O y3 I jmp Exit. a* R9 i: }! i7 z9 V
WWR:
, M( Z0 t* y: R6 b( p0 |+ q jmp Exit5 M4 u& l/ L/ K9 s5 S( O
WDR:
]! k: R k9 r3 X4 D call DPSP; }9 p7 v0 C0 {. k2 Y4 r
mov Maddress,ebx
7 y6 K$ ], |6 t+ l" j call crlf+ k5 u, N+ W; t, G7 N% a! |
call WDPSP
7 J. p; G- q* F mov eax,ebx6 N% z/ x- K1 V& ~1 m: i) I, v( S
mov esi,Maddress & I$ V0 D* T% x Y
mov fs:[esi],eax) Z; ]( K( w+ X
out 80h,eax7 M9 |) \ \$ \* W: T, C/ c( c9 e
jmp Exit
( h7 B# O7 S3 Q- N, K8 N" N) g9 T;------------------------------------------------------------------------------------------------
. ~, D- J( ], c6 _+ JExit:
$ F0 i. o6 p! [ call real_mode ' m* Y8 `- r1 Z0 r4 u
pop gs
, N) W i( K& C# y( v% o# k pop fs- t! s* h& i0 i5 S' h9 v
pop es( \5 N* N1 U% a9 i1 V3 s
pop ds 2 w8 S8 i( Y! `0 B1 R8 Y: Z
.exit
6 S+ t: g, B& \/ v;------------------------------------------------------------------------------------------------
I9 _2 c5 p3 Rbig_real_mode proc near+ o5 L0 f! m: V9 x7 Z4 S
in al, 92h/ A. f9 v, _- N1 j+ S# h
or al, 002, a, l% m. {% J U0 ]$ k
out 092h, al/ K' G8 E- q. L3 t/ Q1 _( @% d0 K
out 0edh, al& J- A/ a' r: t" Y, o# E0 V8 W1 h
cli6 I9 I7 }, w# { h b: W, m5 H
mov eax,DSEG8 e# j) S3 Z- u! z8 f9 X& T
shl eax, 43 G1 m, y* }* o) j
xor ebx, ebx
8 o1 U& ^1 ^2 e: V% i& O mov ebx, offset GDT_def+ k: G" y' K) N9 E3 X
add eax, ebx
" y. u' r3 j6 ?/ g7 a/ @ mov dword ptr GDT_Addr.Base, eax* c* V9 x4 n8 i
lgdt fword ptr GDT_Addr
" T4 Y1 w; I7 G mov bx, 8% @9 u$ i2 ?- T( _& N
mov eax, cr0
s4 Y. F" Q, g% ] or al, 10 V. V6 `3 x# E7 f
mov cr0, eax
! y/ w6 E, T' h H7 ^ jmp PMod
9 v- j1 B# |5 ?5 B6 [PMod:
( ^ t# v& Y) G7 d' W) p5 r mov fs, bx7 x3 d1 I9 K) s' W
mov gs, bx
: y. q7 z! Y5 E, j9 J+ Q* [ mov eax,cr0
5 b9 R8 J _" j; v* }2 r$ e and al, 0FEh
/ Z6 c/ R( I+ F5 I/ g mov cr0, eax % H& ]+ e! T/ x9 h4 Q; m
jmp RMod% D' d l) y9 e9 Z1 O: W
RMod:
; h. s: o% a; m; N5 j xor ax, ax
$ F N( t% _$ z# g mov fs, ax1 S( r; L* i0 `
mov gs, ax 9 N: n" e$ Y5 X3 M3 C! T* G/ Y
sti
! r: m5 [- k1 x. t& [$ @' v ret2 Y1 s3 f k, r: V6 b% x: {, c
big_real_mode ENDP& T4 C C9 Y0 o$ w2 {
;------------------------------------------------------------------------------------------------ M, w- x; T: m G J* M
real_mode proc near
/ P# c6 O5 [' M in al, 92h
0 E- O( r6 A0 L" {4 P and al, 02
8 Z) k6 n0 y0 m/ ? out 92h, al
+ c# ^( Y$ U3 j# u) y" u/ O/ r; c( z8 l$ `& T ret/ |9 f' {. m" h* Z4 x3 Z/ x2 p
real_mode ENDP
1 p @9 S* X' T: [) @& d;------------------------------------------------------------------------------------------------' A# E( E [$ Y. ~& Z2 Q3 G
Get_Commandtail PROC near
5 z$ k. k# ^2 \7 ]" t- u mov ah,62h 2 I( [8 a" X; ` o" C S v
int 21h
6 j( ^; n* \+ T+ s5 {5 H) M mov es,bx/ B6 T# z- |1 _+ ^. Q. _( H* w- n
ret5 e; f S& C" n2 N- W; W6 G& _
Get_Commandtail ENDP
3 j' C) W. e S! \* `9 Z;------------------------------------------------------------------------------------------------' K5 Z( q2 f1 Y7 H4 |1 ?; j
PSP proc near
- k; C" ~9 F3 Y. h+ C, O xor ebx,ebx
& @8 Q" E3 _! X8 f9 c mov si,89h. Z8 @- r" W. S; T
mov al,es:[si]# W) M% d" l7 x" q5 ^! |; o
call Change( j2 m3 s/ H" M$ ^! N3 d5 v4 E
mov cl,4
' \" N! {1 u2 q" ^ O/ J! L! _ shl ebx,cl V7 N: A+ z( u, d! d6 E+ e
add ebx,eax% m, M, K: e3 i/ y
mov al,es:[si+1]* |; ]4 F7 `6 Y8 { ]
call Change* B8 G" _$ s9 a r" }
mov cl,4
4 j- R9 x! w2 k8 x2 Y* x shl ebx,cl8 C3 F4 o1 `: j/ Z
add ebx,eax
" A7 ?5 ^3 a; o6 v/ H. v mov al,es:[si+2]
* m* j$ C, Q" M0 [5 ]8 D9 S4 z9 g" q# J call Change! t# T0 ?7 P/ s. a# b1 h
mov cl,4+ S# m7 \5 z5 E2 A
shl ebx,cl6 }+ c; g! O1 \7 h. A; M: r: F
add ebx,eax
8 C8 m6 E* r5 K mov al,es:[si+3]1 @, e, p4 b2 l' D0 I
call Change X" {, J: B* Q3 R7 v" O
mov cl,4
! ~! K9 k! U+ R1 r' x shl ebx,cl
6 Q: x# A* h9 S add ebx,eax& y8 u+ L, @1 q. z2 w
mov al,es:[si+4]
9 c o- m" k1 S. M U call Change
9 o& S4 {7 R8 D# f! `8 d# o mov cl,4
( h$ \; |. [0 X, o' p5 P' W shl ebx,cl3 s# Z' ^ ]- E' a) v
add ebx,eax
+ _) p/ T1 E% G+ f4 U mov al,es:[si+5]
9 y% n& ?6 V' X% G# i1 ] call Change
[, v9 z# ~2 C N mov cl,4
% ?. A- k7 n F) c. b9 ]' L9 [ shl ebx,cl
1 P/ s: p' s c add ebx,eax+ F* |" h e$ j$ Z4 _- X
mov al,es:[si+6], s& \" L3 M* |6 X, H
call Change6 x* |1 s) i* Z0 o: [1 F& q! l
mov cl,48 D; r. L+ m v* I; @6 U
shl ebx,cl
9 [- c% R& f+ z; H/ c! {: f add ebx,eax
@2 L8 D- n$ w# W, t8 H, } mov al,es:[si+7]# T6 M2 A, {9 r+ C5 b8 \
call Change, M2 {6 I+ X2 o
mov cl,4/ U0 K/ U: n# d2 w; k
shl ebx,cl
* X* w. X9 S& i, ^ add ebx,eax5 H R9 \% O: R) l* k0 n+ Y
ret2 u; E: A9 {& x
PSP endp! F8 S1 Y0 h) e' i% I; C! Z
;================================================================================================
4 f2 b( O( D: K5 j; EDPSP proc near7 ~- Y [7 |8 h/ X
xor ebx,ebx) g( m I* X. v% T) N
mov si,8ah$ Y" [) u. v$ N8 f
mov al,es:[si]
0 _2 p% H" i& Q* j# k call Change/ j- @3 @4 `* v0 k) O* |
mov cl,4" N8 Z0 e( s1 g7 u; H
shl ebx,cl- J% ?/ Z# R( Q" F% @& c
add ebx,eax
, P. ~2 o+ G P- S! x t mov al,es:[si+1]
( O, m- L( l7 H5 W% P1 ` K call Change
# T( O2 p4 q6 y4 ~. a$ g mov cl,4
+ j" `% U7 d& L4 l3 {( l- f shl ebx,cl
! _& L: a* {4 z( y! x8 d& n5 A: m! v0 b% p add ebx,eax
7 E6 w3 k' E8 g5 j" p: @! R mov al,es:[si+2]
( C9 P5 _" E1 i3 p( m! x( g" F call Change
/ n9 `3 E( A. O+ R mov cl,48 U. c0 B0 l& Q" m
shl ebx,cl
; R- m- |* I3 g: R+ y( v' T& \, H add ebx,eax
% ^8 h; G* a) y3 I; O; e+ n mov al,es:[si+3]) t7 C8 [7 o g& v2 D
call Change
) I( m9 e- \+ @ mov cl,4# k6 b5 Q' v" v% c; t
shl ebx,cl
; a* [% {% r) T9 ~ add ebx,eax
" Z1 ]8 Z, K7 r( S( A' y mov al,es:[si+4]5 R3 ^3 z( z) i# g6 \- r
call Change9 [; j* ]% _' H
mov cl,43 r; A3 I) J9 [
shl ebx,cl
# y7 l l$ S V5 L/ ` add ebx,eax
1 v: {# N$ ?+ R& J0 D mov al,es:[si+5]
5 x% L8 s: L1 y# E call Change
4 c# l- M: B1 @4 R3 M) O5 u8 ~9 j mov cl,4
. G- B7 I( e+ ^3 w shl ebx,cl
q6 a& W, L- K' t add ebx,eax
% a6 N0 _' o3 S- X3 q mov al,es:[si+6]# `5 \7 @, k, Z1 K
call Change
. M$ `/ \$ w! C3 f+ I2 f8 { mov cl,4
* G5 f7 J2 y. y2 _ shl ebx,cl6 e( r1 c. U# F% L
add ebx,eax9 k: X* o3 y- ]: E% \- k4 m
mov al,es:[si+7]
% C3 z X; l; y2 N call Change
1 Z5 X: e0 i: j mov cl,4
# w3 X2 O% c: c shl ebx,cl6 y7 M+ s a: p7 |- E$ L% g. b
add ebx,eax9 i- ?" z+ h- r- X* M N7 D
ret8 ?, c6 s( j* j" ^; U. c
DPSP endp
) s, p, q6 r8 g;================================================================================================
* X' F1 D5 ] l! q* X q- g# z, YWDPSP proc near, }8 ^) @. c" h/ N
xor eax,eax
+ a" g3 R1 t5 H9 r, v xor ebx,ebx
, X6 c) Z1 x4 E mov si,93h
- x3 b! u- N1 t. F mov al,es:[si]
/ Q/ n6 u K. e p& T0 y0 Q7 J) h' [ call Change! s, L& Z4 d, ^3 f
mov cl,4
+ [* j: N* K$ C9 x5 G shl ebx,cl5 v/ O0 S$ e* Q S& U: B- R1 b
add ebx,eax1 S2 O5 C- ?. I4 P" R
mov al,es:[si+1]) E5 D* V [( `
call Change* @- N: s; t7 P6 H( w% p( d
mov cl,4
& l- ?; D3 D8 f6 d3 q/ b" F shl ebx,cl
$ ]* [' f C/ u6 r8 g# l add ebx,eax& W; I& A) l: \/ X& H
mov al,es:[si+2]
& ]" r# R& l4 B" p9 N2 S call Change8 ~3 Q' F+ m- p+ L b. `& E j
mov cl,48 g7 J/ ?0 a3 `3 e* C8 l
shl ebx,cl) R$ \0 d0 X W: x
add ebx,eax
- A' }# ^/ ?0 \9 j+ J mov al,es:[si+3]) [+ V' Q& _7 _
call Change% d" g# g P: j. A) v H
mov cl,4
0 W5 n1 u% g/ l# h3 W2 x7 I shl ebx,cl4 Z' c3 y- a9 J, b
add ebx,eax0 z% G3 J+ s& X; `; n
mov al,es:[si+4]; _! Q( ~/ r9 u
call Change& f. W8 K* |- p# j! s" k
mov cl,4 m* t: R! T; s$ o) w* d. x1 }
shl ebx,cl5 a7 @ q" y( H2 U% L9 b! _# E
add ebx,eax# y* M& l5 _) J$ t
mov al,es:[si+5]3 e9 o4 ^4 s4 R9 Q5 I2 ?. o
call Change
( S4 N& w5 K( _0 ^# w: Q, k mov cl,4# q* P5 f8 S' Z: C
shl ebx,cl0 e; X6 R2 o- F" ^
add ebx,eax
1 r# m+ g3 Z. W% c' A- z' ` k n mov al,es:[si+6]
* ^/ R6 @1 w3 S8 V: M6 d# t# }$ ^2 p call Change; r2 n+ j* N* G3 G+ r
mov cl,4/ f& Z3 ~, K+ G# w1 c
shl ebx,cl" l) s3 _7 L$ g8 I9 T4 V6 A6 D' ]
add ebx,eax
, P( H. I6 S" T9 y mov al,es:[si+7]
+ z( p: [( { F) |' f call Change
+ }% k6 @5 M/ ^1 |8 }5 G mov cl,4# s% X/ J" Z+ A8 b$ f- V; F5 Q
shl ebx,cl6 S. Q5 O l- N% n
add ebx,eax7 m6 p* Q* M) ~- U ^5 s: X3 D& l
ret' ?! D$ H1 h/ V/ l
WDPSP endp
# i7 {$ M9 J1 h;================================================================================================
0 R& T) j3 t G0 mChange proc near
! ~% T& o' q# K- a0 ^6 ^A:
Z& _4 O; b; A/ z' s movzx eax,al1 {2 r0 b8 o |
mov edx,eax$ p: M" k4 W4 E
cmp eax,'0' - v3 I# u5 Y( z2 S4 a7 w* _# Y
jb A
: Z# W; f4 K3 C cmp eax,'9'
: D( ? D! R, i7 x ja B
" K5 }2 v. \- C: F* R: g; | sub eax,'0'" E( c0 s5 u( K( j% o4 M
jmp short E* D, S: ?5 z! q1 a4 t
B:
+ _; ^, i+ O, B4 {' s, Q6 n9 |- d and eax,0dfh 5 e4 H: R, ]8 n
mov edx,eax
3 R5 J& q! O' a9 y! d sub eax,37h
- w( }6 r; C0 {( G4 |, F cmp eax,0ah
3 Z- v+ ?7 y7 N! s6 d jb A : ^6 w3 P3 s7 J2 A7 E
cmp eax,0fh6 K- e+ b9 G, F+ k( O+ K/ {" d3 F
ja A
% a; `$ E# b" `8 [ l _9 y g8 gE:) N) z3 l1 j: z6 l% e
push eax + a& k' j+ T+ e. a: i
call PRT ( b/ j' \0 D8 T. {8 K( C+ ~
pop eax
4 w: H! ^- f9 K( W1 _CExit:0 o" q# q5 Z0 v% ~! A- A
ret
: ], ?. k& {* H% h6 q/ WChange endp
( h+ t: A3 Y( E- y4 [;------------------------------------------------------------------------------------------------ c, r5 u ?( V5 A8 i
PRT proc near
/ c9 @8 [$ b$ \- X: x5 A, o: B mov ah,02h' V# Y2 e7 e" C
int 21h
/ [3 }" E0 T: h, R% ] ret2 `, \% w4 ?; z+ K8 v
PRT endp
9 Z, T$ _9 C2 q, f;------------------------------------------------------------------------------------------------
s( S+ a% O' _% Kcrlf proc near
6 Y) {2 ^4 U- ?( z# \3 H( j5 N2 r mov ah,02h
0 r9 a0 I* h( R; D, G8 K mov dl,0dh
( v( Y) @: v' H2 _% g) E6 x int 21h- S" \& w) H' i
mov ah,02h4 C# E- S/ G& T
mov dl,0ah! Y I: U: Z; w5 A
int 21h
, n& P: x" Q& m2 s ret; F- t% y# m# ]8 o# P
crlf endp
: a0 l/ ^9 o) i' p% ?;------------------------------------------------------------------------------------------------
. ]7 H6 `: w+ \- F2 f. m* l6 n_32bits proc near" u1 h* Z5 K% l7 V( z
pushad$ k4 \' g# Y( R1 f+ {& ]0 N7 z
mov cl,4) {4 r0 q9 B5 M7 K+ w
rol ebx,cl
' R( n! W R9 `, c7 t: y+ V call print_4_bits
8 e n: g# f. x) ^- I, ~ rol ebx,cl. |3 E; u4 D/ h8 R- m% z
call print_4_bits
/ x4 ~, W# {& ]7 @1 W+ f+ y9 X rol ebx,cl
, B5 m! C% v# l u" `* e k* c call print_4_bits% f: O1 t& V6 U% s7 T, u" j, }3 X
rol ebx,cl
" O3 }% `# X7 Q call print_4_bits
8 ?) q @0 G. F! W5 O K rol ebx,cl% ?* g: O2 D" ~$ W+ ?* P
call print_4_bits6 F4 o; A1 W0 V& B9 _) l5 P
rol ebx,cl
: a9 K. `& f$ @ call print_4_bits
, i4 e: H1 t4 o' y; | rol ebx,cl
: ?) o) G) w" E- J7 i/ Q$ R$ } call print_4_bits1 m; G7 R$ h. b% q, v2 S
rol ebx,cl
4 G) }0 p: n. }4 c0 R) z" _; D call print_4_bits
: ^" S- Y M9 L( ^1 D* X( u rol ebx,cl
" j6 T) J3 W; o4 Q) H popad$ r+ v! ^/ B) W) p# W; Y
ret" G E4 R8 m& S$ t2 Y* a
_32bits endp$ c/ t4 m r9 }1 x4 [) v& m
;------------------------------------------------------------------------------------------------( S1 }! o6 e+ Q4 \6 B
_16bits proc near8 L% @2 Z$ \% q9 C& r9 D! ~. e% h
pusha * E3 O; N7 a4 Z" ~' W; M" e) Q
rol bx,cl/ ]; b5 r7 s# C2 c# w v
call print_4_bits
3 j$ N. Y, i3 y$ ]$ i6 d# d rol bx,cl5 w8 b2 W! ]& E9 T8 U3 f
call print_4_bits
( z, Q5 c4 |: K0 w( j rol bx,cl. g+ S; |0 w/ l0 s% n
call print_4_bits `5 `0 C4 K. w. Y6 r
rol bx,cl
" d* X" Q6 v0 P% x: b+ o call print_4_bits
& Q0 g9 U" ~" \0 Y' \1 a1 @( y H5 o popa' s G' w; B1 x, \8 ?% G) R$ J9 T
ret, u# [1 w) A2 I/ |
_16bits endp$ r" H4 c" B7 I5 w0 k/ J
;------------------------------------------------------------------------------------------------. N# g8 i: W; K6 J) ?) g
_8bits proc near" E: P& P+ z2 W* ~1 @3 f, V
pusha
5 B1 R K( P% q rol bx,cl" I) f; |, u( Z; C4 U. S9 l
call print_4_bits
( Q6 Z' K4 a! C4 g6 V: E3 H# C rol bx,cl% o1 X/ O2 ]- R! I1 s5 ?; x1 l
call print_4_bits; W0 b7 B- U3 {, w, c. \& n# W% ?
popa& G6 Y f! C9 A0 J# e- H
ret" |$ Y+ h1 S V- k4 p: j4 J9 E; I
_8bits endp9 s5 y7 X, L! \
print_4_bits proc near7 U, M. M7 s7 E
mov dx,bx
& h; h, M5 ^* f% u and dl,0fh2 M7 X( Z$ {0 Z/ U+ F/ [
add dl,30h: Z, _/ C- o1 \& B. Q# v# k
cmp dl,3ah
( K; M8 K0 H0 ?4 a8 q# X3 b jb print& V' [' ]+ [5 s; K/ T3 R
add dl,7 i4 S8 {" Q& Z+ o; |
print: ( e! j& _$ _! G" {
mov ah,2/ x5 w+ E W/ X; D5 ?2 d% g0 Y
int 21h
% K3 w) T2 e2 U9 u1 q7 F" ^ ret
$ K- y3 n# T2 K, ^print_4_bits endp
2 g0 n$ e3 P6 X+ U4 @CSEG ends* b" l# V- o8 F6 k& d- F
END |
|