|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)0 ~2 C5 Z, L s
' g) k! j0 G9 U
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
4 `: `$ r& P4 S
7 ~, W) } X/ Z8 _/ _$ {宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝 3 ]" N) h/ W* I& t; b6 P
' Z }7 `- {3 d" I4 z.model small
( S0 v+ q6 t. l2 C.386p
* c$ i3 u* U ADSEG SEGMENT USE16'data'
9 Z4 z# d. {3 p; R1 {
i. Z# Z# N$ T- _/ [DESC STRUC( F" M5 Q0 S" f# J( ?6 n! G
LimitL DW 0
9 ]5 t, I2 H- ~! s! p& C* a$ A& I BaseL DW 0 + S% |5 F6 h8 z7 v6 I
BaseM DB 0 * e' j$ r+ N' z5 H$ Q" X1 ~
Attributes DB 0
- b9 H& j; M8 z, J LimitH DB 0
0 W- M3 i M4 r$ Q l; v" {9 f BaseH DB 0
* \4 _4 j, u7 ^" ^ i" oDESC ENDS
5 G0 f4 ^. }; R. {
! O, C/ f* `/ d2 y1 O# P* qPDesc STRUC
3 q; [6 U# N# @ H Limit DW 0
- L. i0 O" c8 A6 Z. c- l9 s. Z Base DD 0 . [) r: q5 M6 x3 N- V2 @( Y6 @
PDesc ENDS
1 Y+ ]- M7 m0 Q, d j- R) N& { {8 t5 r. ]4 T# ?- t% N* o$ Z
GDT_def Label Fword: o" }$ P9 Y! w$ K& F5 i
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>0 V& O7 T- W' V- p2 @7 E! f
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>5 m8 P& K6 X3 i( i" w4 z, D. \9 G
GDT_Addr PDesc <$-GDT_def-1, >
, S6 D( }$ t! S- {1 w' F* O8 f, H' l5 C9 b
Maddress Dword 0, Z/ I- M( K B* a) u6 n* L
( ?1 M. s6 g% D) L7 Q% `
DSEG ENDS * N" p# n: f6 q7 h+ d- q
ASSUME CS:CSEG,DS:DSEG
: R p5 x# d2 V2 ^! B c$ v% |& X, V! i ?8 w# S
CSEG SEGMENT USE16'code' & g4 D( ^5 W n! G' F
push ds
5 M- Z7 a( W# _# o/ g% ?8 [3 | push es6 ^) B. D, c" k, n9 l
push fs
2 [ ?. q3 C: J! T2 N6 M push gs# M0 d" ?7 Z* c1 l
call big_real_mode ) C7 G3 b' R! l6 u1 y; W
call Get_Commandtail
4 r% @* ~7 e- f: g' O$ n xor ebx,ebx7 B* i+ j/ V j/ L% G( Y. k
mov si,82h
0 W6 j3 W7 w+ ~* N3 p1 j& G' D mov al,es:[si]7 _3 Q7 d: u4 X4 X! W [( ?& Q( x
cmp al,'r'! L& ~, ^( h) U5 `
je R
1 \3 U, w/ H0 S' k# m cmp al,'R'0 e- S I6 }! @2 Z5 e$ i
je R
6 u" s6 x q2 C: d `/ S3 T cmp al,'w'
4 a) i: |- O, o# u0 [ je W
- F6 n& I& h1 I6 w! q! i cmp al,'W'2 j0 E d. \- Z( K2 Z
je W + U- b3 _; W& m' M
R:$ h1 P1 M; e$ ]: F5 N+ t, r
mov si,84h
) Z2 ?+ B9 D" |' I9 s- j" Y; g mov al,es:[si]/ [* Z, {1 p: ^6 w
cmp al,'b'
+ `- b2 Y; _& r" C/ h* }( S. O je RBT
v% C/ s# }- w5 o0 U3 @; ^ cmp al,'B'
* i2 g, z4 D" L je RBT: p$ N: A. @( e6 |' n3 w
cmp al,'w'
g f6 j+ `0 T5 D2 w+ C je RWR& t) C4 L- X% V) T. J- j
cmp al,'W' q6 j, a. F5 {! b# W- a6 K
je RWR
. |- E1 H( I* V7 ?3 ^( g. `: x8 M cmp al,'d'
' c# `- m3 `1 Q( y je RDR
& K5 [! s, k% f3 ? cmp al,'D'5 \0 z- _- R5 l. c V
je RDR & |4 G) B0 |: s4 t- r2 ]
W: 9 l( L! u$ v& C; y% p; S6 H4 Q V4 E% f
mov si,84h
% A8 y# V ^ K/ Z2 ^. M- O+ ^ mov al,es:[si]
: s. o4 b l c) b cmp al,'b'$ m6 P& k+ w# R( y( [
je WBT! e1 y) @) z! F X
cmp al,'B'
6 C' G' x8 \5 O- `) Q je WBT
( W9 N4 e! z( U cmp al,'w'0 [# |3 V; @. P( z1 L3 O( i( H
je WWR7 I) H% e( O! g5 X$ X0 r
cmp al,'W'+ U# m% J6 `6 s" ]. Z
je WWR6 |9 |9 z$ x' y( x/ n
cmp al,'d'
9 F- R( o! C: [! u: R4 \( t. N- @ je WDR1 Y, O$ M2 @5 v0 g/ |% o
cmp al,'D'
" i1 f7 }7 Z( x4 O4 j+ n je WDR4 h% _1 c! ?4 `0 y* f/ k# L% `2 L
RBT:
2 `4 {5 `+ f& o- f* Y. y call PSP 2 c9 O2 H! n8 v9 g- ]) ^* r
call crlf
6 @6 c. b% C C. U/ Z ]. i; [ mov esi,ebx2 ]1 k8 O9 J" a% W
mov eax,fs:[esi]
3 K/ G. J" _$ F, c } out 80h,eax$ U! w) g5 @& n1 d7 }
mov ebx,eax
6 L! o3 K* x- B8 [; T* b% g call _8bits% Y+ C' X; Q1 {7 M% D+ m: `
jmp Exit
( R, G1 t6 @" E0 Z% MRWR:4 Q- C" z/ O) s* h
call PSP
" o* X: F& ~( ?; s% Z/ ~! M( q: v call crlf
, j7 `( S$ {( W* j, d9 y7 f9 V mov esi,ebx9 |' y) H# ~# b" R6 B7 _
mov eax,fs:[esi]9 J) \. F. m* n# o, Z
out 80h,eax6 z7 J1 F9 V% } {! V
mov ebx,eax
+ s6 |2 q4 i1 l: `& g call _16bits
; l) Y& J3 h8 b jmp Exit1 c$ p7 A% t+ g
RDR:
: ?, ~, _5 n5 x6 f. q$ H call DPSP ; m' e J$ F$ @
call crlf ( R) I3 b$ |3 `$ P5 B9 X% Y) w( b
mov esi,ebx; } m9 ]1 N, l6 h7 o
mov eax,fs:[esi]
# A' G% j$ u. R& k5 Y8 F out 80h,eax! U5 F/ p- [1 v- F/ x6 y
mov ebx,eax/ C( x2 C* }1 z3 ?" A+ R6 [, J
call _32bits% `6 S& Q5 }4 F' r# ^. n6 \
jmp Exit) R5 w; D9 J! n8 z+ _; Q; e
;------------------------------------------------------------------------------------------------& E9 K: {, v1 ^# ^% q1 f% k: h3 T& |
WBT:6 C0 f$ q$ F( b( n; P
jmp Exit
3 }" H4 j6 [0 i1 JWWR:% k1 \8 m; f1 B! F0 [2 F% b% ?7 V
jmp Exit
( l2 L' }3 S, l3 jWDR:2 S+ v$ a: d4 w4 J0 O
call DPSP/ c2 p! c! ]* `# n. D
mov Maddress,ebx
+ k- { T1 L. w, c' Y( `8 _) g call crlf$ p4 Y, ?* q1 F8 A% V
call WDPSP9 \. h) @# h; _& `' Y4 v( J8 |2 c
mov eax,ebx
$ ] k8 t- \7 j0 D" j" t6 p mov esi,Maddress h4 a% [+ [1 J$ y& N3 X+ e' X
mov fs:[esi],eax
* C3 ]$ o3 U/ P t out 80h,eax2 i. }; V8 t4 G( T; @) L
jmp Exit4 D1 @" L. ?/ b& E) r
;------------------------------------------------------------------------------------------------
* `: j; x" r% X4 X) Q* pExit:7 K: s0 [9 T d7 l
call real_mode 9 C/ y+ y5 a* t
pop gs
0 j& C( o2 o: D1 ? pop fs) ~( M( B- T6 i g6 r
pop es8 r7 F" G1 J/ k6 R
pop ds 3 v$ _' c u& k) D) P, _& c5 x
.exit
` U) t& l0 ^; I3 s3 R; @) v;------------------------------------------------------------------------------------------------2 |3 j; }6 N: k8 E- m7 r
big_real_mode proc near
/ D1 q: p( g1 b1 A3 z! S: i5 Z in al, 92h
+ h0 S# g5 y4 N2 {: g9 U or al, 002' v8 k {; f: ]1 J) G: j
out 092h, al/ A+ s0 A5 y2 d' |# o
out 0edh, al! P, v9 U3 I- v
cli; y0 O: }8 C) ^" K$ a, g
mov eax,DSEG
# Y) w5 J( y8 r) {$ a shl eax, 4) [) w) N: a3 D( i9 G
xor ebx, ebx
; P, r( E+ {5 _/ d# G mov ebx, offset GDT_def, h0 `3 M$ I! t5 l1 `0 K
add eax, ebx6 R1 m4 ?" D% p- a( |
mov dword ptr GDT_Addr.Base, eax
. @+ C) J9 f5 ^0 r. g+ Q+ d) ?; d# h lgdt fword ptr GDT_Addr$ [# f: u: C! B4 G+ m6 k: ~% Z
mov bx, 8
+ G) |" j7 a( s$ w: _6 z mov eax, cr0* _5 \5 f. W- n$ u" G+ c* e3 i
or al, 1
! X) T# G. M( S9 |7 v mov cr0, eax
3 s1 L% F1 o- }) C6 Y) m: v jmp PMod
6 P/ f6 W/ \+ e7 P1 aPMod:2 W0 C1 W% f# x6 t& v
mov fs, bx9 o" N! H9 ?) s9 X4 R
mov gs, bx
0 |, l7 y# y! l, W; u' L) @" E mov eax,cr0
, T3 N- f+ C8 k; C# g and al, 0FEh
/ i- ^- r. C W" R- w8 B6 { b mov cr0, eax
0 K/ W" ]* Q. L9 q: W9 c- P3 Q/ S jmp RMod4 d9 b4 J0 @+ Y, Y, r- I
RMod:" l1 J; o* v8 [ {1 g
xor ax, ax
7 w6 q- [0 }0 h& q mov fs, ax9 y6 `5 R: ]: o0 z3 J" n! a3 }
mov gs, ax % r. v/ {& U k& i9 k+ h; A* |
sti {/ b+ `# K- V8 u0 K
ret9 ]9 `2 ?2 E0 v( A; p& [0 m6 D
big_real_mode ENDP
4 `4 s1 q5 v( E% H: ^+ m' y% a;------------------------------------------------------------------------------------------------( M. u& S0 i0 g5 E, Y
real_mode proc near
2 K/ w! [; z7 U+ f$ m in al, 92h
& S/ m8 I! ?! V% Z/ o and al, 02 X9 p- d# ]+ I
out 92h, al 5 N/ C4 d' K* g# z9 s, |& K5 h
ret# {% n) S) l Q6 r% s n( U
real_mode ENDP7 {4 W. u y! R& z' ~
;------------------------------------------------------------------------------------------------
4 j: O4 d6 r$ sGet_Commandtail PROC near
" U! \1 n$ r1 \% j5 @& X3 q mov ah,62h ! O& r* H+ [& {$ V1 j
int 21h: \ Z% _/ ?& f5 A% E( w b
mov es,bx8 d" v' v) p$ S0 q" t
ret
( b9 I4 U- g4 X2 T ]+ HGet_Commandtail ENDP
, g9 B& D. I* q;------------------------------------------------------------------------------------------------& t! A S7 E6 h( z- t" U
PSP proc near
" ~& C1 n4 P" O# ~ xor ebx,ebx& L, t9 z" }+ r7 I; B; n5 A7 ^
mov si,89h
7 S1 |) P6 i, u) R mov al,es:[si]3 O5 |3 L1 ?0 n9 t* C
call Change5 V2 x/ h/ O/ N
mov cl,41 n- A1 J" j7 E J: ]; [
shl ebx,cl
# N& q2 A# [0 P j add ebx,eax
+ H2 H0 I0 ~" j6 _ R* M6 U4 q mov al,es:[si+1]8 L! ~8 j, X% q4 p+ `) i& q" x
call Change3 {( x! y, D4 y
mov cl,4, {# p. t/ ^, c0 g0 q1 u
shl ebx,cl0 Y3 Z$ n' D6 K, d5 @5 C
add ebx,eax
% n0 d& ^& j- d9 W mov al,es:[si+2]
6 [) S* U( L! T- Y call Change& m; z3 H7 U. R; k: ?$ Y' W
mov cl,4. h- x: S: T7 t! c
shl ebx,cl$ p4 E$ y3 P) u, G8 w- h0 C
add ebx,eax/ N' [6 |% F$ b" Z1 m% m
mov al,es:[si+3] `$ ]& F, Q3 o% R# E% `: w$ c
call Change
" O& y u" n" V% m% u4 |. F mov cl,4& i9 B- O: z4 q5 X) d
shl ebx,cl0 u6 c. P" H' Z; u' |, k
add ebx,eax
% u; {* d) m: s/ [: }3 x* E mov al,es:[si+4]
% i1 u9 k1 K8 T! ]7 p call Change
. `- L- c3 Y, E5 t6 p mov cl,4
, Q( H9 O$ R3 X. K# a) ~$ H4 r0 ~# T shl ebx,cl
3 K8 O8 I+ z' C3 D add ebx,eax2 q! X. h5 f- a$ \7 s# _
mov al,es:[si+5]
0 j$ [, r o. `( F7 c& j$ s call Change' |& A. _8 U4 x+ |( I
mov cl,46 Y- h$ J% R# a5 A/ z* s
shl ebx,cl
: O" M; Z" G+ x! z. r% Z9 q! P$ X/ f% ] add ebx,eax
7 v$ O! q8 v2 h. j' b4 A+ Y& z mov al,es:[si+6]! E% {% a8 q: v4 }( h2 h
call Change; S% w. Y% \5 z; r" `
mov cl,4, @: g; Y, Z: S8 I$ \* v2 Z: N) m
shl ebx,cl
: S9 {' \- m, O- g add ebx,eax
" ^. }3 f" ?7 y0 H mov al,es:[si+7]
. \% m( F- r! ?# z& X call Change
9 K7 h+ b( o) I) y E- R mov cl,4: f2 j( A T6 j. B6 r2 `" J4 T
shl ebx,cl
, _8 K* U! d3 }, V0 A2 W( e2 M9 u$ | add ebx,eax
3 p5 P/ I" y0 F j4 W ret8 h; G' N' u! A: x# n6 Z; Q# r
PSP endp
* I7 n( i: I2 h;================================================================================================* `; [) O! F' C' ^
DPSP proc near4 v$ X v$ V9 I) c; j2 G
xor ebx,ebx+ t6 P- b8 g! h1 e, L3 B0 E' k" o$ W
mov si,8ah
1 @; ~! f. [) U' P' v9 r mov al,es:[si]! V. R% M/ y+ R
call Change
z9 E* }7 r" Y" \; J mov cl,4
6 s$ B6 \& \6 J( }- Z shl ebx,cl
2 Q( H, T% p8 }5 O add ebx,eax
% M/ n8 s, K/ ]# @# j; P; _- L0 _6 U# M mov al,es:[si+1]* B4 k" A- `, v' P6 D
call Change; u6 [! }3 ~# e+ e. P
mov cl,4
. X- {4 \( g- U shl ebx,cl5 b7 @9 {% E [* F9 v9 ~2 l
add ebx,eax5 [2 s4 b Z/ z' f
mov al,es:[si+2]
; ^; v5 L0 O9 w; f" M8 r0 J7 G) w call Change) \6 R I1 t; ^% u6 v
mov cl,4% F- f5 Y/ q1 a
shl ebx,cl! u( u: q! C. m7 g% K( B
add ebx,eax2 e2 ^+ K9 g* b4 Z
mov al,es:[si+3]
. c1 W8 X, l- B call Change
( w4 F( r: ?' G mov cl,43 U9 [' X* o9 N, u# U6 h
shl ebx,cl7 j5 u: t8 F' ] M1 T+ k
add ebx,eax9 P0 U+ d# J( @" R- t
mov al,es:[si+4]( ?, Q: P: z7 ^& e, _
call Change
& p. [9 G1 }. _+ G1 _" @ mov cl,4) I" r2 U) v. n) b4 Q
shl ebx,cl0 L% S/ s3 B7 u5 K0 g; H# b5 c2 H# u' q
add ebx,eax
: I! Z6 f8 N+ Z% S7 C8 p1 s mov al,es:[si+5]
* d: |$ M" i0 S( v6 a call Change
$ j7 Z; w9 V- m! V* |+ _ mov cl,4
* M: m: M/ y" [1 C, w4 S8 E) c shl ebx,cl( @0 N: C. f, }$ i
add ebx,eax+ o+ s) X l. S5 c% N; h% ?( o
mov al,es:[si+6]
- T1 w/ S& |0 l, _! W& j9 O call Change
% u4 d! t% A& H e mov cl,49 q3 Q+ ?5 T z" v2 v: h
shl ebx,cl
$ [) i$ i( N4 @# a1 m4 ]# J" Z8 \+ G add ebx,eax" y0 w: v* g5 _$ _- G1 F5 h
mov al,es:[si+7]; Y. o: n; w# m: o, O& a
call Change: k5 S$ ?+ E! V* o. Q2 R9 ^0 K$ v
mov cl,4
' X! k# J- j5 s. P2 l& M shl ebx,cl+ W, [2 q% A0 m2 S
add ebx,eax. V' b7 u( w; s7 O; R+ K/ q
ret' m' f5 |! D' U& b! Z o
DPSP endp( [4 I5 d* _, ~# V( B3 ]
;================================================================================================
. X" z; O( g5 _5 H4 D( A. {& ~1 `) mWDPSP proc near# r4 f, S/ K' _3 s
xor eax,eax
. T' `* I4 O* S xor ebx,ebx
& f2 q5 [2 F" B+ Y mov si,93h
, ]3 V e1 c9 Z4 a2 w mov al,es:[si]
& \! w; O, q7 R& _( W9 c4 |5 { call Change
* ], ^- j) n) y9 n, e, m% j mov cl,4
P$ Y' A9 X4 E9 @ s7 p& O! p shl ebx,cl
; J* ~3 f8 Y% f8 z3 U8 ~/ M, z* @, l. a add ebx,eax
+ l2 k; Z! u# X. w! V( }3 k mov al,es:[si+1]% `1 C! ?4 I2 ^3 V/ `- a
call Change
6 x: W# v7 h, A0 s. o4 j mov cl,4
2 y# A$ z" B9 \( W Q8 T b shl ebx,cl$ l) q+ Y6 ~; T$ x: y$ N
add ebx,eax- \- g# L1 S- B/ g3 _
mov al,es:[si+2] k% D) q, y5 F: z9 q, `7 l
call Change, K: f6 b2 c. u2 o2 j# v7 g8 j8 d
mov cl,4
4 g2 O$ M, c. t+ o shl ebx,cl/ s( i; W0 [7 R- L2 W
add ebx,eax
D( N6 W# g5 D1 c% O. P8 r I mov al,es:[si+3]
9 g3 S+ ?# U8 U5 h call Change- H7 x2 C# W# o7 t+ K1 r4 S
mov cl,4
v" T$ O2 t2 ~) ^4 w: U. P& G shl ebx,cl
3 C2 C5 O6 |* V/ o/ T5 @ add ebx,eax( L2 P* @2 \- c4 L
mov al,es:[si+4]
8 i; E$ Z( ~. A' E9 L! T call Change. s- \% S4 s8 J' T" y# ]
mov cl,48 k) q4 M ~3 e6 ?3 H) I
shl ebx,cl
d- ?" U9 a; S* ?6 J1 f) m( a add ebx,eax- U# l$ F$ f' ]. z5 o
mov al,es:[si+5]% P2 y& z- R- M" f) v' S
call Change
; V. X* c: T3 R$ X" D+ Y8 F mov cl,4
8 f/ i# B1 R: `* e+ y shl ebx,cl
* g% q* ]9 y% P/ ?6 J) i add ebx,eax/ s5 h" s, @2 h
mov al,es:[si+6]
9 j/ D9 _0 F9 N) T call Change! M3 ] u; f3 n
mov cl,4
& W0 y( s6 n' {# W$ |. Z* H shl ebx,cl
4 i! S, t, l3 Y add ebx,eax
2 b2 ?5 B5 i+ ^. T8 E L# X6 g8 v mov al,es:[si+7] w% U0 G5 s( \" f: A
call Change
: |& \1 }9 ^, } mov cl,4! |+ |6 E$ R" g
shl ebx,cl& B# K- {+ f4 W6 L
add ebx,eax
% A2 e1 R: X$ n5 N& P- `) T% T. [ ret
3 b5 j& g$ z5 h, z7 T" N. l& vWDPSP endp: P' k/ i# W& c! a& U
;================================================================================================. A5 q' ]; ?% U$ X
Change proc near# \# K; Y! I* d5 y( F
A:
# G) Y6 K5 k8 w$ Z, A# W$ V: n5 L movzx eax,al
$ c+ @$ B$ R% r% Z4 d1 T" f+ s! \! Z mov edx,eax
% O4 r7 ?" ]6 C8 W9 ? cmp eax,'0'
& z" s6 W' o2 H9 V Q0 @9 g8 P% J; k jb A j. {6 @' c2 ]4 B6 y
cmp eax,'9'
. L* ?( @: X1 }) a ja B
* W: P6 y8 G' @: A% P3 Z sub eax,'0'. v% n# @1 N( w* v/ q5 h# B1 ^- {7 u
jmp short E' u0 N( O% p( ?, ] p& H
B:
$ V" z2 e7 y3 {" [2 D' W- Q and eax,0dfh # P- a3 {; V6 g: z, F: ^% v& p
mov edx,eax. t- G. z$ _5 |' ~( q) }
sub eax,37h
5 c* \7 N) z9 c cmp eax,0ah
4 K$ T7 T0 Y) \1 G) b jb A
0 ?/ S- I$ _ t cmp eax,0fh5 C5 ]9 P: V! o# Z6 }0 a F6 z
ja A
" O. f$ s! |2 J6 O& N/ EE:
3 H& Q" s2 O$ O$ c; B push eax - D7 u! K2 g, T1 E
call PRT ! }* c5 R9 {' |, g. w7 B' [0 k
pop eax1 G. j$ l1 V" b
CExit:+ q4 T, |" N3 k
ret
* T8 E# u0 k9 @$ b* s5 cChange endp/ E$ T, M1 Y6 x+ L
;------------------------------------------------------------------------------------------------8 H2 }9 s- F2 w/ Q7 W/ `
PRT proc near- F* r! F' f8 R1 x
mov ah,02h$ W$ S( v0 R- G: f9 U9 C0 w' e
int 21h
/ R f3 z: ~6 b7 X! @" W ret
' C2 {: e# o8 D* QPRT endp" m8 S' O9 J/ ^
;------------------------------------------------------------------------------------------------5 `6 y% R1 Z4 }* a& s7 N
crlf proc near
9 F9 Y) {( E2 ^! _; ~; p4 g8 ?( X4 x* Z mov ah,02h4 p* \3 U- r# x- s2 n/ f
mov dl,0dh. I8 x3 M w0 ]
int 21h
+ x4 d% B$ K. S7 y& v P4 ~ mov ah,02h' Z, n0 Q/ m8 v- b* d _% ~
mov dl,0ah
+ I+ X& [1 r0 G. @ int 21h
" D* a: ~" B; `# N- v$ `4 ` ret
( @8 |+ `9 T& ]' V) \crlf endp" s$ Q, B4 [- \
;------------------------------------------------------------------------------------------------
* C6 H3 F0 \* G; T, _+ U3 i, M% [_32bits proc near" K( T8 ~$ D2 x: G
pushad
# v o! s) W& V mov cl,4
' _& ?0 S& d. G- {. Y5 @. H0 ~0 F rol ebx,cl5 r, q9 O/ ^% t) f2 j2 `1 [) d; ]
call print_4_bits
, k9 |& r2 x5 ?- y) E$ v0 {) U rol ebx,cl
; J9 L; Y4 p) k$ e" F) s' Q4 q call print_4_bits
. K% Y: g2 ]* e rol ebx,cl
' D. M4 B1 @# w: i call print_4_bits
4 | U: B! r0 @ rol ebx,cl
: ?1 I" _* |# K call print_4_bits
5 n3 h- y. S+ j' F- Z/ [ rol ebx,cl: N O) J8 w% g
call print_4_bits
- E4 K' k) H# V) A4 h2 p rol ebx,cl7 r! ^. M+ `" R2 [: G3 c
call print_4_bits
. U: b2 W) f, \, ^. r# T rol ebx,cl( h2 W3 \1 s! S
call print_4_bits
S7 J! e ~3 i7 e rol ebx,cl
. R- N+ B! k2 X call print_4_bits
8 t, y; E$ t+ P! [6 W; F rol ebx,cl
" O4 k+ F' h$ B' t$ W popad
' ?% }& R, Q+ [( e* ]1 i ret1 h) I# @' I* S. c5 [3 o0 i
_32bits endp
( b% t( N$ r! m$ R g1 \8 M;------------------------------------------------------------------------------------------------
, }- O4 B5 |# M6 _" u, O_16bits proc near
L! `. [% s: Z) Y: o7 |/ t. n pusha 5 ]# S& `6 h& A7 J6 S5 L8 p" \% A
rol bx,cl8 c8 m' B/ D# W( @
call print_4_bits. R- p. E* f4 u7 W' c! @" ^. T; P) N
rol bx,cl
& _* t) Z5 n! L- I. O4 s+ m call print_4_bits0 G4 @! O3 _8 w) k
rol bx,cl
! Q6 z4 Y" O% B" j( P call print_4_bits: Z2 U$ w8 }# j$ u @/ ?% W
rol bx,cl s% v% x8 V& u% F9 N: w: j
call print_4_bits* z2 Q: ?! \- Z$ S# n6 Q
popa
. b6 Y$ Q3 l) G ret
1 H" Y9 `5 d; R& E; f; K7 [_16bits endp
+ S& N. Z1 l0 a% j+ _1 T- f! V;------------------------------------------------------------------------------------------------& L; S0 ^ b( ?# k+ T- o
_8bits proc near
& m }3 E* N3 [0 P% R pusha 5 \) L4 D/ u q3 P
rol bx,cl
4 l0 b* \& m0 z2 a. u call print_4_bits/ W6 A) p F" _
rol bx,cl
( t: U. W5 S9 k3 `+ L call print_4_bits
' `4 {. y6 i$ E% G! r! p( q9 T popa
% \1 e3 {- o; t' @* \: K" Q c6 i ret
1 m- ]' \+ V& _ K5 k! W0 U_8bits endp
9 m! W# u3 t% V7 bprint_4_bits proc near
- F4 S/ O- B' t0 {* p, A1 ~6 L mov dx,bx0 E4 I$ e/ b. h: d9 I
and dl,0fh
@* l, \( j# Q7 e0 ?0 N2 I" ? add dl,30h: R0 F5 p* ?6 y- t
cmp dl,3ah( B' V3 t3 H( w
jb print
& Y3 q/ m- U& r- D6 o/ u add dl,7
2 M) [$ Y* c* ^/ bprint: # T. M# g* H: \$ D8 H$ @
mov ah,2
5 ~( [& H+ G6 F5 P) G int 21h/ h" r8 P( h. O, n( z* j. a
ret1 A7 m" G: G! K6 k5 v8 J6 n
print_4_bits endp ( h" R& R' V/ U" D1 L
CSEG ends+ D" V+ ?9 j/ E, H! e
END |
|