|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)' d+ a7 D r% j( U4 p. Z0 k8 z
! t/ g+ K r4 x1 c) d& y7 i# Q I( P
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'% ~) C) y7 A y% g; a
% t6 @4 X1 n! J. E H4 U
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
% l4 T* \' d* G/ o: `# y7 C: y4 F- P ` t6 I7 \- j
.model small
* W* w) m% M+ a u; }% l.386p1 {4 ^- g6 Z/ S0 ^& _, m
DSEG SEGMENT USE16'data'
3 c2 u9 c" _ V5 K6 L5 E+ Y7 y/ G. K ?* g ^/ S( u$ ]
DESC STRUC8 R! u6 W# \, k; M( v5 d
LimitL DW 0 0 r* I$ U6 c# ]) _, a$ e
BaseL DW 0
W- l/ @, u' z4 }. A4 I, G9 j" w BaseM DB 0
/ B f" _4 O$ N- G$ D5 m+ ~5 r Attributes DB 0
0 K9 W5 n2 \; q6 W* U0 y) ? LimitH DB 0
8 x- N' S! p$ u1 _, B6 Q BaseH DB 0
1 y- B! \$ y, @+ v. A! x0 b5 |DESC ENDS
; v E% O1 R+ o9 @$ V( f# ` H {0 i" \" S
PDesc STRUC
, |! C) c9 a8 Q Limit DW 0
1 K' M( d, T9 `5 n X5 U Base DD 0
4 E d: L) N; n" y1 _) |# sPDesc ENDS* S" W* G8 l' D# Q
2 \/ y+ c @; y# U4 O2 ]! \% ^, DGDT_def Label Fword/ e* P5 w; V' C Z6 @
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
. ]: A5 N6 n* i; c" m+ d" aData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
" J# v0 q/ f4 q8 tGDT_Addr PDesc <$-GDT_def-1, >4 T- h- O( u# E! Y' |
* _1 k' G: a1 p. \7 c6 d; K: J5 P
Maddress Dword 08 T5 t* o! _& `+ { b1 |7 ~
, H7 t+ a1 h5 P' P: o/ WDSEG ENDS
3 Y1 @& c, J( _/ W& h; |ASSUME CS:CSEG,DS:DSEG8 r# W7 V5 t y+ t' Y
0 z6 L. K; [0 y+ A1 l$ H& ?
CSEG SEGMENT USE16'code'
& c1 V1 q$ C, C push ds
. l2 s, z; i; x) X push es9 ?! t+ g W% F1 Y4 x
push fs
, N& F$ a# E, |% u: U, G2 u& l push gs
. {$ `+ h6 W i call big_real_mode
( ]" K6 |" `( a$ U. Y9 H call Get_Commandtail
5 i) Z% q2 R$ [2 l6 _# u" Y7 r xor ebx,ebx
: A% {( A9 G# T+ w7 b' \4 {$ U) }- O mov si,82h
8 A# e5 d" H6 p" A. Y mov al,es:[si]3 _, K1 M0 ?7 m- F, r
cmp al,'r'
' S+ J4 e/ V8 Z2 {$ }; i ? je R
& B9 h& R, s# \4 P4 Y/ X6 v' d+ H cmp al,'R'7 k8 E, I$ v! s5 X+ J' K
je R
$ s, c1 w/ K+ j; a# `3 U. | cmp al,'w'- q4 f: t6 K9 A! v
je W# A; {4 w' k6 I7 {+ b: r& H
cmp al,'W') F3 d% S' ~1 j5 \% L+ U, O0 ?9 ?
je W 0 n) U5 X; \" H* g) \
R:
2 V( T3 L( }9 Z5 B0 t mov si,84h
" ^/ K' r r- r mov al,es:[si]7 N& Z* ~- x7 X$ Q* f% y/ F- m
cmp al,'b'- v2 d/ D% L4 K6 `* ?7 j- r, b0 Z3 f
je RBT
, T) J" E( S, Z4 y6 _1 [& _ cmp al,'B'
& n! {4 X: X( r* ], Q3 o% M je RBT
5 S+ T# j- H; x* D cmp al,'w'. q; J. Y* a; s' x5 }4 h) ?* p
je RWR2 R( V; C5 m) M
cmp al,'W'' Q' g& a0 \& E4 `
je RWR7 M* ~- P' h. N2 D- A2 g0 R
cmp al,'d'; n. b& Q9 Z* S! h1 V* ]
je RDR
) C! {& b( ?: I cmp al,'D'
# @. d9 \5 F1 N je RDR
* ~3 y0 U! K5 Q6 AW: 3 F8 H% ]" a/ x0 R! N( j/ `: F" q
mov si,84h; i m) [" V" p' R" n
mov al,es:[si]
) e: D0 m6 V/ ^( G- u$ K cmp al,'b'
% Z- v, S5 b- Y$ _ je WBT8 M8 Y7 M+ g+ e* Z$ E( b. I- {! n4 z# B9 _3 c
cmp al,'B'; @. e Y% N0 @
je WBT
" I$ [) q5 s! [4 ? u5 F- g cmp al,'w'
; `* n# f. @ { je WWR# n* Z" }6 l1 V1 d! S; h3 s& D
cmp al,'W'* t" y) ]/ H" O' |& G% g) p8 q
je WWR, X, E! X9 @+ |4 C
cmp al,'d'
1 n% Q+ R: O& S% K je WDR# `. J# [9 a, z8 g; _: y+ [
cmp al,'D') |2 r$ X- Q" m. v: y4 J8 ]
je WDR
- U; H; _+ @/ @) \! RRBT:
6 B7 M+ G* D+ G( Q k$ Q call PSP
$ s% e0 \0 t! ?) z$ F$ R& k! O call crlf
/ K' @1 `, N6 _ P- [' K- ]3 [ mov esi,ebx
: {- C5 z4 x. ]% f9 m mov eax,fs:[esi]
9 q5 i+ `8 Z* e& R: L% k0 i out 80h,eax3 a5 P% L1 s. y- T) e" Y
mov ebx,eax
& n! m* K3 g0 l( X Z$ j( I call _8bits
1 D( e6 w: O% |% N* K6 l) _ jmp Exit# f9 j9 @4 @" ` M1 p2 Y
RWR:1 s4 ]' Z$ u7 a
call PSP 4 s. {5 M0 \: {6 p
call crlf ! H3 I5 M, Z& _8 H
mov esi,ebx* T) |: ]% m9 o( P5 s
mov eax,fs:[esi]' e2 O) J! }9 U' r$ _
out 80h,eax5 N5 z; J$ ?+ n
mov ebx,eax
9 Q/ l# N- J: z! }, ^6 D$ s- Y& | call _16bits7 Z+ N/ R1 n' h: X
jmp Exit6 w, d7 a) R: b# G/ w0 [% A! c
RDR:7 u3 F; ^/ Q' j N% U4 W
call DPSP 7 ~; ^! M5 o" h% C4 |9 d/ x
call crlf 8 b; S- K+ I4 A: X; P4 e5 @
mov esi,ebx4 t+ }% ~5 h- {7 u$ p( ]8 i
mov eax,fs:[esi]
/ h* z& J- ?9 ], ?0 t2 n out 80h,eax
, S2 |( m* C, q$ _6 W$ p! D& L# h mov ebx,eax/ ?2 R2 B) X8 ~9 t ]
call _32bits# P( k# P( L9 Z" J* O: N/ R) e
jmp Exit
1 }6 E, \# _5 |) J5 E: e;------------------------------------------------------------------------------------------------' c6 c( O" \/ p( f+ }3 Y4 ^8 ?
WBT:% b2 [7 k+ T. Z. D9 [
jmp Exit
6 J2 ~) t& t$ I% D( s' X9 [WWR:! l5 D1 f6 e0 a# O' @2 G
jmp Exit
9 J% [7 H1 w8 j: y8 e5 m, N4 l. mWDR:4 a+ \3 {2 A, n1 M8 l2 d
call DPSP
( | L. q$ g" ?' h# d" } mov Maddress,ebx 6 F E- O. B, c5 C8 Q" d; q9 n
call crlf, ]. C: U8 S+ M7 {" T/ D$ Z- ?( R
call WDPSP1 N4 ?& \9 y Z- {
mov eax,ebx
- J" K+ n2 g% l) Z mov esi,Maddress * K1 Y) d6 O6 Q" M/ f" l/ c
mov fs:[esi],eax' S) `+ @3 ^' f( X8 y1 T
out 80h,eax E. P; W! Y" B4 c' T
jmp Exit
1 ?; B( s7 f% u+ U: I;------------------------------------------------------------------------------------------------ - ^' o0 M1 ?+ n# h2 p$ _, c* X4 S
Exit:+ h9 A& H- E" M) s
call real_mode
# I0 B7 m5 I) R% P) E pop gs
9 I4 `3 F, }4 U pop fs" g" ^; a, N! B8 T f$ t; j- y
pop es
8 f5 r: K2 @# ]% @( N& x pop ds 9 I; Y5 b$ } z! I. x' _2 \
.exit
5 e" r# `- P( p;------------------------------------------------------------------------------------------------
& L) T4 h% r. l: Y, `big_real_mode proc near
4 g, P: }! x0 i& { in al, 92h9 Y% i6 l- }% q0 K3 s7 P# |; M
or al, 0026 r6 K* l9 x ], ^& \; Z7 ^% _8 j, \
out 092h, al
4 E' W% w! s1 F8 o7 [* |# P out 0edh, al
) R$ z% D7 ~. E, C4 y2 m1 Q* b$ \# M cli
, n3 m; q5 a, h5 I" F+ n mov eax,DSEG5 j2 J$ n# t/ t; k7 k6 [
shl eax, 4
# O0 d4 _6 U0 L1 q- s# Z xor ebx, ebx0 x& V3 z5 Y: Q) a0 V
mov ebx, offset GDT_def
4 y$ j7 d1 ^1 _' o! D2 p" ] add eax, ebx
, R* l; D4 W1 R! v" ? mov dword ptr GDT_Addr.Base, eax+ p$ k- [. l, @& v
lgdt fword ptr GDT_Addr
/ ~: r, y' o7 }4 N8 r mov bx, 8- i; U' _0 P, O" U
mov eax, cr02 S/ C7 ~' h! L( j3 J
or al, 1
+ }4 s# q# g( f4 W- Z% i mov cr0, eax. l/ L- a/ v2 |, j% D' R# \0 y
jmp PMod, G' U! w6 ^3 W; h. R$ }) }1 t4 d1 J
PMod:% l9 t4 y' m" | I
mov fs, bx8 k4 _0 C: Q: D$ b8 o
mov gs, bx% W) ]! c1 z: d* q& D+ _% _
mov eax,cr0
( \6 f5 `* V) @0 M3 ^' j6 E* @ and al, 0FEh4 R; z1 c, \$ Q0 {! m& q2 Y4 f
mov cr0, eax
* ?4 [( v y+ v$ e8 ` jmp RMod
% x+ P/ r3 ]0 ~- A7 C( T J0 zRMod:9 y, C: c# D+ v7 n2 G1 w! r
xor ax, ax
~0 }+ B9 d7 e, V1 {8 r7 E mov fs, ax: N0 h, G' h& B. v
mov gs, ax ) h- f* @7 ~" H/ P1 V4 ^
sti # f5 N. a- A* x* t. @# V
ret
6 k* B o& p$ M# T; Ebig_real_mode ENDP# ~. w" `/ @1 k$ j8 z
;------------------------------------------------------------------------------------------------1 C& v0 h9 }9 t5 q) F
real_mode proc near- p0 G3 l2 F9 R& d6 V5 y
in al, 92h
, g( m+ q! K n" u, V; i4 k and al, 02
. b) T5 W y. s out 92h, al
) P+ G; M0 R @# Q& M1 g ret
- Y6 b$ S) t! P! {real_mode ENDP
! L* T. N9 V+ A7 H$ F. g;------------------------------------------------------------------------------------------------8 k, ]/ q. c6 `, y
Get_Commandtail PROC near
" [8 D# R% _" l- S" q mov ah,62h
4 U5 C- O; o! I5 T! L% l& ?$ d int 21h
# Q! u& {- n2 c- ?. y2 i6 o" k mov es,bx: f3 I. [' M9 z% y" D. i
ret* S( p/ g4 ^# \. E6 h, P5 u: T
Get_Commandtail ENDP
2 _! J# P3 K7 q' G3 M1 X! V;------------------------------------------------------------------------------------------------! L# ~6 T( @. A3 K7 H8 }4 O
PSP proc near9 A4 N/ F, B. h6 N7 K6 H j% n
xor ebx,ebx2 j ]4 M* D5 K! R) B+ T' J
mov si,89h
/ {- o1 } p* g' b mov al,es:[si]1 D( }" ^" j+ v* F* C1 u
call Change' v \! @2 M/ d/ h
mov cl,4
+ t& T4 H' Y2 `6 Y& e' i shl ebx,cl
$ Y- t/ o" A1 T. d4 K# } add ebx,eax
8 v9 w' x p( k! D9 o+ z mov al,es:[si+1]
+ t0 b: q/ q3 u5 ]0 s, i, l call Change# A- e; j0 p) L& G5 h
mov cl,4
- Y% k* L# |4 n$ X$ s0 l8 I shl ebx,cl) ?% Z4 ~$ [9 W2 z
add ebx,eax& L h# Z" d u! F! @: D& C
mov al,es:[si+2]# ^2 q8 \4 j$ t: Q6 w* r+ d3 X
call Change
+ i& {* C$ f9 ?+ r mov cl,4
% n: w6 c8 X( m4 W shl ebx,cl
! k, _# K. w- h/ H; q* i add ebx,eax8 H& S. v3 I. S, A7 x3 X
mov al,es:[si+3]
* {( \0 J" d |1 ?) J o. M( g% R call Change# O) f$ `/ u) a# K% |8 j
mov cl,43 {4 W D$ Q+ i3 l: F
shl ebx,cl
! s! v# T V/ C2 z add ebx,eax4 n/ f \1 f. m% G
mov al,es:[si+4]6 |8 y* R) C0 i% i+ \
call Change
. t" Q( k( i- V, V mov cl,41 H' K) }: A& C4 o9 |# r
shl ebx,cl |9 `: }, C: U& {5 b9 ^
add ebx,eax
) f) L7 a; {" W; b6 S& j0 u mov al,es:[si+5]+ K( Y2 v% f7 M, X3 i
call Change
+ c5 H' r* j+ K/ S4 I, m. Y+ }# a mov cl,4; M2 B) H+ Y/ `- \6 _
shl ebx,cl
" B, n; ~+ q" E add ebx,eax
( m+ J3 ~8 L2 u0 d: x mov al,es:[si+6]
: a7 l, R s2 I. w' @6 `9 c( T call Change
2 t. P8 Q& s5 j O8 x) ~2 ?: R- V9 {0 Y mov cl,4
4 i8 I) ^/ H* ~# _ shl ebx,cl
' {1 ~# P- G5 C- Z% B' n+ `! S6 M add ebx,eax, Z. u) p4 |9 g+ F
mov al,es:[si+7]# m7 K. f7 i9 N) `
call Change, `# w" R& Z# P# d% c
mov cl,4* Q: F$ k; e% ? Z# O' X1 C
shl ebx,cl
1 w1 g$ u/ D/ N. A) v0 Q, u8 W) z add ebx,eax8 Z. p1 q" D$ ]9 o* P) I
ret8 R- n' d. }' ]1 {/ C- e5 z
PSP endp
! P* a& N/ y& x _( a0 n( ?;================================================================================================' z+ A; W) g0 Z( f/ S7 W9 j
DPSP proc near
5 X5 Y6 Z; `+ c: G- L0 ~+ M xor ebx,ebx" e/ \ I3 c: h6 {+ G
mov si,8ah
+ I }9 z4 Z9 _ mov al,es:[si]
7 E8 t) b6 @/ H% k* G5 T1 k call Change- N3 I2 C5 U8 j: z: T8 `
mov cl,4! g: S0 @; l0 T- L
shl ebx,cl8 g9 n! ?8 Z- d2 x+ Z
add ebx,eax
9 d/ o# w& Z& f mov al,es:[si+1]
/ f( W% R5 r$ `, b( h- V call Change! @8 D: U( w o6 D- s5 |4 k
mov cl,4
- \" z* A& }4 @! {1 H2 g8 e shl ebx,cl
+ a9 k4 P( j# T& H7 d add ebx,eax2 x. W! |/ O. M* r1 K2 C1 E" q
mov al,es:[si+2]! C& _+ q2 \& w# J/ P8 Y
call Change! i& ~* R+ F" G0 N* p# m
mov cl,4% e+ g( W+ w3 _$ ^) D
shl ebx,cl( v6 i& e+ p. W- l" g2 V
add ebx,eax: p1 s( U5 W: \- [! o
mov al,es:[si+3]1 v2 E M& V ]6 A' g S
call Change
/ p# g* A& h# |! q$ l4 F1 [ mov cl,4
+ r+ x% n; \0 x9 S7 E4 W1 X; t) t shl ebx,cl! a2 k1 i k) O1 A
add ebx,eax7 U4 I: B9 ]/ Q7 ^2 r$ ^
mov al,es:[si+4]
9 o; s3 e: @, z5 o9 Z6 _/ b call Change! |5 O8 i* j& L4 P& c
mov cl,4
2 m6 i9 B4 F* i2 ~+ U0 C+ ^ shl ebx,cl
: ]4 C7 M& x. V/ `# w7 v' x add ebx,eax6 N. @- S. M, S% h
mov al,es:[si+5]
8 J' k$ _% ~2 r# c call Change
5 o' d" L$ Z& g; A2 T mov cl,4
% j- |' f |, M9 a7 |: \8 W! h7 T) b shl ebx,cl' k% g/ a6 U* E; e6 [/ V
add ebx,eax
& M1 Z: w5 \6 ], X0 E) j* F" _- e; R mov al,es:[si+6]
8 r9 a* P# v" D, E2 S7 ?* _7 D8 ^ call Change
5 N0 u, N; }( q8 M" `: N& h/ V mov cl,4
3 {6 K% p; m# p$ n shl ebx,cl
( j+ B3 e8 H% n- t6 t! L) E add ebx,eax
* j3 Y1 c& L/ V j$ x mov al,es:[si+7]
2 W; e& {- `. {+ h- d: K9 q+ t2 \0 G call Change8 x- [7 m2 L7 S" c% m
mov cl,42 U k; @1 b+ j5 x1 K* U
shl ebx,cl
9 Q' \1 p5 o1 _$ L& g# q add ebx,eax$ ?8 ?' V+ H9 ~% w5 O
ret
, Z( k* R/ ^4 D; V- @$ ZDPSP endp* S {2 A% i. {$ G2 B
;================================================================================================
9 U3 F& q' G/ T2 Z' G( V+ ZWDPSP proc near
9 t& U6 O' h6 n4 I+ I$ F, T$ Q xor eax,eax
0 [/ Q: E$ Z7 A2 N+ v, A8 N xor ebx,ebx
& K9 K4 R, N5 q mov si,93h
, a" {* d! i* M/ ~ mov al,es:[si]1 z9 @' }% P9 m# |+ I
call Change
D4 C. E) L/ a! U' z2 m. z$ V mov cl,4
: q# y: d" Q. p7 _/ ]/ Y shl ebx,cl
7 f9 l6 S+ }: }3 D add ebx,eax/ ~0 n- i! B e1 K3 I: A$ x3 a
mov al,es:[si+1]
# P7 F: x0 L* N% r* l# l/ O call Change
. t) L d5 `; a- K- |. ] mov cl,4
5 h" ]- _5 x; x+ R2 ]" s" K$ `! X shl ebx,cl
, A$ Q0 ?/ T1 j+ d3 l2 ? add ebx,eax0 O% f6 V9 E% J% s& b! ^
mov al,es:[si+2]! F1 f+ L9 o4 e: D
call Change
2 O3 P* W z. r7 W: g4 q# j3 e/ [ mov cl,4: w Q% |4 [: Y4 ?8 J; G, b) w
shl ebx,cl/ Z3 E6 Z4 D( B0 W, ^# r
add ebx,eax8 T; s( @$ F4 E2 D- E5 v& \' D ^
mov al,es:[si+3]
1 |6 h* R9 [, W call Change
( N s% \" ? S mov cl,4
" y4 X9 V# `- n3 b' o( D shl ebx,cl
2 D6 D4 `& `( n/ t& ^" i add ebx,eax/ W6 L/ x& D9 L0 n( V& {: {
mov al,es:[si+4]- [9 ]. I; F7 ?# M1 H: |
call Change' g0 Y+ r. y7 c" s6 X
mov cl,4. S' K5 A, ~ x& s4 y: H* O
shl ebx,cl
' F. w6 g$ Z7 M add ebx,eax8 n3 G* ^; P8 v: ^ z# O7 i
mov al,es:[si+5]4 Y# m3 a4 C- E
call Change
, f/ W6 @" { M$ v7 t5 x mov cl,4
! Z7 A6 S: A8 t$ c shl ebx,cl
b: y, P0 J+ L5 }& g6 Q add ebx,eax, l6 s z, r0 D) J
mov al,es:[si+6] E$ ^" l4 H) I1 k8 ~
call Change, O* u" o4 D4 G! F4 ~- U5 p
mov cl,48 E- W) \9 D2 l
shl ebx,cl8 k7 |4 l9 b8 _) `- M: u0 W
add ebx,eax+ I0 A) |% ]$ M+ p+ v0 ^; M5 g# h
mov al,es:[si+7]4 ?) u0 A/ [, D7 b% ~. f
call Change" s* W5 Q i$ ]1 p. z. o; r/ D
mov cl,4# y i8 u- n+ t* D; d# y* D
shl ebx,cl
1 Y: k; Q' z5 n add ebx,eax' G) f% Y3 v4 X# N G- Y
ret
, G8 R2 |& O0 X% T3 K4 Z& h. vWDPSP endp
D, t) u. {9 b;================================================================================================
3 x- ^9 o& m! z+ q2 p/ ~0 [Change proc near: G3 X- ?+ o' t8 T! j
A:
8 }% X. z7 l0 X% {6 u; J- m5 i movzx eax,al2 |/ O$ `8 T8 q/ J
mov edx,eax- Z. N8 ^' I5 Y$ U) D4 r
cmp eax,'0' ' A g: V. w$ S* o5 z. d
jb A) o0 m0 o/ O3 q3 X, k1 z
cmp eax,'9'
3 m# a& _, j. N2 Z ja B4 k% S2 P+ r$ V9 E) }! J
sub eax,'0'
* m7 a+ A3 K3 O6 [ jmp short E
/ L5 ], P* g5 ~+ c( w) oB:" t9 s% V8 A' L' C
and eax,0dfh
2 ]+ D( t/ N5 Q7 ]2 g mov edx,eax6 g& C9 t9 u* m' m2 `! A3 f
sub eax,37h 2 ~9 @8 _* @. W$ N% @- R# f
cmp eax,0ah) D2 v6 q i& Y5 m3 a* p7 L6 e ~
jb A + X4 r" t, V }+ S5 L7 Y
cmp eax,0fh3 u1 L8 a( }# y, O3 D' P
ja A 2 d0 K6 u2 [5 r& W9 a3 ~' x3 [
E:4 @# X( O1 L: W
push eax
6 {- ~9 m0 L, g0 K& p8 i: s call PRT
+ e* ?5 V( y/ ~2 i+ E! L pop eax& [" r0 b9 A U' Y
CExit:
/ { M4 v# w! o6 Z, o( W. g ret$ N* h2 G, v( I0 N/ s" W
Change endp4 U" A5 n2 }, D7 A' c
;------------------------------------------------------------------------------------------------1 W5 @; Y, R! x( N, w3 e( z9 d
PRT proc near' r& L9 U3 D3 I5 i! X) t
mov ah,02h% y; H" S# c; O; p2 I
int 21h
1 u4 ? E1 c& z7 ?% m8 Z ret; Y3 \& A# B1 D' Q' z
PRT endp; q2 r6 J0 S% s7 H% s6 i' l
;------------------------------------------------------------------------------------------------
. X+ {" e; C9 M& \9 b" u. gcrlf proc near* V' E5 Z6 L$ e, q. c
mov ah,02h
& c. J' l- Y0 u& ^, u/ ` mov dl,0dh& d+ \% H# T2 @
int 21h$ [$ t6 {' ?5 R2 e! I7 H
mov ah,02h
: v/ C8 B8 }5 [# l- R1 n# E( k( w mov dl,0ah
U# k8 P7 q8 T9 J int 21h
* c& Y0 o9 e9 [. X! }" y' F% R ret( K" m0 @2 B+ B. U9 d+ v0 o
crlf endp& R1 U+ `% j* ^: p
;------------------------------------------------------------------------------------------------
2 T" [; l1 H( S! I, h2 v_32bits proc near
' m! P" k8 X5 b8 H9 { g% d0 e; G pushad2 }! V2 n* a, R3 V) E$ o+ L# g
mov cl,4( |' P* p& \" w. t# Y
rol ebx,cl- e+ {7 g5 ~, w( f. A. ^
call print_4_bits
6 d2 T& N' z4 |- g9 ?7 i rol ebx,cl
" o4 n( |- b2 K9 Q call print_4_bits& d1 h) |# G6 m
rol ebx,cl) r% R0 p$ G) [! p
call print_4_bits
7 o& v; n3 n& B5 z; x rol ebx,cl
6 p+ V2 y3 J; m [# F9 l call print_4_bits# a8 i( ^! [0 o4 q9 Y, v9 O) p
rol ebx,cl
2 S7 ^$ j8 y6 y# F! _0 R call print_4_bits
" Y5 O8 ?1 o0 W; a; } rol ebx,cl9 u$ T1 X% I0 \! Y
call print_4_bits
2 G- z. x' _0 l5 \! ^, Y rol ebx,cl! M9 @3 m# X4 @# J$ k- ~5 E) L. R; w
call print_4_bits
% w& q! d7 x1 p9 F6 V; O; a; d rol ebx,cl7 S( r+ D3 x) D6 z4 c
call print_4_bits
/ C: B" C1 m7 J+ {# _, @ rol ebx,cl, \8 `8 Y# b- |& P: u
popad
+ P4 B2 W, n6 Y! } ret
+ Q8 K& z1 e6 h. l/ S_32bits endp
9 w9 s u$ ^& u! ]: O;------------------------------------------------------------------------------------------------
) T) I! |( p# ^" e X# S6 o B% j_16bits proc near9 c4 y* ]5 i: q. e& t
pusha
; L& l3 `" J; ?( Q% i3 k: [ rol bx,cl
) i. h( Z# b$ f! Y call print_4_bits9 z5 D5 y' |; s* B" w
rol bx,cl
) u( C+ D! `" {, W F call print_4_bits9 w) d: @; U* Q. Z
rol bx,cl
0 l; l0 @; C& s8 c( p& n call print_4_bits
* B, J+ B* R: b/ Y# Z/ Q. o! {4 a3 H rol bx,cl
) @$ k; i3 W5 v! D call print_4_bits
. k' b$ R; g- ^3 N- p0 ^8 X popa. t* J4 a% G7 k: a' Q
ret8 P: r( F+ O. N( F! l; j
_16bits endp
7 m: \9 p: F* T0 V% V# C0 _: };------------------------------------------------------------------------------------------------4 L# X4 N$ X& ^* \
_8bits proc near
a* P; ^* q' Z5 k$ p: T pusha
" c7 V: i9 e4 U" C0 V rol bx,cl
. y8 Z0 G5 W$ ]6 M; {7 p" b1 i$ R call print_4_bits
, X5 U3 X% {7 D D rol bx,cl
. J" n. L* Z9 K2 D) q6 g6 y call print_4_bits
0 h5 R/ m4 u9 {& R) q: l popa) F7 U3 t3 c) p* C5 }/ ?
ret/ x$ B$ g$ Y2 O W2 N5 T O
_8bits endp: }) R, c5 q9 q! m( I
print_4_bits proc near
4 ^! S+ m' M/ n( H" b$ s$ A2 z mov dx,bx+ g% s$ g) e* r1 D! u" p% C
and dl,0fh
3 w8 h: M, [+ Z- ~ add dl,30h
- h2 ]- F4 N& y5 x& y cmp dl,3ah6 C, d2 l0 _5 E! |% G' m7 J. y
jb print/ x( t( P7 g! w! E" |- T
add dl,7
2 |2 u ^" Q" y- a+ F) t' l- g# Z2 Aprint: % q; F3 p. }% l/ t& r
mov ah,2
) t( M" V, V7 @% {+ F. f8 C int 21h" s+ C y+ I, `# a2 I! a) k
ret
6 Z- V! A% I. ~8 ]print_4_bits endp 6 p; W) F5 @; k: E) v" B2 v
CSEG ends) P2 u( }0 R+ r! Q5 S* x. C# ~
END |
|