|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address): K3 t6 L9 i+ m
' A: t5 y' B+ v) i$ E9 }6 J% v
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
8 a/ e- f b0 N2 O6 ~! z+ e. V& l+ b) I
宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
6 K9 i2 n8 H# d8 J, `, w- j
' h. Z! {+ H& z7 L0 g1 I, ~/ X! P& K.model small. y( [/ E# w' k" t2 y
.386p" j5 v1 D5 g+ S" P/ q
DSEG SEGMENT USE16'data'
7 d1 |2 K& d% p3 T5 o& a" l# u1 Q/ a8 B$ J E% e3 Z% V( k
DESC STRUC
1 _# F" l. u0 J# ]4 N2 b- ?; E) `4 E2 i LimitL DW 0
& M% T& J1 ?1 q) D BaseL DW 0 ( {. q6 N7 I6 l; l3 s) a7 q
BaseM DB 0 ) s& a3 m) X/ \ m& q
Attributes DB 0 7 f8 O$ v6 N3 d8 ^
LimitH DB 0 9 e% A: y. G5 k) n7 W
BaseH DB 0
, j' w( r$ e+ f+ gDESC ENDS* B+ h! t' e& n4 v5 R ?) F
# X C" Q* F. z3 u1 U5 EPDesc STRUC
' T. a# ~* C' J6 L9 H! z/ } Limit DW 0 % t4 ]5 y$ Z9 X% Y2 W1 u, W
Base DD 0 - ]( X: U9 m# V' h5 n' C- W
PDesc ENDS6 U6 ?! d3 S2 w! y. L. R0 Y
: N' k, @2 x) K% R4 MGDT_def Label Fword. A4 H0 w2 ]) y: g# p
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
- d$ X' B/ N2 H* nData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
: ^4 o! L6 c! ^6 LGDT_Addr PDesc <$-GDT_def-1, >
! X9 _( v9 A, H5 ?8 \0 P+ N. R) A: ?! {0 x
Maddress Dword 0
! W3 ~* N$ N' \+ p/ b4 I+ b9 m1 R- f; R" y8 b' L9 r6 Q
DSEG ENDS 6 W! h6 B& L. M) a6 S; e4 T, `
ASSUME CS:CSEG,DS:DSEG0 Y6 g2 T* g0 B( c3 x
/ w D @ d0 n* w# @) eCSEG SEGMENT USE16'code' / g- W1 ?4 B! Y
push ds
; O. }* ^ a# | push es
! K7 f0 ^* C/ p; H push fs
3 F8 ]( J/ W0 R& e9 O9 f5 T push gs; \7 T2 ~8 Z: c f3 ]0 F
call big_real_mode
" `+ |/ l: Y; }& I! z& H call Get_Commandtail. v$ [6 C; k4 U& P. D
xor ebx,ebx" R+ x5 g. k/ E, ` M& ]
mov si,82h; K) z3 g2 c, p
mov al,es:[si]
: `1 e' X; R) m+ [/ s, Z0 G cmp al,'r'
" _% c% a( D+ w je R, s/ V+ U6 |0 Q2 w2 P' }8 ?
cmp al,'R'
$ V; r$ z, ]6 @ je R! L( _, e5 @# {7 ]: X6 d+ ?
cmp al,'w'
% ^/ C/ U; D. ~: c [ je W4 H& h1 F/ l$ n" ^9 k9 u- s
cmp al,'W'
- \* V" r6 f W5 y je W
& x7 U. R3 ^* T9 ^6 {% K5 o. ZR:
3 ?" e; P* p) h mov si,84h# R9 g' y+ G/ [ I0 w h- p5 Q
mov al,es:[si]' n$ m) T) f f' v9 N
cmp al,'b'6 V# t, j& Y f7 h4 `
je RBT
/ t$ ?9 [& @, P cmp al,'B'
! H! n4 R* f1 U% O6 V je RBT. E2 I$ g2 r- m6 v3 u/ f3 W
cmp al,'w'
& B/ c- i0 p' H) b! x je RWR
5 p& v! J: \5 P/ |2 E1 d: w$ V) p; a+ n cmp al,'W'- t4 z! Y1 Q- w4 p& R
je RWR: i- ~5 i F( ^$ v6 i, k7 H2 V/ q
cmp al,'d'1 q$ |7 C! x* Y* B* r
je RDR
- Q# q8 ]) y2 r w; L& t- g+ o cmp al,'D') i' t# x6 G+ O2 w l' a
je RDR $ `$ L- {' A8 ~: h
W: 6 h Q3 i2 }" Q" \. W( H9 R
mov si,84h% T# i0 _; E6 H& [( T. D% U
mov al,es:[si]
1 s" u" W4 @% @2 N4 {4 s8 Q cmp al,'b'
2 [. |- X3 a+ b je WBT t, _) C9 v0 S
cmp al,'B'; v: T# G. a( |4 M
je WBT6 o8 j+ A6 L; P. X
cmp al,'w'( g4 _) Y! t$ I7 e1 m# O
je WWR2 {7 W$ ~3 E% E! `
cmp al,'W'- a6 @# i i# u* t" [+ p% X
je WWR
8 ^% X' {/ P, C1 r/ m; B2 `6 } cmp al,'d'
# x. _) S0 I9 {" O4 P je WDR
1 R" j! x$ m/ Z( @ cmp al,'D'
/ U; P& T7 ^( H C1 s2 L* Y& Z( I3 R% f je WDR% m7 k9 P# k3 p6 X- e0 d2 }
RBT:
1 Q3 p: s! w, H7 S4 L call PSP 4 L6 U2 h) h" q4 C0 w
call crlf $ [/ _" _/ N6 q
mov esi,ebx
6 Q# v, v7 _' `; D$ Y mov eax,fs:[esi]
]7 { t* Y( P3 C e out 80h,eax- ]8 d' |! x, H7 i2 c
mov ebx,eax& `1 o) z! w3 |6 k3 _; s8 R* z
call _8bits
+ {' ]4 o( I w# n/ m# w. M( G8 r jmp Exit
4 c5 c7 K3 z1 G! n i- W& Z8 ORWR:
3 M( Y# Z3 g: q4 D7 U( {6 e) ]) U call PSP
8 R1 t5 c- w! N call crlf & j# d5 y; d2 C8 m: g: e. h
mov esi,ebx
" o; d, f7 Q4 Q; q- z! X mov eax,fs:[esi]
/ T3 J4 [ E: y out 80h,eax
0 P8 q( `4 z, m; F5 {" {( x mov ebx,eax$ P1 O3 W, a- t+ A/ { Z
call _16bits! o! C6 j3 D8 ]: ^5 Z+ u/ H
jmp Exit S4 }! y) a3 i" v( N7 y
RDR:, p7 W: P4 q6 {
call DPSP ; m6 P2 S3 B: k( X, G2 J+ e8 E
call crlf
4 O! \3 C2 [/ ]6 B mov esi,ebx
7 r+ n& s% J) N, i$ D mov eax,fs:[esi]# A1 t, d5 V |7 [% S* v
out 80h,eax
9 X9 T, @' _$ W- ^+ b- O" | mov ebx,eax9 b, L# C! R/ f) P
call _32bits
+ B+ O* R) W/ i9 { y jmp Exit s$ }$ m) m! ~! G
;------------------------------------------------------------------------------------------------
$ `+ x0 s- @0 c% YWBT:
9 V/ g, v9 @! ?8 c' h jmp Exit- _3 O' N1 [% z3 X1 v' x0 @) R# |
WWR:
) g5 B: g6 V! u7 ]: C* z! X. x jmp Exit8 R% H. i( g) G6 w5 a$ D
WDR:+ M$ E2 `( j& q9 j/ m
call DPSP
* P4 j v' _5 w! j6 @3 o5 g" Q mov Maddress,ebx ( d# \- `" K: G/ n5 k. v3 ]
call crlf
" g+ T) q; G+ R$ w, u. } call WDPSP2 T" M4 L% w, l3 [, B+ f$ K
mov eax,ebx
0 L) ~6 B# M, C; c mov esi,Maddress # P) O. O. L" u- D
mov fs:[esi],eax
4 e2 E. K* n, H3 u out 80h,eax
% M: [ b6 _. k/ i jmp Exit7 `; L* j4 J0 O8 ]- \$ A8 D
;------------------------------------------------------------------------------------------------
1 i. _, _/ G9 [* {, E; j" X% NExit:
6 R6 \% a5 U6 {; M; C call real_mode 6 ^# {: k& c C: T$ E
pop gs
+ I2 O+ Z( A0 S8 h7 \ pop fs
1 O, _! k8 E: C2 J pop es
, p, a1 N1 o" e) H, J6 } pop ds
! q; V+ [3 X, \3 R% {- Q# a* K .exit
: N- ?, q- H" j9 f* d; |;------------------------------------------------------------------------------------------------
5 p4 `: Q( ~& a3 W% e" @% _big_real_mode proc near
) N. g( Y" J1 a% N$ |- _; C in al, 92h
1 B7 s8 w" l% e" ^, D1 Z( K2 L or al, 002( {+ {5 c4 {$ j- Y+ }2 F0 E
out 092h, al
7 ^- T9 J6 m% X3 z" T& K6 N out 0edh, al
e; B! F+ G j1 n- i1 p3 R cli+ x5 g! y* U% B, s- i6 b3 P
mov eax,DSEG
8 v# \% @8 r, p( m8 V" e7 g shl eax, 44 a' K! a: ^ l' n$ _0 w, \, s
xor ebx, ebx2 q9 X/ J, Q# F2 d) x
mov ebx, offset GDT_def
7 o* H: K) {( a4 [ add eax, ebx
4 T0 c3 o5 ^7 b/ E8 h7 R) m8 r+ P mov dword ptr GDT_Addr.Base, eax0 ~# @( k& W: `/ X# X$ s
lgdt fword ptr GDT_Addr9 J6 d( S3 q, J1 c$ z
mov bx, 8/ l7 J/ R# f5 E9 H. w4 S% o
mov eax, cr0
& v2 M, G7 t5 @ p or al, 1
; F" K. h: K' F: ] o& q9 M mov cr0, eax5 q0 `3 v" q7 S w
jmp PMod
, B' S$ ^& \" h3 S" @' {PMod:
. C5 K' {4 Y, K% f/ @: F; g; v: O mov fs, bx* x: k& f) C" \. E; G" l# m
mov gs, bx
* U! e, `" e2 B mov eax,cr07 H L6 V* o; K# N [. y7 m
and al, 0FEh T: w1 Q; f6 w% y
mov cr0, eax * ]- C! e- V# t
jmp RMod, ?# P6 E5 a. V1 N) l6 `- t' W
RMod:
" z1 G! b7 M# R# V/ R* w6 P xor ax, ax$ S" z' w9 p, Q9 i \& D3 u. y
mov fs, ax; S5 B6 ?% v' P& H
mov gs, ax
" F; C* ^3 a* g) \. h4 l sti
. \/ P6 K4 {% ^7 J% I ret
" }4 U6 Z( {0 q* p: {big_real_mode ENDP
+ r& R; B* |" x. U s" l0 Z. ]% u;------------------------------------------------------------------------------------------------
! m6 t6 \! f6 q0 a3 q8 ]real_mode proc near4 V* _1 c4 v$ v; p5 @) w
in al, 92h
- o5 A0 G& h. D, F5 w) P and al, 02
- o/ g* ?2 {, u/ q7 \+ L2 `" C out 92h, al
! F' D' C8 z G( p ret
3 ^" Q N0 X: T& [real_mode ENDP
$ B6 ?8 I I+ z$ I" [6 z;------------------------------------------------------------------------------------------------
) ^4 E& K* C4 p" T$ W1 HGet_Commandtail PROC near
% J4 K% `- L! l! [' {& i mov ah,62h
/ g, j! `) k( z( Z% U$ j int 21h
; u. q* l3 @4 T4 y mov es,bx
7 [/ g Y8 |. U1 A8 U8 ]# a ret" i2 f1 v/ H9 ^
Get_Commandtail ENDP
. h2 o( ~( }" B E, ?;------------------------------------------------------------------------------------------------) g7 u! a8 y& i. |3 g6 v( z
PSP proc near
$ v+ B5 {. U0 m. Q6 k/ E) u xor ebx,ebx
/ j+ O+ n* c8 L mov si,89h0 X" o0 a' H& o( w, |+ J' w$ L
mov al,es:[si]
' K& W5 o4 \# m% y; t& _: x call Change4 b3 U) I" k/ p
mov cl,4) i' G( y+ ]8 E
shl ebx,cl6 N' B; P& m: _( k( u$ U8 R9 _
add ebx,eax
- y4 }: a" Z7 \ mov al,es:[si+1]* M+ ]: h5 w" a5 G& P: u
call Change
$ r/ @6 F- S6 k. i5 n; T! J mov cl,4
# R2 C- w2 u% g3 s7 e shl ebx,cl
! g( v* w: h9 ?$ Z- g$ a1 g add ebx,eax/ g6 v c1 G% _& x5 g3 R. \
mov al,es:[si+2]/ ?1 U( X6 s; g- X) |
call Change
3 E' P* D6 h) c3 X- ^9 }. e mov cl,44 `/ y7 C* P3 l
shl ebx,cl) A/ F6 w" B+ y/ x8 [) ?
add ebx,eax# j" G# G+ B2 i S
mov al,es:[si+3]. q- h$ X* l. W; g0 D6 }% [
call Change
2 a. I4 {3 D5 R5 ^ mov cl,4, |, S! U. c, Q
shl ebx,cl) I4 b5 [1 V5 j K
add ebx,eax5 a; k* z; o3 _7 j9 K
mov al,es:[si+4]
/ i V& m0 p' i- {3 R. U" D+ ? call Change
- m1 u5 Y; S" [6 E+ c mov cl,41 X8 _7 s. S7 e" }' ?( Q8 a$ K
shl ebx,cl
( J) B0 W! l; b! X add ebx,eax
3 M h0 w1 v* M, a' ?) _7 \ mov al,es:[si+5]
& X; O' R q6 p call Change5 K0 J$ U8 W# E3 _
mov cl,4
# w7 Q1 }% f0 P: h/ I0 ~2 {9 n shl ebx,cl5 a- l$ _2 M! W- h4 Z* k0 _
add ebx,eax2 B1 I) a, y: C$ I. [% P" U( X2 u, [
mov al,es:[si+6]
8 p/ d% D4 n5 Q& n& |1 ^. u" R& \ call Change
7 ^4 G: B2 `+ L8 f4 p mov cl,4
' X- g' m: Z% Y5 G+ ?2 [8 m0 L shl ebx,cl
+ \8 G# [8 x* E) N: I* D, Q add ebx,eax* ~6 \( i/ I5 n5 X( c) ]2 z0 }; T
mov al,es:[si+7]1 J/ g/ |- `5 k( B
call Change
6 m( z2 i# Y' g7 H9 Q mov cl,4% C( r/ B" m4 y* H b: r9 g
shl ebx,cl+ Y1 a5 D+ e: Z! i
add ebx,eax
* X& c3 e) F. ]$ M2 f ret
% f2 z1 N9 A) d6 R. B( J9 uPSP endp/ Q, c) P5 @: I9 |! B! X
;================================================================================================1 s; @" J" k% }
DPSP proc near
1 s7 P, L3 m) x( M' [$ B xor ebx,ebx
" a: p. h7 O* u1 k, ` mov si,8ah+ X* m' B+ e2 G0 L, D
mov al,es:[si]; ^2 j5 {# e& ]7 U
call Change
1 w( R* R% {+ |7 I4 X mov cl,4
+ e# E) K& g, [4 l$ x shl ebx,cl
, S2 w2 V8 |1 Y" @. x) p add ebx,eax
: O3 F2 g% }" A K9 _1 l8 C mov al,es:[si+1]
! \& y* k( k& U call Change- T% {+ R. C b2 P) p! f4 [, e
mov cl,4
1 `) `6 ~- [$ V shl ebx,cl
* ]& O y8 m- `7 l8 a5 _ add ebx,eax
0 f! z1 J. W4 u3 E$ d& \4 `9 r mov al,es:[si+2]
9 u( x! S( O! K6 y1 A. G. P call Change. K2 |- \% n8 m
mov cl,44 Y! ]. e8 R9 Y# [3 H
shl ebx,cl" F: t, l0 u7 c) ]% }& i
add ebx,eax7 L. R) A' {; i, \3 M" T
mov al,es:[si+3]
: }/ {7 Z! L) b( v* ^7 j call Change
* Y8 @# k& p% C/ D+ W: o% K mov cl,4+ R" u a: s) h
shl ebx,cl1 R& R [, C) Y( l- K3 t. L# w
add ebx,eax- i- b" U# [9 L6 h1 ?6 n9 U7 _2 a
mov al,es:[si+4]
! Y1 l; u, M @% U k! E/ A call Change
S" A+ l# S, r mov cl,4/ g- B& y! W7 }5 N' u: [
shl ebx,cl
* {* S5 V+ P3 ~* S. N. R' C add ebx,eax& f; E2 U% l. a* v3 i
mov al,es:[si+5]
2 ~$ ^& D2 N; A8 J/ j" u! e! ~6 g call Change$ Z& R9 @8 E# Y; C8 d) o) P; Y" b$ n
mov cl,4/ T+ I7 F0 l# E9 a; i/ j
shl ebx,cl9 _9 O$ r* K1 \9 Z
add ebx,eax; }* [1 \# o- L, a; y3 @: d
mov al,es:[si+6]
" ^ m2 }0 P" s* b4 Q6 Z call Change7 _2 e- P3 p A5 Q
mov cl,4* m0 _' ] O; a; g) X0 Y
shl ebx,cl! U! v2 r J1 C! M0 z; O7 O
add ebx,eax; P( I3 c& \( W5 _- c4 X
mov al,es:[si+7]5 D3 A* E- I+ r& R- I5 Q8 I
call Change9 j- |$ K$ {3 S" C& [5 k) \4 W
mov cl,46 s; a2 J% P0 y/ R- j; O+ ]! p
shl ebx,cl s7 @6 o+ t- }& `0 d
add ebx,eax
" \3 l, Z, X7 `: o ret
3 f |; S& n2 I! q- Z5 sDPSP endp0 S b" X& l$ I1 B$ L5 F
;================================================================================================ ]/ t$ f5 H! ?& t. I
WDPSP proc near
( w" i% N o7 f xor eax,eax% i5 ]3 t9 A2 b8 [4 W
xor ebx,ebx
3 V$ S5 |) F0 W8 ]/ j4 `9 f* n mov si,93h
+ X3 r! v! A6 w+ F! J+ L; } mov al,es:[si]2 Q6 f5 D. Y; n8 R2 V! a. D* N
call Change6 g i( K$ |; w
mov cl,46 {; N5 {% W3 {1 B& [$ L
shl ebx,cl- X4 U) l. B& H) c" q0 b
add ebx,eax
9 L; O; J7 z9 V. C" z( H mov al,es:[si+1]/ V& }8 D) ]8 K
call Change& h1 W6 }1 z! M! M
mov cl,4' q1 @, T1 R$ S# G
shl ebx,cl
2 a: F7 y% [8 c add ebx,eax
' P, `4 E5 t0 i ` mov al,es:[si+2]
4 S1 O6 C7 \* p6 s0 n call Change# i6 E0 i- E) `* | F4 _- B& A
mov cl,4
, C5 E: ~* G% `. I; k shl ebx,cl2 G/ X1 _9 T/ v% i2 C6 K* |/ B
add ebx,eax6 c% c( e. }; z2 [1 B- [; h" q2 n
mov al,es:[si+3]
2 Q0 o, D. q" w# m& y call Change$ }0 z, r9 b1 j+ j
mov cl,4- }4 p1 Z( j3 d5 m
shl ebx,cl8 M+ I6 w" W- Y
add ebx,eax
" x/ c, h9 g: N( i mov al,es:[si+4]
" y! C3 ~0 k7 Z' D* a4 j call Change1 z( Y$ u6 J% V3 c" e6 `& _
mov cl,4
+ C; ~' _: t# S. z& M3 Y* N' m shl ebx,cl8 A6 i% S1 C2 p: [: {, s, V) n
add ebx,eax* Q: J! O; }+ A/ [' ]+ r0 z+ Z
mov al,es:[si+5]
' f% C: \- i) r K- S call Change: c) _( Z+ g& R; H, T: D
mov cl,4+ {3 s1 ^: @8 Y, B5 L& K
shl ebx,cl
# [8 V( Q' ?6 Z# O* R2 H add ebx,eax
7 G) T. }5 P& @' s& h mov al,es:[si+6]
2 d' E) z2 i9 p call Change
1 _" O' A" g7 ` o E mov cl,4
/ g1 d, D( K5 u4 `2 x shl ebx,cl
1 l/ R& A$ d( Q4 g$ u; P% h add ebx,eax% A- a+ P: y) x4 g& M& l" s
mov al,es:[si+7]8 t- x; j* h' b
call Change( S3 A) L' Y) T0 S' K
mov cl,4
! d o6 f, b$ j# x5 | shl ebx,cl! F4 m( z4 h4 G6 Y. e2 }% |, O8 p
add ebx,eax
* D1 S& H K" E- `4 A; { ret; v: T& b0 r! N8 p
WDPSP endp( B6 M2 z b2 {6 p; X6 Q
;================================================================================================: ~4 F# j* W7 w
Change proc near% O/ F3 H5 O& V; l- h4 [4 W8 M
A:
5 b2 o% W" L' T% P2 ~ movzx eax,al( p8 r* C8 i0 _ H7 T
mov edx,eax
9 [7 A3 L, X5 Y- i4 \4 ^1 c cmp eax,'0' ! V ?) V& K& [7 T* ~$ M
jb A" J; t7 Z4 X1 b; M; a% O5 m
cmp eax,'9'
% ~) Y" [! H: C9 h2 K0 W8 r( { ja B# D9 p! d% @0 W4 y) g: N# x
sub eax,'0'
' K) ~6 P$ Z' C7 v& {9 p) v9 z+ k0 `$ W jmp short E5 M2 F/ L' n( \+ y6 j2 H
B:& h0 }- v( F2 i% s% P" }2 w5 B
and eax,0dfh
; ^6 d/ s; {5 O0 C6 h mov edx,eax
, X" L! N' o, [ c sub eax,37h
( A7 ]1 x% O& ]" z cmp eax,0ah, R* k# _- s; n& a t7 _: A! L
jb A
& \: X; d/ b; k4 n( l" K7 u- G. E7 U/ N cmp eax,0fh
! q8 I* h' m7 ~" V$ C7 M- f( z ja A
7 T1 a3 d8 F2 H ~* h" T/ \% cE:
0 F( ~9 J' K3 T4 G, a5 d0 v push eax
" E! F" V" Z0 @) m4 A: |. i$ L- J call PRT
4 d& b7 k" F- m( t2 E# y pop eax3 z# A& p: s( s+ f
CExit:1 q0 P" K# z# D9 u
ret* w! C; z" q9 Z3 l w" ?
Change endp
6 c9 N' s8 q( x r;------------------------------------------------------------------------------------------------
) v, C7 D0 H4 C0 GPRT proc near
% E* y' r1 B$ u1 F# a/ i+ K mov ah,02h: \' I4 Q& r/ [. c
int 21h
1 r: A8 R: O: a$ B8 j4 o7 b ret0 d3 G6 ?, w# S" n/ I( h5 Q( r& ~
PRT endp: N/ J$ n5 Q/ s: _9 M" H
;------------------------------------------------------------------------------------------------) Z' O" \6 {5 |
crlf proc near
, Q8 F! c$ v4 D# |3 S2 E6 n3 |+ O$ ~ mov ah,02h
: @ v% a( m i: M0 ~0 D; N mov dl,0dh. J2 _1 o/ e1 B! N/ J! @ @
int 21h% d1 I& v! F. I: w
mov ah,02h
- j" u' c( d1 |- @- j mov dl,0ah0 y. w* K, K1 P4 x1 I
int 21h1 t5 t+ X, j" {: I
ret
; U, M! |$ q# P) O/ {2 O% G$ Y4 Tcrlf endp
, M5 v- Z+ k& j; e- k5 O+ Z;------------------------------------------------------------------------------------------------
1 R4 l W- k7 W' ~* s2 D8 q1 E_32bits proc near
1 Y3 V2 e/ v6 r, z) S( e pushad
8 Z) w. i c& A mov cl,4
, w: \, y% M& I! n# c8 k8 Z7 p rol ebx,cl
8 z3 l" z3 V2 q( V call print_4_bits
2 c0 n j; x# D, K/ _! E rol ebx,cl
& q% _9 R3 d( C call print_4_bits
U2 V! h, z+ [ rol ebx,cl
1 o, v1 c7 a1 k% I2 T9 u7 V5 E7 N call print_4_bits
/ ?. G4 e- z0 }5 a6 W% [; d rol ebx,cl
# D9 h+ ~* _, W4 N% l( g& G4 o/ V call print_4_bits
7 D5 w2 m# h7 n# J rol ebx,cl4 F8 W# R; S0 m
call print_4_bits
3 i; B* n7 ^! I+ I0 e7 { rol ebx,cl
+ }" {; o' g$ X' |9 Y, J call print_4_bits
6 D1 h" i5 r: n0 X6 Z9 w! e4 e rol ebx,cl1 @! }: G! h! F1 g o; |
call print_4_bits
7 {& {9 E( h3 D' B; X rol ebx,cl! h, J; z3 `! l. ~
call print_4_bits" U1 ?5 A! s% v8 F2 G$ C5 `7 B! t2 u
rol ebx,cl
: U3 Y6 }0 Q3 {) i" B! d0 q popad
3 Z8 _. f" J% K3 h9 t ret
* R1 U- J; w2 l) u( T_32bits endp
7 o0 x( T- a U5 l# S) k$ B& \;------------------------------------------------------------------------------------------------% D8 w1 H9 r5 g) _( O
_16bits proc near
& N* E4 ]0 E2 i* J$ b( d0 `; M1 A pusha
: D4 S$ d" f' \3 ~1 i4 y& h; d rol bx,cl
9 d) u# d9 \+ Z }# H' I call print_4_bits" d2 J& y1 k: ?' L
rol bx,cl
: ]1 U u: \( B5 u5 b call print_4_bits
! K" K* i' L! V4 y" m7 u rol bx,cl+ d! A N/ \6 r& U' @+ W
call print_4_bits
$ @4 m7 m" G+ Q$ o. G* A8 B rol bx,cl' |2 [1 J" c; ?: G
call print_4_bits
/ P! v* U' M0 I% e9 T5 t; ~ popa
" h- t, `7 U/ @$ s ret1 l" N: s, k$ R
_16bits endp$ l: ]: U1 Q `0 R+ p8 f% I* v! |
;------------------------------------------------------------------------------------------------
- u( R0 {! @' l7 K8 O2 F# R# g# [_8bits proc near1 m; j2 d8 K: E8 A* Q4 I/ C
pusha , z. H* o* U @* W5 t
rol bx,cl
1 w1 m, f. n- ?! V0 G7 P4 N3 {& h call print_4_bits
) C- w1 n- S: f; f% \+ W4 b& i rol bx,cl
; x9 } }6 t2 J- W- U call print_4_bits
; z f5 w% k% I4 r- f6 N* { popa
/ X. |* n! }+ a( k& A ret
" O' k. `: x* l$ P& ^_8bits endp
+ T% r) v5 j+ }7 fprint_4_bits proc near7 {5 F2 `! w* Z @( S$ z2 A9 {$ ~, ^
mov dx,bx+ ~* H& h' n) A7 b. l4 R
and dl,0fh: a" G: X- r( w2 y( y: ~
add dl,30h
. D2 I& ]' W/ e( D0 _& i! M" i' D, x cmp dl,3ah
* O. U; h; X& h t, ^. D jb print& {! S' t% ^. L6 x5 L% q
add dl,7
" Z. a# ^$ n& l0 v1 q6 tprint:
1 h& v5 V1 }7 I9 _ mov ah,22 M" N* @+ I H# A% I
int 21h
2 ^0 U1 S4 E) O8 b+ k, q ret4 s, \* _7 s1 F0 I/ D2 l5 t( m Z
print_4_bits endp
& e: @+ M5 r( T/ l$ RCSEG ends9 o3 x+ B$ m! J/ |
END |
|