|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)% o" y, J* q7 `. n0 e a% y" o+ [5 w$ [
0 Q& y7 Q- m4 ~9 R9 u' k) c
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
) y3 U8 o" Q: ^+ |
2 A3 L9 N8 Z \* o6 W0 j' z' R宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝 : G. R: p% X) X4 s% K
8 I0 w( z" f% Y! U0 E8 X" X8 Z; U
.model small
3 Y9 A5 z: p* Q.386p
- G& D# p4 x1 MDSEG SEGMENT USE16'data'
* `2 ~8 c3 X- r, g/ j8 B! `" L% x2 s4 t& \5 @& J
DESC STRUC
) j7 x$ P6 i+ u# q @ l" { LimitL DW 0
/ u( x- V# s& C BaseL DW 0 8 L8 e6 d( W) A; Q9 p7 d7 I2 A
BaseM DB 0 ) b; s. P3 \" ?% d7 ~
Attributes DB 0 ~/ h, G: K; E W( q
LimitH DB 0 ) Y; [2 y8 l6 U. O
BaseH DB 0
( b7 Y9 ~6 C9 N2 |& h9 l. {- RDESC ENDS
* b0 o8 z" U A, W" D9 ]
$ g* A2 D% ]$ N: JPDesc STRUC
4 O- @# I6 D8 Y4 a" Q- L Limit DW 0 ; C6 v+ Q" q7 \3 R
Base DD 0 ! W: F" _! n3 y' _9 S1 T" j
PDesc ENDS# K( W' f( J+ u! t' X
$ ^7 `. m4 d5 S
GDT_def Label Fword
# w2 E, [8 _' Q- Y6 e- nNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
2 a2 _, F! J3 [. L, Z- c0 LData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>+ i5 Q% e: C: o( X1 U' }
GDT_Addr PDesc <$-GDT_def-1, >
) k" Y6 S9 O& H7 `' V- O4 X% ]3 z3 p* Y7 `
Maddress Dword 0
, m) K5 P% q9 Z/ Y5 O( ~7 [
8 p' L6 ?5 m( JDSEG ENDS 6 \' c9 h5 l( Z5 S) q# H
ASSUME CS:CSEG,DS:DSEG) _- N; e- H& p
( O0 C" p% e( B5 |; l7 [CSEG SEGMENT USE16'code'
% M7 d( y$ {9 z3 C6 G push ds
- `8 T) |$ R5 U. J( w push es
8 U7 ^' R! @6 ]9 b! O# p push fs
! H! K0 i& L' A2 Z( P( z% r push gs: J# X4 g5 `1 u) C! d6 {
call big_real_mode 0 F0 v H0 I1 y5 M, v& b4 @
call Get_Commandtail
1 V$ ^5 U+ M( ^+ t! j1 f6 _ xor ebx,ebx
8 V* Z2 n0 a# Z+ m mov si,82h$ ^* j( C. P5 Q+ c4 }
mov al,es:[si]# b2 |& O; v6 H9 p5 Z
cmp al,'r'5 o( q0 F" N: Q- ?6 A9 P
je R# c8 f0 g' G0 J- ^0 J) ?* I
cmp al,'R'
: h7 Z1 b3 F" e# O9 S3 d je R
8 J/ D5 N5 I$ F/ D$ @ cmp al,'w'3 P! `4 C3 P/ M- L
je W( M3 O# a; C& S* a" ^
cmp al,'W'4 Z) z H7 [1 B
je W
1 \8 Y% x: [( RR:
: O" D+ s) n5 m3 C mov si,84h" j0 S# f4 a* x" C
mov al,es:[si]
, Y' y2 n9 n1 T2 x1 g cmp al,'b'2 D) a/ a* a/ L* D9 d
je RBT5 J4 \+ Y+ A7 L* u( ?4 w( Q- s
cmp al,'B'
c% Q5 |" I8 d2 ] je RBT
: H ~. P( M9 v ` cmp al,'w': x9 t o U3 L4 o
je RWR
: m5 [) H8 ~/ F3 e cmp al,'W'% L( H; @0 R' m1 t8 A
je RWR! r# g: B+ L3 G0 Y
cmp al,'d'
' _. \+ x9 @0 ]4 B6 G/ o7 B3 | je RDR
9 C; |) u4 H1 N `( c- h cmp al,'D'* H% E0 }7 {: k3 `4 I
je RDR * R4 I. z8 C2 p3 \6 c9 m
W: ( A/ g3 U2 S& T$ Z
mov si,84h
" b/ s% i8 d- p$ q& h, S) A mov al,es:[si]8 ^: M6 |. `, }
cmp al,'b'
8 T1 K( |, q% w8 ~' o8 V5 ]/ p je WBT& ~, P8 g/ [2 d6 D" K( Z1 ?
cmp al,'B'
/ y; }- _/ L6 V5 W je WBT
9 t4 o/ q( q( m ?' v% m8 ` cmp al,'w'& {( t4 K- `2 Q3 C) G: f' `! a, P6 \2 P# n
je WWR. M* a7 P6 ?/ V6 |) _. v% _, `
cmp al,'W'
2 O: I2 l' P. `) Y je WWR6 f; l& u( f) ^8 S3 j" e" r
cmp al,'d'6 y `3 m# m) [, r0 I
je WDR/ f+ K2 K2 c9 Q% H
cmp al,'D'
7 G: h2 I$ K! f; f# `9 V# m9 I je WDR
7 M" B/ b: h# zRBT:" x( k; ~7 U; b' i
call PSP
' l! W2 P- a# y% C: {: r) `) U call crlf
' W: r% T6 k% u" F/ @, j mov esi,ebx
' _, w( N9 t6 ^, u' t mov eax,fs:[esi]
: [* [2 N& {; w6 J5 M2 l7 C' x out 80h,eax. V2 v1 ]; B0 o; _" d" C& C; y3 w
mov ebx,eax/ h+ g$ s$ i% S
call _8bits
: L' ?# v' J8 G4 t; f6 g9 _( @ jmp Exit. ]; F; l/ y% ?
RWR:
! K0 D# ]# r3 J2 M call PSP
% Y/ y+ T: L1 q1 z& e call crlf
" U0 Z5 p6 ~. L' o8 N0 j mov esi,ebx
5 u8 H" |' P% \# Z$ N. [# Z# { mov eax,fs:[esi]
. i, v2 s9 _( o4 O1 s out 80h,eax0 v1 h. U0 o) T$ g
mov ebx,eax
- @* w+ N. [ q8 R call _16bits
* b8 y, `9 f* t/ L) V4 Z jmp Exit* }: v+ L V7 f" [% z) d
RDR:* W, r6 h5 v9 t( M
call DPSP
- ~6 K/ ? F& a8 |7 _2 |! U% E call crlf
* B4 M: h; s3 y mov esi,ebx
6 I- U7 B( C! P2 f7 B; {9 f mov eax,fs:[esi]8 Y$ v* N5 r! s7 Q4 ~
out 80h,eax2 g2 W; I& V q& w9 r( Z0 S
mov ebx,eax
- u; ~1 }* x8 R; } call _32bits
& g3 W$ x! F( J% E jmp Exit/ p N6 |- g% ?, \
;------------------------------------------------------------------------------------------------% C, D9 L+ J0 r
WBT:# }4 [, U6 ^5 J" V9 A# U
jmp Exit8 k( o6 y! J! t: Y K* O
WWR:8 U4 ^" o2 G# P1 B) Q1 _
jmp Exit' E9 t* ^$ B. A0 O/ [1 q* v( q
WDR:% y; [. y3 C, C
call DPSP
; p5 Q6 p! Z( p5 w6 }# P! L" a mov Maddress,ebx * B2 x" W( o8 B8 ]
call crlf
/ I: y h& w7 k$ `- N: a call WDPSP$ W6 t6 ~& e" \+ ]; H
mov eax,ebx
4 @& t+ g! |+ ^. h mov esi,Maddress ) V1 V5 a6 o' ?) D9 e0 D% s
mov fs:[esi],eax, ~* r2 [3 x) x+ w, T
out 80h,eax
7 k$ P% N5 |! p9 y$ F$ T! p jmp Exit
7 A/ l4 T: m8 m* \; ?4 R;------------------------------------------------------------------------------------------------
2 C+ f- H$ M/ j" _Exit:
6 Q6 Z9 o! V$ g' p1 n5 ] call real_mode ! x x2 F) Z2 q* r$ s8 `
pop gs
}1 k% k+ {6 ?8 I! p pop fs0 |* q& F+ @9 n8 H8 R
pop es. r4 Y3 G4 m' ^ K4 w, Q
pop ds ! {8 D7 U) \' L9 d
.exit! U8 C" U4 y- O, n' k( j' l" v
;------------------------------------------------------------------------------------------------
# M% G* T* \0 \3 lbig_real_mode proc near+ g' }+ u+ ?. t* Z U1 B
in al, 92h; `8 C6 Z+ q; C# y9 E; Y6 M+ Q
or al, 002" @+ ?5 m& J6 t7 f5 @
out 092h, al* \/ C, {- i% a- N1 f) f7 s% m' X
out 0edh, al
3 n& H8 `& J3 }% r6 b, D cli
P/ j2 U8 e% e z8 o mov eax,DSEG
8 c( k0 C9 i8 M) z$ u shl eax, 4
; O; S& l: V0 ^ xor ebx, ebx$ M* `% R1 u9 r# c9 m( `
mov ebx, offset GDT_def" S% O" l* l1 g6 W: g: R) o+ D# `
add eax, ebx: z' @( ~6 n6 U# E: p1 Y- q
mov dword ptr GDT_Addr.Base, eax) J& E/ O8 B$ u/ F: {( N( k
lgdt fword ptr GDT_Addr
' c! J( r2 r; b) f mov bx, 80 \) k4 f$ S# y2 l- l8 B
mov eax, cr0
, i- p r5 o& f0 s# l" V5 g or al, 1
( z1 W: N) W( P) P+ S% l$ o9 X% ?$ u mov cr0, eax$ Z j+ ^; P6 N5 Q+ J' d- J; L
jmp PMod
- k% Z) K3 n8 M5 k; GPMod:
3 e& p- [! [* a$ P9 } mov fs, bx
9 D, V; m6 d2 i; S mov gs, bx, K* U% C+ i& }
mov eax,cr0- d Y. H; H' o7 C0 t8 X: F1 @
and al, 0FEh
+ a% a. T g' G" M& u" t mov cr0, eax {* i+ E [- I$ }9 G: D
jmp RMod+ V5 q5 F5 B0 J6 b! |+ f9 s7 N% M! c8 P
RMod:
4 g7 f1 b- \ S xor ax, ax
7 u5 F. w" Q0 I: J' A4 P mov fs, ax
) V) ]4 O! I2 F% _; k$ g/ } mov gs, ax $ f f# e5 h+ k3 C! k) A% |
sti + S$ O+ u! T) O$ a+ T
ret
! _1 S8 d2 h" u W, [1 Fbig_real_mode ENDP) L+ d0 w) W% N) {& W1 W6 T
;------------------------------------------------------------------------------------------------: s; f8 a' ?* X+ b$ U
real_mode proc near2 M# ^" O% ?0 Q! e1 i" R
in al, 92h
8 _) _( D5 O# @+ `6 c and al, 02
5 [1 p6 R9 `+ X% o* E out 92h, al * e8 }( o: Y# A5 `% l
ret
! f- n* Z- j n$ S6 Greal_mode ENDP# L! K1 X( i1 s
;------------------------------------------------------------------------------------------------1 \' S" W2 D# q& j& |3 v) ]
Get_Commandtail PROC near
! {0 R9 Z8 k) C7 F2 t mov ah,62h # b5 [( A9 b) ?; @0 ~
int 21h3 S4 p( t7 B1 G6 z6 T& o6 d
mov es,bx2 @3 ^, _* y- m. ~! v
ret0 W! _+ r: u/ ~% Q" Z8 `1 _
Get_Commandtail ENDP ! Y- l' b+ P4 Z2 y0 m) {9 M
;------------------------------------------------------------------------------------------------. d, v" O1 f% q0 O8 r; L* A
PSP proc near
1 d! m U8 @9 }& o( x( ? R8 `7 ` xor ebx,ebx
; r P7 [/ z+ x mov si,89h
3 V C% ^2 _( b9 m. F% H. } mov al,es:[si]
4 F/ \3 ]; N; ]/ L) G) G+ L4 \ call Change
v: r1 W! s; O( r0 l6 } mov cl,4
{" Y7 m P* p4 t+ ` shl ebx,cl
0 D b+ P1 ^& Z0 G: F. [& ~# m add ebx,eax' e% a. ]5 f2 T* j1 G$ v
mov al,es:[si+1]
! O0 x" @7 N) p* L" W6 T call Change
t: j# O/ Z# C' E! u mov cl,45 i) a. V X+ `+ t Z
shl ebx,cl8 m8 X: T0 r" x$ B/ `4 M# V- u5 B
add ebx,eax
( p" c/ L$ i o, A7 L; h* ~5 K mov al,es:[si+2]
: t# z* b6 ~9 J' Y3 c0 G4 m" t call Change
9 I# g1 N9 M, v0 L2 b* U$ r mov cl,4- u, i+ J9 A; ?) n6 ^ v* e
shl ebx,cl
o+ i, i- M. a2 r$ O9 [ add ebx,eax
# K, h3 u+ u& B! Q, }% l! `& J& m mov al,es:[si+3]
# d6 R3 V, x# w0 S call Change
! ?" i1 N5 S/ X: V$ O7 d& v) m mov cl,40 a; d( W3 U1 B3 u
shl ebx,cl
- _6 Y8 B' U5 h8 j" }8 L add ebx,eax
8 i' J2 P/ `+ C! A M& X mov al,es:[si+4]
( t# j2 a& j! ?$ Y2 R+ L call Change+ p% _; \( w" E6 H
mov cl,4
5 P8 @1 T: A9 J: G! x shl ebx,cl
' n- E7 _) f h: r7 R* F add ebx,eax
$ Q, z6 e, B. G mov al,es:[si+5]+ ^! F5 O2 S, _3 b9 G' Q
call Change
- ^, [' Q$ [3 I mov cl,4
9 y0 ?) S- j0 P( X5 G' L shl ebx,cl
3 g* W) X- ?$ y8 v' z( N; a add ebx,eax
0 l' Q& j6 n/ q& g4 h$ J& V mov al,es:[si+6]$ T( B) `0 Z1 Y& H7 ]/ c
call Change
- r$ ?) r, d7 r9 e mov cl,4% i8 I$ u% x3 Q0 ^! P3 H3 T4 r% z- H
shl ebx,cl% O" Z5 _) n# E7 s" Z! t7 {8 l+ s
add ebx,eax% u: F8 k" x1 {+ c
mov al,es:[si+7]
+ ^4 C) v$ Z/ ~, L6 M# W4 b m call Change$ {/ ?2 L8 M0 I" N) O& o5 |
mov cl,4
! W7 U$ c8 p4 P9 y6 Q$ m shl ebx,cl6 C6 R- N3 z% [0 u+ r) G
add ebx,eax
6 q) {% K! } s ret
3 W: V, U- c2 C# ^PSP endp$ W/ ^- ]& R* z6 ?
;================================================================================================
* V, ~9 J# o5 B& i+ G# ]: H; gDPSP proc near. T3 k' O, k* y! ]
xor ebx,ebx7 ~+ Y' D* s' q" c4 x z! g
mov si,8ah
; G3 l7 V7 Q2 z5 ~ mov al,es:[si]) C! I: {0 I+ H8 c# \; P8 E0 _
call Change& u. V) |2 F9 `, q6 a7 \9 s1 H
mov cl,4
/ E0 G% b/ e0 ~+ s3 D3 K8 ? shl ebx,cl
, H- ^$ X: ^# A: ~- I add ebx,eax: I/ U/ S4 ?% f' F$ ~
mov al,es:[si+1]
( V" x0 V: ]5 u; a; J& s3 l+ a call Change
' A% Q( \1 a1 w9 F( M+ L( } mov cl,4/ p9 P: O S8 `* ?6 F+ t3 k$ v
shl ebx,cl8 b) @. ]# ?( z
add ebx,eax
" I9 q# O0 q8 m: \; q8 \+ Q mov al,es:[si+2]
4 S* G# u0 ~' s, a; i- ]4 w" a+ G call Change; v: O7 o9 R/ ^: O# H+ w) `
mov cl,4& [: e1 x z m. L; P9 Q$ H
shl ebx,cl0 M# t9 ^* a# l1 G3 ^
add ebx,eax
' W r% t i1 ]4 e mov al,es:[si+3]# g; m5 `- h. Y
call Change
C0 f9 X$ }6 c! H7 J mov cl,47 s% P* s T/ j
shl ebx,cl
5 G' {9 O: H5 v" S add ebx,eax
9 Z. T W, M0 H8 C: P mov al,es:[si+4]
% w. i. W$ J( L3 ?' i% J3 @9 m1 C call Change4 J) O1 F! q+ X6 Z( {
mov cl,4! L. _1 m# `9 i9 v( d" B
shl ebx,cl
! e, v$ O. F' i/ |$ p% n, w add ebx,eax
4 N# i- N- ~9 |& M6 H; E& ]1 G5 c1 T mov al,es:[si+5]1 ?$ p) O1 A* P3 W
call Change L" O' m) n* p* l' |' K
mov cl,4
' R& X1 c5 D9 r shl ebx,cl
% r' \. g& G8 Y add ebx,eax
! Y" C; B' ^, b, q4 j mov al,es:[si+6]
4 W: `( h& n( }) e call Change5 x% y" b; v# J) t
mov cl,47 R. z8 I; Q/ k% V( U
shl ebx,cl
^& x8 e2 P4 p: S add ebx,eax
# m! t K7 S) v/ D4 A4 | N mov al,es:[si+7]+ M6 ^) i( |; L6 Y* @
call Change; i/ ?5 K6 w, B: w3 N
mov cl,4) y. r, h9 s8 @! T; b, M6 G5 L
shl ebx,cl+ N, @. g8 {. W8 g& ]
add ebx,eax
3 g4 D' x- K' A) Z- j9 U ret0 a7 ~# y5 l' E6 h' H% m. ?* [$ P
DPSP endp* T' Y# b. N+ g2 k }
;================================================================================================
) Z( e- W. F6 ^WDPSP proc near
/ \0 J3 C' p7 U: v3 D; G2 s) d xor eax,eax2 u L; H8 \& c3 [' h
xor ebx,ebx9 `$ S* ]; V; r
mov si,93h8 t* s6 C9 w5 S* a# q$ C) B
mov al,es:[si]9 D1 Y$ y; c% |) J5 E6 C- l3 I
call Change+ {+ ?: Y0 p) g7 l+ u @1 k& b& d
mov cl,4
3 g7 h* s4 z& v2 e shl ebx,cl1 q3 Y- p. `: G* i
add ebx,eax! s6 M" Z3 j8 B. b# z
mov al,es:[si+1]. O9 m" [: `- W$ o
call Change" n) G- I( T4 Y! V# O% @
mov cl,4
- F* Z; J9 h2 T% R9 H, | shl ebx,cl
0 v7 E2 Q5 D* t t" ? add ebx,eax9 T1 k/ O9 G2 B& F
mov al,es:[si+2]
5 A3 g! E0 G7 m+ G9 S& } call Change
! P/ I9 ^0 y Q4 P r mov cl,40 Y5 H% ^* x4 y1 W7 D' x, ~: `) o
shl ebx,cl9 Y; f' v+ q1 O9 z
add ebx,eax
, o9 i4 q+ j4 Q) A mov al,es:[si+3]" r+ t# [3 J# a ?, q% t. }8 X9 `
call Change( Y ?) L9 A& i4 O3 P
mov cl,4% P1 F$ S7 y8 ~) Z# B
shl ebx,cl
) ^/ l! Z9 ~ u add ebx,eax: X0 t5 R! W, h! k! `
mov al,es:[si+4]
1 F$ T% _6 G3 A# k* w9 G6 N call Change
5 v ~( l2 \$ V: T mov cl,4& E3 A2 i2 G2 V
shl ebx,cl1 _/ P, v; T* K- d: Y4 ~
add ebx,eax
& v$ O4 e8 a5 j# S% B1 M$ { mov al,es:[si+5]
. S- E2 Z4 @/ _6 |1 v* b: p call Change0 ]2 C: d% b/ C6 { }
mov cl,4
( h. q4 z0 f( r8 d+ o! D shl ebx,cl
( G3 q+ Y3 O0 i add ebx,eax8 R. Q1 a7 Q6 q& ?1 f$ s
mov al,es:[si+6]
/ z* `; k2 z f: E: E7 F call Change
n `+ V8 a0 U2 r3 |- L mov cl,4
5 c/ d' ^3 x7 f1 C: s8 ?" t" p shl ebx,cl
8 d1 Q) g9 L3 }- T' c6 K5 ? add ebx,eax
6 P8 F+ C, e0 y [/ k8 r9 C mov al,es:[si+7]
, T! P2 d5 D) r: n call Change. A/ S! O1 }, b* \
mov cl,4
% [6 ?3 ~2 Y. g& I; U shl ebx,cl" J! P5 Y1 n2 O, p
add ebx,eax# q& {+ j3 O+ G4 V) _
ret+ m% S$ y1 W9 _
WDPSP endp( J" ]% K- \9 X
;================================================================================================8 k2 N' l$ s/ c- ?( S+ G: y; G
Change proc near$ J# a: |# U' n. l# \- I0 k0 t
A:
/ B6 p, \" ]2 d% y0 P& q0 {7 N movzx eax,al1 i+ I- m" _* D
mov edx,eax+ {2 b5 U9 w" |& s' |- q
cmp eax,'0'
~8 n2 C' W1 G+ P# V' ^ jb A
2 ]0 X1 ], K" I7 Y9 c cmp eax,'9'
' m$ @3 u% l2 w' p" s: ~ ja B
) t, I u2 n( D% d sub eax,'0'
' s4 V% v' N: W/ [7 q jmp short E
: |7 J" G/ E* H1 ^$ OB:
9 i+ _( h7 g* `! F/ h- a6 o! B and eax,0dfh
$ c9 }9 H. l% W+ L' c% {' y mov edx,eax/ g- F, [9 c# t' t- K3 U
sub eax,37h % s- C3 l5 B2 ]. S. i0 P6 }$ c
cmp eax,0ah
3 q: A2 \+ H/ ~3 P+ f+ B jb A % L: T' J0 U9 k7 F
cmp eax,0fh5 D8 Q. r1 y. S! ?- g, k9 @; D
ja A
4 T# x" D9 r, M8 r) @" v2 R5 ~E:# l) z+ I- i# k
push eax
% c$ w+ R/ q/ R0 N! Q5 H call PRT 3 A a1 K, L+ r
pop eax7 s( O" l" X& b1 C! a/ p c& D) g; |
CExit:! `$ o8 u8 w3 A+ W6 ~; O5 z
ret2 U- J) n( Y, S |% h
Change endp
9 s0 \1 F: \/ Z7 k$ N2 Q1 j8 I4 q;------------------------------------------------------------------------------------------------1 M$ Q$ |- [. z% r' i9 o' `
PRT proc near9 \" F. `& g- u5 U
mov ah,02h
. N% v7 l; w# O, E' U" o int 21h6 D9 R: f9 W) S$ s! n
ret+ l' Q# G) a E! y1 m, A; r
PRT endp
9 G& g* G9 _! r% j! {7 N& W: }1 U;------------------------------------------------------------------------------------------------
8 W( J% t7 G6 \8 s5 o$ }+ Dcrlf proc near. d: ^. n" k1 u$ K( O; ^
mov ah,02h
/ g$ F8 S1 {- g& U5 w1 V7 t# l mov dl,0dh0 t1 Q3 u- Y* c4 v) ~: |$ G3 B
int 21h7 V0 J7 A8 c7 `- `- J
mov ah,02h
: Y* i, }9 T& F$ N6 J mov dl,0ah! {3 a7 N+ k% \% f
int 21h
+ V2 [! z( f( C1 i7 t ret
. a+ p4 F( s1 \: e" e, t3 W0 c! K; Hcrlf endp5 Y7 I. I- F# t7 E/ g
;------------------------------------------------------------------------------------------------
1 D* S# d3 b$ P1 s2 F- ?7 y" A& E_32bits proc near
# W4 I7 l: P. Q0 C- g2 O pushad4 Z, M% ^# ]$ F. |2 V, c
mov cl,40 |- @9 h- \* e: M
rol ebx,cl* F( k! b4 @% H2 ^5 x
call print_4_bits
0 z9 D* n: P" N+ Q rol ebx,cl/ H4 A9 c! g# `4 _& q: A. G
call print_4_bits
2 f5 V' v) _ {, l | rol ebx,cl
5 y0 A) C! F# A [* H1 R9 F. i* ` call print_4_bits, X* y8 U# D; `2 _; m8 c
rol ebx,cl' \: l. ~# O1 u: Q" b
call print_4_bits8 b, X: C$ p$ Q E6 R! `
rol ebx,cl
' b8 V. K7 A3 Z0 g call print_4_bits
1 w: D7 W0 {9 j/ w$ [' }6 O* e rol ebx,cl
% }" i# C) T- F6 F( P3 {$ f# Y call print_4_bits
4 T' G5 `* v4 {2 N5 j+ U rol ebx,cl
_4 a' ~5 S" c call print_4_bits
R& J u* J! r, m! c4 X0 B, ~ rol ebx,cl
* M" ]; H" a8 g1 B+ A: `) B call print_4_bits+ p: \8 Z1 M( W( e0 _
rol ebx,cl
$ C9 b* \6 ~9 W) t2 r& V popad
! S' K& W; x& s1 H ret
5 c% t2 F) O' W% n- C+ C_32bits endp
' E. Q/ w. i( k4 O- Z4 x. P; v7 u;------------------------------------------------------------------------------------------------
! j- R4 A" x3 b; s& U+ m_16bits proc near8 i9 z& k0 A4 l Q
pusha : x% g- ~9 ?0 b& u2 M6 w
rol bx,cl
( n6 _0 E9 A# V: s call print_4_bits
4 t; {7 I0 e$ j2 ^3 [" y4 S rol bx,cl
. h+ v/ ]5 @+ k7 _) t5 | call print_4_bits
" a1 b# t, F% { X: w rol bx,cl& t" s# Y2 z7 s. E* C" O
call print_4_bits( {1 l( ?4 K# ?
rol bx,cl
! ^" X: O; i8 g- t( Q call print_4_bits: `, O! H" C# E: R Z% V% c: d
popa
( {' {0 `; j$ a ret
% I4 a4 p- w6 G1 y_16bits endp4 k" @& \2 J9 H* M, W8 l
;------------------------------------------------------------------------------------------------' R6 k0 D+ P- L5 r S
_8bits proc near; ~0 f+ P+ p R/ F+ j
pusha ( X8 l. T! h6 X
rol bx,cl4 f1 P7 e1 C, T( h, b- w
call print_4_bits3 S x+ `( ~1 {
rol bx,cl+ m( l. `8 x/ z
call print_4_bits" p7 A6 l9 D* `) \+ w
popa* q' m, T. W5 a
ret
- C! n/ P( s4 J, g_8bits endp
) s8 I4 C8 X* `! ?1 z+ B! Q& hprint_4_bits proc near
* E0 g1 z* Z: L. n( n6 z- l! C, I. t mov dx,bx
% }7 f" K$ j, Q# V4 J L and dl,0fh! X4 ]# k; @& j2 @* r, L. ?
add dl,30h7 L0 L1 b1 A1 M2 I ~3 R+ @( e, n
cmp dl,3ah
5 I P+ X& J; K' l$ q# @ jb print3 F* o6 C. O9 q3 M
add dl,7
' q" d) B+ w6 o( Q+ Nprint: ( L" s) E- [- y, y! W i* {) Z' S
mov ah,2
# ]# b; @6 p$ a8 p1 D% a int 21h% B% E; H: d1 w& P( P9 D$ L
ret
) c7 q8 b9 l9 Fprint_4_bits endp
3 g0 g4 G) w" q# N5 e) q) OCSEG ends, Q. }. l9 C: e" A; Y8 g
END |
|