|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)9 _7 R- \- l% G) J7 g
9 S( w5 t0 {: o. g則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
6 W$ O5 u, J8 L; ?" ~: E) U0 C
3 V G; W9 Q3 T- M( h2 a宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝 6 S3 w% m6 |" a1 i& @- {
+ g2 h' E$ H t3 [# x: X
.model small
6 @: z( ]/ R1 H( |2 e6 `- Z) I V" R3 }! x.386p: a0 l/ h v( c1 K0 [
DSEG SEGMENT USE16'data'
$ j1 f- r; S# P) r* T+ o1 Q$ W$ h2 O+ A( C# ^0 [" n
DESC STRUC/ W6 c5 G% a X% }) q. Z+ c
LimitL DW 0 1 t/ ^8 C: D M
BaseL DW 0 ( w! z6 T' `- Z
BaseM DB 0
% X! p. _/ }, L% G# Q6 c2 \ Attributes DB 0
% o& v+ E4 P; | {, I2 R LimitH DB 0 % W; ?/ g+ ~9 Z2 N3 Z A. F5 }
BaseH DB 0
+ J7 Y6 J- p' `" ~( k2 N, n' ]DESC ENDS, X9 B0 D% v3 f+ I. `5 {0 j) @( {
% y$ M r8 t$ @PDesc STRUC
- _& i: N6 R0 ~7 V) q' j4 ~ Limit DW 0
4 {9 h: |; i( ^4 E Y' v" p" @- U2 ]# h Base DD 0 . ~$ z+ S9 V) W! N2 U
PDesc ENDS
8 p" |* Q% o) i( S1 }4 c7 o* X3 P7 d4 ]' O$ s# ~6 z( ^
GDT_def Label Fword: }' c) p, ^. P# u+ U, b: f
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>0 s4 Y+ y6 h3 m: |
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>9 w- R2 H: l1 X3 q6 O8 v* l' ?- F
GDT_Addr PDesc <$-GDT_def-1, >3 O% t5 C( Q5 `7 z" q |! k- }
, J. Z6 i$ d/ [7 }4 n
Maddress Dword 0
. n b7 l9 D' F% Q o+ i
9 q9 A8 \; g! g- A( ?3 sDSEG ENDS
! _6 V3 Q. a" M9 u' T9 OASSUME CS:CSEG,DS:DSEG; q0 Y: a3 S# R3 ?" m0 ?
( Z3 P/ X0 v4 D/ O$ }
CSEG SEGMENT USE16'code' # ?6 P% U2 a9 ~8 N2 {4 p( X
push ds
6 Q$ B" K6 G4 j5 ]3 ^7 i push es
2 B; ? F+ t( z J& [: d( h u push fs
" u* X7 p0 C! Z! c. C push gs
* w$ R# `; J2 W1 a8 K call big_real_mode " j2 l% F' j: Q& ^5 U
call Get_Commandtail% B5 l- U1 A3 O8 |# o$ @, f) p
xor ebx,ebx
% R' H4 ~) D! h; s2 B mov si,82h
2 }# u2 p* i* v% N mov al,es:[si]4 i; I5 i. J7 o; g& V2 q
cmp al,'r'
3 R4 M% G% b" q- w& i je R
$ T7 L. x, F# R/ n0 [' m cmp al,'R'
2 H- O0 G3 n$ B' o5 ^ je R
1 V3 P5 ^" F& y% e' ~- r& S cmp al,'w'9 X! t5 M/ e3 X5 h i
je W/ l2 a5 Q p; s) n- u6 h
cmp al,'W'/ c- G' @& A" m( `
je W 5 k/ O g7 v- Z' s* [; a' n8 b4 S
R:
! r$ k* V0 H6 j- [) ^ mov si,84h, `; _/ u: ]5 Q+ H) ?7 K7 U
mov al,es:[si]- v' k3 C( R. ]; }4 u; E
cmp al,'b'4 Z( L( |( Q! G5 o0 N. y8 i: x! t
je RBT
7 }; i {$ p6 d9 A cmp al,'B'
$ _+ w6 b- g: ^/ g- M je RBT$ s' \' M1 F) E9 K: h+ p7 ], v
cmp al,'w'
3 T' _7 z8 }, X$ @+ I je RWR$ a9 g$ F/ o& R8 l
cmp al,'W' Q2 y8 J: U1 x
je RWR0 |& X. r" N+ L
cmp al,'d'
& `. B K3 \2 T je RDR/ c' _+ u# Z7 l$ }) h
cmp al,'D'
" M. v ]3 }# { je RDR
6 a, ~* r$ q: v, F6 d; ~W:
" _7 h+ n8 N7 ~( L; x4 p, Q5 Z8 v mov si,84h5 ~3 B- u; n/ w+ G7 e1 G+ _( V0 B6 e
mov al,es:[si]" V/ f0 ]7 r4 x: L
cmp al,'b'
& S$ |: |; ^0 V je WBT
9 s8 v F5 G3 Z r4 T& X" F cmp al,'B'
# P1 k4 u. P# t je WBT% I0 N, X0 S6 B# b% \' s. v
cmp al,'w'4 u' Z3 V9 S- x) k' x2 j. M
je WWR3 _% {6 }( z! @, V
cmp al,'W'
C4 N" d5 S/ s% C1 z# S2 J je WWR
4 F4 F7 A6 ]1 I6 p8 ]! X cmp al,'d'
1 t) F9 ~0 ~. b7 |. L& @" h: b4 X je WDR
3 M6 c. F. o/ c; l5 s cmp al,'D'# W7 M- K M7 ~
je WDR3 P3 V% }2 }# o; ?4 C
RBT:
; e8 h& ], ]; e' w call PSP
4 [. h: h" N/ Z4 G* T; H call crlf # h; ^' G" f U8 R# W) ]/ P+ _8 g
mov esi,ebx
. e& W% v' @5 c+ N. l* P, k mov eax,fs:[esi]2 u" E9 G9 F( v- U6 y
out 80h,eax ]( N% f$ o2 N O2 l
mov ebx,eax
$ C+ o( _. `) o {: J5 } call _8bits- m& D4 h3 F1 J( [. o
jmp Exit6 \ V" X- _9 i
RWR:2 d( D! `& F1 k& j" z( ~$ ?2 R
call PSP & i/ v/ Q" b6 }1 i" p8 k( x4 P
call crlf # n; a& @7 X9 ^5 w- C1 h
mov esi,ebx
, S0 Q, X, }# ?/ O mov eax,fs:[esi]
7 I- ]2 ]5 z- n* K6 n out 80h,eax
" E; p1 }; |; Q' S* K: T' O mov ebx,eax0 q1 \4 ?) H& O" E" g9 B
call _16bits5 A( O& ^- T( [3 i; c9 T3 g. U
jmp Exit
9 H+ a' V- d% ?' p* k# X0 D2 A1 J8 jRDR:) {$ m* W1 q9 }; P* T7 r
call DPSP
! ?4 I7 M( e7 b call crlf % k* D( K$ B& {
mov esi,ebx8 ] W8 u, H s- O
mov eax,fs:[esi]
0 \. E9 Z' s. K, y out 80h,eax7 V: S: ?: }9 i. J
mov ebx,eax7 \& Z, [) h( d8 [+ V/ C
call _32bits
* [: D) R6 x. Z Y8 U jmp Exit
) M+ R3 j) v, l" d1 F8 D;------------------------------------------------------------------------------------------------
/ V$ U( Z* m$ A2 O5 WWBT:
7 @1 x$ L$ V+ x4 X& A/ a9 o jmp Exit
- U! S) p- [4 z) T& PWWR:
% C! _. W- E2 |6 b# e- O) Y- P4 s jmp Exit
9 L* Y2 ~, `! m) `, q |6 SWDR:+ D8 z$ C- J: Q
call DPSP- U; x* {6 D9 {& o
mov Maddress,ebx : i# j* j/ M g' o
call crlf
8 A, n* w( [+ T+ |5 ^; \ call WDPSP
" o6 b) y- C' u/ d5 a2 t mov eax,ebx. b8 G( o8 W9 {9 Z+ X: A
mov esi,Maddress
: D8 {: b0 m, r8 H z9 F mov fs:[esi],eax& w0 h7 E2 s1 M) R" W1 g
out 80h,eax8 Z8 G: U5 z4 R- _6 X" g5 @! A
jmp Exit$ U& H& }: R3 [" y1 S
;------------------------------------------------------------------------------------------------
7 t3 _$ p( X0 m7 L& n; _Exit:0 \* `( K! B6 d _: q! `+ n
call real_mode 9 Z5 A" h# S9 |
pop gs+ q2 S; I N( j r4 D
pop fs x3 ~# m0 M# ]8 Y
pop es4 ^0 s6 V& o! B7 p9 k" R8 S
pop ds
# p# H0 E! `- }8 q .exit
% k4 C' w# ^8 h( [;------------------------------------------------------------------------------------------------
q8 ?+ R3 N: n$ }$ v( L' R1 `! pbig_real_mode proc near& H) M8 ]2 C, Q* b3 t9 x d
in al, 92h0 G+ D2 O8 n" d# E* O( v2 S
or al, 0026 { e- k, x S% q0 o& I r- Q6 d
out 092h, al
, c2 E4 F; g% S5 e5 J out 0edh, al7 ~ b6 {8 F6 G2 v
cli; @; [6 V# p8 N/ s& V+ _& i
mov eax,DSEG
! \: W# W7 ^& |9 G: \ shl eax, 41 R) m7 R6 m* C k$ B
xor ebx, ebx. k) J, V, ~- O8 {7 p( d9 V$ c D
mov ebx, offset GDT_def- |0 v9 a. \) `( t4 b
add eax, ebx' E E2 e; p% A, }- k6 t" [* g
mov dword ptr GDT_Addr.Base, eax C8 B" T4 l; `2 V
lgdt fword ptr GDT_Addr+ p" y+ ?$ Q# ]% g
mov bx, 8
9 v+ C" p6 t7 ?' _9 o2 X0 E# Q mov eax, cr0" Y0 Y" g$ r! V8 k
or al, 1
, B( Y2 g, a9 n* k* k1 A mov cr0, eax
; b4 l% e+ b9 X jmp PMod. c; `' _1 X* k [( g
PMod:
! d" q! v, @6 ]3 j! I/ r. m mov fs, bx
. y1 \+ ^! A5 u4 P5 } mov gs, bx4 V4 t6 h) F0 M g$ z# j
mov eax,cr0
0 ^) j6 J% ^: B4 x. m5 j+ w and al, 0FEh) k- j b4 ~8 g/ W4 p/ e
mov cr0, eax
2 _8 O! g, y0 @# U, E" Q: ?, ?: V jmp RMod
- C y1 c* c% B& IRMod:9 k$ K; O0 ?8 E: h8 {; ?0 p
xor ax, ax
0 e' i4 g6 v0 e: L' X mov fs, ax
8 G' h4 C, v- y' Q" I mov gs, ax - Q+ R7 y' Q/ J! j
sti
+ m( F1 U5 ~ o' A; v ret
' c' a. a# i* M) i2 u, E; Ybig_real_mode ENDP
9 |4 z* j' n/ H+ A; h v8 f;------------------------------------------------------------------------------------------------
+ q! G" J6 s' breal_mode proc near
2 ]: h4 ^: N% B in al, 92h2 k8 B7 Q, t; y4 _- {; { [+ T q$ U
and al, 029 {* |. X# u l9 ` ~" c, G
out 92h, al 7 N2 R1 H4 t$ M" H& B
ret( n" B$ f/ `* { Z1 h1 u0 g5 N
real_mode ENDP
* L' x3 l# } s3 j6 r& _: I;------------------------------------------------------------------------------------------------
) q0 \5 J, D' W7 VGet_Commandtail PROC near
3 W2 c( f& B. \7 i' F mov ah,62h 2 y# q* A4 m" I! S1 k
int 21h, ^. p7 ^/ e8 A9 b4 y
mov es,bx8 l" i0 x3 M9 X0 ~) y
ret
2 R. @3 x8 T7 I5 l O, ZGet_Commandtail ENDP
4 ?! ~* V. ^ m+ M5 H;------------------------------------------------------------------------------------------------. q6 L X+ u/ O4 n0 x
PSP proc near/ u+ O$ L( V* S/ Z& n; `0 D
xor ebx,ebx- _7 \9 T8 Z' U! V
mov si,89h/ v0 w' D. a( O% V6 c
mov al,es:[si]
& Y* p& D1 d. ~: J9 U1 c. c call Change
5 i' L: h" E/ a8 v( w7 [& J mov cl,4
2 R/ J8 X4 h0 I5 i, Y8 T7 |5 `% \ shl ebx,cl R9 B) ^' A8 e0 \5 b# d! y; V% N
add ebx,eax
9 X7 n* s$ m! M( ~ mov al,es:[si+1]* o( X, A. K0 r
call Change) _5 H; B& l/ [ S# {
mov cl,4
0 c1 V$ s' q$ X shl ebx,cl
5 o5 o) P$ [4 c; \8 V1 e \- X add ebx,eax' h3 t8 ]2 h+ k& R2 C2 i& k& N9 y
mov al,es:[si+2] |6 r: a' v! W" r. q" v
call Change+ z7 n$ {! M, D4 v6 L" U- F
mov cl,4
- @0 {4 T a/ H D4 K shl ebx,cl
9 j% d: ^- e/ d2 ?. [, i' f add ebx,eax
0 m% t! ~" {5 v' I$ o; j% R mov al,es:[si+3]
9 n H5 b, ^" W3 M: L, I call Change& Y: \, u8 U* K. ?
mov cl,4
$ m6 e: p* @+ n6 k% X shl ebx,cl; U* P2 o) O: n6 U- S$ z
add ebx,eax; O! N% V: _2 L, L- M
mov al,es:[si+4]
( r, x" A( u7 a2 M" w4 `0 I [% d) u call Change2 z, N* I# p( C: p3 Y7 w
mov cl,4$ Y. S1 O, x/ _! S; j7 }
shl ebx,cl& c* P& M* j! J! L
add ebx,eax
- v5 @6 q* X7 c* G& `4 y6 L E; h mov al,es:[si+5] g- J0 l, Q6 f
call Change
) n2 ~ ?3 e+ w/ t% H. @, S mov cl,48 m: R# g- b# m+ T) E
shl ebx,cl/ s* H6 N; {1 t- T) C" N8 s% l
add ebx,eax
) J* d! `; w5 O0 z) N' E* i0 D mov al,es:[si+6]. l+ }$ b# r P0 a9 u" p+ l6 H
call Change
; K1 O) O" M+ C0 D! M4 B* b, \ mov cl,4 n$ r# D, I; C: U+ |$ Z1 j
shl ebx,cl7 w1 y1 o0 e. h
add ebx,eax
4 q2 L, Z. Y; O! v3 i mov al,es:[si+7]
; j3 l5 M' l9 s! a' i call Change% P! O: B, h8 s( ]5 j- u) n0 |
mov cl,4 m9 n h) M! e, ~: [0 I
shl ebx,cl
8 C7 g6 `& y+ {" @' n1 L& r$ a add ebx,eax2 K; ?3 i) h, ~9 h% V' V) x7 `+ }
ret
: P3 B( w, s) \) r1 j1 F% CPSP endp
1 j6 v2 \% ~$ s;================================================================================================' U3 E( k) R& j, G4 p9 f
DPSP proc near# I& e6 X0 ]9 n7 Y8 U! t
xor ebx,ebx
! @$ ?2 P$ N- A mov si,8ah
* J% V( Q& H5 f4 k }/ I6 x! e mov al,es:[si]5 U' D- ]8 L% p
call Change
' G e1 G/ L# O- p$ V7 u mov cl,4! e; t6 \8 n ~- D8 Z( a
shl ebx,cl% s+ I4 Z7 _0 T3 a3 @1 C0 ?
add ebx,eax% K) x# w k. a$ b1 t
mov al,es:[si+1]
6 P( ]3 [4 x1 e E% \! G call Change* o. I- k5 V. q. A
mov cl,4
2 Z3 C, E7 n% y1 W0 b3 l: @; A shl ebx,cl
8 @5 I2 A3 ^6 t3 B: F$ \ add ebx,eax
$ R# C2 v5 ~% a; `. x mov al,es:[si+2]' h3 Y0 R! w' S4 D- ~* C+ q' L, L
call Change
2 x3 B- d. s$ z" H mov cl,4 T% w4 ?8 w" P- r% N
shl ebx,cl! d$ t1 E) B" B, p; |. J0 z
add ebx,eax, z1 e! R4 g6 A3 ^- X, y8 h& Y' w
mov al,es:[si+3]1 h7 @2 i) H5 A$ C3 g
call Change3 u% G+ `, X: i B. }
mov cl,44 B0 i+ K& ]. z" U2 ]1 O
shl ebx,cl
- B2 M; R# f9 c) N2 x2 Z/ G/ y) K- K add ebx,eax
8 u4 P1 w# S/ ^; p5 P8 [ mov al,es:[si+4]% o$ t# [$ z2 n; v( A& O6 R
call Change
. z2 U/ V$ t/ V2 O2 T- w mov cl,4: m6 ~% y3 y' Z# J0 h
shl ebx,cl9 m7 Z- y) h% \/ q: t% i/ A
add ebx,eax
6 H/ J, T& A" I3 C+ e* W/ F t mov al,es:[si+5]
# K5 v- J; ~* r, |& \ call Change' p4 d4 a$ T: x! t# q: J" a
mov cl,4$ f# o0 e: E- P- h
shl ebx,cl
6 o- b" q% a/ R! r9 l3 {8 X add ebx,eax
& s, O7 P$ @& w1 _1 r# G" O mov al,es:[si+6]& ]7 _: q" `# j4 A4 M1 h
call Change8 _$ Q/ r4 @6 u4 E
mov cl,4
9 j; u6 A% E& z* T" w8 _& e shl ebx,cl
) Y5 n9 p/ ^4 h5 U2 v' ^ add ebx,eax" {3 C: |2 L) H; R8 X7 P
mov al,es:[si+7]( C' u. n- f) {
call Change, E) h% p! q% s* |
mov cl,4
2 n+ O" L: w! p5 i* r shl ebx,cl
' B. l# q6 V* O* K" G7 O, o- ] add ebx,eax
! r' y( `; W9 Y7 J& H ret
+ g9 {$ A* _) r2 TDPSP endp3 c% }( O C; {, `* E
;================================================================================================6 A3 ], ]' z8 s% E f' z
WDPSP proc near4 B F A6 n& U( L7 @
xor eax,eax* m3 ?2 ~7 x4 c) ?9 x8 L9 d( _
xor ebx,ebx
" o1 W o$ [0 d8 L# r mov si,93h
5 x$ N; O- {& f0 t9 c7 i# V mov al,es:[si]0 y0 l. ?5 v$ F+ l6 j& J
call Change
$ f5 ^/ V9 ^ V# w+ Q. n" ^: z mov cl,4
* N) w6 W; X4 N! l9 l5 R( T! ^ shl ebx,cl
, M5 f& S) Z6 p! l2 D2 {" K add ebx,eax
r6 ~# B; ]2 ~) B mov al,es:[si+1]" p4 ?' M6 f6 W1 R8 B; J
call Change
4 q2 S- Q' ]( K y/ k- z mov cl,4 \( r* d, f1 ~* T6 O* b
shl ebx,cl& \4 t Q+ @ C. c% |) ?
add ebx,eax/ u( F u) v5 W& q/ q1 c! x
mov al,es:[si+2]
( v9 [5 s) d7 H7 ~0 j- T/ A# X call Change
/ W, ~- {8 N5 H2 P3 ~0 S mov cl,4* m# I% }# E1 z' H
shl ebx,cl9 f5 k- M% ?0 Q( h E
add ebx,eax
1 @9 h0 }2 m7 g4 F% K- l. { mov al,es:[si+3]+ N N9 v! N3 F; S% L
call Change
3 E8 \- e2 P7 ^8 I2 v" p mov cl,4
, A N" K0 S* _ shl ebx,cl
7 d) N0 \2 \; U4 e0 x9 Y; \ add ebx,eax$ i0 d/ [, }) E' L- f
mov al,es:[si+4]9 R8 A4 u5 p- H, Q- E
call Change8 f! L5 _& F; t' t c
mov cl,4. G. p# F" T/ I& t4 Z
shl ebx,cl+ v M2 P7 J3 Q
add ebx,eax
: K, ?, |3 D1 ?/ [- v+ O2 D mov al,es:[si+5]
; g: l+ W+ r" S: [, v call Change( \! C0 d1 V0 O1 x$ N
mov cl,4
& X% }1 |; J+ O, P5 p4 ? shl ebx,cl! l! E4 \" O. D* X( ?6 X9 {
add ebx,eax
6 n9 v* H2 m4 g' g! Y; C' Q/ q mov al,es:[si+6]2 v; X1 k4 U7 ^( Z+ F1 j7 E
call Change5 u* q2 L$ g5 B1 i( a% ~" w
mov cl,4
1 \! I" Y8 S2 C( S- _ shl ebx,cl
! a) a! W* N+ H2 D' Q add ebx,eax
! D( q) K+ m- X# P, N mov al,es:[si+7]& D$ e' o0 J2 C, p
call Change
& ]! p8 r* P# `8 p' }3 [/ |& A mov cl,4
|9 k0 S: s! m) \4 t9 { shl ebx,cl
* H7 @8 X8 M' x Y: Z! D5 U add ebx,eax
) x! g2 s" |$ j% Z2 X! @ ret( a4 v: Z3 p# p9 H c) x
WDPSP endp
7 Y# F7 H- Y9 b* H8 r, k;================================================================================================/ h1 N* O; f+ b4 x' y
Change proc near$ P; t- D% h Q' ]# A
A:
( U6 F1 E0 }+ u7 k; G movzx eax,al# q) S5 Q/ L7 g: L8 i) O
mov edx,eax) T2 B$ W* u x$ y# l8 n8 O" ~
cmp eax,'0'
9 R7 h* F' N5 ` d# b jb A1 z0 M4 p. O" C3 c( N. e |
cmp eax,'9' ! q# Y) Y1 ~& b7 g
ja B9 t) L( ^! H& P# C |) `" x
sub eax,'0'
& u0 P4 V3 N7 g( Q9 f- X* b jmp short E
# r7 e7 T' K, m) @2 P- q* W/ V- iB:
9 F5 H# Y" c8 i! a1 f and eax,0dfh
! U' o+ x9 X$ L4 a2 R3 f- S1 ^% R1 z mov edx,eax
. V3 v7 K$ a' L, n& W- X \* ]3 u sub eax,37h 4 t0 B& P. C5 n7 \! h- w' S2 A
cmp eax,0ah& x+ P8 [2 U' k8 G8 N, M1 F" n- i
jb A - y2 l0 ]* G6 F3 i
cmp eax,0fh/ ?" V. Q3 I' ]! |1 V$ F7 ?9 H
ja A % D/ v+ n( s5 u) H$ x" U5 {. ?: Q3 _
E:! v# q2 e) q" S, k9 F$ H- t: }
push eax
0 ^ @1 F6 L2 ?% G% \$ t) } call PRT
& }2 |$ ~" v$ ]& M% O: [2 } pop eax1 {! `% i( h$ b( p: v. l
CExit:
: z/ X- L+ D" v$ e) \' R) Y! b& w$ I ret d- l& Z7 l/ A$ q7 [ s3 G
Change endp4 D* g& f8 J, |6 a+ M+ O
;------------------------------------------------------------------------------------------------7 j- A' u3 [3 n( S( T- Q; a2 e
PRT proc near9 c- S) F) |' Z$ S* i3 X) N
mov ah,02h5 [" _$ P0 S& U1 I" Z+ { d
int 21h
, _! ]3 K# T9 D( c, L* N ret
8 x" G7 H, R, G4 \PRT endp
/ ^7 i5 C8 d9 P" l: L5 M4 c( n;------------------------------------------------------------------------------------------------8 [9 |% z1 ~( j. j6 r( R
crlf proc near
& m9 E% ~9 b0 z mov ah,02h
) I/ w2 J) i$ [; P mov dl,0dh6 @- k5 x$ W4 _% M! A4 M+ Q4 i
int 21h
+ x) J" ~0 F, m2 z' ^ mov ah,02h- L# l7 X# }1 B2 i- }
mov dl,0ah+ d5 L4 p; A @- U& d
int 21h J2 V- ?* g ?+ N H
ret( j) S1 e* R2 a$ {& ]& m* X
crlf endp
/ H% d* S4 }: d: Q8 K! h;------------------------------------------------------------------------------------------------
" d4 G7 X% `% G: Q_32bits proc near( ?/ h, g) |, n
pushad1 v" ?! P5 Z7 q) U4 ]) Z6 w
mov cl,4
~5 l! j9 q; s rol ebx,cl
1 t- I( H; y; H" J& h call print_4_bits
1 f V/ S9 u0 k7 ^; x rol ebx,cl
# h% Z- W6 @1 Y2 o$ A8 o1 x" J; j( u0 x call print_4_bits
$ z5 M+ i7 v" g) V/ F9 ] rol ebx,cl
6 C* ]* w* H) [ g" g: l/ W7 ^ call print_4_bits
8 g! h( m9 } M: S3 h rol ebx,cl1 H4 x4 k+ K7 J
call print_4_bits( v3 e5 r0 Y. |% f& i5 Z9 H
rol ebx,cl% u& e8 O* }8 j# ~" i4 P
call print_4_bits
: I# R* G) n# Z1 Y. K0 u rol ebx,cl9 z3 H% | L' [) y( ~5 a2 Y
call print_4_bits6 H( a1 T! h+ |1 l; M& g
rol ebx,cl
! P' Z) H% J' @5 a3 Z call print_4_bits/ g( a4 T+ q1 ^
rol ebx,cl# g9 E9 N' y: K! b
call print_4_bits
* L" ?4 D( O( Y" [5 e rol ebx,cl
9 X1 G8 z, Y7 f popad. W1 d( t& l% m. E- F5 S: J7 c) W
ret
5 R5 h- R/ X f_32bits endp% Y; g( T, G: ]2 G' ~. E/ ^, {3 X
;------------------------------------------------------------------------------------------------* t$ b' v2 d! b/ {' G) T9 ]
_16bits proc near" p: h9 P0 `/ p/ a
pusha - ` u; Q# o( b/ B, G* U9 C8 l: c8 A
rol bx,cl
+ |( p" Y0 Q# n4 M6 ]4 y: w call print_4_bits
% f" _$ v; J; j" I# Y4 t3 n" F rol bx,cl% n3 q* }1 k# G: T
call print_4_bits0 e9 [# \; j2 W2 V6 x c ~
rol bx,cl
! F! E& y' ^& a! O call print_4_bits
/ n8 ~8 M H4 e rol bx,cl
, J V- Q5 Y* F, _; N/ o call print_4_bits, q Z/ H" F1 w. y
popa
) ?/ B! N v4 y, u; @ _ ret6 ]! q9 F- F- z3 ~' }8 l4 s& h
_16bits endp
/ p- G+ Q# c& k5 K; I;------------------------------------------------------------------------------------------------
9 V. I7 L3 m& U; F/ u. e) ^_8bits proc near
. M2 T5 p) }# {5 Y# M pusha + p4 P1 E2 r4 U2 J
rol bx,cl
7 H/ v- k6 F' o# { call print_4_bits$ `8 \) h) r! j' w4 \& t) W$ }
rol bx,cl+ H2 |8 h% {7 R" h# ^
call print_4_bits
- H2 A, ^! }8 R1 P popa
/ r0 J9 F* K% N8 {2 r7 H& b ret
5 {$ U, u# t, e& [# d_8bits endp
" m& y/ r1 `% H8 W8 ~5 qprint_4_bits proc near' }- ^" x B, `4 a9 @
mov dx,bx/ S( D$ l" K, g" y+ O1 @: s
and dl,0fh- C# D# G2 ?, S9 s2 ~2 e
add dl,30h
1 l! Z7 B2 D1 Y8 y+ f/ x cmp dl,3ah
$ c) S' Y; r/ u7 K ~ jb print! q/ o$ O3 U5 Y; M* H
add dl,7
# V6 y# `3 _: Hprint:
# F: y" W9 W% K) r0 j" d- c3 G! @ mov ah,2
v* f& o+ ?% F1 m! F7 z8 \9 n int 21h
- t3 t/ a! F2 g# P6 M ret4 ?) X1 w; j V
print_4_bits endp 7 N9 s; s' Y# M- g3 `
CSEG ends- L w' Z$ }& M: u
END |
|