|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address). h% o" v0 N+ i1 a) x, C, S- o
2 Y" l$ g/ p/ M# s% l- a! C則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
2 Y% D6 K* D- x' g+ S
3 l" p# W w4 {8 [$ D宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝 7 O- o* V; T! K2 X
$ W# e: [- o' W1 d
.model small( x+ B p* _- W/ I) c( z+ Z# s
.386p u9 V/ {( M$ I9 s, i+ w8 x! Z
DSEG SEGMENT USE16'data'
; N& s/ I' L0 @) X! \# t$ |, @) Q5 P+ W
DESC STRUC
. H5 e6 [8 k: ^- T9 v* W7 n. P LimitL DW 0 . O3 s- s: @9 n9 [ J5 Z+ z* `
BaseL DW 0 # v0 a. q0 j- U3 |" V) n4 K7 ?
BaseM DB 0
" ]3 f5 |- b$ d/ t/ i) G" S# C Attributes DB 0
1 D2 r# Z& v" w LimitH DB 0
1 X8 M G4 ]( I BaseH DB 0 % f- H( P8 Y$ Z5 B
DESC ENDS" k1 H4 @# D' x$ t. [
; A. S3 F+ i! |/ o9 r% q E; HPDesc STRUC
1 C3 Y1 J/ U, U- A3 q& h; l Limit DW 0 , L6 U6 S" r, U8 }
Base DD 0
+ s0 s5 j I. u1 F* g. d, h* |PDesc ENDS
( d; r$ N. {& g: Q2 ]& o: m9 k
% A1 K5 Z; B3 n& Z- N( T5 SGDT_def Label Fword; E3 f* D' ^& {/ [
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
5 v: U7 l) z/ q9 r6 QData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>: X) O, |" W T5 U/ f* { J
GDT_Addr PDesc <$-GDT_def-1, >
& z* f7 \/ J' a8 b3 N$ J7 C0 p
E0 W1 F5 o) o9 n" E! e6 {( I3 AMaddress Dword 0, R5 o# D4 B8 g/ N# v
! |+ u+ K6 @, L1 ]
DSEG ENDS + ^& e2 e: R, f# O) P
ASSUME CS:CSEG,DS:DSEG6 @% ]/ E8 o9 v: Q" S" a* H7 W7 X# J
- q! R( V) d" F3 }CSEG SEGMENT USE16'code'
& T! s- {' D3 ]6 T$ y0 ^. v push ds
3 H1 T" d6 m' }; h push es4 f$ W" z. v% T: \% }7 Q
push fs
( p2 j2 Z5 z4 I+ U4 W0 }1 Z4 v push gs
5 x1 G# Y( y. ~7 d: V6 @ call big_real_mode
6 M1 y3 z" M, A call Get_Commandtail
6 E( v5 R4 L) Z8 K xor ebx,ebx
. u6 q( B' R/ l% U! K* b6 P mov si,82h( h; g! j1 W9 a
mov al,es:[si]; W" m) d" c. g% A
cmp al,'r'- w9 ?) }( @) w9 A2 C7 n
je R
! |9 I5 Q% f+ {8 @* M3 B cmp al,'R'
1 T8 W p" T; D2 n6 K } je R
, A5 u4 C6 k6 S3 W cmp al,'w'
' i: X. |. a$ r je W
% P" r. \+ t" H. P+ Q% O cmp al,'W'
9 W5 W4 h. M: `' ^! o1 T- v* E8 ^ je W 5 |) y1 Y) t! c6 o; {
R:) Z& S4 F0 B+ A" T9 h) |9 f& N; A. _
mov si,84h1 ]; `$ c/ j; e
mov al,es:[si]2 s( N) x& u2 A+ x, C# P m
cmp al,'b'9 z* f7 i9 U3 z, X5 ?+ C0 u$ {
je RBT
2 Z0 q5 h# Q0 |# x. v cmp al,'B'
- o2 q( m+ N- m) A; L \: a je RBT) a0 s2 v( T3 f% O2 Z4 Q2 y
cmp al,'w'
w. a" z" L& @& h je RWR4 ]' Y8 S% R6 l2 r8 y
cmp al,'W'
6 Y, a4 t4 c1 l& b6 ~ W je RWR
9 g# ^4 f# o& `- D. a cmp al,'d'
. Q6 A" A& X# }+ `& @ je RDR' ^; g7 D7 u- {9 i
cmp al,'D'
. G4 F4 F; L8 O/ h( d | je RDR $ ^4 q" [3 E+ L* U7 I1 ~
W:
( r& t; k; _- m- U mov si,84h& l4 H! w4 R L+ n, {8 M6 [
mov al,es:[si]) \% p- c9 M/ T; @+ m1 G
cmp al,'b'
* E& K+ I* f; \ F" J je WBT
6 n, [8 ~0 R/ c% L; } cmp al,'B'2 {' r0 m. Q( {2 J$ i
je WBT9 ]: V: p z# \% k
cmp al,'w'
1 _' A1 d' X7 w- D je WWR
7 k1 x0 _( ]0 } cmp al,'W'$ Y% ^; t# V. L- G. j
je WWR
& D2 C' ~. Q' h5 K cmp al,'d'
1 W4 s6 D; j+ ]+ D" v) F je WDR- N. Q- R# c p1 C! q* C
cmp al,'D'( K! j0 E# K8 H* B! B; e* @' \
je WDR7 M0 h7 R1 ~! \6 E
RBT:
: P, g1 t4 m1 H) g5 ]& f$ U call PSP
* E& ?* V4 S2 e' O2 @ call crlf 8 k+ m9 `: p; i1 _5 x# i1 \
mov esi,ebx; W& H0 M* K& c; }; e6 N8 {
mov eax,fs:[esi]
" s" W( n5 s' P, ]; {+ O7 V; L out 80h,eax
' v" Q% V H0 I5 N. x$ m1 A mov ebx,eax: K' ?7 e6 m) E1 E% @# {
call _8bits
& ?% X) t" d6 a0 z6 [$ q2 h" K+ S jmp Exit
* k7 c' j. z. d* G% f! w; p5 V4 pRWR:
" b; [ L; t0 i! ]5 F call PSP
) d9 U: X1 ]; Y- W' X- q% R call crlf ) b& X' F& ]$ x8 L5 w
mov esi,ebx. T( O1 \+ V" \4 H
mov eax,fs:[esi]; t9 {+ E. \! E/ H
out 80h,eax* k9 {) v4 C5 I- J
mov ebx,eax
, D; x, j7 C- E' {' J/ h2 ~; g call _16bits* b0 ]* f/ w6 p& J
jmp Exit4 c0 n! B& @4 O" N
RDR:+ d. G7 b4 r( O, f! d ]
call DPSP ; | q& X6 w+ @. q, r% Q
call crlf / c/ I- r, g$ K p. @
mov esi,ebx1 j7 h. F5 R" @
mov eax,fs:[esi]
2 Y+ X7 k2 f& r; a% Q& V b out 80h,eax2 z& X/ h3 \7 d5 I
mov ebx,eax% E3 y( I4 s, `5 m
call _32bits) B$ Y5 |; g9 H
jmp Exit( W) C2 }. e3 Y# U- N
;------------------------------------------------------------------------------------------------8 q+ F( D7 o* u2 b o& t
WBT:
5 O- _9 @7 f/ y. T( b jmp Exit# r9 n' l7 C3 K
WWR:
# o% ]$ [; _1 X# C: l3 A' X; d$ t* z jmp Exit
$ W: e7 |+ d b# m4 {: f. \WDR: T& K) T2 t$ b! Q. |' M9 G
call DPSP
5 ^9 Y% v! d4 w* h mov Maddress,ebx
H, b! q" j: B) W call crlf
% c9 ]3 b/ j5 p- c7 ] call WDPSP
I9 |+ g% f: k# K! \9 s mov eax,ebx e1 _; n j3 C3 v, g+ f6 \
mov esi,Maddress - R; H1 w" }9 E( l
mov fs:[esi],eax- Q& R& \# q# Z9 M# y& p& B( h, J
out 80h,eax5 G2 g9 \, d# U/ e7 ?" h
jmp Exit( T8 d, t: O, @8 y: J
;------------------------------------------------------------------------------------------------
& Z/ R, }2 G `2 MExit:" f2 b& D @* ^" b2 t, e
call real_mode
9 e6 M$ A; Y( A" b/ ?( k @ @' t pop gs
b0 ^7 s/ Y: k- }# Z; F; H pop fs
- Q) q( C4 h; B- I pop es+ |+ a# j6 v1 q
pop ds 1 ?6 k4 z: r- B8 F
.exit
& \$ P" P& h; C3 I/ p6 A' L1 p2 `4 h;------------------------------------------------------------------------------------------------% v1 Y6 @6 n1 A/ X+ Q! c2 ?$ v1 X
big_real_mode proc near. K. W$ q/ Q# X/ _/ Q, p% u
in al, 92h* w: j% r6 F# u# y8 D7 W
or al, 002- c8 P @1 T; R, X0 ?; {
out 092h, al8 }' W4 d% C, v9 g: j8 G
out 0edh, al
8 e$ T1 Z* U" n cli2 T; X" R5 Y+ q7 Z8 f
mov eax,DSEG
# M# X6 O+ t/ S shl eax, 4
7 F" G0 W! k& B: ]$ W xor ebx, ebx; Y* s3 l* i1 C& R' A, a9 b2 B4 q
mov ebx, offset GDT_def
3 O2 W3 I8 `' q* n) S add eax, ebx
1 V6 K9 `, h& r( @) N% F' F8 O mov dword ptr GDT_Addr.Base, eax
' i: {7 _0 K+ M, M0 M lgdt fword ptr GDT_Addr
; ?0 S0 | P8 J5 V5 e" @ mov bx, 8 v; S% X- i2 E6 @5 q I$ k5 R5 K
mov eax, cr0
" q$ P9 s2 \# @0 h6 V1 U or al, 19 }; B3 a4 K. M. M1 `, h$ n. ?
mov cr0, eax7 k3 K2 j5 I9 J6 v) I! ]3 n
jmp PMod# o6 o; e- Q5 u6 e% O) V, ]
PMod:
" E7 D& f `4 J2 U9 x* m3 L1 v _' }! }2 I mov fs, bx5 v: c% l u4 u7 x0 M B' W5 S
mov gs, bx! L( |/ z% j( J* }( \8 U! k
mov eax,cr0
, }% Z5 {4 A* p and al, 0FEh$ Q3 M3 ~9 X9 r
mov cr0, eax 2 J8 T5 A) K" R! Y+ ^, T
jmp RMod
) _# n3 A" ?6 @: @ rRMod:
" V1 I1 O8 n U. W3 Y E2 Y xor ax, ax, G) R/ \) Z9 v, t2 Q" k3 x% T# }
mov fs, ax' R/ @- b0 m. m$ `: V% y
mov gs, ax / O5 i; p' C, n# w c* b+ g. M
sti
! {% b3 P7 q! |/ s1 P0 | ret
3 ]6 O. j& I/ c5 g0 _: |3 l4 Wbig_real_mode ENDP
+ T- ?/ p" X% L;------------------------------------------------------------------------------------------------
5 Z% c E. ]2 M! vreal_mode proc near
/ r* H$ a, x6 o7 H8 v5 F in al, 92h* G" s5 C' {/ C3 b% ~; a
and al, 02
1 C- s; t- j0 M0 n2 u0 Q! A out 92h, al
# s' y0 Z/ h( h8 O' X ret; a; ~2 R# _5 s
real_mode ENDP
+ t1 I. I( Q% l1 L/ R8 Y0 K/ _8 h;------------------------------------------------------------------------------------------------
" R% q/ X+ F4 T. O# |Get_Commandtail PROC near% S& c& Y5 ~' n
mov ah,62h : {3 M& Z, `* C1 Q! b
int 21h
8 V) z% x9 M/ k mov es,bx
& m% c0 O2 c$ k" K& c- |0 b ret
[1 I" X v7 C& N( ]Get_Commandtail ENDP
2 S M- R+ z" C" I( };------------------------------------------------------------------------------------------------
: K4 M" q, U7 W) M, ~; q% Z9 zPSP proc near9 o- k# K& _3 [& F" ]
xor ebx,ebx/ Y: V3 q3 T/ Y( _ f8 H/ ?
mov si,89h0 X1 Y. @& e* u
mov al,es:[si]0 G! i( s/ _6 w$ K2 C. M
call Change
/ O# u' F/ V9 K8 B mov cl,4/ c \7 ?" ^+ [0 U0 a
shl ebx,cl/ E. l7 s2 E8 N
add ebx,eax
3 i$ ~9 n+ B2 _ mov al,es:[si+1]& I" q4 n2 M% n# L3 i# s* x
call Change
- L, F- A& g( W- @- v1 ?& u mov cl,49 w l! c3 ^* L# }( ?7 u% u
shl ebx,cl
4 N* x- p% N D. H% n% ]! j8 j add ebx,eax
7 W1 ]6 A, c- c5 M mov al,es:[si+2]8 R5 U5 p- a: S# \+ F I
call Change1 g- m! {) r! C \) S( a
mov cl,4: x4 s. E$ y' r
shl ebx,cl: X' B! `; c9 K# K2 w* b6 H2 I) W, D
add ebx,eax
' W3 }0 T$ p$ o, W. n+ R* z8 W mov al,es:[si+3]
. G4 s% G1 Q) X, {' m& H- B8 [, u call Change
/ Y( r0 d& h% [ K, ]4 d8 H1 ~ mov cl,4
) m+ R0 c7 G7 q U$ E+ U8 A' M shl ebx,cl
5 c- d4 e$ c3 S$ [) Y1 a add ebx,eax
: r' Y$ [. l, U1 ~; l mov al,es:[si+4]) A' e- E/ {, ^; p9 ]0 u' j9 p" H6 x
call Change
, ~0 y; e1 b5 N8 w- |+ K. E. {; Y mov cl,4& ?" \! b4 ^3 @; n: D
shl ebx,cl: n# B" Z- y7 M/ T, p& m! L; w' k
add ebx,eax
0 C' t. V/ F! i+ k7 q" Z0 e* M mov al,es:[si+5]
9 H% X+ Z3 I% {$ v% w3 U call Change
/ t" [ B, s1 @1 w) Y3 u0 _ mov cl,49 X1 l2 [$ ~4 u: J# n# x. ^
shl ebx,cl
3 @1 ]/ `; Q( @/ s/ e. l add ebx,eax
6 C+ ~& G( N6 q mov al,es:[si+6]
$ K D: |/ R* N" S# k* Y& a9 ?/ l( O call Change
. X, X( a* x4 s# q mov cl,4# a" [" U( x2 ~- Q. K$ V: w* r
shl ebx,cl1 B4 i5 I/ Q. h4 F: l$ [
add ebx,eax
% B4 ]: T( l: P( ~0 ^ ]1 K mov al,es:[si+7]
! Y1 l& ?$ ]; O% |5 ~7 F call Change
/ U6 E. ?# }" l- G1 \; F mov cl,47 T: y$ s7 Z2 J, Z0 z+ i0 N
shl ebx,cl
# }# b( L2 C; |7 Y6 ? add ebx,eax/ c {& C9 v2 f( U8 |
ret2 j- F" L8 m) z- I$ }) \; R! M, n
PSP endp5 T, H. }/ w# {) q, n7 a3 t
;================================================================================================, c0 O2 m( E& O) {/ G. e+ Z. \2 a
DPSP proc near( m% C9 y$ z) Z: u/ N4 o
xor ebx,ebx
; F& G$ u, Q/ _" ~4 S mov si,8ah
# j4 f& ~; l* B( H0 f+ @ mov al,es:[si]5 q' S0 N, ^' i! _6 m3 _
call Change( Q/ k) {0 `1 j5 M5 I
mov cl,4, s8 k5 _ |7 P, u0 R0 J
shl ebx,cl
6 a% b4 `2 c$ D6 x" G( P4 k( E add ebx,eax
" F9 Y: o4 l5 u. `. Y mov al,es:[si+1]
' l# i, I: ?* d7 w; P* u Q% t call Change; x! _1 C% R' c2 r6 y
mov cl,4; x& h* ~; y3 d W% L0 ?6 b: G' t
shl ebx,cl. n' {' v7 P- P5 y9 P
add ebx,eax5 ]% m* g- W5 {
mov al,es:[si+2]) \% c5 X! z1 n, V
call Change
) c/ L* G3 `+ P* h( b( Y6 a8 A mov cl,4
1 t& _# `: }, Q4 M3 a shl ebx,cl* k0 _8 u' _$ @) t4 P" K1 G
add ebx,eax
) I( u( s- e, c+ x2 v mov al,es:[si+3]/ i! v6 ]9 c% _6 `
call Change. {$ o9 U. W! y9 F- x/ p/ L
mov cl,42 z/ Q$ e# n# L; n( U% H
shl ebx,cl! @: y! w0 \5 e) ^
add ebx,eax- k! h& l; @( a$ z
mov al,es:[si+4]
* t* R, @! W# k call Change
7 n" _. }3 U( ?3 ^$ p mov cl,47 ?; m, g( B% S3 U- S/ {" P; i
shl ebx,cl v) Z, G; |+ k ?, t/ p
add ebx,eax5 Z- f' f, k/ Z$ |) l
mov al,es:[si+5]4 U N4 m( {( }
call Change
6 h' a* C, k& L' g- B* N7 r& w) R/ n1 g mov cl,4
; m% i# y& Z8 _, o$ |5 z& C$ C shl ebx,cl
* w$ g* @. M: O4 V5 t/ W add ebx,eax
4 ^- }; M2 x2 q, K mov al,es:[si+6]
! @; p9 y# k' {# E9 [ call Change
& d" R1 W+ t! p1 L* ~ mov cl,4. g$ Z5 P1 x& {: C& Q. I; A) A
shl ebx,cl
" f8 ^) O* u& Q3 D( u add ebx,eax7 D- U' u( J, A, R6 P. W" W
mov al,es:[si+7]
4 q; {7 \& N% N8 ? call Change
6 P/ e& N& i9 C" U+ w0 m mov cl,46 { F2 p) C8 H6 _7 x/ V, K$ O
shl ebx,cl
9 f1 j6 j5 ~: K8 m, r8 n add ebx,eax- s$ [) g& `9 C+ R3 D
ret! W5 H) _5 j9 A6 N
DPSP endp) o8 F7 Y a1 x$ }8 x" [
;================================================================================================* E5 C9 C8 Q* U+ `% _
WDPSP proc near
8 L9 E4 ~2 V X+ o" O) H xor eax,eax0 \7 S; ^7 @# N2 @5 S- ~
xor ebx,ebx
1 h# C: H- Q6 @1 O: @0 W0 R% T+ p mov si,93h8 {: X& s; Z0 w2 Q
mov al,es:[si]+ ]/ p7 y" h9 Z' ^' K7 P6 g
call Change4 }( v- N( |& B, b9 C" `' k' E
mov cl,4
6 H! M. {8 C2 S5 h. J: ~& i& _ shl ebx,cl4 _" y8 y4 F. [' e- N0 N
add ebx,eax
5 ] T7 h0 t+ j2 m8 ?; w mov al,es:[si+1]
D7 g1 L8 @6 H* _ call Change" E# o9 S2 G) n" \9 V
mov cl,4
# u( u2 ^# G7 p& ` shl ebx,cl
( m$ M4 X1 T: d' i add ebx,eax
& W! u7 V z: U6 h7 o# R mov al,es:[si+2]
, ?* M: ^, W* r3 k0 Q: K O# c call Change$ I- a" b4 P6 ~: {; s
mov cl,4
1 w9 i ^) ^% S shl ebx,cl6 O, A5 `# Y" n+ j" d+ l
add ebx,eax. c- f+ L$ S8 R+ Q1 ]' p5 ^2 w
mov al,es:[si+3]
: l! S* j6 i. g" u8 P call Change8 C% Z* r8 L$ m% Q. o
mov cl,4
& Y2 N: L# {) Q: t9 I, P! n shl ebx,cl. U) W8 Y: w, }/ ] ^
add ebx,eax
! l! f3 r! M: I5 J& [ mov al,es:[si+4]
/ q O' Y; B$ k8 Q: D3 q call Change- x4 l* N) B! M% g$ C
mov cl,4
+ W5 G3 l! J( h4 Y4 { shl ebx,cl/ m8 s1 y" k8 H4 _' G
add ebx,eax
6 K% w' K3 V0 O mov al,es:[si+5]* M3 P3 J" X; W, o- u& @/ z, _
call Change
$ j' w5 G6 ^( L+ |. w0 T+ Y1 p mov cl,4- o: m9 H+ w. g
shl ebx,cl
" i4 U7 B/ {( w+ I2 H/ |' M add ebx,eax
8 F0 Q$ R `: b: u$ G mov al,es:[si+6]
) X2 Z+ [. k6 d% j6 @; ~) \! z call Change
8 A7 {& A& W2 a0 l" P; o3 N mov cl,4
# a2 T6 @! M0 _5 f( E. `' D6 w) [- I shl ebx,cl* D) D9 z1 }' m! l. G
add ebx,eax! Q( `4 s/ M$ E7 o( J; o ^' P
mov al,es:[si+7]
+ t$ ?- B5 G4 C4 b/ Y; D3 ]5 C, ^ call Change
% ?4 c5 u# `/ ] S% F mov cl,47 x. e) s; B @3 H
shl ebx,cl7 R5 X: Z$ q, K4 x0 B" a
add ebx,eax
" e: ?' I* K( j. R6 P ret% v6 C3 @ q' U. n
WDPSP endp( v8 z$ U( w& ]; ]
;================================================================================================) @' C+ w* x. F. t! Z& \6 T
Change proc near( c. B0 M* ^5 P
A: / ^3 D* \) Z+ K2 B! O1 d6 K' T
movzx eax,al% [1 \. L& A9 w8 E9 k8 K
mov edx,eax* D J& U( V s0 e
cmp eax,'0' ) N2 B% S; _. \% b" h! f- t1 [
jb A
; |7 q' u; i8 D1 s5 f5 m cmp eax,'9' 3 l2 |' d, b5 T& Q- D5 T
ja B
$ t$ j# A: e/ K/ @! e/ N9 _1 I sub eax,'0': V8 n2 O) B: k* m" A$ V( D' B
jmp short E/ j! p1 D0 s3 J7 z! Q
B:
$ D6 Z; F u+ d, q and eax,0dfh - a, R. {! `* `* K" i
mov edx,eax0 ]% c) {; q/ M& |7 |
sub eax,37h ( G( i0 @) g; ?9 @( m3 w* N
cmp eax,0ah
' D7 W" l! b) |% X2 F) _1 l" p) b \ jb A ) @9 f- l4 P$ L' v4 M3 d! J) \
cmp eax,0fh7 R9 z6 n% l; h4 j3 K5 z( X" q3 f& W
ja A % K5 @! P5 J: ]& I0 z8 n- O- ^
E:
( I0 n( O# {( ~( J8 Q; Q# D0 i push eax 2 |0 n |0 W$ M# y
call PRT
$ a9 m3 q2 F' B p5 k+ P pop eax* e( Y; C( I* u) x* [2 O8 A" _! z
CExit:
0 [) A( F7 {. j' \) l. X ret4 D6 Q1 }- u+ C
Change endp
* b. c& s% k. D$ z; j2 z;------------------------------------------------------------------------------------------------1 M$ B0 `- Y% a7 M0 ?" Q
PRT proc near: O4 e3 i2 p: N, x) H
mov ah,02h; I2 l* ~3 b* t; q$ o: `
int 21h0 a- R8 }1 Y) \3 U( z
ret0 {6 r" _ X5 z7 W
PRT endp
: H E' E4 R- q4 z5 N$ r4 ];------------------------------------------------------------------------------------------------' l. z- ^2 i# t
crlf proc near3 O4 x4 ]. w P5 ^' X& @2 D, Y
mov ah,02h e& X1 ]6 x k+ j& X2 b; k
mov dl,0dh& A9 }9 \6 [) N U4 j; D
int 21h! f+ A( j6 U% ^( E/ }& ?- J! n
mov ah,02h
% x# Q G+ {& H3 K& U mov dl,0ah$ r4 F/ @* _! f0 I; O
int 21h! C( V9 Q7 L8 j
ret: x( j% w7 c6 c K1 `
crlf endp
3 v1 q( M9 @1 k6 h;------------------------------------------------------------------------------------------------
" G5 h$ x) f& J2 t C_32bits proc near
1 a" D# I x8 }6 J J, B pushad
; {8 n* W2 E' G1 A+ P8 N/ s& Q3 [& a( K9 u mov cl,4" e' V" L8 c+ F' E
rol ebx,cl6 M9 W' \$ X( u6 Y7 B
call print_4_bits; ?! T- ]& ?, u3 S/ P
rol ebx,cl9 h7 u+ L# V% A0 [0 Z
call print_4_bits
- u8 e2 k0 J, ^1 A! ~ rol ebx,cl
) y9 a; R9 _/ H1 T4 i5 }/ h6 q5 l5 S call print_4_bits
0 P$ X, U# G. z$ s9 I rol ebx,cl' Y3 }. o* n* z9 _. S( E
call print_4_bits
5 \& a0 S2 ~7 U4 N" f rol ebx,cl$ ~0 ^0 L& x6 I' R# O
call print_4_bits- j0 R+ [- u. \
rol ebx,cl
, F* l2 K3 X8 T; n) n; D call print_4_bits
" O" H6 |8 t# T& k& g2 b rol ebx,cl
1 Y7 D0 M: S* p+ t call print_4_bits
k, C9 w/ G8 s, S* w1 T: u, q rol ebx,cl
' l( ]+ j% p# a. `) l call print_4_bits
- c" e3 K, ?) @9 }) S8 ~ rol ebx,cl
( W8 i1 |+ Z7 }* x7 B# F popad
& J% r$ O0 h4 N# d2 ? ret9 |9 M- F# f* E0 Z q* F
_32bits endp2 p- W& x. d8 f" b
;------------------------------------------------------------------------------------------------* g" D1 H9 H0 u/ I7 B) {- M( R* D& \
_16bits proc near
; p2 h* ~' X( k( A a5 n pusha
" R2 S" c( e5 T7 W3 F rol bx,cl
" O$ r7 V# n) S/ W1 m3 W5 @ call print_4_bits! W, x& x) D6 h! z
rol bx,cl
/ S. |& }) f" @ call print_4_bits/ d( l7 F, y) T5 m! _
rol bx,cl
. U- w3 ^# R. o q5 w2 e8 `4 q call print_4_bits: D, ~/ I3 _( f0 T$ G5 k
rol bx,cl
. c* C" l8 V; q5 |2 k* j call print_4_bits
" w) ~! o7 k1 @1 g K* ] popa
( ?9 y6 E2 X4 ]- s ret2 m2 e7 ~& O) S4 }
_16bits endp
1 j5 l# r& J& p" {9 [5 j# Z. s;------------------------------------------------------------------------------------------------
0 Y h) j- r; o) _- N% \2 i_8bits proc near0 H5 z1 Z/ C/ F. O
pusha . A3 `& ]9 K# p5 e5 Z+ Y' g# I
rol bx,cl
1 P( A$ b: l* P6 [8 [( L call print_4_bits
$ }5 I' ]4 f1 @3 |! Z rol bx,cl: f9 z1 z1 d3 D5 f. q. s) h, v
call print_4_bits
' g( g/ T$ M& }5 e popa
/ j# q* g% Z3 ^2 B% }) f ret5 H r1 L; z- f6 v+ M' x% N
_8bits endp
9 X% Y3 ^, D3 l mprint_4_bits proc near
" ]* J2 ^' \5 I5 y) U' D mov dx,bx" M0 V) P4 k6 z, P; W7 K2 K0 K
and dl,0fh/ G4 E, ?! S* c5 f0 y6 V
add dl,30h
; v5 E" P! i& n+ ^+ G- D cmp dl,3ah
% b/ P3 s( t" U jb print+ y+ h8 v3 v. C% ?4 b* g a
add dl,7
' i( o+ n0 l" h9 G, W# w$ U4 ~print:
2 T/ P) {7 J7 W, b mov ah,2
) c* P( r5 E7 X6 w' s7 a7 l int 21h4 j# S0 k/ Y$ W0 ]& @7 M
ret
" h/ J; k8 B: a2 bprint_4_bits endp 4 u2 a3 X5 R4 l9 t* K2 V1 P
CSEG ends7 r' V6 o ^" T! q M( w
END |
|