|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)* T4 ^" `' a* E7 ~
5 J, }( {; E, ~" Z則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'& X3 U1 b$ ]4 ~5 t" Z' z
, R& R" q/ f& q% _- d5 t9 `. W5 h2 H) F
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
/ W1 K' p @% m! \. c( c0 L" s/ n9 r* Y0 ] C
.model small
. w1 `; A) z" d q.386p
# L9 D1 h0 X5 q! W0 yDSEG SEGMENT USE16'data'
9 J( B2 n7 |6 B) o( Y& ]5 F! m
$ `" N D2 ]5 d6 z! |; [DESC STRUC
6 Y K7 H% t# H1 m8 | LimitL DW 0 ; q: t) e) e5 F4 K+ D' E4 E
BaseL DW 0 6 b1 ^4 a' M/ r; l
BaseM DB 0
0 P& p3 E% K8 Y% k8 H& |/ _ Attributes DB 0
# v# \+ {# g$ v/ ? LimitH DB 0 ! O/ u& i6 M3 n
BaseH DB 0 2 L9 v+ a8 m$ i0 W
DESC ENDS1 ?1 A1 r$ h. h& ?; k: j5 Z
! v8 y; k: ^" }* b
PDesc STRUC" ]: p- A4 K3 l3 ~( T0 r4 ^8 W
Limit DW 0 5 N( r, G! [1 p
Base DD 0 ( Q2 B) _3 s) }5 w- X8 W
PDesc ENDS( y. a/ O9 t, z0 `/ Q. V
3 J, ?( `2 B- Z$ N4 [2 E9 i1 l
GDT_def Label Fword# m0 h$ B n2 T: u6 X
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>! a( B% ?' |6 e$ \
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
2 U J6 K- E7 j% G# E' I- {GDT_Addr PDesc <$-GDT_def-1, >8 E1 L! G: T7 D8 A
3 x$ }4 N) H, A6 W" p' Y
Maddress Dword 0
) A) `9 E j1 j0 B* G. S! J. ~* V/ f6 v4 R
DSEG ENDS 5 K( C; _. D; _
ASSUME CS:CSEG,DS:DSEG2 C, \; ^/ J- k! P0 S! d
' }6 u8 I3 A5 s7 [( r) J) ECSEG SEGMENT USE16'code' & ?- C; J5 @7 f1 f- P6 ?
push ds
' \9 P2 j F3 m' }# a7 s push es
8 b5 g& V+ W' \4 {1 i6 v push fs
# j2 T5 _; u; ^4 x push gs
; [! J6 p) N3 q8 w" Z) c call big_real_mode
+ {! B, u6 I! {" d8 Q, O3 O3 N$ { call Get_Commandtail- s# |' V- O( r) y, y0 ?
xor ebx,ebx
' \$ c$ w9 n! c0 T |6 f3 A mov si,82h+ [5 Q! e7 F4 a) G
mov al,es:[si]
! L& G2 R2 C9 T8 ] cmp al,'r'
' I1 O) i0 m8 s- J* ]9 L je R) `: L1 ~7 u0 Q( I7 {
cmp al,'R'
! r$ K e- Q6 r je R
$ s" g) `+ q Y! m1 G) y cmp al,'w'& ]9 w8 A w) S0 d( @" m: u
je W
7 Z1 }- b/ ?+ p cmp al,'W'' ^8 c! E \4 V9 ~4 x. c
je W 4 n; P# i H @2 z H9 a# J/ r
R:
# t5 ?3 V5 s/ ?$ \# \8 f7 J! W mov si,84h
8 b$ u6 x5 `6 _3 x0 ^' I0 V; A mov al,es:[si]
5 }" L. W4 D& C! R cmp al,'b'' n( P/ _( T5 @! |. D0 j7 ?( B% A
je RBT
( X3 J) n: y, U$ [* ~ cmp al,'B'
! B5 z( f% E9 K: E2 ^1 f# M) I je RBT
# U* o: ~3 z3 v) g- W cmp al,'w'0 R( |9 ]% `0 ^' R0 A' U" \
je RWR: B. t- t( Z( J3 x& y4 |$ P3 K
cmp al,'W'7 I: |% {. \ I1 {
je RWR
( O' M5 \# z6 H6 T/ y8 s cmp al,'d'$ c3 h: s: K. a# ^
je RDR
9 S# e/ f+ D7 z: B cmp al,'D'
: V4 d: ?# C9 E2 K" [4 }( j" [! M je RDR
/ ]% }8 q, k3 L9 R2 nW: 5 t6 G T5 r$ m
mov si,84h( Q9 w" s' t: d
mov al,es:[si]& i7 i3 N& |" D3 m
cmp al,'b'- W( f) ]* u' m" H. `
je WBT; \8 H7 B L* D. X
cmp al,'B'
; }* h8 _ O$ E, K7 B$ j; f: ? je WBT
- V1 N; P) m# Y( e$ n8 r cmp al,'w'
! X; H; D' k7 a5 L je WWR
" b4 \, j6 |/ ^( k$ T cmp al,'W') s5 E& a ~3 r, |! U: k3 W; X8 |
je WWR
/ [) z# r% H z9 @# R5 P cmp al,'d'
* z- d" e8 _1 B$ V, @ je WDR& a& T( K) ~* w) `, S
cmp al,'D') i2 @3 Q4 p1 e2 ^
je WDR
) Z9 c9 y# o8 o8 M; JRBT:
1 _9 }% I1 r' k2 B1 F/ z call PSP 9 R# W- g# {6 m. N1 s7 l
call crlf # H0 E- k4 r* m! E7 M5 J* ~6 t( |
mov esi,ebx
+ P0 T/ g: c% i% b, c G mov eax,fs:[esi]2 K& o6 t k8 [) q
out 80h,eax. R4 [7 a" |2 l, {3 Y X
mov ebx,eax
2 h. V4 [8 x+ ]# I2 R call _8bits
$ V% c2 H) {3 F4 D2 Y6 ` jmp Exit
- G% |; J2 k2 E* CRWR:
8 L* ?6 m6 l# o call PSP
6 \- M+ j7 t3 i# u call crlf , i# N' v2 n F
mov esi,ebx
7 V5 @ t4 z: R' S7 O! a mov eax,fs:[esi]- Z6 h: @" E& i3 ^1 T% |/ M5 b5 C/ x. ^
out 80h,eax
5 D6 x; i' I0 a! l! R C mov ebx,eax
" q# v/ m$ ~ |* \ ^ call _16bits
4 E- Z w5 ?. Y. G' `6 m jmp Exit
$ D, F2 b; r4 I% t ZRDR:; `) d! U3 z4 e/ k% p
call DPSP # `, h' D5 d X/ s4 m8 X
call crlf
% C$ a1 D6 \! i mov esi,ebx% K* M6 S5 H- h3 O3 i
mov eax,fs:[esi]
" t- I! A/ a2 B" v1 G out 80h,eax, G: u. x a- K
mov ebx,eax
: h% ^. S8 q: Y call _32bits
" u- C( k+ a% h2 S$ E jmp Exit5 A$ o* s6 p8 j
;------------------------------------------------------------------------------------------------
# f7 c/ @; Y1 LWBT:
+ i; @$ X- e' l/ h; R: e2 G; F+ B jmp Exit/ V9 {3 G% \+ ~1 y7 s
WWR:! N" R& \0 l! ?; G* Q
jmp Exit
0 A) S6 m6 h" L4 Q2 SWDR:
; ~4 y& w" l: k1 M' ? call DPSP) `! b+ N+ W8 J: Q7 b
mov Maddress,ebx
3 W# Q$ W V( } Z call crlf0 X, C4 c, K" j& A
call WDPSP4 [1 I( N) E, t4 _# Q
mov eax,ebx
/ I5 a6 L1 g# P$ w. E9 { mov esi,Maddress
% ~6 Z$ c3 E. B2 _$ O4 e5 { mov fs:[esi],eax
% B8 m5 p! `% C r' `+ E out 80h,eax
& A9 r# C% z- ~5 \; e5 D: x jmp Exit
* u# g1 L; \* C- ] S* ~;------------------------------------------------------------------------------------------------ , c& F3 k2 W# p; k" O+ |: m1 M
Exit:% C" Y( I0 J' h2 d+ Q
call real_mode 7 C6 B0 d/ K% Z# U$ a
pop gs' v: Y$ j6 w: J% T' `2 Z
pop fs0 Q4 d% F! s0 _8 C* N% S
pop es! o6 ^, L5 {" |+ M, E0 S
pop ds
5 \7 a6 p5 u: O. x .exit
/ W7 [- L" S& c/ L;------------------------------------------------------------------------------------------------2 Y8 q7 W, a+ ?; V! G* v
big_real_mode proc near3 i( V1 H) o/ ^& k
in al, 92h
6 Q2 k( I3 ?- O, I0 S or al, 002
8 {: @9 ^- a5 u w out 092h, al* z& G$ e, ^- r+ @4 Q; r0 b+ K
out 0edh, al
3 G1 B! O5 V$ |7 }) \9 {/ @# P cli3 {+ }2 m0 Q) e, Y" A" n& e
mov eax,DSEG N! J9 z# v, r, @" b
shl eax, 47 Q3 ?0 I7 W9 b# ]5 p7 K' ]
xor ebx, ebx
! e% G2 H* M8 g mov ebx, offset GDT_def! b- h( I) u* L2 v P
add eax, ebx
2 E$ U% b- p9 A. ]% f: M4 j8 T mov dword ptr GDT_Addr.Base, eax
! s7 ?6 X+ f1 T' [3 ^ lgdt fword ptr GDT_Addr% J: i! U7 ]5 {: q" g* Z3 E1 }
mov bx, 8; J' M3 f& H4 g- n
mov eax, cr0
1 f: g& [( C' F! I% X' p8 e0 y$ ` or al, 1
4 F' \2 Q3 _) J mov cr0, eax# o7 k4 g1 x4 g3 ]* O) @6 N+ V( ~
jmp PMod6 r6 ~/ L$ l( R. E% Z
PMod:
2 |: z' i: J8 g5 N4 y9 r mov fs, bx
2 F& H2 r X) R0 } mov gs, bx
1 F, J6 ]. Y. W3 \( H7 q mov eax,cr0* \9 y/ g* G4 W5 q/ J
and al, 0FEh: X" k3 T. m+ b1 P1 \
mov cr0, eax
: V8 o8 T5 y% {/ c/ _" G" L jmp RMod
; r ~5 E6 p# j0 @; U' c( `RMod:
1 ?/ Q" U8 m3 o" b6 o0 Y* Q! Y2 P xor ax, ax
6 n5 {4 f& I% U5 M0 P( { mov fs, ax
/ Y% K1 V+ s" z mov gs, ax 8 O. V6 W# P9 n- h# y/ J: ?
sti 8 q: X/ o6 `$ V
ret- L& e* Y3 t" _/ R8 p1 U, ]
big_real_mode ENDP3 A5 X. y6 C; q. f# z
;------------------------------------------------------------------------------------------------
# q% y/ R; S6 ?6 R( K7 Kreal_mode proc near a" J2 C. g- ~
in al, 92h
$ E" e( d0 f& @+ V$ [ and al, 02
" f& L0 t; D. t, Q8 y5 J- R9 F out 92h, al
8 u3 R+ X% V+ k; S2 G# c- x1 Q" i ret9 Y) [" B$ H7 R4 b) ^8 q
real_mode ENDP) W0 ?" e+ ^( y: p4 b+ y
;------------------------------------------------------------------------------------------------7 Y0 X4 K- i# }# T! C% n6 f
Get_Commandtail PROC near
% ~; [1 x' m C2 ?/ B2 m0 T mov ah,62h / u! W1 Q: l% L% a% j) \/ J
int 21h
( b7 A3 F7 b4 `1 Y" x mov es,bx3 U% k7 q5 }: }; K1 k/ J
ret9 c* y& t* h$ S" d2 q) \3 |
Get_Commandtail ENDP 4 ~3 E+ _$ v5 \2 [! m3 U; t6 f
;------------------------------------------------------------------------------------------------
, s; E! p9 Z" a, @ w* bPSP proc near- L6 M; A$ K; B m+ C
xor ebx,ebx, b; M6 e( f. x! k, }7 h9 l" A
mov si,89h
f3 |$ G+ Z" V3 u" ` mov al,es:[si]
^* I9 h& U+ O2 Y call Change
8 F& Q- [" `" c6 G% c mov cl,4
5 f" k9 r+ Z0 {. e' @3 C) g shl ebx,cl
9 p0 m/ l: K8 Y# E1 F add ebx,eax
9 M+ ~5 M# E3 Q7 U2 k- y6 u3 d mov al,es:[si+1]
+ W6 g/ z; O! K: U1 s6 b/ n$ v call Change' |# C2 U" y/ f0 e1 p; |$ C
mov cl,4
, ]* t, V" K" e. m shl ebx,cl
) [3 a- C+ C7 {& @+ ^# A. S' S. \ add ebx,eax+ W, f! N: p, b: e( p+ g
mov al,es:[si+2]
; C) |6 p$ `( m call Change
; a+ L+ T" f7 |5 ] ? mov cl,46 Z4 x) H4 H# p P; V. `4 |) j" i! ~% t
shl ebx,cl( i- v( X/ A4 R# ^
add ebx,eax& k# n8 }& V, y8 R* Q
mov al,es:[si+3]0 N, `$ S$ t# X/ e
call Change' k. x2 N' a7 ^0 b. P. E" k: ^
mov cl,45 C) X( E% q! h0 r2 @
shl ebx,cl* o7 v5 S) D! X: z# R
add ebx,eax
& o3 K/ m6 C. \6 b7 J) f mov al,es:[si+4]5 m1 [8 f( Y" ?% S. P2 C
call Change' P. B8 ~* S( |+ {* o8 C% _
mov cl,4- ]9 l1 `; o* m( b$ ^) M1 [/ [' g
shl ebx,cl
/ r0 a4 B5 j* {& @1 K W2 A add ebx,eax
8 E# ~; s* W$ j' x mov al,es:[si+5]
4 Q# Z/ f, s7 b/ E/ |$ j O call Change: l! y H6 ?: O& q- G% Q" [
mov cl,4, [2 \' w3 B+ ?! b: Q) [. m7 c
shl ebx,cl* Q; j9 w! ~1 I! I2 L
add ebx,eax
6 |* @# {8 G" [ mov al,es:[si+6], d, [* x8 ?( `3 I$ E2 Z* S, O
call Change
d; x9 S. B5 m8 h, ~; N mov cl,4
9 b# j: Y; f2 _/ Z shl ebx,cl! y) i) m( G* S( `# h
add ebx,eax
# A& F0 d5 q9 W" f3 i! f# i mov al,es:[si+7]5 M4 r) j3 E2 U0 F
call Change+ V7 C* W( m1 k' Z9 {% K$ d
mov cl,4+ _2 J' K7 i* X% w
shl ebx,cl! a8 g! [! U, p
add ebx,eax
' ^8 h. L) I2 l2 L ~8 s( p ret
$ ~1 ?# c" `0 O$ a, iPSP endp& h7 p& X( I. y8 {3 x( e6 ^
;================================================================================================8 }' {8 l; o5 i5 i( B
DPSP proc near
; p* B& @2 h2 z3 t" i3 a3 a xor ebx,ebx
8 Y; ]+ ^) G& H0 r4 ?0 [+ z mov si,8ah) I E! w- X3 W
mov al,es:[si]
. h( J& K' p' p/ b" m% U0 G/ } call Change# ]. S. ~. U% X
mov cl,46 R! k, H8 l; e( f. ?& b6 Y1 N& |
shl ebx,cl; ~- X; X# k7 j$ l* ^6 l
add ebx,eax7 Z' J9 U3 y! F* I- p
mov al,es:[si+1]/ v7 w8 T# x! k+ A5 b9 v3 s
call Change
8 F/ o0 w0 k4 N! y$ z B# p mov cl,4
0 S- Q7 x; ^& l% A" G0 x" |1 K shl ebx,cl
: R( N$ P l6 Z6 E9 ] add ebx,eax
5 T6 _* d" C8 k, u mov al,es:[si+2]
: t0 F" R# @& D8 A* ^ call Change
& j5 J2 _9 z* o0 y% R- v5 r mov cl,43 V" j$ S$ j( ]2 G5 M h& D' I
shl ebx,cl
) M" I- s% L2 p2 |8 K add ebx,eax
6 D2 N& z1 C$ a! q0 t- W mov al,es:[si+3]( |7 r& i$ b3 a4 u6 C" y; {
call Change; s$ ]/ F5 V! [- r; R# Z7 t, D4 A
mov cl,4. N& }# @" m* D. O" N4 r
shl ebx,cl! O9 ~6 E' a8 H
add ebx,eax
0 M0 M' J* @1 ^$ D3 f% l mov al,es:[si+4]: D a& H8 B' B* b/ C5 d: ?
call Change
+ v! ^/ v* f6 t4 K# `) z- \7 P8 X1 i mov cl,4$ C7 k7 I5 Z M
shl ebx,cl
7 i& E* l1 a3 F add ebx,eax
8 ` Q* z1 s1 i5 B9 H i mov al,es:[si+5]6 k# I$ Q( Y6 p* M( j6 p1 I
call Change# {6 u0 U0 W$ S% W2 l: T
mov cl,4
- _6 @9 e5 l5 o3 C shl ebx,cl6 c1 p7 G% K d
add ebx,eax
9 A3 u! V3 r7 a0 x/ Y( ]) [& B6 Q/ ? mov al,es:[si+6]
4 c& O: K' I7 h1 W; t call Change
1 t2 `1 L, [" K9 b mov cl,4
8 W( J* a/ e5 g z$ w! J. T5 `$ S shl ebx,cl
3 K$ J4 A) x" b0 Q9 e' Y. C/ a- q add ebx,eax
+ s2 m, P' z3 m( g+ @# T+ B w; _ mov al,es:[si+7]
# {1 `8 @ d( r' g2 W; D3 \ call Change' P1 F; b' ]+ l/ x
mov cl,4
% A. \* W# k) D shl ebx,cl
5 O7 L% G! m( U. t$ i5 H' U! h add ebx,eax
/ v) T! t$ Y+ B. Q/ o* B$ g! h" A) j ret+ R) u$ I5 Y4 g; z e6 t& A5 X
DPSP endp Q$ P/ Z* ^* W9 e% ^, u
;================================================================================================
- p- X3 p1 y6 r' T& dWDPSP proc near3 j; R! ]5 l. e4 \( j" V" S
xor eax,eax( D6 M% g! k' D. }; E
xor ebx,ebx& g, B: c+ P% Q, A8 o9 K
mov si,93h
! Q& s! i6 h$ e; @9 R/ j4 P+ ^ mov al,es:[si]
2 h+ u4 w n, G; O2 C call Change
3 @" y% l) [, c# d mov cl,4& m# C' K: u J& Q& `
shl ebx,cl9 d) B# V* Q u+ \' Z# V4 d
add ebx,eax3 _" m# ^: ?* T1 N6 U1 g. t+ o: l
mov al,es:[si+1]; o5 \9 }3 G9 C/ U4 o7 O0 n8 @/ j
call Change
# ~6 x, J2 Q$ T& y mov cl,4* S& F' A7 w8 }' @( E8 R8 `
shl ebx,cl w! J4 \' B& j( f. O1 |* n9 D7 v
add ebx,eax
& {1 d- ~# ?2 Z6 L- z( H mov al,es:[si+2]) y- n. q$ D) w" }3 }9 a& O; ^" N6 r
call Change8 `) q$ @9 P5 k2 G# q. j
mov cl,4
# W# g E+ W2 P+ P3 r3 G% g, |3 y shl ebx,cl! I$ G3 t7 P" ~) G
add ebx,eax
# F; Z5 E8 L2 S2 f! }% { mov al,es:[si+3], e3 I8 K, `) x8 ~8 R( t8 S; O
call Change
! s) \+ j* H8 P4 Z8 J Y( C mov cl,4
2 T4 c# {9 {* _+ U0 U% P shl ebx,cl
6 b1 \0 H0 Z( A1 D4 T add ebx,eax2 t; T4 |5 b1 E0 Z) s7 I
mov al,es:[si+4]
/ \/ W( Q: o! l+ o4 W8 M call Change
! F) g o a4 v8 y) ^ mov cl,4
6 B& T9 B0 N+ D9 \3 } shl ebx,cl
; X. ] |- z) k6 T6 l add ebx,eax
# V h& `) K. J9 m& ^& K! k mov al,es:[si+5]
$ W' X% ?' e( t7 r9 S call Change
" i m4 y* @1 Y o0 v+ Z, J mov cl,4
$ F' I( q3 A" I2 a1 T0 S shl ebx,cl, D& N& }& M) y3 R( H2 W
add ebx,eax
5 R4 E: l, y7 x2 [2 g: M; w5 e mov al,es:[si+6]( n s( I: S" G5 N0 ^4 y
call Change
3 q) |4 d8 Z6 v/ @ mov cl,44 u4 G F" P# D! B& c
shl ebx,cl
7 w l; U: s' m+ e6 j! n add ebx,eax; M# z% E5 w& A
mov al,es:[si+7]
1 u7 L. M6 k+ |, x' s/ G call Change( X7 p9 D: Y" k4 y
mov cl,4: `2 E/ |5 ~7 d! b& Y. d
shl ebx,cl
; i( E" v1 F0 B' X- g' `" G add ebx,eax' u5 \8 d+ ~5 [2 ~+ t( Q/ R C7 T
ret
4 w! }( _6 L' f$ dWDPSP endp
) T+ \& v2 A! t- H# D;================================================================================================: N2 ~# d$ @/ N* L) [" ?& k
Change proc near
' o. b" ?& n( c# a: SA: ( F# L7 t2 \, ] E! g% ]4 M
movzx eax,al6 ^: _8 m; ~* ?9 m
mov edx,eax; i4 O3 L* J0 S' E: ]/ v9 d, g! }
cmp eax,'0'
6 |1 T: }; X3 R! g5 w; ^ ~ jb A
( f2 D0 B N9 a8 H" j/ t cmp eax,'9'
3 }( A. I. g2 F' K1 T+ Y ja B
! a$ @" }* V7 U9 J! M sub eax,'0'
1 X) Z( s# ^1 I jmp short E
4 X# b8 ^. N$ k; I. I( v- ]' }# mB:
: O8 W8 L! ^0 |/ B3 r7 I and eax,0dfh * Y4 |2 l- w% N( H3 p6 ^
mov edx,eax$ u) c7 P( a Q, w+ x! }
sub eax,37h 6 V+ J4 K+ q. N8 B$ e% w- K
cmp eax,0ah
* M& p( ]& N0 s" ]8 Q& p4 b jb A
' ^2 t# |8 d Q0 M, H8 ~; z cmp eax,0fh
9 {' }2 `# g% h! n( n ja A
# k8 K k; H1 q$ P3 ?E:8 n5 M# j, h" B$ k
push eax " o8 g- I! t. y! V" u
call PRT
( z7 h& k$ B7 A @2 t' L/ {9 B: C( R Z pop eax$ Z0 F. W) z' X) t
CExit:) F# m2 p) A. y5 O
ret( `6 w) A6 K8 C5 W6 f- Z& P9 y
Change endp
1 u7 }; u, J" V& Y; z;------------------------------------------------------------------------------------------------
' k0 D( w/ h' X3 ~" b' WPRT proc near
& Z' ?8 i. ^% z+ W mov ah,02h
/ \: F4 c. N s8 Z7 H" W+ v/ F* _ int 21h4 _6 g7 Y! W4 f: i1 I
ret
( B; O, W* q4 B; {& KPRT endp
3 C8 `- ]% o3 Q! A5 k" i3 s9 E0 R;------------------------------------------------------------------------------------------------; v, T2 y6 h+ L" f* q( G
crlf proc near9 S; {/ S6 A3 F8 W
mov ah,02h
4 g2 K" x6 J+ V" M/ \3 L9 x3 I3 F mov dl,0dh! |, e! @; r8 r
int 21h0 \ }6 a, |1 G- f5 J: l- K k
mov ah,02h
0 v: b) ~1 n3 A4 ~ mov dl,0ah3 d# ?6 {& R/ X! }8 N
int 21h
* C4 e5 y V* i+ f2 Q8 J ret( }; o5 U. u9 K- x& j! p. A8 ~
crlf endp8 u9 G6 p9 j# e. r; D; | J2 \
;------------------------------------------------------------------------------------------------0 Z/ k7 E: @, B" r
_32bits proc near. c: Q+ E4 Q* ~5 Q6 \3 b3 M! |
pushad
9 J: M7 L+ L, Q7 p2 ^$ D mov cl,46 w, T% S6 t! ^5 a$ j8 |0 g1 w
rol ebx,cl
( Z0 S! a( F$ k% h call print_4_bits
; b& A# V/ L. B) {# J# u rol ebx,cl3 i/ L: T1 i& U5 }( h' I- {0 U
call print_4_bits
: }$ h: m/ y$ X rol ebx,cl
& k; x( g6 D7 R: n$ m call print_4_bits+ A5 b g& J; k* ]9 _3 ~0 V; J
rol ebx,cl
- {, @/ Z# j- V" ~: ] o' y call print_4_bits
3 _* v' V- s' k rol ebx,cl3 b& [" o4 G; v9 U: G
call print_4_bits
6 u" r0 N4 [' k0 L7 O( o rol ebx,cl
+ n5 O2 P2 N! l8 ~ call print_4_bits) O1 m5 U$ X% q% N$ X
rol ebx,cl. |# {, T$ p8 w! ], O; j& T8 j* v
call print_4_bits
9 I/ G, ?9 }) T" Z6 `* \$ X rol ebx,cl
4 l' m6 E6 W2 K2 X1 A% V# G2 \ call print_4_bits# d1 [+ |% B |4 Q3 v c
rol ebx,cl
7 D$ j% G5 ~ F6 g1 l W popad
* t l( X/ z4 E3 h. g" J/ n ret' _+ x( o M+ _% u, ~! G8 r0 D
_32bits endp
1 f1 \3 K+ @! ~8 L;------------------------------------------------------------------------------------------------
- \/ X! X- x, p; C) ]_16bits proc near; C1 g! p! P, {$ T9 i. N
pusha
! `$ c" z5 ^6 h( {9 V! z- S rol bx,cl
+ W3 Z% G9 m8 i j2 A call print_4_bits* L, k6 A+ i+ V. a- m8 g
rol bx,cl
( e9 c! }+ B' L1 o( J: | call print_4_bits
8 g2 D# ~4 Q8 i( w6 k7 O rol bx,cl
4 O8 |( L% j6 R+ ] call print_4_bits
+ B8 R; ^7 X( m; `. q$ \, v7 p rol bx,cl- w+ `" v$ Y$ q6 r) |
call print_4_bits6 h6 z$ A( z/ Y9 a+ L9 j% V, C
popa
( i) M! L1 O$ O+ J& \2 Z ret1 T' E3 ] ~; C) `; { h) @
_16bits endp6 M- k8 K1 T' g, Z6 c( m" j: W
;------------------------------------------------------------------------------------------------ Y7 H; y6 l! l
_8bits proc near$ H5 @9 m7 d# k1 Z1 B& G) H: C7 i
pusha C& {) G: H, T% p9 X
rol bx,cl6 K. P' W- g4 g
call print_4_bits1 t/ H+ Z6 Z. v1 o: o
rol bx,cl4 _) j+ u. ?* Y6 B
call print_4_bits
" v7 D! A* D1 a3 L popa Q0 G3 L& O# ^
ret
+ ^0 [7 U6 k$ H" w/ w, n' S_8bits endp
* K2 [3 S' V. W/ O$ ]print_4_bits proc near& m& e4 l8 g2 n3 P! E
mov dx,bx
6 N" l- n6 u6 s: _$ R! P9 D9 T and dl,0fh, H, O8 |* S$ ]) Y) I! |
add dl,30h
7 t! z( i) {9 Q* U6 T cmp dl,3ah! E- j, s% }; G- d* G; k9 Q
jb print
- y! Z: S5 z, ~ add dl,7, h% w. i- K0 f: N, [
print:
5 }6 v& S. i& V: i3 L mov ah,2
& g ^* x; t, f9 i8 j- c5 _ W int 21h
E/ j- a' i" k0 R H ret6 T& X) w) F" ~% [. k% p2 j
print_4_bits endp
+ y) R$ R d$ nCSEG ends
- m v3 w. d: [* d9 K, G, x3 KEND |
|