|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)! x4 h2 h. ]1 v) O* y) _7 e
) j0 F1 a1 b# x+ V$ q" E4 z則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'5 D7 s% z. }- h6 u0 T+ x
. b2 }2 F' i- |6 |! t' m6 F! j6 J宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
' m) ?( H# ~( {, ?; x
' M3 ]* ~7 f) e% p.model small
; O4 B, j' G7 _.386p) Y+ ?) {1 S0 w% s
DSEG SEGMENT USE16'data' & f, [( a Q& y/ u; x% n
) [9 f: F+ t" b% J' z6 p& XDESC STRUC
2 g- q7 K- v8 F# U/ B LimitL DW 0 0 x6 v) B& |) Y, I4 D
BaseL DW 0 * D U/ h3 t% [6 e+ O5 i4 P
BaseM DB 0 ' J3 h, U1 M- I0 J+ h. m U' I5 c+ Z
Attributes DB 0
3 }: }) a+ N# Q$ X- L( D. b LimitH DB 0
7 F; R: K4 V( ~/ r9 `9 S BaseH DB 0
( }7 v1 G5 y2 t2 W5 }DESC ENDS- Q' O4 v7 a+ s2 S3 g1 t' O' B
0 d6 O3 n& K6 B& E5 g
PDesc STRUC' m8 E9 E# F- d( h; C' m5 ~: J
Limit DW 0
! D! i0 H, B) m$ b: D2 N Base DD 0
3 i, W; y) U2 BPDesc ENDS Z1 \1 u, p$ E0 M% G: r
- |/ B3 g7 {: \% ~2 F. M3 qGDT_def Label Fword
9 l: U5 W: \; {) YNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
; Q* l& }& B: c3 O! h) VData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
1 m- U: z/ }' x2 D, A, t: `" MGDT_Addr PDesc <$-GDT_def-1, >8 A+ l& g. H2 n- O
& |5 H6 L7 T" k4 K1 yMaddress Dword 0
7 v. w" @: U$ V% C. y
2 D( [' u. O$ q$ d- S0 J9 W& {DSEG ENDS
1 g* X# L: ~' w+ d( pASSUME CS:CSEG,DS:DSEG
. A D8 b" V8 d2 ?. J# i
3 ]% B1 u$ I6 D5 W: ACSEG SEGMENT USE16'code' j. \: P6 C- O% c- M4 Z& b
push ds
' b. k2 Z- p. I* u, J3 Q/ o push es
' H" A, |2 P/ ]; J push fs, o9 H, L8 R+ }8 L5 C
push gs0 \3 K, r& e6 r S) F
call big_real_mode $ W& f- \$ C1 o, L9 r; X6 T. G
call Get_Commandtail, @3 v: O- d7 S
xor ebx,ebx0 |; L ^* U2 ?$ w( v
mov si,82h X m- J! B% j' Z; v
mov al,es:[si] m, m1 G k1 J
cmp al,'r'
( k) } I) I; E4 c3 ?* }6 A je R
# j! `: }. s5 {' m! F9 p1 a& n cmp al,'R'
+ O4 q# R7 D/ ^3 Q je R
) ~2 P, x$ n9 A. U cmp al,'w'0 X% O u# m/ x# j5 C" L: r. _
je W
0 ?8 m5 o3 O. s' A" g2 _ cmp al,'W'- f$ B' x9 i, D/ q. j3 m
je W
) M* n( w5 B8 a; ?2 YR:3 a+ e( s7 @- p" p
mov si,84h
4 u6 S" {8 |3 { H Z9 S- m mov al,es:[si]
) M) K2 P2 Y( y% O cmp al,'b'& ~) J; @% D5 P" }) C! W+ j
je RBT
2 g1 O% m( X5 e6 I( a cmp al,'B'
3 I; w. I6 V0 Q$ N6 Z! i& }4 O je RBT, H6 t( f" G& w# R- [" x
cmp al,'w'" B) b( i( q3 y" A
je RWR7 {9 H+ y' w8 S% E& X
cmp al,'W'/ q# Q( G$ A* j. _9 ~+ q$ K
je RWR0 t6 v R* D: k# _# G
cmp al,'d', b! j4 Q$ E7 e( e; m7 w
je RDR
3 v, \ ]4 K/ E& @3 P/ ?; h cmp al,'D'
. K& S0 x7 f# {' J% e" H) d je RDR 6 Z( b6 r7 w7 r
W: + A4 i$ B0 q6 d8 N! e9 Q/ Y3 p' J
mov si,84h+ u* A7 M% [" c4 a* E) Y% s
mov al,es:[si]9 t# R) e( z9 s9 H6 T
cmp al,'b'
3 X& r0 }. O; o8 ?$ b je WBT
, _$ f* f. c6 B2 d7 w+ O cmp al,'B'. k! M, n5 o. l9 K4 e
je WBT1 x7 _5 W* b, w/ V8 @. A
cmp al,'w'
7 o# A7 _& c2 ]$ ? je WWR
- E' P% e9 \9 M0 f( p% H6 W6 N; S cmp al,'W'
- J9 _* Y8 ~* T. a1 g4 y4 ` je WWR7 |4 p! R9 L# J: p9 s$ F
cmp al,'d'
F) x/ {( O2 z7 {" W+ D4 l je WDR
) d3 I# y& N- v& F- K cmp al,'D'
' U& C2 r. j4 R, \ je WDR" p: X: I$ Y, O# M
RBT:
+ M. ], b2 d: j- B, @9 { call PSP " B: `0 ^& z# M, b! i7 I/ G
call crlf 6 a% q5 p, q6 i# ]; m
mov esi,ebx
# V- O$ t( _# J' J; a mov eax,fs:[esi]
& X1 Q& }9 O+ a out 80h,eax
- N% J+ r2 D; v" _ mov ebx,eax
' W) a: H( @7 R# _! ]4 z call _8bits4 o: m: y) m" ~3 D( ~
jmp Exit
" H- w( x2 h- |RWR:+ a' t9 C8 F: C5 \; W5 M
call PSP
' P! q$ v# N" I* W" I/ \/ \4 s call crlf
7 ], I- f X. u mov esi,ebx2 Y( o3 N. T4 Z+ e* b: m8 K2 R7 j7 b1 j
mov eax,fs:[esi]
& W! C" v2 E/ `0 {8 b( D! \ out 80h,eax+ L1 ^" j) i) y5 R' D3 m. w
mov ebx,eax
2 E! R4 P* ~0 X9 D$ `$ f* v. J call _16bits9 T' `0 C, {9 J& i: H; Q7 o
jmp Exit
/ v* H P9 ]. A( t0 f! vRDR:
9 f, h6 R3 `5 ?6 T) V: o call DPSP . Z7 R: C; x# ?3 _( Z
call crlf
& k x% ^! x7 n5 ] mov esi,ebx
4 @0 c2 H. L% \8 N' ^- q% t mov eax,fs:[esi]
* Y+ P8 E8 e& B J+ P+ v6 e7 {" ~ out 80h,eax
0 E0 R1 x; P+ V mov ebx,eax
3 i2 u" u, J L5 q. ^( ] call _32bits
4 b! U) }! ]- e Z jmp Exit' h, l9 _' [# w
;------------------------------------------------------------------------------------------------
" e+ l @9 d$ @+ J! _, T# VWBT:
* r4 C) D# [& \3 z \4 T' q9 H* \1 c jmp Exit$ W0 C; a1 R3 ^. X3 s r
WWR:
8 R! Q- g b9 r- z; ^. k jmp Exit/ x' `! r b9 _4 P
WDR:
9 P0 L0 j) D5 i* j) i call DPSP
) q/ { ]" x1 y( Y. P& r mov Maddress,ebx 1 a+ O$ r( V- x g
call crlf
" t* ^3 k8 X/ K call WDPSP- N) l2 n. I+ r
mov eax,ebx
; C3 {- h! L( z ^0 P! e l b } mov esi,Maddress
4 x+ l: {' q! Z! ]' @1 |5 E mov fs:[esi],eax
# e$ w8 }& J, Q3 N8 Q; H out 80h,eax7 b& p# E, z8 k- W9 g% @) S
jmp Exit
9 D e& T5 o! Y. z;------------------------------------------------------------------------------------------------
% ~/ K( z7 r8 V7 A0 cExit:
4 m( Q! x2 z5 P0 d5 E call real_mode : m3 ~0 a! z" C
pop gs
; g. s' x( T' Q2 a1 M pop fs
9 K- O H! y# R; \& n# f6 O- H pop es8 E) i" Y5 E3 z K& E4 X
pop ds # `7 }6 Y H* e, Z; F! t
.exit
5 ~* V6 w1 \2 Y( E;------------------------------------------------------------------------------------------------' X" S0 [ i. q, u; a
big_real_mode proc near6 [% o, _; M5 A0 {/ p4 o
in al, 92h
2 {1 x; M8 H1 p1 M9 I& ~# | or al, 002
, H6 J( h# _' {9 Q" p. v$ }: W; a out 092h, al+ W3 N1 x$ T9 Y0 U. k& i
out 0edh, al
% i R0 y: x4 W% y' a8 ^2 H) F4 G5 k* I cli; m; k4 [; v3 p9 ~+ J9 p
mov eax,DSEG
5 N9 b5 l; U& o shl eax, 4
9 a j( c# Q# s xor ebx, ebx
y8 h& `3 _! b- i k$ M mov ebx, offset GDT_def
* l5 W. N0 I6 t* P add eax, ebx
2 J% l x$ ?# B3 M* f* w0 Y mov dword ptr GDT_Addr.Base, eax
# X$ e, Z3 Y) O lgdt fword ptr GDT_Addr
6 t1 T& L* l+ h/ Y/ i- k' W" H, t: J mov bx, 8
6 R9 a% B2 `, O1 r; g mov eax, cr0
0 F7 w2 c) |: ?) Y- Q- G( S or al, 1
$ y4 t- o8 T/ T mov cr0, eax
, M: M: M! H3 z jmp PMod* Y# g- W5 B" D
PMod:
. t9 A) n/ E6 a. o( b$ H mov fs, bx
6 `) b2 O# l: J" ^ mov gs, bx
, {7 H }( u8 M$ h mov eax,cr05 d) `0 m8 a! ^5 M
and al, 0FEh
$ v6 T P2 P7 O% i mov cr0, eax 9 y3 l1 P2 }+ w2 |
jmp RMod! ]& ~" O5 M3 S8 H( A* }# S
RMod:) K% w6 B3 ?6 L' g* Z4 {
xor ax, ax
! O9 E$ [" I) w( a mov fs, ax
( t* Z9 _& [$ L mov gs, ax : R! y- Y) j8 ^
sti * O( C7 n. I. X0 d
ret
9 j8 U) c! D9 H% Y0 @( fbig_real_mode ENDP
4 ?3 j3 u, w% j: V;------------------------------------------------------------------------------------------------ Y5 N8 h: l- A+ O( V; D
real_mode proc near4 x% V/ Y! G' @& J4 l& y
in al, 92h- u0 g7 W6 @: F8 }
and al, 02
0 F( j. ]7 l/ q* X6 c out 92h, al f9 ?5 p+ Q: D7 M; y
ret
$ c$ l4 b0 L9 p2 g; Greal_mode ENDP7 y4 R! S6 h+ `
;------------------------------------------------------------------------------------------------! F) i" P% F; N" R- b) V
Get_Commandtail PROC near
5 Z1 F: {. i6 F5 |- x6 E mov ah,62h
1 F; l/ ~. f6 c5 X! S. m int 21h
$ P2 n) O, Y( J# X/ T( E mov es,bx# X* W( [ M/ P e
ret
( R; W/ Y( [! S0 W: s/ t# ]Get_Commandtail ENDP 9 I( e, X5 G: X8 m) V) p
;------------------------------------------------------------------------------------------------5 Y0 l' M& g L
PSP proc near: [/ M% R: S* v G
xor ebx,ebx( Q. C9 }% [# ?* [( M/ d) Q
mov si,89h
+ B# O k" p' W- z" E- U8 X mov al,es:[si]
; o! h9 H V# N* N call Change# N6 r9 ^ }/ T
mov cl,43 f. Q4 }1 } E# d& ~% w
shl ebx,cl, T S; W7 V( R/ N+ \
add ebx,eax8 D8 W' B6 d1 g( f1 o4 P
mov al,es:[si+1]1 m7 n, h4 r8 S5 v" t7 @
call Change4 | Y6 M; O$ p9 D( |! a3 G/ O
mov cl,49 o' Y2 b- n( ~+ N
shl ebx,cl
# x0 ?7 h% A+ S' O& i add ebx,eax: [3 d' n, Z, R6 s
mov al,es:[si+2]
& I& O# N2 h4 V3 @# ~( r7 I. N call Change
: J1 j/ {; G3 W% k) u9 o9 g mov cl,4$ i* A. f( R; Z+ P
shl ebx,cl
# p0 W! Z# B1 ]( F3 z* N/ A add ebx,eax
3 q" I+ |8 D& U- u* e mov al,es:[si+3]
1 l. i2 B+ c' ~) [ call Change7 n# S" }9 s6 `9 k1 X3 G* m0 r8 T- Z
mov cl,4
, i$ g) f& _, i: }7 Z; F5 m( Z$ ?# ^ shl ebx,cl
! R7 x+ n! K9 b. V9 c add ebx,eax# p- l( H. H8 {1 p. L
mov al,es:[si+4]
4 g. t U; u- U call Change7 l8 T. X1 e0 E/ G9 O
mov cl,4
% i! X9 a( W* d& P; i shl ebx,cl. Y! E" g$ X1 S$ N0 ?
add ebx,eax& U, {1 Z' S4 ]2 H- t
mov al,es:[si+5]
) l: D& t) g# r+ m+ x" W J( A call Change& z7 X2 \* O# b
mov cl,4
4 V. G+ Z ?' a7 b3 C' h: Y* Q9 d shl ebx,cl% X! S7 [3 ~! S
add ebx,eax
: d+ Z% L) a. A, _ mov al,es:[si+6]: ^7 E0 m9 B9 |
call Change
9 k( G8 V7 R3 }- V3 p mov cl,4+ A! \/ O: t5 ~( a1 m0 `
shl ebx,cl
: T& Z( {) E6 B# s add ebx,eax; k: r8 U: j6 ]4 P; Q$ ~
mov al,es:[si+7]
5 x' J! `+ R( k- p call Change
. P. a! P# Z0 {* j# c7 o2 F! u+ l mov cl,4
( c$ k% l' ]7 V0 c$ J% f9 z" i' H% T shl ebx,cl$ x; `8 }" X% i" G0 [
add ebx,eax
# c- p* a$ ~( C; ? Z( ` T ret7 W- m% V0 M1 q9 R
PSP endp
* U. ~& A7 Q: R, s% r, i5 i7 e7 P;================================================================================================
* w; Q9 ^4 B5 q* t' F- l. h' R5 RDPSP proc near
& b! b( q$ F' R/ a0 l3 ~ xor ebx,ebx
1 Y/ _4 p) I* [- B [: a5 G mov si,8ah
. S" b$ Z: R0 R, v1 ^5 D; A mov al,es:[si]" s" D' ]; X1 f6 p
call Change
3 T( R! p: ?2 U' U5 t* m mov cl,4
& h1 y1 P" K9 ~( ? shl ebx,cl
9 {7 T% Q' g( `$ m5 D" x' Q add ebx,eax
" b' H0 M. y, p4 ] mov al,es:[si+1]
$ G& ^7 ^" f# D6 m- ~) o call Change' e3 A, Y" L; z+ d( o
mov cl,4# ?# H* P- I, ~3 h" E, e- J
shl ebx,cl8 Q) z$ x; n% e T
add ebx,eax* p" j6 a1 F1 D4 s, {( c/ y: [! |
mov al,es:[si+2]
1 S8 T+ [, U$ I( W, v call Change
5 ]; f' f- N6 @5 R mov cl,4
& J z3 s/ I( z7 z: M: M, a shl ebx,cl& m' P, b/ x' O
add ebx,eax
' m2 Y4 ]. N$ v5 Y, W- i mov al,es:[si+3]4 ^* w! G( `& m2 q( M
call Change: ]+ C4 b z$ J
mov cl,4
& E3 J+ a4 Y, n; V shl ebx,cl
9 m" U8 Q# U4 h* g add ebx,eax E1 r5 s$ i( m `) ?4 R
mov al,es:[si+4]
& S1 M) y4 a+ X( ` call Change& [. B7 n! w( x# Q7 B
mov cl,4
- ?( q6 ]9 _( E& f shl ebx,cl
: \( |; v' R% Y! w; H9 j add ebx,eax! z/ S; Y& P. m+ Q+ D0 b3 j
mov al,es:[si+5]
- }1 k* ^7 M: t% \3 V" B. q, G call Change
/ g& ~' R3 [9 ]5 ~ mov cl,4
/ U* o2 D5 j, M shl ebx,cl
% e, t& K: L9 o+ W# c add ebx,eax
4 \, O. I! S; l% ]' _6 ] mov al,es:[si+6]
) J3 A( d5 o% t6 h8 ?( [7 U call Change
6 w* s6 x7 T' }5 p. j2 ]7 b1 k8 ]+ | mov cl,4
( s# h- g) J6 h t( @8 q3 d K! D shl ebx,cl
2 x( E( y5 M" y, ]: t# j add ebx,eax/ `. N" Z3 _+ C3 c! @
mov al,es:[si+7]+ E$ W+ ?$ j+ A- p
call Change
' w1 _: T+ |( s+ \ mov cl,4* S' W; R/ l+ T7 L2 W) L( t
shl ebx,cl/ x" s+ h9 l: j9 l# b
add ebx,eax
! J( q$ Z7 f4 K ret
# o/ U2 g. M( A! |5 pDPSP endp% x" X* a2 P2 T4 p% E4 W% ~
;================================================================================================( J; C$ r4 k; u% F0 q( N
WDPSP proc near1 N" A( w7 @+ S8 Z" `2 L7 }3 q
xor eax,eax3 l8 ~+ g# T; Y+ s
xor ebx,ebx
j$ X+ Y& a' `3 e$ [2 [" N mov si,93h
l! t0 }$ g8 } mov al,es:[si]
% m, y( z j2 V& q call Change
" g+ v$ ^- Z/ e6 z7 n. g: S mov cl,42 a3 w6 ^5 E9 l3 r% F) V
shl ebx,cl
2 ^2 j1 C/ D0 L( w) Q& g8 B add ebx,eax; A2 D8 x& H5 Q
mov al,es:[si+1]) |0 [! v2 ]+ ]/ I1 x8 {
call Change
! x5 n/ m7 w3 V. C2 l2 c) k mov cl,4
' y1 O1 F! w1 W shl ebx,cl
+ \2 ^6 g2 `6 m( a f" s) L3 B add ebx,eax9 _$ }8 h2 R* L! o
mov al,es:[si+2]
" r4 v; h! R9 P- `8 Z8 e3 X5 ] call Change
5 H7 S. g& n) z mov cl,4
, n/ j+ a9 m# A {* j shl ebx,cl& d# e9 O: `$ t5 y, \( ]5 i$ M& [
add ebx,eax
( W8 I1 v$ s, w+ t2 x4 G; U mov al,es:[si+3]' k- Q5 f+ A3 L+ h
call Change
# u$ }. n9 f1 ~- r" X mov cl,4
6 A7 P- S1 J" R) R1 ^2 a1 ~+ y) o shl ebx,cl* Q& |3 E6 U. j3 c1 k! l
add ebx,eax
# B1 `* j1 A+ c7 f# ?7 D, u% k mov al,es:[si+4]
4 `% ?/ c9 O) }& S: q: B call Change* B8 M% T0 _; o3 t
mov cl,4
+ w; ?3 Q, e3 c8 n shl ebx,cl7 N+ l1 ?* J( |2 ?
add ebx,eax
- F, Q* p' u8 y1 S) T* s$ A mov al,es:[si+5]; }! f' t) M0 j7 t H% C' L
call Change
# p8 y( E9 @9 l! i& C" n- x mov cl,4! ?' F! k& ?5 O0 ~
shl ebx,cl- F" f% X+ O: E% K
add ebx,eax
: G; F1 {7 ]' Q, W mov al,es:[si+6]8 S9 G' |, X3 M3 s
call Change6 I& |' V k4 U; o. p8 `8 K8 ^
mov cl,4
/ V2 I4 l4 B% S/ v shl ebx,cl. r6 G4 y. l) U( {1 l" y
add ebx,eax
5 ?' j8 F) v ]7 Z# ? mov al,es:[si+7]$ V5 G* x4 ^5 F! ~
call Change
. @# j- _, W, H. s/ ~ mov cl,4
+ \% A0 F# m' B4 W# P* q shl ebx,cl6 K& L$ q X* O) i
add ebx,eax$ G8 Z+ d& W$ `5 k n9 E% A' s
ret
( I6 Y( G+ q; vWDPSP endp
6 r/ {* ?4 m( ^9 O;================================================================================================/ Y' p- a$ h; Y0 [3 L, A
Change proc near; ~7 l7 m! ?( @7 u n7 Z. v
A: 7 j( d3 B2 w( Z% s2 \3 f
movzx eax,al
" @* _ C9 S z% S- [: K8 a3 j mov edx,eax
* r7 L% e! n/ a$ m+ F ^ cmp eax,'0' - b+ ?5 W, o2 k, y, D( j# ~
jb A! ?" L' W4 H8 b6 J
cmp eax,'9'
% o0 e9 w# C7 d! f ja B8 c; a8 H8 {$ y3 I" p
sub eax,'0'6 v9 Y: Z( f) K% ~8 y) R
jmp short E0 I5 l0 l! }& F: s1 Z' u
B:
3 d9 G& x; J; ?, R% w1 B! ? and eax,0dfh " h4 Z. C: q- L0 G$ A2 b
mov edx,eax
. u+ Q. n- U7 O: K sub eax,37h ( I+ Y5 n# V: W5 U
cmp eax,0ah5 R# _) d6 C. {7 O2 ?
jb A 5 G/ T/ K3 Y' ]
cmp eax,0fh1 M- _( i# `. N, l; F ~6 ]7 \0 c
ja A z& a# J% v( {
E:
3 u6 [6 G, u$ E, F* x1 F* l6 g push eax + R8 s& k: Q. }
call PRT
8 a W: x- y* l' L- r7 R7 }0 l pop eax
( f0 R: y" n9 y; b: D1 K6 @CExit:
( t R* ^6 H+ }# ^ ~+ F ret/ l$ T" }6 A, T$ B |& N
Change endp
8 l5 W6 E' b: a, E2 G' |- B* P" H;------------------------------------------------------------------------------------------------
8 x% B( h0 q" [4 k3 |# dPRT proc near/ h! U! b4 H+ d8 Z
mov ah,02h% F8 N/ ~, j0 {7 p" C- ~
int 21h
7 B$ @* C% \- i" j- P l, ^0 _ ret' { o E( r) U$ B; ~
PRT endp& @( Y) X6 D: i5 k. y* Z
;------------------------------------------------------------------------------------------------, O9 I* E: b. o
crlf proc near
& E) I" x3 P, C. l3 Q8 `, v mov ah,02h# s5 f2 R2 d. F3 k
mov dl,0dh
5 `% h' l3 U/ j3 i( O int 21h
4 @; Y1 J4 [& x0 D mov ah,02h1 b5 m' S! d0 E& m$ B
mov dl,0ah. _0 i: K% x9 P" Q6 S7 V! _8 f
int 21h' R3 [4 j" w) f* m9 m
ret8 E, n! y' O$ g
crlf endp% r' U9 [4 E& M3 X5 s
;------------------------------------------------------------------------------------------------
" u% X, M3 N/ x8 Y0 a: i8 Z% ~_32bits proc near" d3 U" T$ R* M- J+ j& T! G
pushad8 y" T; d+ {' ]9 B8 u% ~9 E) h
mov cl,4
/ W$ ]- ?$ m8 P rol ebx,cl* o2 y0 E( V! [ {/ I
call print_4_bits; k* Y* |6 ^% M" Y
rol ebx,cl
7 Z$ m9 F9 d" [% h: s" }0 C call print_4_bits
1 g- o/ o$ [" Z( J5 r rol ebx,cl) b- t# M( W3 T/ P* i
call print_4_bits
' i* \! ^: s3 T2 x; q# p rol ebx,cl
% X+ X& Y, u1 j) s& F& Q# c call print_4_bits. k5 c. B" C: P+ A
rol ebx,cl
; H* F& H, U5 k, ^# z call print_4_bits
+ k/ L8 O+ x. g+ s- _ rol ebx,cl, e7 L. p+ n$ Q" C. O; s4 F" x
call print_4_bits
* I _0 r; C' \/ d+ c rol ebx,cl2 m' t/ L# J b+ [( t: w/ s
call print_4_bits
2 p' f$ P9 i* x" k rol ebx,cl
0 h( R! t7 X q$ K2 C8 g call print_4_bits
, k: w6 S" P: T, T1 B rol ebx,cl
$ U7 z( l2 V* k! Z popad
0 p# Q s2 v- l1 r ret0 Y1 W* O. k! G2 _4 b- p1 E
_32bits endp& e; ]' \) B3 n' Z$ F. I
;------------------------------------------------------------------------------------------------
* u Q$ L" R- A1 i2 g8 y3 u% C_16bits proc near1 F3 R7 i1 a {( P/ g% e/ E
pusha
4 R; Z( K7 Z. }0 w( o0 U- [ rol bx,cl
$ P( s! _6 \ @+ D1 | call print_4_bits
, C+ h m9 ]' g! c3 A rol bx,cl. R2 w. z- f6 j% s7 p) B1 {
call print_4_bits
1 ^: c7 T" r) P/ A8 z9 G- @$ ] rol bx,cl
% j4 y2 b5 x5 H call print_4_bits1 v" K. d& v: B3 V
rol bx,cl6 L. t9 ?. X* O4 N: u* u, B
call print_4_bits
" ]# y. t5 w% `+ F+ v5 ? popa
5 p) t$ N; p4 a) _, D ret
5 `2 a' r. H( j1 P( G, Z/ S_16bits endp$ R2 C' r1 u% Z+ C8 M
;------------------------------------------------------------------------------------------------8 |! c3 j- Z ^' u
_8bits proc near
5 _, q$ d3 b$ Q) ]2 b$ C pusha ! N' `8 N. C, z$ T* O) y3 P" [
rol bx,cl
& j3 A! y5 \+ G+ R( I call print_4_bits
. u- w/ j7 W! a- M" k& p' g rol bx,cl
8 l( R! a& M, J7 { call print_4_bits/ O) ^. X8 z' J5 `3 _
popa
! R2 r8 W; O% f& |" q ret
9 {5 I9 e! \5 C* y_8bits endp
; { m+ l# K" i" X) zprint_4_bits proc near( k6 c4 T0 O1 G. ?$ w1 c
mov dx,bx1 h3 H3 Z7 Z7 S! t, w
and dl,0fh% n c( R& H$ z0 l! B
add dl,30h
* e% w/ n; j+ z1 x! c cmp dl,3ah
* u. }/ p/ P/ q& ~ jb print
2 K- L) q3 n7 \ add dl,7
- m2 z% M4 e) f2 g; Q2 X# qprint:
, s, A# a, [) X8 D% P2 z' k mov ah,2
+ E" A) y' ^4 o: ~: @ int 21h( S+ S1 V# P9 L1 u. \
ret" P* q1 [3 E) Z8 \+ `
print_4_bits endp
: a1 K$ L- q# M' TCSEG ends5 q& L c: H0 B. J
END |
|