|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)
) E3 d/ }. T) H) _. d/ b# v5 [3 T, p8 |! ?
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
# I( C9 g9 Z* p( ?
0 F2 e5 S) C. q7 `8 u7 h4 g宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝 5 T# O0 k6 Y( H- \: p
' @. \. a6 ^1 m+ i8 U.model small
3 T+ L* b! B* D5 {4 e/ V$ T! j" i.386p+ K7 m. ]7 V# g; W
DSEG SEGMENT USE16'data' - C% L+ g7 O2 y/ M
" c9 F) }( R# ]; R
DESC STRUC/ r3 D9 `& P( E2 j5 ^/ e) y9 o
LimitL DW 0 4 g3 ]2 v, O& f4 k) U
BaseL DW 0 % d% [1 N% H0 X+ J" N
BaseM DB 0
$ s: M# P* R% _8 q: `. d6 |+ ]6 N3 e Attributes DB 0 9 ~2 r8 S- `* z6 V
LimitH DB 0
& i2 J# `/ i/ o9 M, R BaseH DB 0 . f- j; ]& B1 C
DESC ENDS: _% {0 i( \2 A! L$ V, e+ n4 x7 N1 Q
( b$ K# i/ Y: P" n' ePDesc STRUC" ^% p6 l- ~0 o# \7 _. }
Limit DW 0 3 V6 _. x" \7 n
Base DD 0 % X) b, B6 B6 w, W1 X- e" b
PDesc ENDS& I& F# V! E; X! [4 W: F3 \
- s8 D* H- h, [% y$ I3 m& p
GDT_def Label Fword7 Q$ e) l& ^- F6 C
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
- [1 L6 q+ p! t% G! G1 ~Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
. H- ^1 g! [" ?- hGDT_Addr PDesc <$-GDT_def-1, >
6 ^6 p7 ^ X0 _) K# c8 k1 h# B: X7 T$ ~
Maddress Dword 04 Q; {" f9 H, M/ H
/ j2 U6 g$ Q0 }
DSEG ENDS
* I" u1 {" x' h8 nASSUME CS:CSEG,DS:DSEG0 s C* R7 s. [' A
& g8 b: {% q$ ~+ TCSEG SEGMENT USE16'code'
1 |3 e" P1 _, K" A push ds2 R! A1 v6 f- q! {
push es0 j/ f8 O0 Y3 f4 x" M, E+ N1 p @
push fs9 O$ \% X4 ]8 c3 u' n! \
push gs2 o# V0 t' U7 P: Q% T: V
call big_real_mode 4 g* e0 `. B6 R+ W7 R2 Z& ^, A
call Get_Commandtail
$ H$ E$ h! V$ b" P, P xor ebx,ebx
3 ^, w- b1 z9 ^ a mov si,82h# ]5 ^3 a( v( e1 g9 D& f3 B* ?
mov al,es:[si]
1 P" s" s6 K* O$ Y& L5 E4 D0 Z cmp al,'r'
$ [. Z/ R$ o0 Q( {8 L1 B je R
5 k; K5 f1 @4 p4 @( R/ O cmp al,'R'- |) j3 D v* ^
je R
3 D/ \2 C# M8 O+ P) t cmp al,'w'7 J' g) Q$ N+ }( H7 W9 E
je W) s5 ~5 O, K8 \5 |- ^7 {
cmp al,'W'4 A% T; U+ o: J6 i- Q- {
je W - ]3 u$ }( A; N" Z: E
R:
( p" `0 n( J* k mov si,84h( H$ b0 ^ z( B1 `& ?- \
mov al,es:[si]7 ?8 M) ?- q% r6 B; w( |
cmp al,'b'4 U7 A. o) k0 @* V# ]0 }- `
je RBT
. H4 H& F$ {! X5 A, R$ a cmp al,'B': M/ U. M4 s* G T. ^
je RBT
( ~+ [. S4 m" z9 S) @ cmp al,'w'8 ~; K# `/ H- s
je RWR
, v$ Z7 x4 P! Y; f$ H0 C9 q& O cmp al,'W'/ O$ v' S5 }0 F ^$ s8 v! G
je RWR* @% c: |$ U5 J4 }
cmp al,'d'& t9 d9 M; Y' {0 D, v* O
je RDR
- h# z; N9 _' m$ a$ S0 i6 k9 R cmp al,'D'! t. y8 X% K* C
je RDR
* A& |/ k Y1 d: r/ S& _W:
& z: r( l/ O& E; T2 F* J# c mov si,84h/ E9 v6 K/ [/ N6 Y$ X- b/ \
mov al,es:[si]1 P+ b$ u2 @* G
cmp al,'b'3 V8 s- M: ]- E4 c- W6 z
je WBT
! O! U! }9 x! m8 W cmp al,'B'
* P3 `5 I4 Y% O/ U- C& L9 o je WBT
* ]7 i9 w. X" x# |$ d2 J cmp al,'w'1 a- o" a- g2 u3 t# t* M* I
je WWR
+ _2 @0 y, p9 U* B cmp al,'W'0 ?9 Q C, k% _! B0 f0 K$ S; h8 s
je WWR8 [2 {4 k8 ]& s* |
cmp al,'d'
" _- q& k" O' y4 P2 R9 l je WDR% ~3 v6 ^& u7 u8 t7 V9 x
cmp al,'D'5 K9 w" \& `3 j) K7 r! X
je WDR4 G( ?' x2 U' c( B/ u
RBT:: ^& w! Y* A% m" O7 M
call PSP
3 Z6 M, ?- z7 U6 F call crlf 8 y0 i# ~! g/ F* f4 l% V: Z+ f
mov esi,ebx; u% b' z- n( L3 G# U- i% N
mov eax,fs:[esi]% b7 m# z2 y; D
out 80h,eax3 F: Z( \" W k5 s
mov ebx,eax: ~/ @5 d; F9 ~8 ^1 e
call _8bits" {6 Z! i1 u3 Z
jmp Exit/ w; M* U6 k' x! z/ L( V* O
RWR:
L$ J. l2 {. B7 A% d( \, ] call PSP 7 k$ @. O; s6 d/ w
call crlf 7 u X2 }3 S( I r3 |; b; l' J
mov esi,ebx
" P1 x6 q6 o" i. {" u mov eax,fs:[esi]4 D7 d* f2 E! R
out 80h,eax
- ]" p* P3 U" {2 L* C- U" h mov ebx,eax
, [' m% J; P2 e; d3 F call _16bits1 f, I/ ?# O, |4 ~. b+ O
jmp Exit/ B# n4 J0 Q2 z( X# y# R8 o
RDR:! ~; I2 |! D/ b+ X7 L
call DPSP $ G. d" d2 _' T$ \% a
call crlf 2 U. P( u/ e% {9 i, U7 p
mov esi,ebx
" \5 w7 H) n4 U+ P# L# R mov eax,fs:[esi]9 b# F2 }+ N, D0 Q1 S
out 80h,eax) W& ^' M4 X4 V8 f' ^
mov ebx,eax. b! y. \. W$ h8 Y& L8 F
call _32bits
# E; _$ x6 R$ \3 f5 p jmp Exit) b. M0 w8 s3 M( v; V- s$ j
;------------------------------------------------------------------------------------------------: c- u$ h- T' U! S( P. n$ U
WBT:
1 H+ N6 h1 J# r& v% [' w& ^0 k jmp Exit- o# E6 ]/ n% X- w% S" c4 m
WWR:
3 A' }1 B1 n6 P9 y jmp Exit* [- a) X2 X* x5 b! ]& m5 P/ w
WDR:' D0 A$ ]+ C9 d8 o
call DPSP
* K9 O G0 c; e3 _( b mov Maddress,ebx $ W& g9 e* P) \' w( U# Y; I
call crlf
+ X% |. Y1 R r$ `/ ]2 k1 w call WDPSP
+ ~! R8 q' J9 ^! j mov eax,ebx1 |# x5 p9 m+ ~& T; O k* B* L
mov esi,Maddress {- ]; z9 c* J
mov fs:[esi],eax
$ @4 j. |( \4 l$ C6 @ out 80h,eax' B X: f7 g! u
jmp Exit
1 w2 F o0 R, _3 K, m% ];------------------------------------------------------------------------------------------------
; m; _- u! J9 E* aExit:: u3 ~5 l+ r' B5 F0 f
call real_mode 5 m3 J3 T1 b# \- i2 i4 w
pop gs
' j. [+ j6 V7 F pop fs
1 Y2 G: f1 X8 c pop es
( v# `0 j; j! _ P2 @ pop ds
) a; b! e F; J- q k, V# g! ~ .exit
& `, r* q4 V1 H8 B7 o$ I) ?! z;------------------------------------------------------------------------------------------------$ L a$ h- s3 R A/ T
big_real_mode proc near
2 p6 d) a1 z7 r1 m/ u in al, 92h$ r9 g0 }. W h
or al, 002
1 a3 c) {7 g3 }4 b$ Z @; F out 092h, al
- H% y. [. J$ D6 b; a; D' \ out 0edh, al* ^9 J$ M" T1 v/ L( ]( N
cli
! ?& m l, X; J9 S2 Y# ?$ N, x mov eax,DSEG5 @1 G1 o. z6 }! ~! U+ _( x
shl eax, 4+ `# n: Y: d- l& i2 Y* H: F
xor ebx, ebx, K- P$ |) E6 C: `; y
mov ebx, offset GDT_def
# j4 m# ^& l7 j3 G! `9 O; f8 { add eax, ebx
9 C. l$ L2 V8 v* m9 d% g mov dword ptr GDT_Addr.Base, eax
7 q ?5 E7 \% e3 h) p& E lgdt fword ptr GDT_Addr8 E# c, N6 H# f( ~$ s
mov bx, 8
* F* y# W. [' _$ b; w9 m7 F: | mov eax, cr09 B) W4 P( ^1 W; d8 M2 `- L
or al, 1+ d+ ?/ i( }% D1 p+ `+ f
mov cr0, eax
4 d! m1 |$ P" \5 @3 Y6 ] jmp PMod
7 [% `6 F) }( L- S4 x5 t' aPMod:
& m; t& P& I6 r1 _6 { mov fs, bx0 D& s5 B- G0 [# R0 N
mov gs, bx
3 L H6 q% ~0 t% x& U& [6 n. H mov eax,cr0! n" U2 B$ `% s" g; e8 H' B, z# f
and al, 0FEh: q& g" U2 k2 }
mov cr0, eax
/ [0 b9 x; A1 N0 X jmp RMod; Z: X' h# D( g8 m* S
RMod:
" u6 N* v: K& \, f; r; e. b xor ax, ax
; A, y5 l" o+ w( \ mov fs, ax
8 ^9 T5 M; ?# J# j6 ? mov gs, ax
3 c5 y M" p- Q" \ L sti
+ ?9 ]2 Y3 @' ^* |% q) P' u' R ret/ ^/ v1 l* V( Z9 P+ g! O2 F: i- q$ _
big_real_mode ENDP! z2 \- D4 C& e( t6 b) ?4 g$ t
;------------------------------------------------------------------------------------------------2 M1 B+ H- Z+ N) [4 E+ S
real_mode proc near. `) e5 p3 k7 [$ r. A4 J: `
in al, 92h
5 O" {# B. v4 I# q* v/ I; R and al, 02
( d% X4 G7 z/ u- G8 B7 S. N out 92h, al ; i4 \' {7 q- {2 w2 K' F6 q
ret2 d; Y- z3 r! n8 Z
real_mode ENDP6 L" K+ g/ e2 l% E" n
;------------------------------------------------------------------------------------------------. r0 V$ ?7 d5 a+ C9 ]
Get_Commandtail PROC near% d3 r0 G# d5 L$ U
mov ah,62h 2 k" P- r7 `# ?4 T6 O9 C5 _* k
int 21h5 i7 A$ R0 S! R
mov es,bx
' }. _" o8 E1 ~4 i- g8 P ret+ z0 s2 i, q) R# ~, h9 ]( n. F) P
Get_Commandtail ENDP
9 z7 y4 H6 P% K& C" n5 z! b# E8 w2 f1 o; d;------------------------------------------------------------------------------------------------0 H6 D% m9 l' K/ F" Z/ w
PSP proc near
# O6 |1 L7 e2 n( C/ n xor ebx,ebx
1 V+ K) e: B& M _2 }( b1 P mov si,89h
@& M! Q; Z# A+ X9 o' L) d mov al,es:[si]
" q1 L/ q# W* V2 E call Change5 `, o6 C K# ]0 d/ }
mov cl,4
7 b% @" V% L3 {+ R, N shl ebx,cl
# s/ S% m5 A& f7 }3 U/ n c add ebx,eax
) o9 l: `( I9 J% g D mov al,es:[si+1]
( H4 ]- u* G( h$ f: K5 S call Change
. Z/ i4 d! b" E3 b- h5 g mov cl,4
6 t$ z7 q# V7 E# I# o shl ebx,cl% q$ d: [% x5 \
add ebx,eax, O* Y! P; H5 t5 R! ]( A4 r" e
mov al,es:[si+2]
$ ^5 u" y" I" `6 i3 \3 h call Change
1 u {# I9 w# b' }& } mov cl,49 l' \0 F* t2 q2 {- e, ?7 I o' Y3 {
shl ebx,cl% j) ^: j0 r: ]
add ebx,eax2 O9 Q) z9 }5 v) q3 }0 J4 S
mov al,es:[si+3]! N+ j6 Z7 O% x+ p3 }* O9 p
call Change+ i. P3 A1 V2 K4 y- ~+ A, ]2 [
mov cl,44 {- ]$ ]: A. x! }9 `* E0 Q
shl ebx,cl
9 s& o: J# Q+ ]* _2 l% ~- | add ebx,eax. a; Y+ I- k' L
mov al,es:[si+4]1 S3 B5 ]1 V; t2 U
call Change
3 Y1 Z* ] A8 o( }: Y" \9 C! s mov cl,4( ^' O3 v$ B" h) o4 M: L+ p5 a! n6 Z& ]' P
shl ebx,cl t& H9 o, Y; m. R7 N1 H- u. y( I
add ebx,eax
4 B, G$ H( n _& f0 } mov al,es:[si+5]
) ^* H; p" v" _ call Change3 o/ e2 R9 m+ r) C- `4 _9 Y& m
mov cl,4
" x- M2 W" D) |* {! R$ P/ G* E$ I shl ebx,cl
4 z; v5 `, ^; s* b$ p add ebx,eax5 H! ^0 _* {3 L* T4 q
mov al,es:[si+6] ] C2 m, {3 m" N- |) I B
call Change
% { L+ @/ @) ?0 k) @8 g) D* A mov cl,4
: C$ D h/ x( a shl ebx,cl
8 ]) R0 o7 {' R- S* a5 a add ebx,eax
' [& k0 {( c% @" Z4 @( A1 E3 J mov al,es:[si+7]. C3 X1 a }% S2 h* `0 p3 C2 @( ?0 X' @+ l
call Change
2 m, b7 g6 i! U: m# r; K3 y mov cl,4
) N) m% U" [" ^+ S+ L; Z shl ebx,cl
+ ~8 x4 b4 ~. J add ebx,eax
; s2 h( e6 ?/ d. _ ret- _) [# k7 j4 b8 R% g- x% _" l1 j
PSP endp# r3 b5 ~, B' E' t2 k
;================================================================================================+ q# K7 c- c7 j, R, H2 C
DPSP proc near2 B+ w3 B/ j0 D. A/ L0 {, Z
xor ebx,ebx
" a" Z+ J8 H" ~2 Q mov si,8ah0 f! o& @$ F# J* _* L
mov al,es:[si]
+ R1 a8 q* D5 x+ s8 y6 T call Change
/ s9 P$ _+ j3 r9 h mov cl,46 \/ v K* q% v
shl ebx,cl* g$ w* F& |- W
add ebx,eax" O* j0 a9 F9 a6 s4 B4 H6 [
mov al,es:[si+1]
0 v5 O) C& G* Q call Change: ]. ]' N8 ?: p! ^% c& i
mov cl,4
0 Q5 i; x. ^0 j" C4 w7 a shl ebx,cl
+ v1 t& V: S0 m0 d add ebx,eax
8 a5 r0 y+ e4 c: O# W% J mov al,es:[si+2]
! r; y9 H$ n# u# f call Change
) ^6 p" s3 O! v$ X1 Z7 F$ Z0 I% w mov cl,4
" B) H, r9 E( h9 i8 J1 y shl ebx,cl- u; _0 n c4 U0 ^/ U6 Q2 a* f |
add ebx,eax
+ ^6 W) m. x# C# S mov al,es:[si+3]! ^' n! B9 ]5 [& I
call Change) {6 `' k+ ] E/ E: [
mov cl,4# E2 d6 C+ S) h( {6 `( p5 B
shl ebx,cl1 ?6 P$ m) E& r$ z3 t& U
add ebx,eax* X2 e3 K. G2 o" e4 p# H
mov al,es:[si+4]
' ?, U# p2 ^' ? call Change# r( F# w/ F( \6 p$ C+ [
mov cl,45 _7 n: `' L s' X
shl ebx,cl
& E) Q( i2 y; ]5 _+ B add ebx,eax
3 ~ z1 D8 k. \: \5 { mov al,es:[si+5]
5 [9 N+ G, v$ C+ z call Change6 g {, G) `2 j3 v$ E. {9 H
mov cl,4
. G" `; d& Y P& | i shl ebx,cl
4 X! U& U6 z' l6 `) E add ebx,eax
+ d: i0 Y* Y+ J X( `7 {! \ ^8 C, q+ U mov al,es:[si+6]
+ h3 f R" Y' C( h* k0 t' P call Change
6 g& v' q* f3 ^2 z, a mov cl,4
. l% d5 m0 j w, \+ L- {# _ { shl ebx,cl
; o) g: j7 Y& u+ \ h3 Q add ebx,eax
' o1 D$ | K, _; Y" i* P- s2 B. m) W mov al,es:[si+7], k- w% g# R& r/ r! G. K/ z0 E
call Change' t( s7 C% e0 M# P$ A% }
mov cl,48 [) \3 B4 I S2 [3 K
shl ebx,cl* o+ Y0 a" D7 a4 \
add ebx,eax9 W9 k+ X. S" f
ret
$ M7 t# r: Q7 m2 t/ l$ s% t+ QDPSP endp
8 I+ X- ^, [3 b1 E- ]+ J% B# { \, F/ J;================================================================================================
# K, M$ h y! X# E) nWDPSP proc near+ p6 P! w5 }: E! U3 x' s @
xor eax,eax( {0 ]) I2 ]6 j, R, U
xor ebx,ebx
. i5 ^4 P1 K, A N( r mov si,93h0 ]3 G1 J7 L2 I/ ]. f9 r
mov al,es:[si]9 ~# T# N9 g" b# o, g' R. G9 ?
call Change9 |4 u/ J& ^+ E
mov cl,4' x" v' T9 Y! v, F( S, v$ A
shl ebx,cl* H+ V' }* m8 T. u1 Z
add ebx,eax
' m9 Y; e8 \) I1 S2 {& ?7 R' Y8 | mov al,es:[si+1]5 K# O" r/ }& z7 g% _
call Change3 R' q4 k1 y9 r4 q \1 F
mov cl,4
. v/ _- R0 f2 _) N9 q shl ebx,cl
- r' Y$ D) N1 V add ebx,eax' F; i. c( f, m) @2 \1 y
mov al,es:[si+2]
& R Y( `; u6 R call Change+ g( E9 F% C3 y, u, l6 E* j! v
mov cl,4
+ s- D; W8 P6 I2 w; @2 j shl ebx,cl' O# F; V* H/ {% Q
add ebx,eax, i" u. m3 Z& m- [$ D. Z
mov al,es:[si+3]: a5 }. f( w9 C- T6 u* J
call Change
/ F+ C9 ~1 ^" G2 [$ Z; a7 [1 B mov cl,4. x+ `/ c/ f1 L* E1 A
shl ebx,cl0 h! Z9 {& G0 d4 q; m/ l$ g
add ebx,eax
8 W/ V* \! A5 @. z& Q- ]& p0 h mov al,es:[si+4]
0 u' ?6 ~4 z' j" b4 p call Change
% k6 g1 X: A3 l0 ^ mov cl,4$ X3 J3 x( c: S4 s; D4 L M
shl ebx,cl5 I5 t- m* O3 h$ \) B9 M( m0 I8 u; c7 @
add ebx,eax D0 ]# E$ u9 G% F! _, L8 z H
mov al,es:[si+5]# U" {. ]1 w% j. m% p
call Change
1 O# R" A9 K8 Y4 [" k( q mov cl,4
) g W" ~" d9 a3 } shl ebx,cl4 k/ V6 Q9 H( f$ N
add ebx,eax& F8 T! J; J! b; s
mov al,es:[si+6]+ P" T4 ]1 f- _! Q- o) Y
call Change- D' I$ F/ o# u, Y
mov cl,4
+ N# e% x% A( k1 m' S shl ebx,cl* r8 ^3 J) \) f. ^+ t! }# v
add ebx,eax( S5 i% v3 i9 c% B- l0 O
mov al,es:[si+7]
' G7 _/ C0 ~) X% |) u call Change9 t3 |* f0 ?* ?" A
mov cl,4
' B. P9 W1 }! G# @5 X shl ebx,cl7 t; D" m/ Q5 |% W
add ebx,eax
$ I, {1 G& [, q% v; s ret
8 {( a# p9 K' `/ TWDPSP endp1 Z: a5 X" Q1 z& N* F) p) f6 N
;================================================================================================
$ K. D& b' J: p. SChange proc near% w8 Z% d. J' X* r7 `* V: S* ]
A: 2 L' W! \" D. I2 o
movzx eax,al
6 g- {+ B" Q! {) [ mov edx,eax
, L5 l: c5 ^, p6 \ cmp eax,'0' * E; e: R. {" {4 w! P
jb A
. ?$ a- M& y2 X; i$ B cmp eax,'9' 3 Z$ E( r! e+ ?3 }# M
ja B
4 E8 V5 J+ ~6 L' x Y1 l% ~' h+ j sub eax,'0'1 n# C& `/ \8 z$ c/ v
jmp short E u6 {2 d6 V" b& p# Z8 Q+ D
B:
5 H2 |% t: J- P- ]" r and eax,0dfh
- Q6 o) Z( `5 I$ @ mov edx,eax
/ @4 ^3 Y: Q0 w% ^, k" `' g sub eax,37h
+ y6 M1 l3 C$ b cmp eax,0ah
4 K* c9 D5 d1 h3 C) Q jb A / K6 N4 i6 |% l8 L+ C# |' K/ p
cmp eax,0fh
6 {8 m( |# e7 N) p, } ja A
# {) |" E7 z9 A* T6 }( sE:
8 d) _! {+ M) F6 W) K/ O' W/ _ push eax
- |2 I3 V! e, ?& z1 ?$ O call PRT
% J b$ A' l i9 i7 j" |$ ] pop eax
/ y2 q" P5 l5 J. YCExit:
, D: H# Z% a1 ], l2 [" D ret* I/ \$ F0 M/ X/ l: S. ^
Change endp
5 ]! o+ a" d. p& Y# t5 z6 {;------------------------------------------------------------------------------------------------8 G8 y1 h9 D( E& Y& H" J" C: d7 c+ K2 G
PRT proc near" A) Q" }# L# O
mov ah,02h
, }+ B3 G" n+ d/ j int 21h; i8 W6 j" W7 E$ I7 q+ M, q
ret
4 c8 s, G8 d. c, `% p, J3 b/ xPRT endp/ p0 n( a+ ]: _8 Z8 b9 j
;------------------------------------------------------------------------------------------------
1 S: s# j; m5 M" y1 L3 e: r& }* n7 Jcrlf proc near
, m# T/ H, ` c7 T1 X* W2 } mov ah,02h
4 w5 @# E! t6 u1 K$ U$ D1 P6 i mov dl,0dh3 S) B) L1 q) y! @! F! P7 Z
int 21h) Y/ y: n9 P3 {
mov ah,02h3 J, |: {; o% v) U# T
mov dl,0ah
/ F2 A: r7 K |2 ^ T int 21h
( w3 H/ x' U& d ret# B) ^0 V6 |0 i0 C3 t' L
crlf endp
2 s8 o9 h2 y5 v0 j6 k. \: {' j;------------------------------------------------------------------------------------------------
* c# Q! c0 f8 _, V_32bits proc near
2 C! m4 S- T7 b m+ U. e3 g pushad
* d% |3 o' |/ h2 _ W mov cl,4
* ], T5 a8 E/ ? rol ebx,cl
8 g6 d% j/ s+ `, [ call print_4_bits/ c+ L5 L' B) N7 S' |
rol ebx,cl j: K. t$ g, E1 W( e
call print_4_bits
, Z: a6 a: ^. k0 O; j$ {: N rol ebx,cl# X# R1 {2 p, f( d! F
call print_4_bits
: N k& P! P2 u- `9 I$ U* a& J rol ebx,cl7 A. `4 q0 `& ]* o
call print_4_bits
& l8 S& E s3 i. ^ rol ebx,cl
, H8 A8 L' ?& n" ` call print_4_bits
% [8 m2 `- I2 ` c) U$ ?4 V rol ebx,cl6 ^+ H5 q- `8 ?
call print_4_bits7 j( J0 y8 i( S7 G [
rol ebx,cl5 E# d5 s0 Z" g3 ~# O7 T! y; z
call print_4_bits
8 h! J! e, J# V, Q5 J rol ebx,cl( Z( L- A# C6 L, ^+ W
call print_4_bits
+ M. h8 |1 j& l* \$ z+ y rol ebx,cl' }3 y& Q; T/ c! N+ |& w
popad6 ^, a$ D z8 Z! x9 {/ k
ret
! e Z/ Y; o! c# y_32bits endp
2 E2 `( K+ P6 w;------------------------------------------------------------------------------------------------
3 \8 E) p2 |" A Z: i3 p G_16bits proc near
5 A( {* H* f4 R pusha
! B& g; b/ I, i# ?+ _8 B- |" g rol bx,cl7 G; L$ z" k% @* T
call print_4_bits8 X8 s0 Q! h2 G1 \5 d; K! o
rol bx,cl
- i, W! Q J9 A. ~' U call print_4_bits
+ Y, i4 ]2 Y b* y# m rol bx,cl9 y. c, x1 p! _7 g9 M& m
call print_4_bits; ?) f1 E0 m/ c* F* P1 t
rol bx,cl
- I6 h; s" i2 f, @0 j call print_4_bits
" n/ @+ {2 {6 ^2 [4 | popa! E* X" z; ^! ]
ret
& u" S4 _ o( e% o_16bits endp
! |' I* h+ }# f, T;------------------------------------------------------------------------------------------------+ D5 ?( o( F! Z
_8bits proc near
) v/ e* s7 e0 A' g, o' Y8 d pusha
9 Z. Z/ |& z" q2 Y1 y8 @4 S5 ` rol bx,cl, p# F$ k3 r& A5 O; q7 ]* P
call print_4_bits% q& \2 R) _3 D4 W5 o" ]. b7 [% N9 l
rol bx,cl
, y/ [. |- F( W/ K( W8 ? call print_4_bits: [5 Y, d6 ~& z0 T/ _' T2 w, {- i" k
popa1 s! N! _! d1 \# w) @+ \6 a; o
ret
. Q- Q# P% ]3 T* i6 L3 e( }) t6 W_8bits endp
1 p6 J8 N6 G; G) Tprint_4_bits proc near
: n. S4 x+ k, F' m+ Z' w% d& H mov dx,bx
5 R& M, ]5 A* Q* e4 I& o and dl,0fh5 |; O. f1 m ~! B' U. T
add dl,30h
, K: W# s( O8 ]& b9 N! V( z cmp dl,3ah
! c1 O& H, O4 ?. c; P9 H* Y5 b( R+ J3 A jb print% }+ L$ u5 s3 w
add dl,7
: S4 @3 h3 L8 Y# e6 rprint: ( D, y/ ^+ r( }$ D
mov ah,21 a% Y$ Q# C; {, p% U- w
int 21h
1 p4 K; j+ e- E$ j, m( l/ o ret' q2 m# Y) o' ^( W* n
print_4_bits endp 5 y7 H5 M, H% U- ]
CSEG ends; w4 [, R' {' W% H, `% _
END |
|