|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)$ M# E$ P! }2 ~& o
& q$ V7 z' q5 u3 g6 p% k8 B
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
' W! h: L2 o% D" Q% y
0 J/ ?+ d; X+ x9 q3 C宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
4 A6 M" _) q, ]/ |% I$ g
2 U9 f+ x0 P" H z8 x.model small
9 C7 G8 a! c( ~.386p9 s% G( o% @) A( `* y: X
DSEG SEGMENT USE16'data' 3 Z+ L! C1 E5 ~0 k% v: L& |) a
* p. t8 l Z& \' z. N- ]& O
DESC STRUC, v; T$ ]9 I& n! F
LimitL DW 0 $ P0 R; z4 g# ]1 A9 T6 C2 a
BaseL DW 0 3 u, {- J2 s9 S6 K. z- g
BaseM DB 0
" v: v- s, p; w% F0 n9 E- ? N: m! ? Attributes DB 0
3 f/ g& V$ ^+ M8 b2 c4 r1 u LimitH DB 0 $ {/ v' f! P% O$ j( h
BaseH DB 0 7 ]$ ]! m1 T2 _2 I8 U. b$ u
DESC ENDS
6 G |/ _4 Q h+ P3 w
; {1 i) e( w2 RPDesc STRUC
: a0 q2 u ^4 |1 q Limit DW 0 4 W* s- z7 j P3 c4 R7 S
Base DD 0
& A' {# { W8 bPDesc ENDS
/ v, p8 z$ F* x, z# S D- K$ Y4 f/ P1 [, b0 K1 T
GDT_def Label Fword
$ x! z4 `$ H/ rNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>% p) O; l5 G V( X) T2 k
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
" r5 {. r7 C0 h' HGDT_Addr PDesc <$-GDT_def-1, >
- J, L: M' n" x+ H: |' N+ Q, r
) p$ M& x, |8 }% WMaddress Dword 06 K. [- ?" C3 \/ t/ T, O4 C/ I
C: B( e8 l% S2 ]( s7 H
DSEG ENDS
6 a+ q" E1 @& c& R, {. v& lASSUME CS:CSEG,DS:DSEG
! U9 M" \; [& j" p# [: J7 @6 G
2 `3 x3 Y. N3 `5 A$ E U- ACSEG SEGMENT USE16'code'
7 K' w7 T! x5 m- E- c push ds
) j+ K9 ` x) f" `" u2 g. `9 V push es6 V! P: c& d5 q7 _$ k
push fs4 R. Q6 R8 j" h0 ?! v* T' C
push gs3 Y, x2 u, s5 m0 [8 G
call big_real_mode
2 S; r/ N5 D2 h! `2 K call Get_Commandtail
4 d1 W) c- d0 D- |" A# ] xor ebx,ebx
9 E' D6 E v H) Z1 v% p! N mov si,82h3 w9 v7 E2 ~" ~& w1 M0 F: L
mov al,es:[si]3 E6 _2 C9 Q1 U3 X d8 a
cmp al,'r'
' A$ b* a! r7 ]4 P6 E0 u- [8 _4 \ k je R
/ K- ?. f& C m2 u. } cmp al,'R'
: J6 h: Z N( q2 \0 X+ i je R6 g. Q8 d. p) `
cmp al,'w'8 I$ n/ L; D$ v1 y
je W9 x# ~" W. T1 S6 {# @1 Z
cmp al,'W'
# v8 u1 U s' x! T9 I V' y je W ; z2 e9 d" _* `4 I
R:6 p8 i$ y9 c; c+ d
mov si,84h- i+ S7 o& y' R, K) |( B
mov al,es:[si]
6 l! d* O' Q3 j9 j( [8 h cmp al,'b'
( h8 O5 v5 J* n: X$ Q8 T5 K je RBT; w" g8 t& m. V8 \/ f* q
cmp al,'B'6 P [& A& h. x! N% ?" z5 o4 O
je RBT* `0 |9 u1 e2 N) a* e
cmp al,'w'
9 O+ w+ X1 ~( B7 b je RWR
: A. U3 m8 O* E5 U( n4 e cmp al,'W'
/ A* y5 z* |" C/ r je RWR) W, N! v" R, G _# y/ ?
cmp al,'d'
2 q) N4 v( f3 Q8 w* R* l# J je RDR! C6 A% P0 e7 i; P% v# s3 T! b
cmp al,'D'
7 v, |# C( Q7 o" w; `$ h je RDR
. R$ v1 m9 v# nW: 1 ?3 z& u" t$ f2 ~ `$ Y# ^" w; j- v# }
mov si,84h3 _% s. K" ~( J! h1 V
mov al,es:[si]
7 b$ N: c) t: T+ z/ H+ n+ W cmp al,'b'+ f% V/ r# _ b. N4 f4 t
je WBT
1 p( [ L- u& B! Z' ?" f% a+ s cmp al,'B'
% Z- e- G; ~+ R5 [' {# D je WBT: y8 W- H# F. H/ g# n
cmp al,'w'# A+ v" {+ H; L& i3 Z& L
je WWR
9 j" _: z# e# g$ [9 l$ J! i( q cmp al,'W'
& r$ y, `5 q+ h0 g" | je WWR" ]: @7 F" ?9 w5 @% o# `6 N; W+ m; E I
cmp al,'d'
7 }6 M E$ |1 w8 a8 y$ o/ V& @ je WDR5 @7 ~& I, Y1 }
cmp al,'D'( V" S, i- {, }! k( E/ i- K$ b. S
je WDR6 l" q& @( T7 k
RBT:
. A. d! Y A5 [1 I1 w% N* Y call PSP % @2 P: v, K1 S
call crlf
0 p% B5 ~+ _/ F6 d& B7 t( c mov esi,ebx; ^: l4 o; M4 c: F9 N7 e. b
mov eax,fs:[esi]
$ H# n ?0 z" @% K out 80h,eax# W5 W$ M; k! {% \; ^0 t
mov ebx,eax
! Y( `7 J/ e7 X) J+ ]# v9 b7 f- ` call _8bits
9 f3 ^) F) ~7 v4 |" x, C3 q jmp Exit
" h& r7 w1 F7 f2 y0 z0 E* ?: dRWR:
) e* q0 o2 @; s+ _, x call PSP 5 y, m+ g* Q( g6 K0 T* J( L- }
call crlf
- ?4 q4 ~- O$ G5 M$ | x4 \2 f mov esi,ebx! ]+ e0 T9 u% D# g
mov eax,fs:[esi]
' o$ m0 k1 ?/ h: I$ f- e out 80h,eax6 P0 L9 x" z# q" F* A! z
mov ebx,eax- I2 S2 e7 |- z/ H( t5 @: O5 C0 S
call _16bits
/ G5 ^5 ]4 q# H jmp Exit/ K7 Z- B: p7 t) u+ F3 n' }
RDR:
c& y6 ?( g+ `% Y; ?+ G- { call DPSP
& W* C6 |) h; F. N7 n3 B1 v call crlf
1 m8 i) L4 b0 S4 E/ B! _( a mov esi,ebx1 W% m( G; Y4 k; y) m
mov eax,fs:[esi]
* r% c0 ^, ^6 ]- S out 80h,eax9 x! Y. k2 q/ \0 E" p
mov ebx,eax; G) {. t% W8 N( F
call _32bits
& ]* h' V3 W$ w+ \ I0 T. g' c" j7 ` jmp Exit
; v7 E1 R' t4 g1 R2 s% u8 Z;------------------------------------------------------------------------------------------------. [7 l/ o5 X' X2 ~9 J
WBT:0 Y2 @! `. d, H$ f: C4 E3 p9 W' Q: J
jmp Exit
8 ~& ~1 N2 k* ^' U; YWWR:' j& L0 u5 a Y
jmp Exit& S2 w5 S7 r4 p' ?7 s$ S
WDR:1 m" W; v X+ \; p% V! V* e
call DPSP' t% U# z5 b2 F+ |
mov Maddress,ebx
) K, O3 P Z3 p call crlf1 r$ v# F) V* q$ M
call WDPSP( j* Z8 ]# c6 A3 K4 D- \. j
mov eax,ebx9 J; L4 R% l1 P j) J
mov esi,Maddress 7 \7 h4 i; p6 t, {8 [- F
mov fs:[esi],eax2 `* I7 s9 H# b z
out 80h,eax9 p1 b1 Q; ]( H) ^
jmp Exit
0 A9 L5 b# n+ ~& ]% M;------------------------------------------------------------------------------------------------
+ p Y) S) R+ SExit:
' J/ i( ^- B3 G5 I2 x! W; M call real_mode 2 K' I1 K, M8 f1 q
pop gs! W& D* a; s) {8 i' `2 E* ~
pop fs
; g0 j) T" K t# R, u pop es( G/ U" A8 }6 l) H8 q6 i
pop ds ' g6 u6 f& g0 c% m: c# }# R* o& D
.exit& v/ w7 Q5 H5 y. C' h x) c8 [
;------------------------------------------------------------------------------------------------
1 E, f2 B. D6 ]# Ibig_real_mode proc near' }- {* ^) P3 P
in al, 92h
4 d+ ^' h) U3 E; L2 E or al, 002* e$ Q; w0 @. u v# J
out 092h, al; k& b+ p* h. B D
out 0edh, al$ e+ T, n, L' @0 r9 |; r
cli
6 n! b; d3 d5 e4 e( d2 _ mov eax,DSEG
) c4 C: a Z* E$ q3 v3 g shl eax, 4, a( u" O c/ P8 _" w
xor ebx, ebx' Q w( I: g+ ~$ O
mov ebx, offset GDT_def5 q7 R3 c$ Q# W4 m- c2 l4 N$ O' G
add eax, ebx
F* f& p% y! S+ u7 y: R1 T2 R9 T mov dword ptr GDT_Addr.Base, eax
3 w' t9 _" q+ W3 p8 i8 N+ I lgdt fword ptr GDT_Addr
) u+ x g" e# W, M, o! c+ M l mov bx, 8
' r/ J% i; J9 `* z. p. p1 g mov eax, cr0
: e i0 e) y6 _1 P3 k: S or al, 1
7 ]# A; D8 }& G3 | mov cr0, eax' P$ e& B) W# G8 u8 J. X# b. Z
jmp PMod
7 Y A* m* q" g% r$ L5 p9 zPMod:
& @$ N! u% r3 s- o mov fs, bx
: G/ i9 C0 t! O1 S0 S2 q, R mov gs, bx5 e( Y3 L6 [0 A( i' U- M q! p
mov eax,cr0
4 ^7 @4 m$ {' p1 e& P. I and al, 0FEh
/ Q) I7 C& b5 ?6 U3 c. D mov cr0, eax
! Q9 ]7 s& u) ~% a jmp RMod0 {3 ^4 o9 }" O, F
RMod:, R, q: D3 p( v! G! H i. @
xor ax, ax/ d; y6 r6 n$ k2 O- D6 T) ^ Y
mov fs, ax8 X& r0 N0 j9 [+ h: ~
mov gs, ax 0 U3 c% h0 B% i) D/ W# I
sti
6 d- c" }2 X5 F$ N ret
6 n2 s. l8 i# V5 M, nbig_real_mode ENDP
7 f$ t9 y3 U9 O; q/ b" }! I1 Z;------------------------------------------------------------------------------------------------
" G# [/ C! e& |# R Q& H$ xreal_mode proc near
5 j$ h) G) T- f' G in al, 92h5 L; n/ ~; s# n8 Q2 _
and al, 02
: s; q1 s. `% H; v4 ?* V out 92h, al , {+ t% l l0 i6 `) [) S. I7 g
ret4 V/ H( G- M3 D) W. J G7 _0 k
real_mode ENDP
( ^' ~) |2 |( @/ e% r$ M, G;------------------------------------------------------------------------------------------------
' h9 K V' e% YGet_Commandtail PROC near
0 c, z8 F1 `# n) w) R mov ah,62h ' o+ {8 _6 q: m0 T* o K
int 21h* ~# l/ s( [: B+ q, t
mov es,bx
* Z- S8 w' w7 b% o4 u ret# y& ?4 u1 S9 x( ]* J
Get_Commandtail ENDP
# s0 [# P9 w& M;------------------------------------------------------------------------------------------------
8 X/ p# A* N* I: `- QPSP proc near
' ]$ }1 J1 F3 W/ Z2 K% d xor ebx,ebx
8 C0 k: Q8 K! A9 x6 X8 B mov si,89h( `2 D6 l& l8 S4 s5 ]' j
mov al,es:[si]
7 x6 B' t! f9 y5 S) \) E call Change
, I6 B2 g* U' n4 b mov cl,4& Q/ r2 f4 a3 i/ x( h
shl ebx,cl$ F( ^/ u0 _2 a
add ebx,eax, k& k N4 G' P/ g: Q: S
mov al,es:[si+1]
. F; V3 W8 Q7 R3 H6 v call Change
7 x' J, |1 @% v! e5 u& r mov cl,4. J4 t( @7 H( T2 Y0 W7 j1 W3 O
shl ebx,cl2 D2 ? u3 w& i9 |2 Y
add ebx,eax! o" e9 _0 [5 j' b) Y% E5 Q0 P9 o
mov al,es:[si+2]
6 T, ]% |6 X0 s! V3 O+ K call Change
. E$ j; w% Y' k mov cl,4( v0 o# w$ @1 I) z' u
shl ebx,cl" I7 K* O! k( ~4 M. y
add ebx,eax5 e0 [& J/ n, ^) t( U6 `9 j& [* {
mov al,es:[si+3]* B) `: Q& a# _6 e+ a
call Change
8 v* L- X9 v& W$ d' |- p mov cl,4! b) M0 ~) w: z6 ^; i
shl ebx,cl, q* v' d; q: o0 `9 A
add ebx,eax
( |# \# @! ~ B5 c. `( s+ M mov al,es:[si+4]0 F z$ S% J/ ?, j: P! f
call Change" a9 p) _/ K* t U
mov cl,49 {3 T" h2 a3 Z
shl ebx,cl: g3 ^2 {, L. n; X b/ A/ u
add ebx,eax2 R; Q0 @% B0 R2 M# u4 W8 l: u; f
mov al,es:[si+5]
; m! u, P3 F2 G# l" Z7 s call Change
7 |0 J) O1 n4 O" c% f mov cl,44 z9 w1 f; S% W4 j4 I! [2 T, _2 ~
shl ebx,cl
! `9 P, @# w$ U5 W* } add ebx,eax& p+ @. a( B* P- \% |
mov al,es:[si+6]( k% U- f: k6 j+ |
call Change) v! M; f1 k7 Z) S- J
mov cl,49 W8 `5 \& A' [2 P9 m" i6 J+ I# T
shl ebx,cl
4 G% U" z( y( h/ h add ebx,eax
7 \ i% e. b$ [* `7 v/ P% _ mov al,es:[si+7]
' l8 M, S1 U$ c) e call Change/ Q" v. F" j* M% X X# [1 m
mov cl,41 Z1 U5 y! F" A6 Z/ \
shl ebx,cl' t, ?8 y6 P9 y j- m
add ebx,eax
- j* `, e2 ]6 O2 H, n ret
$ Q; n7 C. {8 o% RPSP endp: K0 G/ A1 q/ i6 H/ H2 g2 G1 w+ z7 Q
;================================================================================================
& E: V* ~' V* @/ e8 o: bDPSP proc near- M) v0 ~0 T7 f0 p; h2 Q
xor ebx,ebx' P6 c$ _' g! p9 j: i
mov si,8ah5 V+ Y0 D- l& Z: P% f
mov al,es:[si]# Y9 \# R5 z: S, k" A
call Change
+ g4 [6 G' y7 d mov cl,4( B9 n/ g' T1 \3 M
shl ebx,cl
0 i% a3 }; `' e" U! ]4 }$ @ add ebx,eax" K3 j; e0 B# p- L. j7 ~
mov al,es:[si+1]) J4 k$ q5 ?: x* ^$ R) n
call Change2 ~; u/ H y" f [
mov cl,4% U7 k2 \/ Y* P9 x& g1 F
shl ebx,cl
$ M1 S! a1 U4 R: W& F: |+ O) @ add ebx,eax
: v6 J1 ~5 l5 ]" _. `( x' g" f; G+ k$ { mov al,es:[si+2]. O2 h y0 Y5 F7 M5 f
call Change
+ n. R3 A0 H5 s. c4 D/ c& D* A7 O mov cl,4+ W7 J& J D4 `3 b8 u
shl ebx,cl# {4 ]& C" a' @$ M; R! M, k
add ebx,eax
) N+ Z, ^, a% t: z mov al,es:[si+3] F6 x& u# P% |0 p" \
call Change
1 d" d3 K! j1 {3 g1 e @ mov cl,44 w* J1 P7 H/ q+ f1 d! U- h1 d
shl ebx,cl
7 c7 w; n9 X0 q0 \ add ebx,eax
8 P& b) o6 f: _5 V3 T" X2 [9 U* \ mov al,es:[si+4]
6 \4 ] g8 o" R. A( h' D call Change _8 w. i+ P) E; t( ^
mov cl,4" l$ ~ q9 w) K
shl ebx,cl
' u/ F2 D+ @6 ^, Q/ u& M1 R% _0 d& } add ebx,eax
+ |' w! p5 C+ [: i" ?, p mov al,es:[si+5]
# ]: k1 R2 v) h5 ? call Change
9 q0 F4 \! E# Q6 G mov cl,4
" V6 E, Y9 ^" s1 l) \ shl ebx,cl
R( w& u' y( H add ebx,eax7 o* E: I0 ~/ G) j
mov al,es:[si+6]
) V' K% u2 a ?- J2 N, y" R/ f call Change
4 A3 E# u, F ^2 j9 s mov cl,4, g& W W2 ^( d+ M4 M+ o; m
shl ebx,cl
% J& _* e/ l% r2 A add ebx,eax
# A7 W a, ]. N4 V, H* e mov al,es:[si+7]: d- P. h5 ~/ n0 x
call Change' Y- l* Z- [0 ?' T; m. ], v
mov cl,4. T) h7 n& m) [2 v; P- K; m
shl ebx,cl
5 F: r2 r( l4 z, c1 ` add ebx,eax1 l. p- {' w9 A% |% Z& C
ret1 ]. x& i% r6 [
DPSP endp0 D) v: u8 ~5 F' `, R' j
;================================================================================================
4 \: ?! v+ i0 B) }2 PWDPSP proc near
0 Q2 M% r% t' h( ^5 L* C xor eax,eax
0 p' X- d# p# {$ ]! x: V xor ebx,ebx
# \8 |4 L0 _( |9 ~( m. i# ]; r; r mov si,93h# ~) p1 F" B6 D9 `' |
mov al,es:[si]& }" n& D& x! l. ?, ]
call Change
% \- r! m: c) H& d) p" ?6 H mov cl,4& s0 N7 o! q0 x3 ?( ]3 a
shl ebx,cl5 C8 W4 {: w6 L; l
add ebx,eax1 \3 X+ G. {# [. q$ J k# d9 B4 j
mov al,es:[si+1]
l' P0 F& X2 I2 u call Change; m# W; Z. Z& _& S. i
mov cl,4: R" s, q5 M( x' p2 ~/ \
shl ebx,cl* H9 R% P" X, u0 i9 S8 q) {
add ebx,eax
8 g* n3 D9 T) y mov al,es:[si+2]2 A/ Y( ?: g. u3 E
call Change" A" I# i* z$ _1 k+ |5 p$ f W
mov cl,4
' `# k: h$ A# o+ `5 [9 { shl ebx,cl" q) ]* g1 t0 x0 B; m7 ?
add ebx,eax
! m }4 T7 |( k mov al,es:[si+3]
3 }" B3 L" @, v; Q% _0 d5 B; b$ T call Change( A6 ?4 w: V/ u; }4 L- R
mov cl,4
* S8 s; |; c/ \( F" \5 L shl ebx,cl' L, o4 \! p7 H6 W- X! p
add ebx,eax
4 ^ ?( w0 i; U. S" \* B; t7 k mov al,es:[si+4] J v0 N5 r0 C2 {# b
call Change
$ |8 I% G( B0 N8 i mov cl,4
& `3 u% m, [; n3 M. @ X shl ebx,cl7 O5 k8 X2 a3 b; |. p+ _" O
add ebx,eax8 \; F) a% s, Z8 m- H! F# C( g
mov al,es:[si+5]8 T% q0 d2 Q, k3 j! _
call Change; X" v, J( K4 N0 `$ g7 z
mov cl,4
1 i* {+ a3 q: A% z shl ebx,cl
2 N% b/ T' A! ]1 s% ~ add ebx,eax
, X8 r( v! B7 }' A( |! p+ e mov al,es:[si+6]
/ T1 f6 @0 M# v- H6 p3 q: J call Change3 e9 T( Z5 O5 ^
mov cl,49 ^5 J6 \ |% J% _+ ^
shl ebx,cl
8 L$ {1 k3 Z( v1 ~) R8 O! ? add ebx,eax
- A* l+ o5 F w, u1 [ mov al,es:[si+7]) t- @9 h4 x: e6 [* x- v. Q; _1 t
call Change
L, ?8 t. o5 i% L mov cl,4" X- C! g& D- ~: S
shl ebx,cl
1 k7 c- q3 }$ ~+ {- ~& h! [ add ebx,eax% c5 w3 m2 l. l4 }4 l3 _7 M0 p" {
ret
4 S( E- [0 {2 c0 X0 w, DWDPSP endp
5 _- v" T1 b9 ?. m; K;================================================================================================9 }' S( C0 x4 L, f+ ]+ X
Change proc near
% T: q+ j( L' ]- b* [$ O/ Z$ M T$ NA: ' \8 F$ g7 O0 `# A8 l1 J8 y
movzx eax,al
% Q6 R! e& ?6 k/ N" R: m# q mov edx,eax
" X( A8 H' D, h; ?5 Q9 { cmp eax,'0'
2 ?6 \4 M" P) I% L% W3 ] ]4 ^ jb A
2 A: [3 e3 F, u- P7 O) u8 j8 i cmp eax,'9'
; Z0 d, H0 ]/ n2 Y: K+ p/ J, j ja B
$ @6 V( h: q' j: m- A2 V1 t sub eax,'0' i+ ^8 ]+ l7 z
jmp short E
2 u8 K+ K2 g- l4 _7 {7 uB:! l: T D/ x6 R) F4 g0 ~
and eax,0dfh
% l" k- a9 `7 Q/ v mov edx,eax
) y! H# W: r7 j3 ]$ Y9 h( c sub eax,37h ! W. _% a5 | i
cmp eax,0ah
( i. s' h% k3 C& r# R+ O jb A
$ X: }" f* ~% b |' t5 \ cmp eax,0fh7 P$ V/ U" {0 h" _$ Y
ja A * [/ r3 c% }; v- S, Y
E:
; G# R% s! T/ H8 G _ push eax
9 J- a; ~5 j) c: X call PRT
" \5 l" R( Q! ~9 Z& ?/ e6 O pop eax
5 ]8 y/ U- F8 O, G; w7 s$ {. U1 Q0 cCExit:
; D/ p! j1 q; w9 d ret
& v/ _- }, I, }2 K: WChange endp
% p7 ?2 k% J5 j6 [8 I0 `, X;------------------------------------------------------------------------------------------------7 k( E& u+ n; W9 ]3 d
PRT proc near
9 f* ]2 N! \' u& w9 N+ d) c8 G( k mov ah,02h; S R, X* Q. J z
int 21h$ `& ^$ T3 V" [5 K1 F" O
ret/ Z1 x" Q: k3 X8 l! n; Z
PRT endp
7 \ z& q' A+ C4 e;------------------------------------------------------------------------------------------------% C% m' D3 @& l4 k9 y0 n$ e
crlf proc near
8 z/ b& R, V1 m! k f. Q: k mov ah,02h |: v& p6 l9 E$ a/ [
mov dl,0dh
( T# \9 a. x" p int 21h
- d( V# z, A" w! T0 L- w7 U mov ah,02h
) ?3 J$ C; T7 _8 W* d+ w; K3 q) k; m mov dl,0ah
; i3 R5 G! C* @2 v( i/ ^! H int 21h/ V0 W. `: c4 T
ret
; c% e/ P2 ?5 h& H( Hcrlf endp6 ~: P. M' w" y6 U; j, ]1 G \
;------------------------------------------------------------------------------------------------0 B/ g9 i* c$ W- K* h4 N# v7 n
_32bits proc near% w# j, A8 D0 ?" i' N( h
pushad
$ m# R6 a; R6 A7 j1 ?8 i( r mov cl,4
0 L) W8 v: z1 r# ]% j+ l# T# x rol ebx,cl
: W4 @2 f; S$ u' w+ K call print_4_bits
+ p7 n" Z \" p3 O rol ebx,cl: J( t) Y. t$ ]' N0 Z& K& ^# B
call print_4_bits1 k* Y3 g7 X' ~, J' L3 z
rol ebx,cl3 N8 I# ~+ u* I) s
call print_4_bits
# A9 j) ^0 x, C. s8 f rol ebx,cl
: o. O/ b) Q+ e+ c" Y& n0 a call print_4_bits
, o6 Y& f# Y, r/ i; W8 Z rol ebx,cl
* u1 M/ W* i2 ~/ ~+ R$ S call print_4_bits
; a8 M( M9 h$ C) b' _+ A7 P rol ebx,cl8 ~7 X. x1 v- c6 ?
call print_4_bits& h# S8 z( o. ^7 `3 g: Z
rol ebx,cl6 X5 u; N+ e. `- c
call print_4_bits- j/ f" T/ P. `6 \ H1 ^2 J0 T
rol ebx,cl
+ e& t+ ]) M2 |; m6 r5 h call print_4_bits
" w9 {4 B3 |0 F5 r+ ]0 w: i2 { rol ebx,cl8 K0 l9 Z1 b9 r) i5 m& h5 R
popad
: B" j# D, L4 P4 l ret
) v* \* G& m7 f2 m/ _0 U B_32bits endp; a/ {: x1 i$ b& {3 B0 N
;------------------------------------------------------------------------------------------------2 L* Z# r! n: J V% a
_16bits proc near4 G( R- W0 s0 p+ g$ y) C# d
pusha 0 K; T+ I: W- y0 `' J4 R
rol bx,cl
& v ]5 T; D- _8 U call print_4_bits
+ S' `: C2 n# `1 b. Y( w rol bx,cl
3 _4 C& R( ^8 _* I& X U, i call print_4_bits
I2 K, W! s& o rol bx,cl2 G" F& |! F% j- ?
call print_4_bits% L2 R' @ Z5 a' q7 ~' X
rol bx,cl
6 q; `, Q! T8 B$ U+ D$ K call print_4_bits
7 {5 C' m9 w j popa8 z' F1 W; Y" I4 z4 H2 N7 B
ret
/ t7 I. W1 v5 Q; k2 f. K_16bits endp
e8 |6 Z% \3 B;------------------------------------------------------------------------------------------------! e c" V2 @3 L+ u$ \: W4 i# e
_8bits proc near
2 [% }0 d& H! k+ J pusha
( r- X! K/ Y/ m$ f: m) b rol bx,cl
: u5 d) I4 X% H+ `8 h) v4 E call print_4_bits
0 C3 q# s8 _ s% e. U% m5 H4 u rol bx,cl
0 h0 X3 K0 z* I) Z0 m- s call print_4_bits. q9 d4 L' l+ p5 ^- F& d m
popa$ e, r$ S, \" h9 D
ret- D9 I% ?0 [$ u, l) m% D
_8bits endp$ x& g! D7 z' l/ M" m4 I9 @
print_4_bits proc near6 a ^: ^ v0 t. q3 A
mov dx,bx5 z+ H7 o/ x1 X( k6 ^( K) B
and dl,0fh7 Q3 T6 \) i8 e, K( m0 g4 H6 s
add dl,30h
! w, }) j, f i* V cmp dl,3ah
: ]# k& d2 G( G& b( L3 X$ R/ b: m5 ]3 K jb print# F( [7 w: x. l; t
add dl,7
6 Y) ]! E5 u6 `6 \( {print:
& [/ d2 c1 C9 F$ p( M5 ]: Z" J mov ah,2
- h) l y: K1 `& Q' x3 U int 21h% V' K( {/ h$ ]2 }
ret3 t0 v' W1 K1 W/ b5 e( `. w+ f9 E
print_4_bits endp
! B; f9 m$ k2 v2 G' v# tCSEG ends) r% X; [0 O1 K+ O
END |
|