|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address), G: Z9 t( l$ l% m* s) I+ N# R
( J4 I! u5 V2 d+ ~8 k
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
( P* P, P! f R j
. Z1 E9 T, X( {/ J$ i宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
5 ^+ d% H. o; \
+ o2 }% ?- {3 E- P) W3 Q% C6 c! K- `' O.model small% Y* x4 M+ G5 q: P* l* D
.386p! ~" c. Z) `* L" }
DSEG SEGMENT USE16'data' 8 f" U# {: t9 g1 S0 F. E
. ?2 y6 _5 `2 n: C' }% I' H# rDESC STRUC' }' M8 t% L' G
LimitL DW 0 ' b( {2 y9 L+ ~- v) R
BaseL DW 0
% R" S" { d' O; G BaseM DB 0 # b9 O H+ ^% _3 |3 C6 F( a( r
Attributes DB 0 / @0 C* {3 T4 Q
LimitH DB 0 # Y! }% v& l0 |+ k
BaseH DB 0
8 R( ? ]- U8 g3 v% |' C+ FDESC ENDS, g1 K6 f. p, S$ g) ]
8 s# ^* U( k' x
PDesc STRUC
# ^: V: M( S5 y Limit DW 0 + @7 X1 Z4 d9 o' ]; t
Base DD 0
# P# N& R4 x3 m. S. jPDesc ENDS
4 b5 _2 c* w1 O2 `9 E9 `# F1 F6 h% |7 s' X i' H5 _6 }
GDT_def Label Fword
* ?4 H( w, T7 b+ @- h; i8 N$ TNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
8 E: F' Y L8 ]) OData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
: r+ T* V- ]9 [# H3 m% @GDT_Addr PDesc <$-GDT_def-1, >
( J9 D. n5 Q& b( J, \0 q% D' D: `7 I' b$ J8 y! R
Maddress Dword 0
) @( R1 X( u1 J5 f$ C6 [/ N5 s1 t2 }% V% b
DSEG ENDS
1 Q8 O% r1 b: n- }ASSUME CS:CSEG,DS:DSEG2 F- V# t5 s% N- e( U+ c
6 v7 k# S$ E) D- g$ XCSEG SEGMENT USE16'code' ; u, e: T7 B, \9 q1 [9 }$ j$ Z
push ds
* M8 B$ Q4 N/ j' n push es* \" w* p3 y, v! z
push fs
) ?% u Y7 x, m5 x$ F7 F push gs% v9 h9 j1 L: M) [' z u
call big_real_mode
' f8 O% N4 v: S' s) E" ~3 i4 o call Get_Commandtail! p% m" N O! B4 `9 I, k! O: m& U
xor ebx,ebx
1 v$ Q5 {1 x$ t$ g mov si,82h
* Y+ |) |1 T3 T* @ mov al,es:[si]
# d( J/ e0 y$ ~ cmp al,'r'0 [; P) [' I9 d2 \) K1 y; p
je R L+ K: y3 w; }0 _6 b- B4 u. B8 o3 j
cmp al,'R'/ n! N9 b6 i' {2 y+ t
je R. k$ \" X5 @7 x, X
cmp al,'w'
1 i6 J; L5 r2 X5 u, t/ T- Z) G je W8 k2 b9 A- c" ^+ Z! F
cmp al,'W'
+ s" p: k: Q! _ B1 v je W
: M$ b- l$ E$ w6 cR:. |5 n% K7 l; U
mov si,84h7 J( a! t6 d, Z
mov al,es:[si]) L, [9 d% @8 c# m6 [2 s
cmp al,'b'6 l) w1 V* A% H5 S
je RBT+ U% _5 R! t+ `! y- e
cmp al,'B'
9 T' {, s$ w9 B, o je RBT. a, G6 a) c4 A# w* g
cmp al,'w'
3 T( w% [8 {" x c; [ je RWR
8 w- o2 w3 F, z& v# x* ~' u cmp al,'W'1 v. l9 a, v9 G5 f6 [; R
je RWR" b7 k6 e/ H- G4 O9 ?" h6 T
cmp al,'d'
# J9 v6 H" L3 O+ c/ F9 D8 I& {# D5 c je RDR
# |3 M% [( W8 j- {/ [ cmp al,'D'/ k( ^6 K4 @7 Z
je RDR / x/ t( E! L+ Y
W: / z+ l8 ?- g2 t9 ~, R6 p* {
mov si,84h
8 m1 l' d. l, C) x4 q/ @ mov al,es:[si]
/ V; u# q# _% | cmp al,'b'' k0 u; w- n% W2 `# E) R! Y. j8 i
je WBT
. L* Q+ `; W K! i5 D+ w cmp al,'B'$ p& p2 ?" O, @! \9 R
je WBT
0 _% d' \+ ~4 ?- e n: G i cmp al,'w'
0 Y$ ?0 e- z7 \( f% K2 G je WWR `7 E2 t% V4 V3 {( d
cmp al,'W'* j0 y! K0 ]2 e0 ^# a
je WWR
9 S' |; r/ r" M) h. u0 p/ D* o cmp al,'d'5 K1 U# t3 D5 R. H' C
je WDR
3 `. ^' L E' @, r cmp al,'D'" ~3 a" Z' _3 X+ R( C0 W7 c
je WDR
9 b6 ^$ |( V! r) L6 e+ ARBT:
( A; Y/ `# D6 B0 s& m call PSP 5 V% c# X! G5 ]/ \ w* x/ o
call crlf ) R3 H! H+ S' l% l" N
mov esi,ebx, {9 O- A i7 q3 Q' ?$ K4 b3 c* m" ]
mov eax,fs:[esi]
* W# V6 u+ Q- R! I1 | out 80h,eax) X E( T2 w9 O p
mov ebx,eax
% X& q& R0 q3 { A% p; H& y call _8bits; i! \6 f# A: \8 n
jmp Exit
" W# j6 s- V4 V( iRWR:
" x/ z! a7 L5 _1 X call PSP
1 P& [. @2 Y5 I' F/ Y call crlf O6 S& M+ [$ r A! O
mov esi,ebx
1 {( j- B p2 S+ V" `* E" N( ? mov eax,fs:[esi]
$ J3 P* s* e# {. Q+ x0 u9 f out 80h,eax
' X6 \+ k4 d0 r/ Z/ k C mov ebx,eax
, N9 V% l5 X$ `! m- I call _16bits- T4 ~1 s7 O0 p* O: k+ ]
jmp Exit& k% L' B( T. {( N5 p4 t# p
RDR: X+ I1 U9 n, E8 @! m1 v
call DPSP
9 J% z0 F: T% y; D& i2 i' t call crlf g+ G$ B+ _% p) ]* \
mov esi,ebx# _ X: f! i j# j/ r* r
mov eax,fs:[esi]4 \6 A- \ i$ J
out 80h,eax
7 B4 b" m5 L7 g9 M3 z mov ebx,eax
0 \6 a9 T: i1 ^4 t% _9 ~) P8 M call _32bits
: J' |- K/ ?- s' k S! _ jmp Exit5 q9 Q6 M1 C0 ]- t6 B* u+ r
;------------------------------------------------------------------------------------------------: R D; a- N1 m; X) v6 z
WBT:8 |" x- Y/ i7 F; c9 y
jmp Exit
5 {; ^5 F' P6 Z ]# ]WWR:
9 G/ f8 |; @) {' R9 Z jmp Exit
3 R' G, ?& M9 v/ n, t6 R+ V3 w# MWDR:
/ y# K. z( ?: V1 g call DPSP
L. R% I, Y! x mov Maddress,ebx
; K! I4 w5 k" L7 s# q& k0 l call crlf
! _) p# f) s! X/ L; T6 P call WDPSP2 x! u' L; e) r. j" a/ y
mov eax,ebx
+ p: s; B6 A$ c% }5 U' b mov esi,Maddress % d* H. r$ T( M2 n8 d
mov fs:[esi],eax
# S9 v( N. |2 `% E. u1 Q; E out 80h,eax2 }0 _( P* E4 Y+ r
jmp Exit
" E; f/ V! N! _;------------------------------------------------------------------------------------------------ ( X8 ^0 O, N) K6 M( e& ]
Exit:
5 X2 {( Q( k+ b. w" O5 t; j call real_mode
; K& k7 x! |$ n! N+ l pop gs1 j4 C4 l2 q% D1 W, ]& j
pop fs4 N; Y2 d, x4 v; ~# i4 n
pop es
: |4 a$ d7 U M, n pop ds ; k3 [ J. n" T
.exit# D0 g/ S3 Q+ Q- f6 r
;------------------------------------------------------------------------------------------------
# G4 _8 O8 V! H# Rbig_real_mode proc near
]7 E% F5 c0 \ in al, 92h
5 P0 a3 L7 ]- w or al, 002
) A8 U% q& n- Q4 K, _ out 092h, al. [2 ~$ M2 B* F( B
out 0edh, al
7 [- r' n. _8 ?- s, G0 I( C cli* z: l( q i4 F7 F+ ]! D
mov eax,DSEG# P* x; d+ ^6 Z# q' A; V* ~
shl eax, 4! `. ~4 c' S! l, c( i1 R
xor ebx, ebx6 e$ i. e4 a$ M6 O1 f6 i! g
mov ebx, offset GDT_def
6 |4 T$ W7 f" J$ r add eax, ebx( h' t( M# R* K8 D- [
mov dword ptr GDT_Addr.Base, eax
* i3 I) z) [' l4 r lgdt fword ptr GDT_Addr
8 n# I& S2 [1 X% j8 k7 D" j$ t mov bx, 80 y$ O# Y# Q; B) i. `
mov eax, cr0$ ^' ]* n# m, q. l9 X+ [" O
or al, 1
w5 [; l* q4 G$ c mov cr0, eax
1 \3 ~" K8 J1 a& { jmp PMod% Y' G! D) n2 X' U7 n3 Z* j
PMod:, \) W0 R7 N0 ]- c4 \7 ^- p3 S6 ?8 U- O
mov fs, bx" Q. I. J: h! x2 o% J. R! ]
mov gs, bx
6 n0 W) N9 H, G) @/ ]0 P% ` mov eax,cr0
- d7 _8 J/ t2 `* Y' ]) W, f and al, 0FEh
# W9 F8 q, b3 ]$ Q( B" N mov cr0, eax
, @' t9 w' D; X; j: S jmp RMod7 U- c; ]8 N+ H* B/ _
RMod:
, U* } ]7 s, j( f9 y. U0 Q xor ax, ax
6 V% R2 d) M7 H! @$ o5 N mov fs, ax( C! V+ A3 i! Y2 |# G+ R4 p
mov gs, ax
1 q9 @; T/ J( r" h6 ] sti ; s- K. b# A* y i' A7 w6 U, y
ret2 f* R1 p6 J' |4 ^, o
big_real_mode ENDP% K: `, _" Q5 c
;------------------------------------------------------------------------------------------------* O+ k/ j; D5 S: V1 S
real_mode proc near2 F8 P J( k- [. i% v5 F C$ d
in al, 92h, A- ~& ~3 u! _' ~
and al, 02
4 r9 J1 M' `0 w: }/ I out 92h, al ; `1 p- X1 D* L" h/ b; d
ret! |# @& R; B& q/ S0 }. y
real_mode ENDP: }: H5 L& K, _) N
;------------------------------------------------------------------------------------------------# E" ~$ V$ _9 q
Get_Commandtail PROC near
$ k5 o# j8 J! v B mov ah,62h 8 U0 }7 C! ]9 U! I% ?/ a
int 21h* `& u0 g, N u2 [6 L* P1 [
mov es,bx
! t1 o! S& r5 ?' B D ret
% z, I, w* ~, C$ I. OGet_Commandtail ENDP 7 E0 m; S% P' ~- e7 J$ B/ ]4 g
;------------------------------------------------------------------------------------------------
0 t! W* i$ [( q# pPSP proc near
) r) B. w5 y; z7 }. t xor ebx,ebx6 e8 ^- S: U( V# a3 Q$ e
mov si,89h" f; |# r8 b3 b
mov al,es:[si]
1 F( x9 i7 a! e% s4 o& X/ \9 R) g call Change
( b5 ?/ l, \( S. F: ?5 Y mov cl,4
4 S4 Q5 @! n! e/ A b shl ebx,cl
- S$ @( m4 c! n8 h$ l- E. f add ebx,eax" w+ `: l0 K* {2 e2 M6 b
mov al,es:[si+1]! j" x! N) M" K3 l- d9 r/ J
call Change
" Q& ~4 I" z# d7 k: Z mov cl,4
3 Z5 S4 W+ ^& a5 N4 \- }) Q. ? shl ebx,cl
% P4 i" X) H9 k1 L add ebx,eax
, I+ Q+ b; D/ K mov al,es:[si+2]
$ D3 W! o* d; e# I) ?" i! W call Change
6 [1 r% S1 O0 H. A mov cl,4% [) _7 T3 _8 G& S8 G: I
shl ebx,cl
0 h9 P; g3 I# s1 A4 ~" j8 i add ebx,eax
3 R; t& S4 O/ i mov al,es:[si+3]* {' P5 E _8 B, A9 v+ r
call Change0 W: Q G1 Y: A
mov cl,4
" e% u' c5 W0 t shl ebx,cl
4 q) H" i# X5 G; P$ f& l- E9 x add ebx,eax
( X! @; b& _1 P; Z3 i mov al,es:[si+4]
. k0 w& T" U; C( K5 Y call Change) ?) m) S% h. H
mov cl,4$ U( N* v; m% l: X8 @9 I& c- f
shl ebx,cl0 c1 ?- ]! a5 z
add ebx,eax
& M0 n% q$ Q2 h: ^ mov al,es:[si+5]
( u* W4 R/ P* ^# g j0 e call Change- ?; `4 C4 p; e; |* I" @
mov cl,4
; u' k, k: M; J shl ebx,cl
- H6 c& Z* w9 L( p* a1 p add ebx,eax p, C4 @, z. W' y/ J; W
mov al,es:[si+6]# L- z) N% y" O
call Change. P& ?# u0 A$ o: @# t
mov cl,4. J6 l& u; U6 @+ w: V8 l' d* z
shl ebx,cl
. X2 L7 x- a- ~1 S add ebx,eax" n0 c9 r7 Y9 G% `. B& J, k% S
mov al,es:[si+7]
" K* e+ l* A' n- W call Change
9 O0 z. u' b: A- | ~ mov cl,4: U& f) \3 @! s# M% {- S+ n
shl ebx,cl
( A7 N3 b9 I3 t: f3 I add ebx,eax
+ M. `" b; Q; M+ W ret9 X5 f5 _$ a% A
PSP endp/ ]' _' u, C. ~( I& t0 F% `
;================================================================================================3 Z8 Q4 _7 E# u5 L. N
DPSP proc near( Z6 ?6 ^, a; ]% q- k4 R
xor ebx,ebx( o: g' J! m3 u" Y& E* U/ _
mov si,8ah+ u& E* p r4 u2 K0 D5 `
mov al,es:[si]$ s' P! D- C4 d# d% _9 G3 {
call Change) d V' L9 p' K/ e9 \
mov cl,4
T8 i! }5 ]: H& B shl ebx,cl
' g' h# T; {1 K: H# J add ebx,eax- z S/ I6 c9 z% J( ]; Z! L
mov al,es:[si+1]# B3 O$ K w; F4 o% ]
call Change# {& A' d. I! m9 j2 R
mov cl,4
, Z }( L8 f3 H! O0 ~ shl ebx,cl
) T2 J! N% h. H9 L. r: [ add ebx,eax
, N* y/ q) G ?0 ^" t% s" B3 B" s9 I mov al,es:[si+2]9 F2 ~0 q9 k$ n: }+ ?) j& G
call Change
1 Y: ^1 p1 _: q! W. w1 y% Q mov cl,45 i5 a) t$ T2 n1 f" ?# j9 T
shl ebx,cl
# e# U6 p3 U4 i, q- g8 O add ebx,eax ]' f2 _5 p/ e: X! I) s
mov al,es:[si+3]
( R0 `" ~( d' o _: [6 j! D, s' Y7 { call Change2 x' n9 S3 c( y, [% Q
mov cl,4
% l2 B0 {: r+ |& U shl ebx,cl4 {8 T- \5 t% n9 E" ~6 p; r- Q6 ^
add ebx,eax6 `; V g# k7 C! G
mov al,es:[si+4]6 X- C6 q C" N9 M
call Change" D; [& K' n7 o
mov cl,4
# L Z$ U% O" h8 k9 Y8 ? shl ebx,cl/ h$ Z* C+ U5 G5 R6 y
add ebx,eax3 x, l7 l: c1 Y, |9 X
mov al,es:[si+5]
' P! E- j: ?* x* H: u/ \0 }6 s( ? call Change6 ~' n, L1 \' Y7 o; q. n
mov cl,4; f: [; p8 o; I9 I+ q
shl ebx,cl! ?* X- n% |5 ]
add ebx,eax
0 P: h7 V/ G& B mov al,es:[si+6]
0 s9 l( R! @# m! P& f: G call Change3 `2 k/ F8 K m! w) f+ o5 F3 s
mov cl,4
6 M# U1 M6 t/ q. W+ J shl ebx,cl" e5 `$ u0 g, e+ d6 r7 c0 b
add ebx,eax
" d3 h3 _+ |' Q3 Z mov al,es:[si+7]
7 \0 P% ^( z5 G( } call Change
$ k2 f1 p7 D2 L9 K, E& k9 d mov cl,41 ~7 y0 c! L( M3 H- F
shl ebx,cl
) h% s% P7 G8 M. j( n4 [% B) j add ebx,eax
# D- m& Q+ I0 |/ k# n; F& T ret
- S) C, h( z9 f- uDPSP endp" Q; a3 V) G6 P {$ u- @
;================================================================================================, F6 u; I0 H; w. F5 c. Z
WDPSP proc near8 T$ W6 {$ f/ U6 B& C
xor eax,eax) S {# U( I! A
xor ebx,ebx
+ F- y( Z! @* m7 F; `5 A mov si,93h
2 [8 F* w E$ b% G2 H# {, ] mov al,es:[si]3 z9 }+ O8 {/ e2 G* Y* O6 `
call Change5 L' m+ S# u* O2 U
mov cl,4
4 u3 H- D' ~8 K0 |4 l shl ebx,cl
+ X; }0 X/ X# E$ q4 Q" u0 J add ebx,eax4 f; F5 i0 _ \# `' k, v
mov al,es:[si+1]1 L1 O8 S/ g# L9 w
call Change3 Z+ v% f T$ W- N
mov cl,4' O* |9 ^8 j% U* j4 F) @3 W- G
shl ebx,cl
" W& q- @% J/ c* D+ b3 U X add ebx,eax
* n+ c; q: [! J, [6 ` n mov al,es:[si+2]
$ l) O5 t* `, |9 q+ C call Change
- {. y% I" Z+ [2 D2 _4 F$ s mov cl,4& b. Y+ n4 A$ W3 f
shl ebx,cl( Y) ~9 }8 \: q
add ebx,eax3 s1 @+ s( L1 a: T% Y0 G
mov al,es:[si+3]& N3 n$ y; ?, o
call Change
$ I1 v, z+ u. ~+ G2 ? mov cl,4
& F4 r2 }. D& X/ C! k* U$ Y shl ebx,cl( w$ {# Y+ a0 b% d1 j# u- x
add ebx,eax( k- n1 e0 H: |
mov al,es:[si+4]
K# u. q3 v: K8 n call Change
0 g! y$ G# L* f, W mov cl,4$ `! Z& O1 a+ m
shl ebx,cl
" [: y7 e- V; J7 t add ebx,eax3 x8 `; r3 j6 B, a5 i& `
mov al,es:[si+5]
5 n0 `4 ~" \8 ] s call Change" X5 i/ R# R7 }" k% r/ i$ @
mov cl,4
. k+ O2 C. W$ s: b shl ebx,cl H& o4 B8 R' b: x) B6 l% d
add ebx,eax; Z: F4 b0 l9 m& W
mov al,es:[si+6]% @+ ]# \, w( @
call Change
, e# e5 z$ U. L4 O8 ?& V( d mov cl,4+ s6 i/ d1 Z+ q5 E6 F
shl ebx,cl
& A( E9 I# G8 P4 @9 R% P add ebx,eax
- K. ]- I5 y0 J' Z+ T mov al,es:[si+7]; B9 h3 n% {% d' j. F% G+ t
call Change* T! y5 L" b: F0 u0 [! C
mov cl,4; y1 U: b! S8 g5 R c/ X& z$ F
shl ebx,cl3 Y! @# C& B* F/ Z0 `: a9 T. z9 x
add ebx,eax
/ a" W8 ~' b- ?8 `2 ^2 K ret' d+ u# J2 c9 d2 x: @
WDPSP endp: P4 ]5 y `5 z6 E4 [
;================================================================================================
. m: e9 _8 y6 e" |7 d* Q" ?1 I: y0 GChange proc near
. C; P/ z2 y* [7 M, G. R, E. [8 R, ]A: 5 }" m, i2 V2 U! F6 K
movzx eax,al
* V' n ~$ R4 c. @ mov edx,eax
?& G( N9 u+ M, b cmp eax,'0'
# n/ g: L$ M1 {3 {! ?" A8 ~# g jb A
6 U! N# s9 ~! M# `0 c5 u8 W& d2 F cmp eax,'9' 8 f. {' q v5 o/ h) s5 z! w
ja B
) I( A: o3 N# k& q. c1 V sub eax,'0'
+ d) x8 o1 ]' b( ~: r' T jmp short E' e2 a9 s/ q+ n
B:: s7 c0 J9 v" }" n
and eax,0dfh + g2 W2 S9 @ X/ H; F4 |2 }
mov edx,eax
7 c8 c4 G+ R, n6 Z/ i/ b# e sub eax,37h 0 R7 \2 V) O3 W) C
cmp eax,0ah( E; E* E3 I, ~
jb A
8 j/ F. J" ]; N9 [: B cmp eax,0fh
% n8 o, f# \; v/ {0 C ja A
# |* A0 G. z K6 A" TE:/ s0 h+ B$ P7 J* r. \
push eax
. D: g4 b1 _% V/ P1 M$ } call PRT 1 A: {- k: u. l2 B9 K
pop eax
' t/ D% V4 o, l6 _" Y# wCExit:
+ ~6 E5 P" ]# M( c2 B$ A% n7 G ret
! S2 G9 V: H; D% A4 zChange endp) ?: @5 `( \$ v$ a9 o' L( B8 ~
;------------------------------------------------------------------------------------------------; v1 _- G5 [1 K3 B- d3 D
PRT proc near
: p p* Q( v2 J mov ah,02h8 |1 T* Q) m2 B _6 @* P7 J, w# C( E
int 21h2 s/ q; F" W! |- S5 X
ret
P( Y. I5 p) Q% a1 B5 a) V! L5 APRT endp
. t6 Z( e& }1 f) c;------------------------------------------------------------------------------------------------
* z7 ]7 B9 T% L, e1 G5 @- Acrlf proc near) H' z2 [. L) \! N4 |
mov ah,02h
% Z# v: L! W" Y/ d mov dl,0dh
) |9 c/ p. V: D2 J4 N$ z int 21h+ U% J( y" s6 A4 ?3 @/ L0 ?
mov ah,02h
1 C9 e# c. ] o. A2 s% Y mov dl,0ah) j$ \- q$ q6 _" S) I
int 21h; t8 t+ J, {& P4 B& v" Z, }
ret
# U2 |/ H, @3 g- v2 Dcrlf endp0 U" [0 \+ ?& w
;------------------------------------------------------------------------------------------------9 t& ]& ~6 B7 [" c1 q, x2 h
_32bits proc near3 f5 W; [+ O* G0 X( ~6 q
pushad
. h' _' \! K: q7 z$ V; [ mov cl,4
! A \, D0 g/ p6 y# q rol ebx,cl
! p9 y4 f# L% c8 M6 E" c call print_4_bits0 m8 t7 t! J) c% k/ C$ f d
rol ebx,cl
4 l) D- [* K) @$ b call print_4_bits
, ^: \. A, y, P+ h5 j6 { rol ebx,cl1 j' G8 \ i% l& G& K
call print_4_bits4 ]: `$ e, ]+ U( A
rol ebx,cl: ~( x0 d, F$ ?. ~* B. B
call print_4_bits
" ]5 f( H% K/ P9 M1 v& Y/ W* e rol ebx,cl
! `. j+ d6 \/ J% v( ^2 u$ C: I call print_4_bits6 [# B C3 P1 b2 c- d& _4 R
rol ebx,cl
! r. j" g' h# w- Q8 h7 }) ? call print_4_bits A" i& {2 S; ?
rol ebx,cl; j8 l; v# n* k O
call print_4_bits
; |1 y- n" t" r- ~1 O5 d) R rol ebx,cl
% X' z2 K, o# t call print_4_bits
( b/ e5 r8 t/ M* ]& f rol ebx,cl, k z h: L9 F u7 N
popad8 V+ D: T. q. o0 z3 B' F
ret
( z2 C+ w& D0 G$ Z, n/ f* o! R$ L+ ~- {1 S_32bits endp
2 N7 ?3 `7 `! e# K) T" g6 H;------------------------------------------------------------------------------------------------
8 t! N; U! ?) F R& ]4 |_16bits proc near
, D- o7 P( v4 V3 B3 ` pusha
4 W; o8 q/ p5 ^ rol bx,cl
: X8 n5 X2 Y% G9 e call print_4_bits+ @$ l( L+ P/ s% y3 j
rol bx,cl
0 e4 k5 V; _6 A6 B+ z7 z call print_4_bits
/ N' O" m4 R& n2 Z rol bx,cl
! V8 K5 I6 {$ A call print_4_bits
: u9 Z* W: M5 Y' ]0 N8 n9 R1 s: k rol bx,cl
* r- c! K; m4 b4 Q5 I call print_4_bits
( E w- X, @+ [+ L2 ] popa8 T( C: H" \, m* K& L
ret
- o, X1 S* m8 s: U_16bits endp
7 b/ a5 c$ n% x: V+ k+ a9 ?;------------------------------------------------------------------------------------------------( B) L9 T1 e2 V6 q y
_8bits proc near
3 r' c0 s+ Y1 e3 x6 u2 |4 N pusha ! Y5 O$ t# W1 ~! U# ^4 |" |
rol bx,cl0 q9 ~9 B: Q+ J( C$ y+ l8 N
call print_4_bits
2 Y) v% n* w/ t3 l& j; W rol bx,cl' x- t$ F0 q5 u- `( J5 i# y
call print_4_bits
6 ^. {8 k" Z0 X% h; U popa
6 ~6 {# m: S. T# \3 o4 E ret& K2 M' k Q7 ~/ ]( ?. z
_8bits endp
- h! H# d" B6 D( \/ R" P, i1 J( Aprint_4_bits proc near
0 N0 \; e; g$ R0 ~; @! U! l mov dx,bx, x3 j4 O3 A& _/ B) R \1 G
and dl,0fh
! e3 L9 w* S W9 v3 ^* v add dl,30h
1 k+ I$ o0 T* \6 b& M- t* ] cmp dl,3ah
1 y, O) v- ~8 h( I% A2 A) ]" e; c jb print
! O! M8 G. r' w7 f add dl,7( E3 }8 ~) ^! M n
print:
2 l1 U! Q+ h$ [ mov ah,2
) T' \8 e0 L* a int 21h7 \9 n( F" V, o5 Y. {9 Z- n
ret
# y, O, I3 z/ j6 E3 m- [print_4_bits endp . V4 c, g$ W6 l Z5 {2 X
CSEG ends
4 d' Y& [6 U+ Q! W3 s+ vEND |
|