|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address): f7 H" R1 ^0 a8 s4 y
R7 \0 |! Z; S9 O/ Z則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data': ]2 k Y' Q4 I, O9 y( T
* B% b7 m ~3 c3 d
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
& y' e4 N6 b4 r" f2 i* `1 |$ X' a: q+ f! O7 |% t( j9 [5 F t5 B
.model small/ C& c& Y, S) \% v& b$ y# e
.386p; |& l4 z* N4 c
DSEG SEGMENT USE16'data' - H+ \7 Q" U% N2 `
' V1 x" E) Q* j2 N, y7 `: l8 \
DESC STRUC$ Z3 W: n: @( \% E3 T U% K% P
LimitL DW 0 I* \, ?& j1 F* r+ f& E
BaseL DW 0 $ H }9 X ~4 c0 H! D, A J
BaseM DB 0 : c7 V: \6 t/ e& R0 M
Attributes DB 0
$ d: p9 v% k# e: h6 U+ H; E2 O' p LimitH DB 0 ; w2 }3 G z4 ~) k) e
BaseH DB 0
* G6 J. j6 O- a( O* ^DESC ENDS
/ U6 E- I) T- i- r7 g1 L7 @, T3 D+ w- P! [) a h
PDesc STRUC
) Y# d2 z2 d+ ]0 F! U Limit DW 0 4 H" p0 u' j1 j, R
Base DD 0 ) p$ O8 t9 Y, n
PDesc ENDS, W9 }, d( E1 Y9 Y0 E
% T! M d C1 @: b8 T# GGDT_def Label Fword. x8 S. M* C' @7 q8 h) m
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>/ b2 \0 [& `1 k; s' {' |& W8 H
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0> M7 h: b6 [$ z$ D1 o( C
GDT_Addr PDesc <$-GDT_def-1, >
3 m! V6 Z" J# {9 q& Q5 i- p' V! N9 B/ ?+ Z3 ?( H
Maddress Dword 0, A# C2 w% z: ]0 z
, I1 i' ~+ Z# w- N5 n p0 D4 ~
DSEG ENDS . A% h [8 s$ F$ Q1 ?9 k+ ]
ASSUME CS:CSEG,DS:DSEG( A c8 Y6 g! g3 l7 k5 _ w
* H. Q$ u) G. f- d' RCSEG SEGMENT USE16'code'
1 D& y. }5 ~8 [8 ^ push ds) f- C; e+ ?3 h% Y
push es
" {- ^6 W+ ]$ b1 z; p# o6 b0 f push fs
) h A. y8 v: I9 _1 } r( g: Y push gs0 f9 \& r' j& A+ u& t& ^' |
call big_real_mode ! k( A( Y, }: \% Q& [! b7 N% `
call Get_Commandtail+ ^: E. Y" ]" Z! a P% ^. r: n
xor ebx,ebx
8 W. z9 e1 v+ I9 N9 n mov si,82h* W! |! K$ C( k. f5 X
mov al,es:[si]5 N2 p8 w0 M5 t: Z
cmp al,'r'' L1 p" T. f. E, H
je R
9 M$ `. O" g. z, ]3 F! h9 N5 v cmp al,'R'
( v7 t' g' ~- v! P je R
+ b' e m! u& b0 ?3 V7 M( u) e cmp al,'w'
. |4 F$ |: X" M/ m$ U je W( ~, l2 z$ E' C) y
cmp al,'W'
- H( l* v- I/ E- u( N/ d+ v( _ je W - f/ c0 x ]& H$ {
R:- y" M& K( R. [3 Q. i( W, R5 Z4 F& Z
mov si,84h" D, m. i8 y5 ~9 G9 d
mov al,es:[si]
% J' p, x( U. a7 ?) C cmp al,'b'
$ L2 f1 z$ C: q% m* `- P0 _ je RBT3 n R2 O6 w% U% F: L( o* S2 S
cmp al,'B'
2 D( n% u+ z) \1 F$ t je RBT
5 V8 i! ]/ v, N- P" h cmp al,'w'
" r, o7 G* @4 B3 i |! ?7 ?: H je RWR2 C/ W3 C+ M5 M5 O, H
cmp al,'W'
X9 f9 k# y7 |; ?& L' e je RWR9 [" w- r T: h7 Q- b1 m$ z8 z
cmp al,'d'; R* J# ~4 {0 ]' l! D: y
je RDR
! C4 o) f2 f& A cmp al,'D'
" ^* f2 o9 x* }8 T je RDR
, Y. ?& G+ c4 Y1 h f" r3 IW: ( W2 M4 ]; D }' [% U
mov si,84h# N1 m* Z0 r( O) o( X
mov al,es:[si]
* e0 J6 p5 e- B. w cmp al,'b'! s; }' s1 Y, F% G7 d! U2 Y
je WBT
9 |1 w. j0 h1 `2 K# S0 n" F; P# D8 M cmp al,'B'* S2 G3 r& x+ d# r
je WBT& H/ N& B& |! P" B1 x+ ?
cmp al,'w'* I+ _/ n+ t0 _; h0 p. e
je WWR
8 `/ L& V6 q! n7 W cmp al,'W'3 m% K. _* G1 A. P
je WWR
# b6 Z$ U* ~' ?' ?! f- r+ I+ N cmp al,'d'
# |5 P4 j7 ? H7 \6 D1 f) f je WDR3 [3 O* N% H, a
cmp al,'D' A+ e( g) f, r0 W
je WDR7 i2 }' O, k% ^' Z! Z
RBT:
0 k6 O) \7 c3 T& @# E call PSP
2 j6 }2 @ O4 U G+ c call crlf ) U, o& L3 O3 Z6 A- D7 h% N
mov esi,ebx
% j! K7 @3 j5 d0 b mov eax,fs:[esi]
5 V, V6 o( P- w out 80h,eax
# A" g* k) r1 F mov ebx,eax8 [! y! N; L! w# {0 T& R
call _8bits
: e+ C7 F4 x% j( i: `8 W* q jmp Exit( i2 k- T3 o6 H" _0 s) [; `4 G
RWR:$ R: Z) K9 _: ~6 B: x# l
call PSP # B- ?. q8 G1 s n
call crlf
5 H( c4 Z8 v$ W5 k6 n$ j mov esi,ebx
( {* {- B* r3 D$ m' t6 M* i3 S. H$ b mov eax,fs:[esi]8 y2 b( j0 ^) J0 E' ]
out 80h,eax
9 @) e' p9 v/ g7 A- H' h mov ebx,eax
* P4 y+ b K) H6 F6 f( E% D call _16bits; o) }7 |8 O) B* I6 l: _
jmp Exit
V! F9 B5 ^- x0 x7 wRDR:5 J o% c; @7 R8 J9 f9 O
call DPSP 4 E, G6 K3 e& b7 u" t6 n
call crlf 6 a) b* Q8 w# z+ W- x2 m
mov esi,ebx0 W4 n3 O! m4 l% W
mov eax,fs:[esi]
$ h2 X' j1 e( H- O% f/ ^ out 80h,eax# E K1 u7 \/ s3 x2 G
mov ebx,eax
& T( R) q+ B& P; O8 A! v1 C, b call _32bits
; g* D" O% H2 h; ^' }7 s jmp Exit; n5 P: U% k( n! V- v, F
;------------------------------------------------------------------------------------------------
. [0 I0 X7 p. @" h, e: KWBT:+ Z1 Z9 F d& L0 J4 E2 d: z
jmp Exit; f4 t: ~# v$ S) C* W# f
WWR:
' ]1 k, q5 c4 ]: p( O$ A1 ~ jmp Exit4 q* ?' q; F! e4 x
WDR:" g( y( u1 m6 Y# q
call DPSP. u: J; j- g9 Z4 A, ?1 M
mov Maddress,ebx " V: G# T/ J" \/ r5 [( k0 j) ]
call crlf
& Q5 G# \. ^ \8 }8 K% s7 ^ call WDPSP
9 S( r9 s7 R/ z" q mov eax,ebx2 r! R2 l5 m6 P
mov esi,Maddress
A7 o6 \% I$ x8 t% h mov fs:[esi],eax
, }& J7 `: @3 I: v$ ~; V" R8 v out 80h,eax$ w+ F8 c* s$ ]- h( B! _1 p* A" W
jmp Exit
* {( q" V' p3 y! f1 T5 j;------------------------------------------------------------------------------------------------ * r! _" x6 {& u8 ~2 }# P
Exit:
3 S' U m0 b1 x! Y( G. I call real_mode 7 y) H" d9 ]- `; b+ {) O1 B
pop gs- g% L) @, }0 Y) M7 W+ W. i$ a" R" E1 ~
pop fs
- p; \; z; n+ Q9 ^! c5 ]+ X pop es
# r: C6 Y3 O9 C% x/ r pop ds ! q! X7 ?! Q! t! F8 l" M: N
.exit
2 ^" k2 U9 L3 x- G, a5 I1 N# k1 t;------------------------------------------------------------------------------------------------/ g) Z% r1 p1 [4 J
big_real_mode proc near
# J m) L+ t4 @7 Y: ~1 ]' d! H in al, 92h$ \8 m, o3 u0 R/ t# {
or al, 0025 b1 _% u/ \/ o/ F7 k/ @$ ?- w
out 092h, al: Z7 Y9 |1 C7 Y/ C
out 0edh, al
" E( c( @: c4 M, r cli5 q% o: ^0 B4 q& Z3 ^
mov eax,DSEG
/ c% D0 W, f9 R! h3 m. ^; c1 ^ shl eax, 4
+ O: ^* \& q: q$ ~; K) H' u2 } xor ebx, ebx
( H) f1 t' \4 T: b6 @( }4 X mov ebx, offset GDT_def
) ^9 M0 C5 c- m% s7 E add eax, ebx
$ k# s% Y( b) [+ K4 Q; x" \- ^ mov dword ptr GDT_Addr.Base, eax( ~* Q8 r7 e9 q' Y
lgdt fword ptr GDT_Addr
7 o# t( Q+ K1 |$ }( j mov bx, 8( X( ]- J! S1 C# _8 ^: d
mov eax, cr0( ^; ~6 f. w3 U2 W
or al, 1
% F9 |/ z6 g- A% j8 E5 T& U- l! W mov cr0, eax
8 ?+ Y/ |5 ?& J1 Q6 y jmp PMod
; o% d5 E: l. S. b* {PMod:" d+ l- G2 C1 i
mov fs, bx
% ?4 b2 l! {6 l1 D) I. F' S" n mov gs, bx; i' `/ V% H$ v9 X1 a
mov eax,cr09 r; Q9 y" h& M7 r% f, D3 B
and al, 0FEh
" X2 E" y; Q0 d4 d3 J mov cr0, eax
+ `$ x4 L+ p/ i Q- m0 B jmp RMod9 Z6 d2 J3 o' S8 n; o
RMod:9 h$ F; i: |& c H1 _7 t3 G- W- q. U
xor ax, ax! l0 ]' N+ s% `1 a/ G
mov fs, ax) S$ B; o$ t% Q
mov gs, ax 7 |+ e) y9 T5 A$ M
sti . {/ s9 L2 m, z: b3 P: l8 r# M
ret
1 b& Y4 L, E1 Pbig_real_mode ENDP
1 T' i: H- d# N2 [;------------------------------------------------------------------------------------------------( V/ `% B# h6 ~9 i
real_mode proc near# p; P3 o* S7 x' r
in al, 92h' T( h, C3 k& l, S- w0 ~! D
and al, 021 K$ `6 L- }6 I2 v& n
out 92h, al 9 `3 c. D, q1 ^3 c3 y* K4 u
ret, D( G% J; G% Y* P0 S
real_mode ENDP" D6 f% n( `: o$ i
;------------------------------------------------------------------------------------------------3 A3 w2 o/ k. Z) }5 }4 W( Y' D
Get_Commandtail PROC near
/ g, ?: p4 F# _0 H mov ah,62h
2 L! p0 m% s2 w6 K8 N int 21h L l$ h& z" V0 a/ h* G
mov es,bx
3 X/ v, c# c1 I+ @6 ? ret
" b9 @$ _. u" Y& x! r: }8 gGet_Commandtail ENDP
' ?+ P+ V' X- \+ G;------------------------------------------------------------------------------------------------, _3 B$ X$ s% e* ?7 d
PSP proc near
# b4 a9 q, c6 L xor ebx,ebx
: k8 D( J4 K" p8 C. c mov si,89h. M! J& L0 `9 E
mov al,es:[si]
0 B$ r8 N3 E1 M- D) ^7 O1 W. I call Change/ R3 h. d$ [ l( A
mov cl,4+ z: G0 |1 Y/ S+ `0 U& c! f! o6 L1 u' M
shl ebx,cl1 m) r; m$ R- {& C! b8 ?
add ebx,eax
* A g$ K/ g6 ^9 u n6 z mov al,es:[si+1]: Q, r0 l6 W9 s9 z$ g" J
call Change
" T0 D+ H1 {! b mov cl,4. |# r3 C: o, L9 C0 |# c+ I2 c% i
shl ebx,cl
7 L! o- [5 v- o% D" i: |$ t4 u add ebx,eax
6 f1 F [! p! I. `8 _ X mov al,es:[si+2]2 N8 F+ V# _( A4 C$ R0 T, Z
call Change8 P6 y; O8 `6 \ e: e5 s
mov cl,4% u1 p1 y, g( x; Z
shl ebx,cl8 n! ^! W1 N2 t2 z
add ebx,eax
6 f$ s, p+ t. ~, Q# e3 Z mov al,es:[si+3]
! ~2 H9 j( v7 @; G; z2 G call Change3 o1 ~5 y/ [( I1 \
mov cl,4
7 i$ ^) g* ^$ j& r5 [6 h shl ebx,cl
! Q8 U9 L- ]1 l3 F7 ? add ebx,eax7 x+ L' D! d1 `! a7 |4 h5 B
mov al,es:[si+4]
9 q6 r- `1 B r5 n, z! V call Change
, u) D% B! |' ^) r- `7 S mov cl,4
# K! `* g0 R9 @$ r! K; \( M shl ebx,cl
: K- \/ a( B/ o add ebx,eax
1 H+ O+ ^( J4 P" w3 Q8 c mov al,es:[si+5]
. L0 a4 e% h4 s) J, y. ^! ` call Change" q0 z' o( e- w w; S
mov cl,4
1 `) x0 }" X( I! ^. H shl ebx,cl& [7 {5 }- v2 t7 q! ?* L o# ~
add ebx,eax. x0 {$ i" p- V! H" l/ m. l) k& s7 x% `
mov al,es:[si+6]
; Y( I- y! q' ~: v/ d, N( ]2 x& x! ? call Change( {/ F0 {' g5 K
mov cl,4$ z' ^1 } T K9 x0 T# S$ n) h
shl ebx,cl/ ^, v [9 w; E) R) B. F
add ebx,eax% y9 y7 n! n9 n" e# \% h) x
mov al,es:[si+7]
& }' n1 z+ T- @6 m4 Z call Change7 V; a' e" {4 b
mov cl,4* x$ S; W( h! r+ f0 k9 R
shl ebx,cl
, i4 L& l) n9 K( p I add ebx,eax" _6 ?! Q f! n$ b. U1 ~6 w' [
ret
+ x, w( c `, C1 `& w5 S. ?PSP endp
5 N* I7 R& x* L( v3 `;================================================================================================
$ H2 Q3 `9 w9 O: S' d" B. mDPSP proc near U+ \6 M: d! H. B
xor ebx,ebx
3 K4 }- M5 g, z1 G. h mov si,8ah
! b7 e% n2 U/ P mov al,es:[si]
3 ~" c" \, _% c call Change8 U9 D4 y3 E7 `
mov cl,4! A1 u5 b, S$ o/ U I t) Y6 [
shl ebx,cl4 t0 Q& g- g5 D- \
add ebx,eax4 |# Q2 C. E. y, K
mov al,es:[si+1]! R0 }% l% k: \3 f2 V3 Y
call Change
! H1 _7 I. N0 w# _3 J; {$ Y) D mov cl,43 a$ R$ |5 N2 W" ?& c
shl ebx,cl
3 N8 |; R5 C4 r/ r add ebx,eax
8 N, o3 \" g/ w1 |$ Y mov al,es:[si+2]
- O& M/ |* z, l, E9 o8 J, D call Change
& i- A, q6 t2 e3 X* n: L mov cl,4( n; n0 N3 Q! h3 p2 e2 Y1 g
shl ebx,cl
5 n& r9 X. G+ {' \4 | add ebx,eax
( r) P& n" |' K4 d% {& h4 J; s mov al,es:[si+3]* T: h; B; R f$ U& z+ C
call Change
/ J% f) }! y) Q2 \7 w6 r& ?& q& z mov cl,4 d: }5 ^3 J0 L: U* e" w
shl ebx,cl6 W2 _5 D2 `. I" B" R% \
add ebx,eax4 d8 W/ F& |/ t3 X- Y
mov al,es:[si+4]
1 q1 S4 [9 O- K5 ]# [ call Change
6 q* Y) |; V' S$ O( A9 E% r mov cl,4
9 t4 [7 i, R0 y! y7 e1 X. V shl ebx,cl: v5 i+ |8 a& M3 T# [) ]
add ebx,eax
' [- w0 Y$ H3 j E5 k mov al,es:[si+5]
y6 n9 c5 Y, W! X6 U: f call Change6 E; ~- H% H* E5 T) j& ^
mov cl,4
( s8 U# ?% n6 T/ K- h6 `6 f N$ d, ~ shl ebx,cl
/ Y! ]1 B0 b( a add ebx,eax; \$ T& ^, t9 c0 s% b
mov al,es:[si+6]" }" q+ |% U- }
call Change2 s3 |' V/ k; k! l# I
mov cl,49 |* c1 }& A, q, `
shl ebx,cl
$ a8 `2 ?+ T- [ add ebx,eax3 S! Z; e$ M& r6 y9 U
mov al,es:[si+7]
9 E8 W& C3 T) T: ?) V2 c+ t2 O1 n. S call Change
, k% @) e4 h% _/ B( } mov cl,4
+ f2 y6 i1 N* Z7 q shl ebx,cl
+ p6 P. f0 Q1 ~# e* j+ U add ebx,eax7 Z$ A* M& M$ ]7 c2 D6 z, N
ret) I' {. O. ^+ T5 C R0 N+ n f# _! |
DPSP endp1 {+ h# g% t, j3 S- p, D
;================================================================================================; J& |& g" ]/ @( ^9 N8 V
WDPSP proc near5 v0 \; p/ |- @: h$ I8 c
xor eax,eax
- x U: H6 f+ e7 i3 {# U. ] xor ebx,ebx
: j4 n; e& [/ y- P4 o) L! G mov si,93h0 k5 w0 P: z" ~+ g
mov al,es:[si]
: i% S$ r. W5 u& b T' [ call Change
9 | O# N$ ^ C9 j& \# ]/ _) [ mov cl,4
4 ~6 L8 q$ a8 @9 S7 f shl ebx,cl
( w) K5 w/ x* y; y9 P add ebx,eax
* N$ P6 z0 x" b% k/ [ mov al,es:[si+1]1 R8 o& |8 n0 w0 G6 W+ n2 U
call Change
8 \$ |$ r9 X$ K3 y6 W4 g3 I$ D mov cl,4; z2 @: ]/ q/ c9 d/ [
shl ebx,cl# p+ J/ E1 ^/ D* @2 c4 s$ f9 [
add ebx,eax
7 o7 s- m( I. Z# |0 ` S mov al,es:[si+2]
3 b0 C) a1 r% |4 D" y call Change+ {- }* b5 |7 i( D2 X# ?) X3 @' c
mov cl,47 M1 Q( _9 m2 X1 O& o0 g
shl ebx,cl
8 \2 ~3 Q c8 C add ebx,eax L0 c& L0 }& H5 X6 h+ i7 [
mov al,es:[si+3]8 ^: z1 H9 x" \7 {8 a
call Change# B3 T7 j; I$ X- i5 Q5 n2 X8 E/ F
mov cl,4, X# V% t$ `" c! |
shl ebx,cl+ c9 o5 p( ]& B1 K
add ebx,eax
U& }" }8 _3 J, a* { mov al,es:[si+4]
% l! j P8 e' x; C0 D4 P. r6 U& o% S9 n call Change
) K8 o* @7 T: X& Y2 X& q$ y- K mov cl,4
6 O; d. J/ l @. D9 T2 m shl ebx,cl. \' F0 b% `+ L
add ebx,eax* S9 L3 D8 n* L8 ^
mov al,es:[si+5]
4 R5 `% V$ Y1 O call Change
' s0 i- m9 l: k8 T* j7 j; H& t. S( |6 u# E mov cl,46 J/ y2 f+ H7 \1 g+ R- R' S
shl ebx,cl
' {2 P, [3 u: M, T/ l add ebx,eax
5 N. J' S* y5 O8 W mov al,es:[si+6]
/ ^/ Z& @: h9 _0 w* v8 E5 h call Change: V8 \) ?$ n1 z& ^" |+ \* c$ M/ _
mov cl,4' |# U) \1 f! H4 ~( }
shl ebx,cl8 N, Z, o4 }# b( _# N9 A2 x0 D2 U% p
add ebx,eax) ~+ O9 e8 g, R6 x8 F/ d' w8 z
mov al,es:[si+7]+ l1 j+ q! C: S, Z1 z/ D0 y
call Change3 }$ X7 X6 u7 x2 a2 m3 T
mov cl,4
+ i4 X$ L) m$ A! F shl ebx,cl
* F3 B m+ n: ?; S( b% U I3 z add ebx,eax
5 I# X! I( N+ y8 g/ H" }' j; x: F ret6 \/ `; ~3 g6 D( P+ d( R1 ]
WDPSP endp8 H) V5 ?0 g# v- E" {
;================================================================================================8 Q& b/ a! d# P" U
Change proc near
0 U; ~* |3 }* MA:
\6 z6 e: E' ^6 A- W movzx eax,al/ q/ Z% H8 q* _8 x" D* N) t
mov edx,eax) t8 `5 i$ D4 j4 M9 u, ]
cmp eax,'0'
6 A \/ z; t, S8 P+ c jb A# D; b* f; t" I2 C/ t6 N1 Q9 ]/ ]' s
cmp eax,'9'
( f/ A+ K& ^8 O; ^ e ~! T ja B
( n3 [" R* F7 G2 r* U sub eax,'0'
4 z$ F1 ?" c1 N jmp short E: {9 X1 M; c; z; G0 W* x
B:- h: f4 g% z! |9 `
and eax,0dfh
1 {* I: R$ S8 C" Y: ^7 i1 Y mov edx,eax
& O0 W8 P% P& V X; }: \, I sub eax,37h . ^( _+ q! Q9 P/ d4 ?4 v
cmp eax,0ah
. n7 g2 D7 i6 `5 n) d! D7 ? jb A
, w* D/ B: c3 h: x& v cmp eax,0fh
* ~5 }" T% y- @6 u( u Z ja A # Q* i- l% }% q9 @/ T
E:& {% |' H: j6 L8 v J4 X
push eax
8 N+ p/ v7 D' n* v; z# d2 f3 m call PRT . L) h7 |1 V1 a
pop eax2 W5 ]) E; M: l, `
CExit:% v3 Z( z4 V/ k. g
ret& ], B3 }, Z: w. U
Change endp( C4 a# B' U, @3 n9 f- [
;------------------------------------------------------------------------------------------------4 c. }8 N# ^) a8 d! s' V
PRT proc near2 W4 V$ j8 |( E9 q( i6 N9 i9 H
mov ah,02h1 N* B. h( i* p
int 21h# Z& m/ Q+ r0 z/ z; Z
ret
" @9 |: R; l9 _PRT endp
1 g$ O& ~( L0 R4 T! K5 d: Z;------------------------------------------------------------------------------------------------* f3 J6 I! A5 n$ U& D) [! J
crlf proc near
6 Z: u( N- y9 q mov ah,02h7 f( V+ G2 p0 f. t+ e2 u: v2 s
mov dl,0dh7 C& _: G3 U/ l9 k1 W$ S) ^
int 21h
^7 _! T: H6 O2 |) g9 I4 i+ _ mov ah,02h1 Y4 E6 U" M* D
mov dl,0ah
8 M# G( s- A5 Q; M' | int 21h
- E* D4 f3 u6 u& W/ T4 f* {- @: Q ret: R5 j W9 o2 p. T: W
crlf endp( r* a3 D, H* y- \
;------------------------------------------------------------------------------------------------$ o! Q* W' f/ j* P" |1 V, h3 d" P
_32bits proc near
& z, X' O6 B$ \# c# z1 U( Q ~ pushad
& W* p7 f* e9 H1 K g# Z& N mov cl,43 V9 T+ o) H# e5 d. U1 P
rol ebx,cl" V6 z; _( y7 V0 L/ A" x' P& m
call print_4_bits: V$ ]3 P- v1 }$ N0 S9 `% V; E
rol ebx,cl7 s8 C! j# P$ z6 ^! ?9 a
call print_4_bits+ i: P$ Q9 m( p; M' A; C& T8 n
rol ebx,cl
+ J% h' g; U5 G* m3 v: { call print_4_bits
1 E. K6 W: [& [4 _2 | rol ebx,cl& \/ s# L5 I: d; W3 Z0 @
call print_4_bits/ K8 K u( V" P/ Q: |$ `7 j
rol ebx,cl
8 N' T7 O! O0 m0 r; ~ call print_4_bits
/ f- c6 X A S1 V0 l a rol ebx,cl$ v% c" @- k: Z b
call print_4_bits. V: U7 {; W# f; z1 Y- u, ~
rol ebx,cl
" g) h, Z* A" ]$ ?+ a8 Q call print_4_bits; h1 ?/ w+ I, x4 O# P+ J
rol ebx,cl' f6 \: ?( u: p- ?7 Z8 v* F
call print_4_bits
) q) j1 N( v7 o' r- B rol ebx,cl
" ]' X6 R7 Y0 m popad5 h+ B4 N5 N4 g* |, H0 q
ret0 k& k( Q! N4 g4 ]+ @, z
_32bits endp% a6 d9 U; D/ \/ Y. A- X5 x
;------------------------------------------------------------------------------------------------% Z7 n m& d* u* a K( K+ ~0 \- u
_16bits proc near) g% i* b/ n0 j1 j6 i& K
pusha ; U$ m! y' Z* e) I5 u: c4 B/ M# e
rol bx,cl
- _( t, b. ~5 u+ N' I call print_4_bits
( f% H% v' Z4 \5 N/ f' I6 y rol bx,cl
. N6 c; L. N$ h4 }4 ^ call print_4_bits/ e8 Q' e( J- a' k$ q" q
rol bx,cl
8 h3 ^4 j$ q4 Q9 L4 U3 ]* F; ~' S call print_4_bits
) I: d k' }, c n+ a4 z9 T0 S, V rol bx,cl
; r4 \) s9 |' k# n call print_4_bits/ f% S' P6 s- {# M1 E1 Z/ ~
popa, B" L+ `" H Z0 U
ret+ b( o8 z, d; z# a1 ^* p L
_16bits endp) N8 M8 |) B* O% \+ R, ~8 z
;------------------------------------------------------------------------------------------------
, j0 w$ s0 @' Y, A9 i/ L_8bits proc near
" p7 I; F+ R; K. R3 E% i/ C% X/ @ pusha # A- t5 @5 ?3 g" I" ?9 u; T
rol bx,cl, b" C! k) E% r1 }3 ~* z
call print_4_bits
8 E1 u0 X% g5 P6 w) b5 K4 L rol bx,cl `5 e: L/ r0 k# H5 v9 k! e
call print_4_bits. N2 ^7 h8 U1 A9 B
popa' J1 K6 B1 ~6 r: k8 J
ret& _' L. X" M+ Q; h; N
_8bits endp& {8 J# F# v. ?3 Q9 m9 w8 R& F, W$ L" ?
print_4_bits proc near
- V) L9 x6 y' ]7 ~0 O+ i mov dx,bx
s. _1 T- p1 g and dl,0fh
! z# S0 z" L+ y: E$ m4 l add dl,30h
* Q- Q3 I5 ^2 @! U; S cmp dl,3ah
! w* Q+ [- z( R0 N; u jb print! {) U) |; j% f) b8 N
add dl,7
8 [7 k9 D8 v9 cprint: ' ?, f. H; C: G( o2 U
mov ah,2( u4 \4 C9 g5 D8 k
int 21h7 r* E7 c3 g9 C0 f ^6 s- _/ ]+ _
ret
) \- `. f H( C; l2 I( q4 Eprint_4_bits endp # N6 x7 j1 ]7 V3 u/ U" `
CSEG ends
$ t: Y; ^! |0 `END |
|