|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)1 l: m0 @) M. \& N2 ]: Z+ f! `6 |& w
, |" m! f5 ]# ~$ @1 r6 l則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
5 [- t2 {, [; b) [8 M6 \, |- y& [9 ]5 K; V, t7 F. E- N9 S: w G/ S
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝 0 W4 b" r% t' M. y
, b$ D# I; J! L/ k1 F g
.model small4 t: s( p9 s5 n
.386p$ ?1 k C' x K
DSEG SEGMENT USE16'data' 7 i4 P& Y/ C- a
6 P0 S' G( B* w! O
DESC STRUC; k+ ~0 c2 p9 g* ?- |
LimitL DW 0
* @, T% G1 h7 w+ z; u+ T& ]+ T$ {) I BaseL DW 0 0 M$ W& k2 x7 Z N- Z8 R% |
BaseM DB 0
. u# S8 m0 j6 x! g4 K8 [8 w+ T; t Attributes DB 0
* D+ [1 f# ]9 q* G2 w0 P' L1 k- {) J: Y LimitH DB 0 2 `* P, ~: x& O* _& N* {( E
BaseH DB 0
+ q, g, @0 g6 z9 k* F/ b0 K" LDESC ENDS9 S o0 ?# g/ {+ K* M
- n/ ?2 v6 ?. G2 bPDesc STRUC6 U; i% V) e) j
Limit DW 0 7 U( A; S$ r! C0 C1 U7 M x0 y
Base DD 0
4 h6 j( x# P, [: cPDesc ENDS
1 l/ `# F+ N% ]2 I$ G1 f' L$ w% i; L2 y$ `! y# ]
GDT_def Label Fword
2 m" m8 w$ B0 G9 [" hNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>4 {" \' x1 ?; {, y- v* U" c; \# _) [9 s7 D
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>3 g- w5 @% I C/ H+ p. u3 p7 ^
GDT_Addr PDesc <$-GDT_def-1, >& s& ]6 M9 N6 s
2 j3 m0 B- Q; i- H, yMaddress Dword 05 C8 {: I" ]# j: {$ ~) k7 u9 d
* ]+ W" y! p3 zDSEG ENDS
; Y( |) P: u" I" G8 ?8 C/ d9 GASSUME CS:CSEG,DS:DSEG* Z+ F; @* `0 R& G1 s) h4 r" s
5 B7 [" F6 [( }6 N, E
CSEG SEGMENT USE16'code' 3 s) y3 b. U" K# M0 }
push ds
1 t# H) R+ Q* z& y6 X push es$ W- ]! c( t+ [8 s ]/ D
push fs
0 M3 t3 |+ j6 g U9 i. v push gs3 i- H* M7 I0 S7 E
call big_real_mode , k7 N5 T% A/ L( l) _. Q
call Get_Commandtail8 D$ k* ^+ G" o% Y8 |
xor ebx,ebx
* E5 ~4 T! f9 c( A mov si,82h
0 \; _7 G7 ^* K( } E' t mov al,es:[si]6 q/ j# @9 F+ M, d' \8 H. Z
cmp al,'r', n6 C) t) `! K4 |& R) b
je R) D, V5 s* r1 d* H
cmp al,'R'0 \* h$ l1 V! U$ `" M/ `
je R
/ [: [2 z3 ~. b7 e- w1 c' X cmp al,'w'+ f+ b3 {/ [ G# Y
je W
# _4 f/ q+ V2 J; ` cmp al,'W'" q2 u; ~+ M9 \! c( {5 a
je W 5 e" ^5 E9 L) P# i, V
R:- q* \- z4 V7 r
mov si,84h0 k! ~& t4 f. ^9 Y" d
mov al,es:[si]- h! i4 l/ [4 I' u9 B5 J- ^4 L
cmp al,'b'; }! {" _2 V4 E' [' @# Z& x$ h1 M+ N
je RBT
7 Z9 o# S* ~; X7 b9 g cmp al,'B'
6 j3 O( K" |, R2 ]: Y' d je RBT
) Z& e6 ]1 G( h N$ j* Q9 O cmp al,'w'$ U1 m! d( r$ M, e) U
je RWR+ i) n9 X9 H3 A, I% ~; s
cmp al,'W'4 q& Z7 b3 V" {. Z% |
je RWR
7 p/ i* j) N& r0 X9 ~ cmp al,'d' i8 L- M) W# Z* U% h; O
je RDR8 U$ ^' p2 e" m7 { q$ z U
cmp al,'D'7 Q5 x7 G: q8 \+ ?7 Y, ]* l$ F
je RDR
9 }% V- }+ y1 o! p( A1 b4 OW:
# o8 o5 s4 l* ?- v: Y mov si,84h
: b* `9 R. ?' c2 T mov al,es:[si]
m- w/ x ^' d8 W cmp al,'b'
% |& j2 m3 K) ^2 D' _7 C4 j je WBT$ {5 i& u* M* W& G
cmp al,'B'1 `4 R# l* i. o3 K. {! u( ]7 y
je WBT
' j, w$ x" {" Y+ g$ A8 n j cmp al,'w'
) d/ M u& k a X" d7 q* o je WWR
( S* p- v& \0 \/ u0 }. D& g cmp al,'W'+ J r" O4 d# a j
je WWR
+ m8 K" P" B! G- E7 c cmp al,'d'3 d2 J5 A! S% g0 Z7 k& o, s
je WDR0 S! O% E! p* t7 l" |5 l
cmp al,'D'
% v! k% F1 s: a- `$ F& }1 f& F je WDR/ ^! ^# A4 m1 m2 R" Y
RBT:
! q9 t9 H9 Z3 v7 c! z call PSP
( U9 t5 W5 Q. F/ R7 } b. D* P, C call crlf % ~' {% K% p9 ^+ V) l9 d
mov esi,ebx
& j! F' m* [9 T mov eax,fs:[esi]
' i! J. }+ L: i1 W3 U9 D out 80h,eax
P7 G' k* P# ], {+ Y+ ^, ] mov ebx,eax
5 O0 \; [9 V6 s8 g6 K# @5 ` call _8bits
?3 y r2 J' f- { jmp Exit, t+ p- ]& p3 \8 v" B- f* f
RWR:
2 ~0 Q/ U5 C& v9 y M' _5 r call PSP 2 i+ |/ q+ |% |9 s5 j! F
call crlf
" {3 t8 a* h" p5 X# p# u( { mov esi,ebx
- l+ W4 c1 f4 x0 O6 g mov eax,fs:[esi]8 O% _/ w- I) X& A. d, u+ [3 P5 |
out 80h,eax
- C" n c2 n x2 g8 I mov ebx,eax3 N l( S0 M( w# ^ v! q4 q
call _16bits
; m3 e% M7 s+ x( X0 b jmp Exit7 m" |- \5 R4 a$ k6 W3 z. ?
RDR:6 z1 a: x% f2 q& U1 G; L4 Q
call DPSP
( b" B6 `& {) @ call crlf
. X2 E" c( h1 f mov esi,ebx7 l2 x- J1 V1 N- k3 u
mov eax,fs:[esi]0 u; J* G7 N; q1 O% C6 N
out 80h,eax
7 C1 G6 _5 U3 a0 Z$ L2 v mov ebx,eax2 R" `- K) U: y6 h. p2 ?) W
call _32bits1 Z# Z3 X. O0 m+ j( v2 K: c3 v
jmp Exit
3 ~1 C1 l! C: t% n7 Y8 C/ o;------------------------------------------------------------------------------------------------* ^' I1 a! U$ I# O/ {, s( p
WBT:
8 n7 }7 d5 V8 m1 R7 X( F. @ jmp Exit
' N1 F$ O! Q/ i( ]2 rWWR:- ] X7 Q: M, Y' {4 {' v8 _
jmp Exit
$ d; d$ p6 u r$ T; eWDR:* X5 \# Q. L! s* w" w
call DPSP
6 ?& j0 L7 ~7 e/ @( x mov Maddress,ebx
: O; X* x: d9 f call crlf/ U$ m3 r) P% e9 P9 t
call WDPSP
- M3 [ A" E6 B, q9 T% f mov eax,ebx
$ L$ O+ E, L8 s9 d mov esi,Maddress 0 ^2 O b7 {) C f' P
mov fs:[esi],eax
& ]% B' m5 f. R+ ?# M% v out 80h,eax
: C5 y* J* X z+ {8 ^# P# { jmp Exit' |, c2 F4 s& f9 S0 d9 S* p& ~0 q
;------------------------------------------------------------------------------------------------ / Y& t* \' v! [9 D+ r2 ?
Exit:8 |. A0 v* q* t5 U4 y
call real_mode 3 X. Y3 j8 v4 |6 s/ x& H/ x n
pop gs
! _# s, P; M; A5 P* @% e! |1 y) g6 e1 B pop fs2 ]6 C1 t( Q3 S9 c* b! B: l
pop es) g; _7 y! W8 O) [+ R* t' p
pop ds
) F+ q$ C, X6 G4 p) [ .exit
^# e `3 f! C, S% B# w8 X;------------------------------------------------------------------------------------------------% H1 B3 g$ L' V% C4 }# W
big_real_mode proc near. n" R# G* O' Y6 B7 F1 p
in al, 92h, N$ m0 d- ~! f$ A
or al, 002
! ]) \1 J3 g* f2 e- d out 092h, al4 }" I2 K: t3 G. E) {' Q4 |
out 0edh, al
" H) `5 l$ p0 @ cli+ ^& l1 d8 w4 f+ A, Q* }' a! S5 p
mov eax,DSEG
8 m+ k3 v3 H. T# k shl eax, 4; y& l, n% W( s' W7 Y
xor ebx, ebx
& t8 a6 m8 l8 y# L$ X2 O mov ebx, offset GDT_def! ]' e' Y! c# p9 z- k& r! N$ _
add eax, ebx
0 @2 U" K; x/ X9 L2 f mov dword ptr GDT_Addr.Base, eax. q" t& A1 J3 u! }, m4 W2 V
lgdt fword ptr GDT_Addr
% h: a$ r0 d4 u+ [, s mov bx, 8
% o/ o& K& M6 c1 K6 t! H mov eax, cr0( F. x& f9 v& {7 ?9 l! x1 O+ I" K0 T
or al, 1
* D: I7 a; |" F# z4 h' p. J mov cr0, eax
( f- D! T& A6 e1 F) g3 F jmp PMod
2 y% t8 I2 y C% _1 BPMod:
- k# \" v8 C! I0 _* T( Z# w mov fs, bx/ S( ~+ |, e% s# R6 s6 y0 M
mov gs, bx
$ \" I. z) @: N; w- P, |7 y mov eax,cr0
1 C* T/ `6 L T" z6 t and al, 0FEh
3 y. g2 s v# Y) Z' P' U mov cr0, eax
6 f( P2 T# w# ^( Q5 L1 ] jmp RMod3 B8 @" W; p8 U$ K. P7 e
RMod:$ k% x6 r, U- a
xor ax, ax
S$ {6 O4 M) w' z. k. J' L L8 j mov fs, ax& h6 I s( g" C& _
mov gs, ax
' c7 E' ?2 N, | sti . `% c' y6 Q1 H. Z; k5 k
ret
2 } k& ?* E" y: W1 l2 \big_real_mode ENDP7 {- r [7 R. Y
;------------------------------------------------------------------------------------------------
2 {1 W4 v& Z! B/ w+ Z- l5 wreal_mode proc near
( j. d _7 G5 P4 q4 ?- _$ X& Q2 [. @) x in al, 92h, b+ A$ @: X; J" }. s. q
and al, 021 _! C# U3 h* I9 X
out 92h, al 9 E) _* Y! L2 ^5 ~6 F! N( L0 j
ret
H( d: x2 I8 l$ y" n! p! H8 nreal_mode ENDP
. F5 r3 t' k- r;------------------------------------------------------------------------------------------------' ?4 O: l# u. \3 `( X. R! X4 J3 E* X
Get_Commandtail PROC near, ~8 G2 r1 ]/ g7 k
mov ah,62h
( C! g* |% `5 i( o* v' H5 T int 21h+ R3 g& w3 }" i4 y; j
mov es,bx
/ P5 t6 w" ? q) h ret# X+ L9 V! A. V4 k4 N% N0 A. ~
Get_Commandtail ENDP 4 b% t" K9 H4 C. `' y8 Z0 ^
;------------------------------------------------------------------------------------------------
$ o8 u, J# L3 h; M( YPSP proc near5 R! {9 Y# v2 c6 g% U
xor ebx,ebx
& e2 R, A1 b- s6 y5 u: o0 b mov si,89h% l% k9 _* @( C+ \
mov al,es:[si]: X! y. V$ w" ~
call Change
/ C, m. o) J+ X: P mov cl,4
" r. Y, f( V% @3 s shl ebx,cl
% P4 M3 B; M9 ? add ebx,eax
" x' R" }: t3 ?- i }. G mov al,es:[si+1]
% B5 }; H& S) Y) n3 j' q- v* _ call Change
- R% L5 m- G Y/ B' E mov cl,4
: l5 _9 k& Y' a" a) \: f2 _ shl ebx,cl A; R R$ y! u! z: r
add ebx,eax8 i+ Z+ r6 A& ~2 X. ?
mov al,es:[si+2]
" o* K5 I, [' y ]* ]4 p call Change
5 o1 i' P" z" E! B l; T mov cl,4
) y! K j8 G# j4 S# H shl ebx,cl+ h# B# j. s: h( _
add ebx,eax
! Y9 z q) p! n# c- x mov al,es:[si+3]
# l) i/ \- c- G8 n5 K call Change2 Q- t8 N# H! c
mov cl,48 w. x( V6 W7 X. n2 c
shl ebx,cl
0 f& a/ `% l6 P+ b* @ add ebx,eax
( v9 D; W! o) F mov al,es:[si+4]- J) E) M; G2 n6 i" k. |! ?
call Change
7 G5 S+ D. L' P, o mov cl,47 n6 Q/ G7 T: d4 n" L5 j: h0 K' C
shl ebx,cl
9 C9 W2 s. X+ P( w' L8 d+ T, Q- K add ebx,eax
3 ~3 t; H2 M: M! J mov al,es:[si+5]; M2 b; y* b2 b0 U, h$ ~7 ]
call Change+ ~4 \6 Q( `" z. _2 Z+ v
mov cl,4
, J: q! X6 p& `% x- n8 Z; \8 x1 E' W shl ebx,cl* l) }$ ^/ w. c) |
add ebx,eax
, X- o' Z; Q z# U mov al,es:[si+6]* Q% M# S& u B+ m9 w% Y! r4 p9 ^
call Change
2 Y2 H* \( Q. P mov cl,4
! s+ Z2 ~, [" T shl ebx,cl
/ y. e+ u& f$ k add ebx,eax/ l. [' J) {% [9 h0 ]0 }" z, B
mov al,es:[si+7]
+ I/ _$ i$ J* T' T& ?! k# q. z) B call Change) p, H1 _ d1 J$ e8 l0 `0 q
mov cl,4
/ r( x0 z5 Q" Y4 q shl ebx,cl
# d3 C/ E+ f$ N& C6 f/ N: m5 i- O& p add ebx,eax, |4 L) F& e! C7 R4 Y
ret
L- ~9 @, ^; r8 cPSP endp
- ]" C4 ?$ @) ~9 j/ N0 G' Y;================================================================================================
2 k' [% @- t9 M6 m* f* mDPSP proc near
/ U8 Z& i, C) ]" J x6 c- e& k xor ebx,ebx
# s8 |" S' a1 d# { mov si,8ah Z" J% ~. r5 e# R5 \
mov al,es:[si]' h7 }! @" r5 T6 z+ W
call Change' C& {2 I" p: R$ f& W! g3 q" {% p
mov cl,43 Q8 t0 s) d: V B8 A. [
shl ebx,cl
3 M6 q6 F& f# `0 | add ebx,eax
6 @. X9 y3 ^3 c# Y0 G! N* \; h. o+ i mov al,es:[si+1]
. N# l. g) y4 t- ] call Change- g% @2 J# t! N' O. q2 J! v/ `, ?
mov cl,4$ {3 `8 u- g1 K/ l4 @2 R8 X0 x
shl ebx,cl
- Y! B& e- M/ R# e1 g8 U add ebx,eax
; d& _( O5 H- m mov al,es:[si+2]
/ }! B U$ L' o M9 u$ R" G4 o% S call Change
6 w6 q+ O* n7 {8 t mov cl,4
8 H2 W! \, m4 `; d; } shl ebx,cl }! c# D+ I3 p! s% C6 o9 T
add ebx,eax9 }+ c2 v6 } I2 T7 a
mov al,es:[si+3]. ?, O: ~/ i; G D( {
call Change5 H8 O! w( i& o4 d/ z
mov cl,4
: W' H3 x6 x7 t- }. S shl ebx,cl- I1 K9 P$ J- @; Z8 s+ e% x! ~
add ebx,eax
1 a5 Z! b1 z5 Y/ j0 ^0 n mov al,es:[si+4]" h( F+ K" B% ?+ \
call Change
" i5 F' g% T, E mov cl,4
. X9 d2 o! w) [ shl ebx,cl3 m' L/ W1 j& H( h1 b8 f4 o, P
add ebx,eax6 |' p, [, g: K2 M- P# B
mov al,es:[si+5] K% i% P" v1 k) E D2 V
call Change
; C" z2 ?$ e/ [; i1 E mov cl,4
2 v2 U( K* q4 v2 w2 O0 n shl ebx,cl8 T! c! |6 W q: N" v1 p Z8 k! i$ ^- |$ P
add ebx,eax, L0 ?2 H9 v- a! j! \& T
mov al,es:[si+6]( {/ O8 u6 E% Z
call Change
( y6 M9 J' B5 P" K; L mov cl,48 r4 N) T( F4 e- L6 w. N2 c; B2 d8 c
shl ebx,cl
) D* \+ h' I2 A8 y# g( @ add ebx,eax
6 Z. T: v8 @! q- t. l mov al,es:[si+7]* j' |, B( h3 }- x6 W' d
call Change
( u7 l0 S" P3 y! Z: }$ B+ a- G mov cl,4
( B; x. w( B5 Z) g shl ebx,cl- \4 u3 ]# ~. J5 \8 \
add ebx,eax
! R8 W- F# P. T& O$ t* P ret
" E* A9 h" ~8 A- r. w$ CDPSP endp
7 J. ?3 @' F8 x;================================================================================================
/ E1 G0 _1 B& O/ xWDPSP proc near
7 I* v" T+ {& Y2 p, R% u xor eax,eax6 O! r& J+ D. q7 J, c
xor ebx,ebx8 G C6 `. S3 b4 [& x
mov si,93h
* Z- L% P0 h) L/ j* F& j, I- j mov al,es:[si]7 @6 T/ D4 J. x) q8 Y- y6 C- @
call Change$ I' D/ F6 U1 g1 S/ h$ |
mov cl,40 p: P. ]2 @$ |! f% t* `9 y0 i/ e
shl ebx,cl5 ~( O- Z- M0 G4 J+ W( S# E
add ebx,eax1 G' r4 ^2 Q* I3 G# [* Z! Z" ~
mov al,es:[si+1] Y& ]) ?9 J3 i
call Change
* y" r" I$ [' Q mov cl,4+ T J' l+ h5 I
shl ebx,cl
3 n; K6 U0 O) V& H, U# u add ebx,eax5 w1 V$ W4 T2 m @, D) k! G+ C
mov al,es:[si+2]- o) L7 ~0 p$ G. d
call Change
$ f3 g! u/ t! R: R$ |/ p mov cl,44 `0 X6 j2 u: y3 Y+ Z
shl ebx,cl
/ R$ A2 }& M+ I$ ? add ebx,eax Y: f8 s6 y6 {" g* |& @7 q
mov al,es:[si+3]
/ Q: I$ I( O, ^ q$ Z call Change. W: I8 [5 S9 g& V
mov cl,4# M% o# N$ W2 F; J9 U
shl ebx,cl
" \; m) \$ g1 y9 `( C. ?4 V8 ~; p add ebx,eax: x$ ~* }1 b( ^) I, X1 q
mov al,es:[si+4]
h& m2 d! f% {, h/ Q call Change, \8 T; n0 v: n- o( l
mov cl,4- ]4 G v- \) }3 L- b' k+ ~
shl ebx,cl
: l) J' F! A8 u4 B! D7 T5 v add ebx,eax
2 L! A X/ S9 @3 Q% R mov al,es:[si+5]8 Z; U7 f: R1 f: e! _
call Change$ y5 A0 F$ W$ G
mov cl,4
$ E* Z; N6 d/ T7 K shl ebx,cl
) W- |9 Z* B2 R. O4 A add ebx,eax
, ~9 ~% B, u1 h mov al,es:[si+6]' F: r P: b$ [" N- h" T, Q* q0 {
call Change0 N- h5 J. u: B$ m( o r i
mov cl,4 y, t6 X4 g, l' F% h3 F0 P
shl ebx,cl
( Z: G# D. s( ~, W, j0 |! c add ebx,eax
7 B& m, R/ q( N9 U( j mov al,es:[si+7]
) \; H6 p0 ?# `! c: t9 w call Change
) h/ m! i Q+ M& Z( i' p" { mov cl,48 Q9 Y5 d4 j5 E8 F V
shl ebx,cl3 Z4 I* }( }1 O& j7 W3 l) ~6 Q
add ebx,eax
! z# U" b! c! C+ v6 a K ret5 E4 h5 P7 {: n$ q% Y- R
WDPSP endp- x$ K7 O5 Z7 i4 w
;================================================================================================: C1 |9 B, \3 ?( S/ ^
Change proc near4 x6 g) Y& n! H, @5 Z, T8 J
A: # p. m. N) B S
movzx eax,al
) R6 Q& e6 k; Q. f$ q mov edx,eax
! f( u$ Y! f1 N cmp eax,'0'
" b) `8 G8 J$ Z8 d& V+ f jb A5 K2 V- v4 J+ G! _! ~4 ?
cmp eax,'9' 2 L8 L7 Z- V1 N
ja B2 w- @1 \& U$ ~
sub eax,'0'
9 {4 `$ w% m0 s' D6 @, Q jmp short E
% @ O1 m8 ^0 H, bB:, `( j8 @; B/ ?* N
and eax,0dfh * B4 o( M- `; ~( m# G
mov edx,eax
' P3 c' ?' ?! s2 p; e+ y& [ sub eax,37h
& f& G+ C4 i( N( M% R0 @, {6 Q cmp eax,0ah0 b& [( @: ?7 P
jb A 8 k6 j3 C! l* {+ {* D4 M
cmp eax,0fh
( w" j F) \6 q( U# L: J" S7 c ja A
8 W+ `/ _( c& [+ K) WE:1 U I, ^1 N k9 J1 m0 N
push eax , }( N7 B0 n) Q
call PRT ' K0 l6 X* b2 `% u
pop eax; W: z& p& V9 N8 l
CExit:
/ M" U2 t9 D, T) Z ret0 s( s6 l+ F+ b/ D! R
Change endp$ J- Z7 ^3 j" V- m
;------------------------------------------------------------------------------------------------- R9 k4 W; }+ z. s
PRT proc near( i' P. C% Q* @" Y" |( s: Q$ T
mov ah,02h
L( O7 _& C- ^9 n& _% |7 c int 21h
7 G/ x1 i/ @2 e/ X ret
+ X1 w+ f- j* G* r5 iPRT endp
6 G1 V. y9 P H* S& z; P;------------------------------------------------------------------------------------------------
4 B( p: e" \; J) g/ A: Fcrlf proc near
/ s) P$ T& V, `8 U! b mov ah,02h
) `# J8 p3 O s2 X1 A. O mov dl,0dh+ { m* M% Q2 s! O) n0 Q. T, G
int 21h( J6 h4 X. H, a+ e/ M
mov ah,02h: N. s C1 D) o& z+ a) i
mov dl,0ah
$ F; }# g6 G; a7 @8 \; V& s0 P4 Y int 21h; t' {1 v+ Y& ~0 M5 H% d1 K
ret
3 H( z, q. }! o6 n: x" J. l4 mcrlf endp% S/ @' G; f( @5 O
;------------------------------------------------------------------------------------------------: V9 S: m0 h( ~# O
_32bits proc near! K$ r. ]7 g. j. b( U/ o5 R
pushad
6 s1 ?7 _& }! { mov cl,4
* x' n7 ^4 u2 Q( P& X/ T* |! ` rol ebx,cl
9 u6 Y4 n6 X7 _3 }4 L6 Q; Y7 N call print_4_bits9 t) [/ _/ y9 d2 v& m; i4 K
rol ebx,cl
( o( [% ~; I. A1 Q5 F call print_4_bits
& g* x! N6 ]6 q$ o rol ebx,cl
" r# E* c3 W6 N4 t+ k& C5 n$ E call print_4_bits: {- y6 {) S5 v* c O& E
rol ebx,cl$ m5 x0 c2 ]+ r7 z* j4 D! o* ]
call print_4_bits& \" h4 T* C) s/ ~* n: }
rol ebx,cl
2 O/ H* v4 s* v& g call print_4_bits- ?* f6 k7 g9 X& Q8 F$ W
rol ebx,cl0 h: |5 z% e2 d, X% B. K0 d
call print_4_bits
4 d& k$ E9 _* h( a$ | rol ebx,cl6 |$ a+ i- K) ~" A, T$ p: N
call print_4_bits2 \+ ?% k* ]: b9 |
rol ebx,cl" k9 @1 q3 t y1 z
call print_4_bits
' C2 L& d9 R4 h- m! Z0 V rol ebx,cl) M3 R9 L' Y, s+ }' y+ X: _& N0 J
popad0 d$ y7 H! g$ I$ T3 a& {# q/ d
ret$ G0 S7 I4 m* \1 k
_32bits endp/ L4 ~* y- [/ s
;------------------------------------------------------------------------------------------------" M7 D9 s) i0 y' j `
_16bits proc near
: e$ O8 }0 @# u; x+ {* E$ k pusha
1 a) q# |6 K* Q; Y rol bx,cl
- a0 J- r. x! h$ N) t% @ call print_4_bits
: f5 }8 X. E. Y8 Y0 j) z rol bx,cl) f1 x+ \+ g; p% G
call print_4_bits
! o p( h9 l x# c7 E% Q. R rol bx,cl# ]! m v0 A& X0 d: i& B
call print_4_bits
L) l: I9 D" G# Y ?+ o% ^ rol bx,cl
8 e. X* ^# f* X1 X' L, \2 d' ] S* J call print_4_bits
9 H& F! @& q/ a3 V( y6 ^( t popa
1 F, S$ K6 Y% W; L& ^ ret5 ~2 j) E/ o0 i( L
_16bits endp c+ Z$ V+ M' n/ L6 U( ?; q
;------------------------------------------------------------------------------------------------
3 M( b$ X f3 k/ ?_8bits proc near
: h* L1 a# Y2 E# W+ U4 b& R pusha 7 S& z3 N/ G3 H( v
rol bx,cl
! j8 }3 V* z# b( Z8 |' @9 S. q1 f call print_4_bits( |8 r- A7 k- X0 C8 B+ R+ e
rol bx,cl
. a/ Q( \1 D2 m/ q* I' i* H. d call print_4_bits' [3 t5 M; }9 ? Y" X; @+ d
popa0 F! ^& ^+ Q, J5 w9 e) c$ {7 h
ret
# W6 C! l% b; b t" K. h. V_8bits endp2 a# a4 U+ y0 ?3 s
print_4_bits proc near. a% G8 a/ [* E" }+ F; [8 S
mov dx,bx, ?: r9 [2 M6 j5 t i. c
and dl,0fh/ ]) ~, A* @# n5 C& T
add dl,30h2 |8 N) B4 w* a
cmp dl,3ah
1 c& [' a# P$ N9 d7 I jb print
' L5 G: B. E1 Z: H6 {( H add dl,7
- J0 a$ S7 q8 E) bprint:
7 y2 J* ~/ V7 I0 _3 g mov ah,2
}5 ~! L o( V0 \# Z int 21h
4 |: B4 I7 X2 q* ~, u. h: y; z ret2 W4 Z5 C; {2 F/ O0 L
print_4_bits endp 9 i9 P1 D! S- _! Y7 Q! R' p
CSEG ends8 K7 b G+ B& O4 [ `
END |
|