|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)
7 {6 o' K$ _# g: R8 q7 ^1 i3 w2 a( D: j
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
: _ L% P. t8 i. Q. v+ M9 M
/ h n! I5 O% L G: @宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝 / r) R0 X* \/ y5 c' n
* p) w2 I8 F" P: }& f( m" _' y& t
.model small+ k+ z- [, L2 I) |% n
.386p) |! C1 z9 U) _8 m& r
DSEG SEGMENT USE16'data'
1 t# E5 d+ M4 I3 D A. i5 F- u! a+ j+ y7 I$ W& ^
DESC STRUC
: U4 u2 Y1 R1 h. X" l7 p LimitL DW 0
4 |' L& L/ H" s: X, |( E* T BaseL DW 0
# k- h1 ^2 [2 f# i/ M+ ^1 F, q BaseM DB 0
7 Q% b1 [$ V7 X+ }1 b0 s: ?# D Attributes DB 0 7 _+ q; @% I$ ^( H9 L
LimitH DB 0
5 U- J% L$ M, }1 s/ k' K( u BaseH DB 0
/ u+ {7 J; w& O$ ]9 c+ m9 q5 d+ J: HDESC ENDS _. E+ l" @' e% L
2 c0 m+ T- _& S+ G7 f
PDesc STRUC$ B! A; |) X: K3 a* T
Limit DW 0 ( O0 t3 Q" l5 ?2 S1 E) K6 g9 C
Base DD 0
4 F% T% Q! [) nPDesc ENDS
/ }7 N9 ]2 R/ v+ v: a; e e2 h h1 M! q: U: ] ~3 p% _
GDT_def Label Fword
& o' f6 ]: K6 L* ^Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
2 E0 r+ d2 \; {* d3 k! w' T, VData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
0 s1 C( ?% l; a( r( {8 e; |GDT_Addr PDesc <$-GDT_def-1, >. M# C/ ?- o m7 m4 K! u% b; \
! @- L m+ S K- x! UMaddress Dword 0
" [# ^! x( Q% i) {
: Y$ ?2 z* ^$ }# d: y A* ]DSEG ENDS 5 u" ^/ z' `3 k
ASSUME CS:CSEG,DS:DSEG+ i+ a3 C) n% ~1 T3 Z2 u
5 o* A& _" I% a/ f
CSEG SEGMENT USE16'code' $ e" W, K2 c0 @
push ds0 z! `! G! Y0 b# g) x7 Y: P1 I- L
push es6 h G7 W- R( h! N5 e1 B+ O$ f
push fs3 @) b) R/ I$ O; e
push gs5 R* K! ~, s, f/ M
call big_real_mode ( ?' q! K# C: t5 Z3 w) Z
call Get_Commandtail8 x6 L# P- i$ h g T- T b
xor ebx,ebx! ^0 }3 z: J. @, B
mov si,82h- {2 @2 @9 e) F o! C
mov al,es:[si]+ a1 e! U8 R0 I/ _5 q
cmp al,'r'
0 j/ `2 N1 b* [1 |5 ~ j je R3 w. C$ }2 ]* Y. t
cmp al,'R'; C1 p' s. U6 {; q; z9 N' _
je R$ G7 }! C+ f, |" l/ Z I
cmp al,'w'
+ `/ E: S8 [9 C* F je W3 A; L0 g s+ H4 [
cmp al,'W'8 O4 D( C1 `. Y% s8 n
je W
% G; l P) l1 d& P ]' k# NR:
5 w7 ]1 G' T$ R) F' y mov si,84h$ w6 M. d$ u2 } g) T
mov al,es:[si]
6 D: p9 w1 u" c$ } cmp al,'b') v4 x! F: l- J
je RBT( B7 h$ H7 D# M7 b
cmp al,'B'
2 r( c) S4 ]1 G* H9 B je RBT. S% L8 s; X) e" h3 N
cmp al,'w'0 v6 Y7 k& b; I- u4 M; R
je RWR$ Z& Z `% V+ E2 u* S
cmp al,'W'6 H) L( O4 \2 \. w Z% f' Y
je RWR
1 @3 a( N2 M5 C1 [' u" U. W, f cmp al,'d'# |. M5 _; m$ b( h5 y6 t9 R
je RDR
1 g: w% j8 `7 K cmp al,'D'
2 F! s! N4 r1 ~& y% \* s+ x je RDR
. p, I2 v2 g1 @ x* `% ZW: ! i" C& @! X7 ?
mov si,84h* o; c2 o+ U4 K6 h- Z3 ^
mov al,es:[si]! R6 D% w7 z5 h0 l3 T4 e1 Q
cmp al,'b'3 Y0 A% [/ i2 f. P f; Z4 E2 f
je WBT
7 z2 G$ R5 U9 n* R0 Q( b* I cmp al,'B'
+ b3 o# `# g0 i5 I/ f je WBT9 _. _9 D( o! _- T0 f' c
cmp al,'w'9 m( |4 `- f6 w$ p: N/ _& ^8 f0 y
je WWR
% W0 Q/ q( d6 z3 C cmp al,'W'
' m/ i9 ~ N0 Z7 r je WWR# j1 E ]7 R7 M9 F# z$ b
cmp al,'d' Y" i/ |& h( s, g# M
je WDR; a% Q C `: Q6 q9 W
cmp al,'D'
0 e% O8 K4 A. |5 U6 `8 ^ je WDR
3 t s2 t4 u1 hRBT:
9 Y$ o- c0 M1 T- a2 O4 j5 g) ` call PSP
& n" _% }, t" E8 N! i& L; t call crlf : i6 h' I8 N) k. C% \ c* q: W6 a
mov esi,ebx
! Z! D" Z P/ G* o: r: I mov eax,fs:[esi]
5 {2 `, k1 u2 k out 80h,eax
0 \4 g' U* M7 `5 H7 `# [ mov ebx,eax* v9 |+ @/ v; Y, }
call _8bits( m- m i' l0 x. M
jmp Exit0 n" g! N3 L4 \+ t: a
RWR:8 ^( M; t- ^4 h. d e: X
call PSP ! F# P# `; U& m
call crlf % A2 v4 ^ [( o* `" z5 F
mov esi,ebx6 q8 a- O- Q; f0 U; V% V6 k
mov eax,fs:[esi]7 L# D2 w2 \" u$ F% [6 L
out 80h,eax# J" t) }; z+ s2 o; G6 g. R+ G
mov ebx,eax
) g/ P! W; X% U call _16bits( r. s/ \( W, N) X0 e
jmp Exit& y$ w. @3 e# x, B9 E9 U+ \1 f
RDR:
" k# }3 X5 Q! `' v call DPSP
. ?. R9 B1 x U# ?8 B call crlf , H; j7 }$ o3 Z& X4 q4 [" Z
mov esi,ebx
/ J9 W5 b( O6 b" \$ B, D mov eax,fs:[esi]
- V9 G$ T4 ]) |! ]' z7 p6 c out 80h,eax" D% h2 w6 b# V
mov ebx,eax
# Q! o6 l4 V, Y* M! s# ~ call _32bits
. a- j7 J6 c2 y$ x: T) n; r jmp Exit
7 c5 P g7 u0 h# l/ f;------------------------------------------------------------------------------------------------
, L d5 g8 m: Y1 T1 l- A+ [) ^WBT:
' I; E# e* P; g" q; k' f: m5 @ jmp Exit8 ^- t4 }# ^- U# V# W$ Q! t
WWR:
7 V" r8 Q- ~( G7 [ jmp Exit0 _# i- `5 j& u% V
WDR:4 S7 ~6 n. Q9 M7 c
call DPSP
+ D. M1 F$ ~0 I6 a# C mov Maddress,ebx " l; v; ?& [! ?9 r9 m6 Q7 ~
call crlf: B! q: u- E3 T) G' ~
call WDPSP
0 ]( b2 l' T9 h4 J" T mov eax,ebx9 f t6 M. {1 i6 F2 S4 n
mov esi,Maddress
, l; Z, O; w$ v5 g mov fs:[esi],eax% U' r6 }3 L/ x' U/ H, T( q
out 80h,eax, s& A2 x4 R7 V. n3 _, d7 ]8 o/ |
jmp Exit
2 k0 M& U( x" A, t+ T;------------------------------------------------------------------------------------------------ 2 @) S$ |: c& `) s% `
Exit:
$ W# e1 k/ ^# F$ D: p" w: L call real_mode
+ [2 K: }( C9 I$ b pop gs5 \- {% n6 e# W+ a, h* a8 l7 {
pop fs( H) V7 e N- D3 X
pop es
3 f3 B, R2 l* \: e pop ds + J' u3 p. Q: L7 l" \, d
.exit
* b9 T% e3 G* H) s0 a, E7 _;------------------------------------------------------------------------------------------------) Z/ O& C" l# T1 ], f
big_real_mode proc near# C: G7 R$ a" @* s
in al, 92h, x6 H! s/ ]- d x5 N
or al, 002
+ m' n: v+ c p out 092h, al
! n+ v; M+ E6 k out 0edh, al
$ v) I+ B- E1 L" H. m; I, f cli h) ^1 f4 a2 M, k8 \1 V: Z
mov eax,DSEG) s- M2 P2 `* w8 p
shl eax, 4
$ o9 L( w9 n4 ^ xor ebx, ebx
" l* l; K. \$ _. A mov ebx, offset GDT_def
: ? _0 i# o, Q1 E add eax, ebx
+ Z: ?3 J/ s' j9 l mov dword ptr GDT_Addr.Base, eax& i$ F' z1 F2 I! F
lgdt fword ptr GDT_Addr. g9 q0 }4 _' N* A
mov bx, 8
2 Z& M; U5 O( e6 D mov eax, cr0" w' `. u% B" A% y; D. o
or al, 11 W4 a. t. c6 @8 Z% T6 X) H
mov cr0, eax
& b) X9 O) Q* \* s jmp PMod3 W r. m, ]1 }7 k+ W+ h, |. A4 k# A% @
PMod:) Y: q; _) y' A- l0 U$ R4 M
mov fs, bx# a- x$ e1 p, y f# i- ~
mov gs, bx. O; h1 Q+ u1 w- j
mov eax,cr0; z# a, y! k0 `4 m& U
and al, 0FEh
6 O5 u# o- R# p) v: ] mov cr0, eax
8 d# t. y- v6 H' G# T jmp RMod2 y& s Q+ g- K1 P! n
RMod:, {; R7 {4 r4 W+ X/ G& k
xor ax, ax
9 L7 g- o& u9 Z3 s mov fs, ax
. _$ A- H! \2 U9 M) W mov gs, ax
4 E0 u) O. d2 Y* \4 L sti % X3 n0 R5 B4 ?: Q! n% Y0 l( R
ret( m3 }3 l% f! q3 T7 u& d" r
big_real_mode ENDP7 G( R; d" G0 }2 G. B
;------------------------------------------------------------------------------------------------- J/ z8 Y, z+ K' S7 f
real_mode proc near
1 _; a; B3 `* W+ ~( F1 R7 z+ C. T in al, 92h
8 _+ n7 i, p% D; T, @ and al, 02' G, N3 F5 P2 E0 y: o0 T! w
out 92h, al ; O' J1 ~( X. Y
ret
8 e& a) y: I6 yreal_mode ENDP' A( i8 ?4 ~ ]: n
;------------------------------------------------------------------------------------------------
& [1 H1 w% r+ {9 D2 U: Q0 A" hGet_Commandtail PROC near* n% g" z3 n; L
mov ah,62h
% ~& l0 Q. H K int 21h. y$ e8 [- w% q; h" V
mov es,bx5 W6 L* [! Q6 N; G. ?, P3 G
ret/ ]5 a- }& C8 u6 [" _
Get_Commandtail ENDP
! g8 y* n; j* q4 O8 x. O;------------------------------------------------------------------------------------------------0 I% L) c' ~7 ]1 h2 h
PSP proc near$ L; w" L* B q% h
xor ebx,ebx y- }- n4 Z+ u& ]* w
mov si,89h) Z9 b* N% x0 a
mov al,es:[si]
+ X* f, T: G+ u- G( u/ ] call Change+ ~4 k! u+ P: R
mov cl,4
) f/ |1 y$ `+ m/ C6 `. Z shl ebx,cl' P0 t. }: U* B" H2 v8 D) l* w* v; X1 q
add ebx,eax8 _: h/ Y* f5 i v! }8 i x
mov al,es:[si+1]
& @1 V7 w7 c! U5 v! ~ call Change. O' ?5 X0 F3 D( O
mov cl,4" q; l4 I8 w% c {! A
shl ebx,cl( O/ ?5 U% m* A' m) P: f
add ebx,eax
; A6 v: }, H1 U, d2 E# t( n mov al,es:[si+2]
3 y4 X3 [' B: M" v call Change5 T e( G! i% E7 N7 z
mov cl,4
1 J; X+ k2 w. i, d6 b shl ebx,cl
- E1 ?" m g$ P( o+ y# _4 c1 A add ebx,eax# a" R3 E) |( ~
mov al,es:[si+3]7 V* h' o/ J- n0 u+ S4 M/ }' X
call Change* l3 s. T4 s4 g
mov cl,48 A4 u, |* x: |
shl ebx,cl: S. `3 N& q4 e& ~ ?4 Q. R# S
add ebx,eax& ~( B' |$ I3 o' q
mov al,es:[si+4]
; c! R u0 U! v0 o+ s8 N, Q call Change
' I5 a1 r( l6 {: `" X; e mov cl,4. G* e3 a1 F6 M
shl ebx,cl
1 o+ E! p8 O, _. g) _7 f+ E' w add ebx,eax
2 J+ e" Q3 ~2 t+ Y) {+ O+ C mov al,es:[si+5]
4 V/ a, T0 _ z+ B call Change
) _3 ~) q; ?( d$ Z# l/ z: `9 j mov cl,4" g& G7 W* D" T7 b5 J
shl ebx,cl
% u; P, F3 v- A: p: W* R2 q- C5 g% p add ebx,eax4 ^+ c& e/ j/ r0 ` D/ i
mov al,es:[si+6]
$ j3 }3 m( M! b* z, O* z call Change2 q* v8 x9 f' N2 E) X0 T
mov cl,4 k2 q' p8 N7 l' r _0 j
shl ebx,cl! `9 @2 i0 t+ o2 y2 ~
add ebx,eax
: W( ^4 U1 s; v( o mov al,es:[si+7]
M e2 N+ O; m% ~% z& P call Change$ b/ ]" G1 D2 k8 j& ]$ I
mov cl,4
5 n. ]6 X1 X8 r: q2 G- s' { shl ebx,cl
8 J" r( ]% c4 x; i4 u4 J3 e add ebx,eax
1 A$ S. g7 j; U! c( n; I ret n) F% t+ P F
PSP endp
/ Y1 ^( Q5 N9 P6 V. Z6 w: E3 M;================================================================================================
! V% @" k% H9 i# m( RDPSP proc near9 z; Y2 \9 u% x2 F6 I" V4 n
xor ebx,ebx" c# x% J' T: i" D' k; q
mov si,8ah+ O! q. T% P8 P+ G2 R' U4 R
mov al,es:[si]7 Q: n2 B9 H5 S
call Change" D/ y p3 @! P. ~& t
mov cl,4
7 J6 }! {5 [0 ?) p& \. h9 B- u3 [8 p shl ebx,cl
* H9 V# M5 o3 C+ J8 D* i& Y5 A add ebx,eax
2 O9 z+ t# O% x' {7 S mov al,es:[si+1]
) B* g$ q5 r' V. a1 l- \3 p call Change' I1 m1 n3 P6 ]5 V
mov cl,4
f: D" I) C$ L* d/ K6 ? shl ebx,cl: m1 k+ R( ~* Y% R: `' I6 B
add ebx,eax
7 d; J8 i8 L# z mov al,es:[si+2]" T% d& b2 E4 y/ T, ?5 D$ }
call Change& b1 d$ ~1 t4 p4 o( k
mov cl,4( d, u4 c* a9 }
shl ebx,cl
1 a2 u; s: I8 V. a9 O1 } add ebx,eax* U6 M# p% y" I# b$ [% l V; M
mov al,es:[si+3]' M: R" e0 b" C- a; X( I
call Change
f D/ g( [: O( G( n mov cl,4) V# }7 u- w3 ]8 _& r0 [
shl ebx,cl
! k0 |1 b1 o! x" \7 D( j2 Z add ebx,eax' i! ^( b% S9 ^6 y
mov al,es:[si+4]
- r$ u" @* j0 O call Change. D7 P# }. i4 c1 Y* E5 ^' U* F' C; D
mov cl,41 x1 `' j2 Z% G `' ]2 m
shl ebx,cl
( `' X0 W4 Z9 P- \7 Q7 N# o add ebx,eax& b% F( h3 i2 n$ n; w3 _
mov al,es:[si+5]
# Q1 b( ^* z/ ^1 F `$ q call Change
' O. P! u, A7 E0 {) t mov cl,45 v" c$ g/ O3 D' l! W! P
shl ebx,cl% p6 E9 e: E2 [( U N- D* Z3 k
add ebx,eax) o0 x9 ^' I6 b, D/ G, M1 c4 N
mov al,es:[si+6]
8 ?0 m6 s/ \0 P5 V call Change% c1 b. W O4 f' G2 |$ p4 e
mov cl,4
1 g5 B& I2 h. l* G shl ebx,cl
* \- _* q' u9 @ add ebx,eax
9 V1 ], j, \, v9 J5 n mov al,es:[si+7]
1 r9 t$ p& w2 O5 f call Change0 w, k, a# q q( M9 n# L: s
mov cl,4
7 @- x9 |; `( Y: g9 {* Y shl ebx,cl: d0 g1 r2 J/ a" t0 `
add ebx,eax! W3 Z" w- V3 f Y
ret" `) k: J0 H, \) h
DPSP endp* V, C- p) l4 P& {" D
;================================================================================================( E- | z% p- Q
WDPSP proc near5 ^' U8 }- m9 M( S, I
xor eax,eax8 p; w9 Q' w& D) E
xor ebx,ebx
* d+ U: B( S' [+ E mov si,93h, O+ ^3 q, W4 J e. [
mov al,es:[si]
% T' c1 h' n1 w" q* L! b call Change
' C& k" E5 ^' M& R7 U3 U; Y mov cl,4( X4 ?) W1 V9 V* T2 I5 @
shl ebx,cl4 |. i; ^" H$ `1 r: U( {8 P0 Z6 \
add ebx,eax1 b: L& D4 L' v. f! Q# l: \
mov al,es:[si+1]
7 D" W+ j$ S' D9 _ call Change) s/ Q O9 w8 I. P7 K8 E
mov cl,4
& g H- q$ ^% Z [. I5 \ shl ebx,cl1 m0 L' @* e+ L# g
add ebx,eax
q1 \0 W: Z( K- _) h2 U, t mov al,es:[si+2]! e; {; ` q7 I5 j8 }
call Change6 E& x% Z- O8 L/ G- {
mov cl,4
: b" k7 k# t0 Z" V! B shl ebx,cl2 F- U+ @: M+ e% z2 @- z: ^- n
add ebx,eax4 _, \9 V0 ~& \4 a8 q9 T4 ^
mov al,es:[si+3]
. k! y @5 j% _/ Q call Change
- Z! w& H- T4 p) r& v5 N4 u mov cl,4
! ]8 d$ {( r) L d shl ebx,cl% K; p. O$ E, E6 ~
add ebx,eax
1 J1 R$ _* y" ?1 N mov al,es:[si+4]
; J) I7 q" g0 ]! W call Change
7 p% `5 N+ X* B6 O" U mov cl,4
3 M3 D7 ]& _' O: [ shl ebx,cl
. F( y7 s! o. i* `# P add ebx,eax8 c) m2 `$ I, W# X5 U2 G7 a
mov al,es:[si+5]5 e- `9 k0 b* k0 V6 O
call Change3 N* s$ _# X) X! k( ], g
mov cl,4
! J# M% Q- B9 ~3 v- N( \! j shl ebx,cl7 }3 ]) s1 M6 e- O) E( P
add ebx,eax! r/ S! q8 n7 d6 p4 v8 `
mov al,es:[si+6]
5 t; }" Y8 G; C% s call Change) m2 C4 G L2 G$ D6 S
mov cl,43 c+ m# [5 b3 _( M7 O1 p) Z5 [
shl ebx,cl
2 L+ W3 H( M7 S j j add ebx,eax
( `4 p' V. g0 z& V mov al,es:[si+7]/ f5 Z) A, Y) ], J) ?
call Change, R$ H% h+ R+ _7 P' E! [
mov cl,4
( f. W5 \9 n* f, j. H shl ebx,cl
% ^5 `' _6 q8 t add ebx,eax
+ o; R1 J1 N& u ~7 g F ret
" E- \+ @3 @; [" RWDPSP endp
3 b* t: ?1 Z' f* G6 s- C! ^6 W;================================================================================================
/ }9 C# ]3 X2 g' X3 d( MChange proc near
, t$ n9 ^5 C$ G- iA:
9 F9 K2 r4 T+ `6 T) S movzx eax,al
+ ^# I, v5 w0 c, P* ], N& O mov edx,eax
5 X6 q- b% f2 L% C1 i1 S cmp eax,'0' 1 ?5 c: x4 ~; K/ J- `6 p3 M1 w' {
jb A0 X+ ~" E% {* A0 A' O7 ?/ J
cmp eax,'9'
* @1 D0 g3 ]/ x# y ja B3 C4 I. t: K% q. P" q
sub eax,'0') o; F% o9 d5 D( z* _
jmp short E
& b" G0 T! Y0 V M- a, cB:
7 n9 Z" I0 ?' g and eax,0dfh
/ G/ a# \7 u6 C) K mov edx,eax
( N' i$ }0 c6 o# y0 g sub eax,37h / ~8 J' ?% p8 O& R/ \
cmp eax,0ah" m& M( P0 I% N9 m
jb A
3 |0 Z: z4 k8 v( H* _5 ~ cmp eax,0fh; j$ q. ~/ ~' G3 [% U( ]0 e1 C
ja A / l! |' W$ z/ r( ]* z1 \
E:
6 S. y5 W3 |0 Q F push eax ! E6 g7 A6 z( G
call PRT 3 d; U" P4 V f; A
pop eax8 E8 E. g4 O8 r. m5 n
CExit:
, G% Z/ M/ p# e/ ?) [* m. U ret
3 a4 o, u- t8 Y4 }6 e) W8 p% ]Change endp
4 V! O# j* h, d' m) H! R$ n;------------------------------------------------------------------------------------------------
2 `5 n" o, G* rPRT proc near0 v# i1 n& ~2 P( `6 q K
mov ah,02h2 y4 n5 A1 Y: r! [3 ~& z6 u
int 21h0 J! Z. P4 a# W9 w0 H
ret
/ d. ?* X2 Q# _+ {7 RPRT endp
! @8 \( a. J' T9 i. v1 b/ ];------------------------------------------------------------------------------------------------ h) w6 d W; v+ r' T& W% v7 R
crlf proc near3 b3 q. G% d a. B1 Y
mov ah,02h" g/ u% S4 l' S z- a
mov dl,0dh
1 I7 ?4 q: X* F% s int 21h% n, K' f9 }. l
mov ah,02h N/ _" e2 b/ L# p- m m
mov dl,0ah; c: `7 E: ~/ ?' D! l% e0 J
int 21h
+ V: y% Z9 u8 t/ I0 f4 j$ | @ I* e ret# t" U6 G3 G4 F5 Y i2 i; g
crlf endp7 Q& s2 M$ R! k8 x3 A- g: J4 y
;------------------------------------------------------------------------------------------------
1 p$ a+ i; D x0 y! U2 V' Y2 o+ `_32bits proc near1 D. }' ?; T2 ?" o
pushad+ H6 N: R0 W# A# q: L |
mov cl,4
" h i" P* Z& M2 e rol ebx,cl5 H5 v8 U0 v- Q# U& ]
call print_4_bits
6 y1 x2 M5 B% N( b rol ebx,cl, w1 K- t) B- d. u) B# [
call print_4_bits4 g3 s x U) D$ B* Z' ?- ~! l* M
rol ebx,cl
: z( \+ T4 r6 Q1 C0 r7 W+ c call print_4_bits
: }, k8 v5 W" Z. P% f. ~ rol ebx,cl$ M$ B0 o+ T' e! U
call print_4_bits- Y2 ]( A8 q0 T( W% {4 K1 ^
rol ebx,cl% s% a @ @+ K7 }; Z' {
call print_4_bits& h2 L% D2 }1 i; c% j; U0 y
rol ebx,cl% l. f& B6 T: \+ O" X! z+ }. O
call print_4_bits8 q2 T3 k$ N5 \, b
rol ebx,cl. F' S$ x2 j' \3 i- S" _2 o
call print_4_bits% V: Q! U8 n3 G% J* e9 {( k
rol ebx,cl
2 B/ @9 X5 p. Y3 q. g7 t5 K call print_4_bits5 u. h3 ?0 R9 Z* T
rol ebx,cl
0 E1 H; {9 U9 m6 a( c* a, K( l popad, P; W3 n! e) s$ g
ret3 F8 n# c' W4 M3 y6 r
_32bits endp: I/ v2 t) L1 f( L t4 \" M
;------------------------------------------------------------------------------------------------' [5 R: o( c" ^9 U
_16bits proc near6 u/ J2 C4 c* N: k/ G) Z6 k" d
pusha
% p& U* o6 t8 t- K( D) s rol bx,cl' o% u% p. z# G( \+ S5 I" v
call print_4_bits
4 T+ g, v7 X+ D& w rol bx,cl5 E. E: P6 R& |& ^+ Q
call print_4_bits I3 r- z7 T3 ?
rol bx,cl
' L/ Y f* J8 D; o7 S1 ^ call print_4_bits" R/ \; [( o8 H9 t& d; A4 c
rol bx,cl) \; k5 a. C: b) K' L5 X$ e; z r
call print_4_bits
& T4 { ~& W" H! a popa
+ w0 [+ c: g" \# ]* u* |; r$ ? ret0 r! w7 @# } R! C
_16bits endp
/ a b1 v+ B( N( A+ _/ r;------------------------------------------------------------------------------------------------* {2 c" g) W+ R" w2 K6 j1 R
_8bits proc near
; z# A7 U5 @- v) z' E9 O pusha 4 I! T5 N, S* e4 V2 W$ ]
rol bx,cl5 y. N2 v3 g) x6 q4 p8 C
call print_4_bits5 s; V" s! w* [, V
rol bx,cl) Q' W/ K6 c# c5 F. j8 r
call print_4_bits1 R/ w) i& Q7 j. r% b5 ~* t _' R( v
popa5 B' Z9 v2 X' g( \# P& Q* K- ~
ret
! s n0 O5 E0 o6 ?3 `$ ?_8bits endp7 D2 L- c, s8 ^7 u1 b, Y; H
print_4_bits proc near: q" ]$ z/ p' t* P- E
mov dx,bx
% o4 a: O# z- q0 t/ u3 b2 i9 c and dl,0fh2 O6 Y2 W$ O l
add dl,30h
: ]0 l3 a6 \+ `$ j# k! v cmp dl,3ah
. b! m. J$ q. n jb print
! M/ U* i% B" H- g5 q add dl,7
# U& Z9 a1 u& w% jprint: . s$ S! J. n& c1 Q/ b; w
mov ah,2
7 K, }! @, c4 _+ i+ k' h- Q9 Q7 g int 21h
0 i9 E* O1 X5 _* h2 ]3 L. Y3 E* y) l) J ret1 m, W7 @& `' F: r; R
print_4_bits endp 9 u5 i4 E( \; g, R+ B
CSEG ends' { z _+ Y# i& _/ P5 I& `
END |
|