|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)4 _( _5 ^- i( o' M( }! X0 g1 C
|' Q+ h1 {- ^9 k/ x7 a3 }1 s
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
4 p: z4 t- _+ X- E! ~3 R2 \& A0 G; M; J3 U* |: f
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
6 o* x% v7 |, S8 N
; L/ H) A( ?6 x, u) J7 i8 T' ?.model small* U; |; z! b# g5 |6 d* B2 B
.386p) R6 J& n3 R, O: r
DSEG SEGMENT USE16'data'
5 o: ?: C: v1 v9 ^6 O5 N6 w$ Q0 r2 [' ?
DESC STRUC' D9 f; y, I6 }" h% | v8 o
LimitL DW 0
6 q( h2 g7 W; `3 ^9 W BaseL DW 0
% q& q! R! V) b* c3 L BaseM DB 0
6 E6 q" F8 M. u6 l% R* Y G Attributes DB 0
$ e3 z1 V1 _: ~% R4 V LimitH DB 0
8 Q3 h0 \2 B" A$ t$ C% d9 H BaseH DB 0 0 |! ]6 l% \/ Y. b( ?; G" q
DESC ENDS
3 B# d- r# B+ `2 g) j
' F" H& B+ n( y+ X% I4 L' Y5 ?PDesc STRUC
0 }/ U5 Y' p4 E0 Y+ H Limit DW 0
1 T; I+ Q& N: S Base DD 0 2 c7 d# `% P7 \7 n2 A
PDesc ENDS2 y3 D3 B5 {- A) w
9 f+ @2 @ `7 M
GDT_def Label Fword
/ P5 A: j* h* v7 nNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
, C8 W$ v. B4 M! Q9 ~8 f5 zData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
. _9 G8 Y6 q. u0 Y+ s* u* l% I; D& SGDT_Addr PDesc <$-GDT_def-1, >
/ {! t1 c B' v: J2 J. z6 E$ c- U3 D
u4 v1 U# A$ E( _3 g. F% @9 b( b- oMaddress Dword 02 Z( B9 I' Q$ {5 }3 }) R
5 E# T6 J7 e1 ?, t/ g, k1 V# k; TDSEG ENDS 5 t& C' T9 _9 R$ g* P" ^
ASSUME CS:CSEG,DS:DSEG
3 K% L& ?+ z. o, ?' }' k6 N7 y
" g$ R" X' X* f! c# J g, ]+ iCSEG SEGMENT USE16'code'
! v E$ H6 F" B: l r" |! T2 }6 t push ds
& y: p ~) } w# @$ |- k% U push es
9 }; W S; m3 _$ O1 r( m5 s push fs7 Z/ S6 N" w9 N. y4 L2 V( F
push gs' ?9 F c. q% Y0 k1 a+ v: |3 j
call big_real_mode
0 H; l& d+ q$ G- f0 N6 Z call Get_Commandtail
" |6 m% X! C$ x5 P$ S: |5 ^. {$ Q xor ebx,ebx
" C2 h1 B: c) X, n( @" k mov si,82h
/ N; F, I7 ~- N$ d: D7 {2 Q mov al,es:[si]& ~; h$ Q. P" J0 o+ i+ @; p
cmp al,'r'3 j" ^" ?) ~/ o% N$ n
je R
1 C: F; H. p/ _; _1 D cmp al,'R'
, x% |: K! e3 |0 n; P( z$ E je R" b' W0 T7 N" j
cmp al,'w'5 H/ z2 A. J/ e$ N: Y& {
je W
4 N' a' v8 n* w, U+ o# Z( n2 x cmp al,'W'+ Y |, M1 s! ~. z; R
je W
+ ]8 |* _3 Q6 ]4 j/ o$ aR:& w4 E) D0 T/ O5 K3 s8 R; R
mov si,84h$ `% e/ r, z5 P* \+ n8 H8 J' `5 }( `
mov al,es:[si]
6 K# l$ q* h8 S2 T cmp al,'b'
# |' ]1 u; {3 Y! p0 l- g; m je RBT
" ~! M. _; v% p cmp al,'B' r# t5 w. D% x' U% E# E% {
je RBT- i. t) g1 E. O1 Q$ H
cmp al,'w'
( l( I# W) h$ F je RWR/ F o7 c9 D% [2 `$ n- U7 E
cmp al,'W'0 t* r1 D5 Y- v4 L
je RWR4 R2 t7 B, [, e& ]. }7 y
cmp al,'d'
4 n( W/ s \3 l' ^9 k, E ] je RDR
d4 S9 L* R5 g# p. v cmp al,'D'5 ?8 |$ p9 C$ H
je RDR 3 p/ _7 ^. x$ f3 r* F
W:
& `: \6 ~* ?% p- s0 w$ E8 P mov si,84h
j( d, ^ t# B' {0 s% G mov al,es:[si]3 f _% K; A4 G
cmp al,'b'" A/ `# P I" I9 T
je WBT
* l* U* Z' w2 L0 z! R, [ cmp al,'B'
1 m. X7 q2 w9 b je WBT6 |6 \3 _6 f# A2 q. \
cmp al,'w'
0 X) U" i* i# u) y4 S je WWR( a" {% r1 M, Y9 D: C6 K- O" ]% Z) e
cmp al,'W'7 ]- y: G6 e! o. }7 N3 ]
je WWR( h$ K5 a1 D( g0 _ o, g- H
cmp al,'d'
2 n) _& y( a; t! ^! m; h1 p, y je WDR- T. i4 ?- M8 Z: ~
cmp al,'D'
/ z% o$ g7 p! |* g z je WDR
( I. G6 b+ X \RBT:- `; D/ r6 `8 I2 O6 Y8 o% c. z, r( o) U
call PSP 6 c6 q2 ~6 ?3 j* {9 C
call crlf
e0 ?' V" w. x! ~ N; l5 m mov esi,ebx
; i# t( T8 l* F! W4 Y: ~( o( N mov eax,fs:[esi]7 @% G7 E; g; l( S' q3 t# H
out 80h,eax
J9 s1 B7 F6 O2 h: w$ n8 l mov ebx,eax
0 D# F7 z( j: q: k call _8bits
+ b# E( _+ B% I# C' @% Q- H* G8 P jmp Exit5 _7 u! T& p1 ^+ h7 H* I
RWR:
& K# q$ ]; ^4 e1 U# Q6 ` call PSP
2 w0 h2 V1 X6 N call crlf
+ [5 s' H' U3 x$ p% E mov esi,ebx! W2 R9 T# c* l- G# N
mov eax,fs:[esi]
2 }9 |5 ^$ F. X, d6 y out 80h,eax- l8 L, [' I' P- @
mov ebx,eax; ^" W* [6 ^% \ ]: ^
call _16bits
% g. W- i4 K5 } jmp Exit4 w3 f3 x$ k0 D8 }$ y# z, \; L
RDR:1 `5 ^' Q- Y+ `$ U
call DPSP 2 {. O0 @" Z0 k$ |3 T0 O8 n' s
call crlf , K+ b% E- o* P5 `4 S
mov esi,ebx
- m' T% D1 ~% o) W6 Z mov eax,fs:[esi]
: W. \; Q5 U( ?" N. V out 80h,eax
( L0 Y# M$ Z7 @) C* C mov ebx,eax
0 g) m3 Z- `5 Z) h3 _3 U call _32bits
: z0 Q7 G2 m/ n% `5 B. u jmp Exit
! b, N" F9 Z$ I/ @0 l0 C( l3 P;------------------------------------------------------------------------------------------------
% t: V! o8 J' `" A2 a6 @WBT:; g* I: n' m+ O3 z' i
jmp Exit
4 ]( k* a0 i5 lWWR:3 c" @/ |+ ]: t7 O! T) N
jmp Exit
4 K$ x4 ~& D4 n4 x) NWDR:" I7 ~8 P- H0 \1 L- W2 ?5 t6 b
call DPSP
' M+ p# k/ W4 t1 |" ~& ~- N' W mov Maddress,ebx , j# A+ J( Q. N& a9 }
call crlf
0 Y$ M; p/ l. }% O- {8 W call WDPSP' K" r6 g! S: C x% l
mov eax,ebx
5 E0 `0 r5 Q5 B mov esi,Maddress , M* Z; y& L7 \2 l" N
mov fs:[esi],eax8 D/ \7 N+ i9 j9 j3 J+ q1 K7 E
out 80h,eax
+ C- v; k H% U1 O+ H' n jmp Exit
0 e& v' j7 c8 O: \3 Q- v;------------------------------------------------------------------------------------------------ ! M% s- X$ t. k1 i, D3 m. m( k' M
Exit:! Z* I6 B' ?( Z+ _
call real_mode , K c _& H9 _/ G
pop gs; G! t1 U7 f) O$ L5 \8 g
pop fs
- e" A% V, `/ x3 O% k% R/ w pop es
u0 y9 e" }9 ?* a" x3 ~ pop ds
7 K- K- `( R3 p .exit* l4 Y. v+ Y- u' W3 c/ ^
;------------------------------------------------------------------------------------------------. P0 }+ ^/ L1 H$ f% l9 F" Q& M; m' p
big_real_mode proc near& i( E O6 K5 [# B6 w1 U* b
in al, 92h% v1 h. s" w( P( b* p! x$ [
or al, 002
: N1 R0 K( u$ r. A- _4 } } out 092h, al9 C& [& Z, O6 p* ^
out 0edh, al
2 W5 E7 p* A* i2 U cli
, k8 T# Y' T' g, o: e; b, d) i mov eax,DSEG
* O4 Y( D3 V- r shl eax, 46 U! U# D% D& x3 U+ x3 b, g1 H
xor ebx, ebx8 }( p3 ~1 t1 J
mov ebx, offset GDT_def8 ]5 r0 r6 _1 a, D$ Q
add eax, ebx
( f: D9 L9 D$ F' \ mov dword ptr GDT_Addr.Base, eax7 R& \, F2 J! q( @1 ?/ R8 r
lgdt fword ptr GDT_Addr" L% H' ^) \( E. M8 F1 V4 P+ s
mov bx, 8
! J" u' u. @+ d7 i( Y2 ]3 n! l mov eax, cr0
! d1 s! E( {0 U3 b% V5 \ l8 z or al, 1& |5 p" c/ X8 `/ x9 g5 t
mov cr0, eax
3 ?" q' H9 s9 V jmp PMod
. e, V; _3 ?" m' zPMod:( Z/ F0 d% n; R. K: I3 X
mov fs, bx
, X! V* b9 g1 u: I mov gs, bx
# Y, v6 Y2 ~# q) N+ S mov eax,cr00 i) \- f. L5 ]4 l) _' y$ P
and al, 0FEh
' I* V' d& H$ h" u/ n9 I mov cr0, eax 8 p. P: k, h% R3 w, c7 z
jmp RMod
0 j# J; q' E9 r* D0 e2 ^RMod:
) \" z% |+ f7 Q# t$ }) T9 |, H xor ax, ax
5 g' L1 U- u+ k( I; @. u0 w mov fs, ax) R- F& i8 ~+ U
mov gs, ax 5 T; {0 e2 M4 U
sti
4 ^+ K. F) i& S4 H ret4 a7 W7 k+ P) |" j& T
big_real_mode ENDP
7 |% a9 S1 W6 y u;------------------------------------------------------------------------------------------------
+ o, c, B% c" s3 Areal_mode proc near
4 |, O" f v) U in al, 92h7 `: Q" X+ i7 n& |" @) h t
and al, 02
* V+ j& t+ R `( g6 ]2 a* d out 92h, al
% y2 B. x1 n' ^, o# q% A8 Q ret
% X6 j0 N x* G4 C/ Ireal_mode ENDP
( u1 P; @+ v! @: B;------------------------------------------------------------------------------------------------& V/ E/ g0 O( o& c
Get_Commandtail PROC near F" C" A, N8 M) p: j
mov ah,62h . t! M6 S# y: f# U& R
int 21h
2 q+ x; H" Y1 B6 A mov es,bx3 I1 K6 l. f6 O7 u% Q
ret5 H8 d7 i# j. K) P3 T1 T; A
Get_Commandtail ENDP
( I( \( \6 d9 W Z3 P- V;------------------------------------------------------------------------------------------------4 T% O; @) o$ a0 U
PSP proc near3 A1 J$ l0 j5 B6 y) H9 a
xor ebx,ebx+ g9 B. V3 e( z, C. }
mov si,89h9 W' c3 D* c0 U$ n3 @1 z; N
mov al,es:[si]
$ R* W) \# {6 G z) l9 v$ a call Change
: T: K, B( B: Q mov cl,4
7 W/ A2 x/ N9 q- B2 V0 B* Y o shl ebx,cl
7 `4 M9 w3 ?! j add ebx,eax
4 E R1 i' Q. K! z& M% i ?" H/ R& a5 p mov al,es:[si+1]/ L. U2 v7 b' G+ L/ h! z
call Change# V/ v$ W5 b" _ {: o6 @ g
mov cl,4" g: z) \9 l9 c7 a5 j* C- H! G# W% o
shl ebx,cl' Z8 U* p& e i
add ebx,eax
3 ]2 _3 M {# w! q b mov al,es:[si+2]
/ v1 Q% h" E. J( P3 Y+ o! f6 H call Change1 h9 B* f `4 }: P; A W- Q" Y k3 g
mov cl,4
0 n* u& r" |8 L, _* { shl ebx,cl) X1 j' v _3 g5 `, ~ g. ]/ C
add ebx,eax
% y: M5 ?/ x+ d+ c mov al,es:[si+3]
" u* ]. a; `8 { call Change
! n K0 a9 C) g7 Q: C/ T' L mov cl,4
$ a7 A3 B, P/ m/ N3 P shl ebx,cl4 D5 M7 A4 q; b: i v+ k" F
add ebx,eax! v; g" {( w: V
mov al,es:[si+4]
; z8 g$ U1 O# n5 I+ Y: d$ @ call Change: J4 m. L" y- a
mov cl,4+ m; g1 y# `7 x
shl ebx,cl, v' l& Q3 @2 P5 A7 m3 x' R$ \
add ebx,eax* r5 r: b. [, |/ S4 o% i
mov al,es:[si+5]
5 j& q! ^4 w* Q+ y* d call Change
, l* D! Z- a1 Y; e/ a mov cl,4
) E* u( z# t7 F7 \1 l shl ebx,cl
/ K6 b* I# L# d; b0 _" L add ebx,eax: D& O1 L+ @4 Y
mov al,es:[si+6]: N# }2 z5 Q6 ^& l
call Change. w* l( E) Y/ p) ~* g
mov cl,4
# T) M; @( n2 [% n# c shl ebx,cl4 |- i* Y4 c9 l
add ebx,eax$ }6 X( C8 Z) i9 R u! b( w% W
mov al,es:[si+7]
+ |8 j" P; S9 z+ d7 G5 Z: K* Y call Change* u3 T. ]& M3 x4 e' _
mov cl,45 W. R T) V. d/ J9 }' P
shl ebx,cl
9 r$ U P* y( Q$ \: u add ebx,eax8 a: i. R5 D$ A7 p Q. f0 a, @ m
ret$ ?% \ C/ d" F# l) _
PSP endp& S0 {- k+ t/ K7 K" B1 E
;================================================================================================; {3 J+ L% K# `( B8 r9 V
DPSP proc near5 p5 C6 R- g: I7 o
xor ebx,ebx
$ C# m0 P' r+ v* L mov si,8ah- ]4 F9 b: }# R+ z+ `
mov al,es:[si]3 D8 v3 _$ Q( w# I) F* b
call Change
6 K: E/ g! J( A, Y1 \9 A' k mov cl,4/ C2 V! U3 Q! g! `, F7 H- _& b7 V
shl ebx,cl
, G* h+ E$ ?% Y* \4 R add ebx,eax- Y2 T: b6 M% \! p8 {
mov al,es:[si+1]
% ] J/ m0 p' g+ r8 p call Change
7 ?# p7 |2 Z/ j7 |' x/ a2 P mov cl,4
" I/ C: Z+ f5 ?$ ? shl ebx,cl
# G, x9 z/ G- f add ebx,eax
2 U) o1 i$ o3 R; ?7 B6 p b0 l mov al,es:[si+2]
: K. f! I, N& y) `5 g0 `9 N* s call Change
/ s) Q' f+ v5 r% C* ] mov cl,4
' I% \. z4 w# o2 H shl ebx,cl& v1 z" P/ Y& g( S9 ~: }6 C
add ebx,eax
# j/ S5 u; L& T- k+ `3 s2 k mov al,es:[si+3]; Z( N3 _2 e ^, ?% }; z* x
call Change
0 G# h4 \! G/ i mov cl,4
# j) w! I$ E. S: d shl ebx,cl
( X% @1 @8 j( A* `5 M! X add ebx,eax1 L' X& W* _+ h2 k* w. Z# ~3 X
mov al,es:[si+4]5 Q: n1 U `( C% c! ^- Q/ r& B
call Change
+ h, y8 }7 d$ B" N7 q. Q) `! L d mov cl,4 }! i5 L9 m5 u) Y- _" P
shl ebx,cl
7 t/ Z( @: c7 @: o) `1 X add ebx,eax
4 G6 P, o+ y( o+ h4 Z4 p; o4 V mov al,es:[si+5]( i/ F7 N# _0 Z* ^) K6 b+ c$ O1 `
call Change/ U( \' `; E% J; d2 W
mov cl,4
% G4 g }$ w4 D7 `* l shl ebx,cl
# Z5 ], A7 f' n' {- u2 Z add ebx,eax
! j- ^9 }5 ^; ^4 j, S, S F' k: G mov al,es:[si+6]- S7 D' a* e" L# u% Z
call Change
" U, Y7 w6 S8 b1 }6 O5 g! S mov cl,47 b) ]* ?8 `- @
shl ebx,cl
) @$ ~' [/ O$ J1 f add ebx,eax( H5 @8 E. U( ~* T3 v9 B
mov al,es:[si+7]( _" I- l2 T' z ^$ X* D) _
call Change3 S8 f* s$ i8 X
mov cl,4
: l' l2 I7 f2 X# I shl ebx,cl
# P! X& b- H) q: @* A add ebx,eax6 R% X( N: N6 ^. q
ret
* b, A! F3 h9 }) O) w0 pDPSP endp& ?8 P: K5 {" X; [& U. J( f
;================================================================================================
6 e& }- B+ z; g$ O* \9 jWDPSP proc near! B" L# Y) \2 f" l% z* s. {
xor eax,eax, D+ n& P- [& O, d. h+ E$ A
xor ebx,ebx
5 b& J$ l) u8 Q4 G mov si,93h( _" W+ }; v3 S; ?% P
mov al,es:[si]0 p& s7 d* M7 X) V% D
call Change
" m9 G2 E& a9 z7 G mov cl,4 T% I3 ? w3 X6 ?8 D
shl ebx,cl4 n" y _" W+ b4 C) O) \" H- m
add ebx,eax7 k0 w3 Q& Y% q: i1 J' }: v8 T& g& z
mov al,es:[si+1]
/ C( B4 D& y1 }8 Z/ K call Change7 v) z8 {- @; Y9 ` P! I$ b
mov cl,48 q L/ _) r; N
shl ebx,cl
! J# S0 ~' L, \$ N3 d0 ^ add ebx,eax) F" B! g4 Q7 [" \) t+ @% H" T. _: h1 x
mov al,es:[si+2]
t. u0 x. [; ~( ^ o# g* z$ Z5 W call Change
* d" M$ ^3 K4 Y9 q7 D) Y- u8 s mov cl,47 W- A& N# U' q, g, K
shl ebx,cl8 r/ p/ q: Y" z4 O7 M# ~
add ebx,eax
F8 T% @' H+ A, C+ G7 u% [ mov al,es:[si+3]
! m9 K# K( W( `0 I8 ?! {* p call Change) v3 O+ A% ~/ Y% Z% \/ v; e
mov cl,4
3 P' X7 S! ?5 c* B, Q- c shl ebx,cl# N& J4 B* i! `+ ?2 F; O( L! `
add ebx,eax- U, B& p2 y" N. N
mov al,es:[si+4]
7 m- j0 U7 A! V$ \& y2 ? call Change& l4 a5 \# f8 f" H4 S3 c
mov cl,46 J0 \4 q' D" p R% Y
shl ebx,cl
7 U/ n8 A" j! J/ S0 H- { add ebx,eax
* |+ U; M5 {) ]0 k/ W0 i0 M mov al,es:[si+5]4 d1 U3 { V' N* \% ^" f: Q6 d* z
call Change
) M8 q$ R# a8 Z; u1 v7 |, _5 o mov cl,4$ F1 y f/ @+ `1 A7 y7 B! d
shl ebx,cl
: d7 u/ t+ I: O* m add ebx,eax
% J5 \% N; k9 o/ t. _ mov al,es:[si+6]
7 j- \; B- W$ r call Change$ G- ^) x% j- E
mov cl,4! n$ _/ f: o1 A6 {
shl ebx,cl
( n. z2 q' L% x8 L, M add ebx,eax1 k4 _$ \! U# f# A9 ]2 x
mov al,es:[si+7]
$ Q; p' l8 C m8 a! i1 ^/ {: e call Change
/ l9 v8 A% V" X; E1 V1 k mov cl,4
, Y# Z/ F% K/ I2 X$ o4 q shl ebx,cl# m) `& D$ d( f& v# R/ H" s
add ebx,eax( M) ]1 \: i& Q6 R2 R
ret% E$ F- U! |5 h& _8 J
WDPSP endp4 J. j' ^( S& A7 O0 U! N) D' E
;================================================================================================
, R X/ [$ r7 YChange proc near
0 |- ]: L1 g9 G/ t2 XA: ) @4 N. h" w+ |3 n8 L
movzx eax,al7 m, V+ j! X$ X4 Z5 k# T# ?- Z
mov edx,eax
h; n& N1 E/ j cmp eax,'0'
4 k: c7 V' | B- f7 k jb A
F$ g |" G" b5 ^ cmp eax,'9'
$ u' W; w( {) @: d9 q ja B6 C* W) J0 \! c s1 I
sub eax,'0'
' Z1 r! J1 k0 q+ s jmp short E
1 K+ n6 a* I3 \& {/ }0 B/ BB:
$ v2 n" S h# m9 s/ h and eax,0dfh ! p. s! L0 j8 O( h2 D
mov edx,eax
' Z1 C, x5 k" |, p. R% Z+ c4 v! ^ sub eax,37h
( s7 D+ ~, G% M! {+ N cmp eax,0ah
3 C) ?- D2 y8 [! L5 W- T jb A
; l) M. P) T9 j* G4 Y2 H7 m m$ z cmp eax,0fh. @% g! K7 g9 c) p
ja A
/ u: t& B3 w; J4 u/ XE:
/ I/ z# l" ~. L push eax
5 ]2 ~( ^' R; D# Q% q2 N# F/ S call PRT
( ~3 g+ K3 B i( p+ r7 N pop eax
9 J9 ]0 B6 Q& e+ l" |, n5 m; r9 uCExit:
& ?+ [# T8 J" P! U ret6 u* k, N& H3 K% V
Change endp# p% E; o% Q& G* g; }
;------------------------------------------------------------------------------------------------
; x8 j& A# G/ Q6 r" cPRT proc near9 Y1 k# q: ~; K7 {6 N# y N
mov ah,02h
& U/ ]% P/ i" m5 M int 21h1 e! P2 h' \/ x: K4 y
ret6 @9 |5 z. s) R$ o2 i! X
PRT endp0 y9 p Y2 S* y8 L
;------------------------------------------------------------------------------------------------
. Y) j7 X9 C7 E1 v3 R0 q5 Kcrlf proc near, y! P1 X2 B2 s! L6 d, g* ?( B
mov ah,02h
. ~& z- e) ?* b# Z7 T7 P$ c mov dl,0dh2 S9 a9 P4 u) ^7 Z( K6 w
int 21h7 }# W: a9 n K4 k. ?* m0 L( d
mov ah,02h
* F, {( }/ b2 h) _' ]! }3 I mov dl,0ah
! f1 h4 u: b2 x; f" b) L$ K int 21h' S! K% d5 A5 ]0 m& U/ @1 X
ret( ~+ k8 E8 \0 ~, N
crlf endp
! D5 s @# e# T' a" _. Y' n;------------------------------------------------------------------------------------------------
; w: H5 p: B8 H_32bits proc near4 q9 N. D( V0 R5 Z- K' T- X# E7 ^
pushad% b; R+ P* n, ~3 r6 X' [: o. L7 K
mov cl,4
9 G% V6 a, K W0 V$ l rol ebx,cl, d0 j% E/ G/ G" D/ U; n9 M0 d/ V
call print_4_bits
) r; M! R( Q } rol ebx,cl& u& x7 A9 v7 Z$ g; f
call print_4_bits8 P5 P9 E4 y5 V( |! H
rol ebx,cl
' O- s8 d6 j Y, w: Q! A3 I. J call print_4_bits# d j* j! K: W( J8 T4 {
rol ebx,cl$ w; r D0 C5 r5 P9 K, ?! S
call print_4_bits, q' @2 u1 l5 Z, C
rol ebx,cl" g9 v+ u; b) }* K
call print_4_bits
$ ?& H2 q4 z1 N7 Q( o A rol ebx,cl# V; `4 X {# H% S& ]# b" ]- |
call print_4_bits
- w1 x2 U5 d; `# U1 C( z& ]7 p rol ebx,cl( n v$ v( |; Z( ^
call print_4_bits$ r y. F8 a. f
rol ebx,cl+ q, b" E, W3 T, f* F) i! A. H
call print_4_bits! N) Q: w1 t. v
rol ebx,cl
8 e' A$ ^) w. y( k6 N' q: D popad
' |( c5 x( X: o2 M* ^+ D; M ret/ `: T5 K3 |. N: A) g' |
_32bits endp8 f. c1 S6 m0 p7 ~, N8 f( U4 @
;------------------------------------------------------------------------------------------------1 t, T9 @; m: m( G8 k% x4 I
_16bits proc near
z0 S: s' P0 L pusha
/ j7 W& ~ O; d! w# u7 S9 ?( b rol bx,cl
2 f% ~7 H; u7 l4 h9 k" \ call print_4_bits
" J: ^1 X4 Y" I+ {: t+ z. z rol bx,cl: s; x& n7 _1 w4 t5 \" C+ s2 g
call print_4_bits
/ }% I8 ]1 `8 Z rol bx,cl
5 X- f. }4 C( L" I call print_4_bits$ D5 v9 l" L) q0 g3 g0 y
rol bx,cl6 S) y$ d4 a) y0 j# g3 q, q
call print_4_bits0 S" r' ]% O- B: C: J
popa
% W, F, H5 a& v ret
" h% B- s) _# W; S_16bits endp
8 Z0 ^/ {# H$ F8 n# V. T; H7 L1 d;------------------------------------------------------------------------------------------------- ~3 x; j( H' S% K6 \) a$ E
_8bits proc near9 n, _' x, O/ E
pusha 4 k! k' b" [1 S
rol bx,cl
1 r9 A. B& O! M6 H- n% T6 |/ A. {( n call print_4_bits
4 _& @/ \9 R6 p+ h6 s$ T rol bx,cl
^) E/ P4 M7 |8 `! n call print_4_bits% V3 m5 L R. F/ }7 t1 v: r( s' G
popa
V# A; I. v1 Y' a ret
0 u- w; o: w8 L' S* B6 w_8bits endp r6 U2 }0 k4 a/ V
print_4_bits proc near1 O0 T8 {6 e9 a+ `; O# }+ @4 h5 ^7 L
mov dx,bx
) q1 ^; s0 h; V; l- f and dl,0fh
2 D+ ]3 |! Q- e' Z' b add dl,30h( v& Y. z' W: j3 \7 w5 d
cmp dl,3ah" b1 n6 n" J5 B5 O/ c# W
jb print2 W }* H) z( q6 U1 ]' \
add dl,7/ I, T# B! h! K( @
print: / u8 C7 d) f, Q) s9 ?1 N4 o
mov ah,2
2 r0 M: m2 L9 Y! h7 c) ? int 21h# u! W- i0 D/ k$ ?) _# T$ B
ret5 x* W/ }2 |) d" e
print_4_bits endp ' r6 B9 h! K7 u9 p
CSEG ends1 t% q I5 U- q& S( D# M: [) \. x
END |
|