|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)& H6 c- h# H$ d) [
$ `/ a# X# Y/ V% m- {則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
4 S1 {, r! \% {8 ^1 N
9 A4 |& Y! \. V4 s( V宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝 1 s! v& }( C, p. _4 {
1 U4 t3 J- H. V: ?/ }.model small
* r" _" u/ b& n! f( \+ y' D7 L1 v.386p5 m4 j9 r* H/ Z8 {: m' g) ~+ A: ?
DSEG SEGMENT USE16'data' 1 Y% I5 h. A- r- ~7 t' v/ ^+ ?" [
, ]! o- ]$ B8 n
DESC STRUC
, W" r# F8 n- q- x1 z9 n LimitL DW 0 ! n8 p8 _$ A! {) p( H! F! |
BaseL DW 0
7 I, E- I U& |" ^0 H8 e3 |. f0 x9 D BaseM DB 0
. R- u7 d( V" |2 w# F2 f Attributes DB 0
2 i* T, e7 Q+ [% [2 p LimitH DB 0
7 h- Z/ j" r+ A* G; `$ J! r BaseH DB 0
" Y; ^( X; D6 u7 {- [% ODESC ENDS5 k; {' J1 k. q$ R, t7 D; \5 g7 L
3 k2 L/ ]# B# s+ |: T# o
PDesc STRUC, h- Z: V/ L/ J) F
Limit DW 0 " `0 G n7 V( r4 y1 Q" P( i
Base DD 0 9 m9 m# l3 x* X, U8 c
PDesc ENDS
3 i+ x5 s$ m( d( ]+ G! v& Y
! h9 k& g$ F& D; a$ cGDT_def Label Fword
0 ?3 u) A8 @! ?9 S# UNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0> x0 T0 F/ u) H+ F( C. p
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>, V0 m) C! t I5 @8 l
GDT_Addr PDesc <$-GDT_def-1, >+ V7 w5 ^( z0 a
- C. ?! b) k/ {. S
Maddress Dword 0
5 W; \% i% \) N2 N6 t7 E" z2 S2 h9 H7 ?; p; s7 W1 O f; |
DSEG ENDS ) z( ?% ^; H9 P- U& q6 J3 P/ D
ASSUME CS:CSEG,DS:DSEG
7 u9 o9 W9 i+ q% U- X
1 i/ l2 R; o& [8 C5 l C5 G. dCSEG SEGMENT USE16'code'
5 @( m: F/ e2 Y I5 c/ G push ds! l5 R, R; C" s4 B5 J
push es$ U# d, i) z! W- ^0 K6 Q* ?# {
push fs
0 i) R4 T$ j u push gs
( }0 a- t+ x8 G- C call big_real_mode ' M7 r2 U, w# q/ Z( D6 g S" l
call Get_Commandtail: W( B# |' B: i2 P" h' n' M8 A5 f
xor ebx,ebx* @! E5 X& y( \: M) w
mov si,82h
0 q/ W; I0 l- T Q9 t mov al,es:[si]
# [* S- v3 Q8 g$ a/ q. ] cmp al,'r'3 Y( V2 ?8 ?3 m$ Q1 n
je R! t8 e! L" l! b
cmp al,'R'
$ c6 _& u3 _. ~' X3 M' K+ K; s* M je R) A2 R, E- H& p! x. {8 J" B; ~
cmp al,'w'
. f2 A/ ?' E* m% ], k2 `* ] je W
`6 g% V& b) |5 `+ u z$ C" Y: D cmp al,'W'
- y8 q# I2 \/ ?7 z je W ' q% B! ?5 R% o* p
R:
8 _6 @5 [( v5 J1 b, Q mov si,84h
* s. `7 d; \2 t: r3 a" w4 ?; c mov al,es:[si]
: @5 i0 z9 ^) [& D; C/ y4 W$ [! [ cmp al,'b'- R( D* Y, o E3 y5 {6 |
je RBT
; k6 H0 j) Q; q" w3 }4 I0 N6 q% o cmp al,'B'# F9 H. P5 P. b# ~
je RBT! Q L8 L0 ~/ R1 b, P- z
cmp al,'w'
* ~+ f# E2 ~: F/ W. E/ j! Q je RWR8 U+ M! A$ z" t, Y, z
cmp al,'W'" \2 B5 P/ c6 N
je RWR$ g# v# |# [, y! K
cmp al,'d'
( ]: l) f; P% u; e je RDR! R3 E. v C' D' i
cmp al,'D'
& e) \. {, |. X$ O' {9 g y je RDR
3 x0 v% i; F3 {1 ]0 pW:
( D ?/ i& N% H( s mov si,84h) _1 Q; a5 V+ C2 Q. D& V4 j2 L
mov al,es:[si]8 F+ g- g6 `4 O$ J, f$ o
cmp al,'b'; R& k1 f, c# U3 d, L& b
je WBT
) L& r/ n" H& E3 }/ M! e7 W3 H+ k cmp al,'B'
2 y* y6 d) N) w( K( i% F2 ` je WBT% J/ K3 d; W( A1 {" Q9 a* a
cmp al,'w'& Q9 R/ A& G& F4 I/ h" {
je WWR8 T4 q% V. [* v
cmp al,'W'
- x/ b, U+ j+ y3 I0 W je WWR& M4 v& G+ Y3 R0 S
cmp al,'d'
. |* e+ \7 |' g/ m) p$ i je WDR! c* K5 r2 T+ q. X5 d* E
cmp al,'D'4 |" O; a$ D% X
je WDR
6 o8 R1 z/ |2 Y& H) v- A- ERBT:2 @1 i1 A! C+ q- y G( ? D
call PSP , m) y( Q$ E1 u1 L0 K
call crlf
% r: u( k! V; Q( s. c* T- {! W/ s mov esi,ebx) a, D8 }3 \! U5 T! ~& b
mov eax,fs:[esi]$ B6 v, V8 K3 |9 s# W
out 80h,eax% D0 a, W! b- t0 V. T
mov ebx,eax, @6 Q/ K4 e/ E7 l9 V5 o8 J2 q* C
call _8bits+ t' n) d+ ], d
jmp Exit
) |. N$ ^: z* oRWR:
+ _2 q8 O) R: G/ f- r call PSP 4 Z, O9 X( v# d0 s0 _
call crlf - o ]9 F3 B+ G% \) h A ~3 y% G
mov esi,ebx
$ h" F" \3 G+ V1 b mov eax,fs:[esi]2 u, W- G( E0 @
out 80h,eax8 \9 d% z9 O- p0 v* `$ i
mov ebx,eax
& d( g$ q& [" N( O call _16bits. @' x& B6 a7 `& d. i. z3 M
jmp Exit
- d, W! h. `8 ^- F/ tRDR:# A3 ~) \+ p R( b2 p. E! }) H5 ^
call DPSP 3 c- Z3 N+ t: }0 [; `5 k6 s0 L3 ^4 k
call crlf
* C& `* c) u; Q% r5 u2 g mov esi,ebx
0 v% g/ c' \& m% ]" B' { mov eax,fs:[esi]8 f( n; m1 X! L
out 80h,eax$ T: U0 a& U2 h( Y i6 H0 c
mov ebx,eax0 p4 |' B: M) w9 W8 b2 V d- Y9 e
call _32bits* L& a3 a, @2 f7 i, F2 Z
jmp Exit
. \7 E0 Y) b+ W$ y y7 Y8 C;------------------------------------------------------------------------------------------------
' |) m# j9 b5 [- }2 Q8 P& }2 eWBT:
3 p" n' a0 M* A- G, C3 c& r jmp Exit7 H2 d' |% d7 l7 p
WWR:8 f: m0 d& g8 e8 j
jmp Exit
0 ]' N1 p" _- X4 j" }: h& ~' MWDR:
$ O d& m- `# L, Y+ Z call DPSP
& R/ a& R0 x4 A+ }; D mov Maddress,ebx
5 q5 S( d9 s7 R7 L& N call crlf8 P. n5 C7 D: r
call WDPSP
" _* J7 v" j& h5 } mov eax,ebx
# h5 O* ^+ [6 a" s mov esi,Maddress
9 B/ I% g# Q+ O) | mov fs:[esi],eax
6 [" k; I( P2 m. V) L2 Z6 \ out 80h,eax
4 X4 m; t9 n6 @# O jmp Exit3 f( e. }* y* \" s
;------------------------------------------------------------------------------------------------
# }: W+ J w8 jExit:
W: a8 G$ [2 Y6 ~2 `5 Z* U call real_mode
9 m7 _. E$ y# u pop gs' J/ k6 G. x6 q o
pop fs* Y- S7 p2 p$ y/ R8 F7 _
pop es
9 p* z5 Q8 {. F' |2 r pop ds
7 l2 Q. I; }6 s: ]" m .exit
, H G# ?4 @& h9 n3 [, Y( D;------------------------------------------------------------------------------------------------
" B6 r& V9 h; o; a. V7 Mbig_real_mode proc near
# t8 f( L- i! S. h" o, E( t in al, 92h
+ b7 v; t6 Z& F4 H2 y or al, 002' ?8 ^. k% ] x
out 092h, al
2 I% b& E1 r5 m& N4 d- W4 l out 0edh, al
3 w; M$ [/ [) g( I1 Y cli
1 G6 k5 l8 R) t; o mov eax,DSEG
- j( K- G" t% Q1 S shl eax, 4: S1 z H) O% j
xor ebx, ebx- @ P4 U6 _8 W7 r1 `4 G2 q) U
mov ebx, offset GDT_def% _5 _0 r5 E' i; h5 e
add eax, ebx! v4 N8 Z! k" E) N' c' X; Z
mov dword ptr GDT_Addr.Base, eax' Z: N9 A/ [* f+ i) e8 _- j
lgdt fword ptr GDT_Addr
7 O# S2 h' L2 F/ O a* S# i mov bx, 85 p M2 u% T2 ~+ U
mov eax, cr07 U! L: l* W. R7 Z3 W# t# b7 N
or al, 1
0 j/ q$ `* S- n, {9 S2 d mov cr0, eax
' c2 J# j- Z$ \7 f$ x( i" S% K( } jmp PMod
) \ k8 G3 n( f* B: Q: `5 tPMod:1 L3 `" q- O; Y$ e0 g& U. l
mov fs, bx
5 D; n* W0 ^! q* h/ D! I mov gs, bx
( P5 y% _ m2 q# P mov eax,cr0
: U9 J1 q6 v6 j2 }; N/ J and al, 0FEh
4 {, i: R8 A5 y5 \* _4 \1 z$ x, O mov cr0, eax ) `: N' n' B q- w+ w4 }; C: A
jmp RMod* ?6 Y9 k+ j- s8 c( F
RMod:
8 K* v) i+ S* t9 y3 { xor ax, ax
& F* T; j* C J, }& X mov fs, ax. ~7 k$ N5 Z2 u7 Z: H
mov gs, ax 5 ^0 q }# f+ t4 Q
sti
! C; h) F7 R0 b( j0 L ret" X% e4 ^- P4 f$ j1 q8 s8 ~
big_real_mode ENDP( Z# J% ?; v% w) b7 K1 v
;------------------------------------------------------------------------------------------------0 ?! _6 ~0 X/ z! K& G; e: y
real_mode proc near
0 n( C/ z# j9 p# m in al, 92h
) [2 \: S$ q" k2 b and al, 02
6 P* `# I0 ^7 C9 I# m* p; K# { out 92h, al , [; ]; X9 p1 C4 D
ret
* [$ w2 U7 A) Q$ z8 m2 {' Freal_mode ENDP
, d6 `/ R/ w: I3 J0 K# r5 C+ @;------------------------------------------------------------------------------------------------
* w- I R" W5 p5 q4 l) lGet_Commandtail PROC near, J+ |5 s) `3 P
mov ah,62h
8 c% Q, H: Z% j: v3 \! j: S int 21h- h: k, a. H9 E; O
mov es,bx
; @; T$ R- q" {! Z; s9 W: l ret
9 d2 z3 f% B# ^2 C3 ]3 ]Get_Commandtail ENDP
5 ?$ a: { Z4 h% z6 P- {& N: r s;------------------------------------------------------------------------------------------------
1 [# ?1 L8 O. S9 A0 tPSP proc near
& ^3 h. K0 H. H0 @8 n5 H xor ebx,ebx
- ~' L$ t3 a: o5 z0 k) x mov si,89h
; a0 U( q( ?. C k mov al,es:[si]
( ]5 I3 s; [2 Z E call Change: G8 J- S; ?- L6 l3 ], I' L9 `
mov cl,4% o5 T9 X' b3 g0 f d/ q* H
shl ebx,cl
( \1 L+ J' @% R add ebx,eax
$ o! o8 [5 B& `5 [# w mov al,es:[si+1]5 I+ n' F* u2 c- S' f
call Change4 {' |% `, F) E0 _; P) _. U
mov cl,4& U8 l6 K. J5 m9 q. ^( ?$ h
shl ebx,cl
2 q3 M) W8 a* f" r add ebx,eax
5 h( R/ P4 \) ^0 I+ X) z; s+ a mov al,es:[si+2]6 y* I5 }; o' v; m- s3 j
call Change1 W4 ], S9 E/ H; l" `. H
mov cl,4
. }( k3 J- `- e; Q shl ebx,cl9 \% X5 E, {- M( F& B5 S
add ebx,eax
7 ~- M2 U! v7 q5 ~ mov al,es:[si+3]
" j- o5 ^) z; ]( g) o( E+ [7 G! o call Change7 Y6 `* M3 |( r4 I
mov cl,4
0 O3 w* f$ [7 ^ shl ebx,cl
# [) [$ |1 p, P" k add ebx,eax
y! f& W: ?+ o3 x! X3 {* } mov al,es:[si+4]
0 c% }" t9 e8 K6 d# W/ U/ b" Y call Change
- t% Z: m. x3 `) Y mov cl,40 ~" S6 u4 m4 w U1 d
shl ebx,cl
$ p8 J4 L) K$ b `2 L1 J add ebx,eax) n0 O+ Y3 A! V6 S( |- ^! P5 L2 V
mov al,es:[si+5]# j* D3 E5 j2 c
call Change5 W6 m3 u- E( r' Z7 |( L7 ]
mov cl,4
! M0 p$ _/ }) k shl ebx,cl
- e4 J: n0 N. ~$ c# J% V2 z add ebx,eax
: ?. g( q# R0 U! s mov al,es:[si+6]7 ^1 Y- K) y. Z1 m- X! v, U& U
call Change
`' V/ `2 \5 `5 m g mov cl,4
2 Y# p" ~/ l( s, b7 c& d shl ebx,cl5 Y/ a/ C/ x- {/ T9 E$ ^4 s
add ebx,eax6 D% a4 R F2 ~% ]
mov al,es:[si+7]
) O% ~6 Y0 H8 M. R# J: d- F9 ] call Change# a( e5 t* i7 Y1 Y
mov cl,4
0 t/ Z$ Q2 K4 Q9 n7 s4 g shl ebx,cl
* P' D! `$ |- A4 q8 A Q# r q- X add ebx,eax( [& L. |8 w, ^1 O3 g
ret9 x8 X* D7 N8 I+ H5 t) R' `' _" M
PSP endp
) n% N( y! g0 u5 A; ~, D! O;================================================================================================
" ?) s- j+ g6 C1 |* QDPSP proc near8 [' a5 a$ r0 M/ E& L8 L
xor ebx,ebx) T1 F& B1 V4 d3 P
mov si,8ah
, g3 u* Z/ k2 G9 d) C mov al,es:[si], T: y0 |. S7 j3 E0 U, K
call Change, F V1 S& b' t* y' }5 L
mov cl,4: m( q5 H( P+ G+ A+ ~" {: g3 i
shl ebx,cl
) h$ c0 P! a. q4 F* t8 v add ebx,eax+ ?9 t, B) \4 M- t! Z8 _% c3 M+ w
mov al,es:[si+1]
" ^) m2 L7 Y- C+ J4 Z) @5 f' P8 S call Change
! H' }4 b' i6 B4 ` mov cl,4
- z; w0 _5 ]' F) ]" ?* Q shl ebx,cl% P/ }$ q, Q/ H
add ebx,eax
! s- f9 [* A9 g( w+ F6 O2 y# z mov al,es:[si+2]" E! {" f& l: h7 B! f; Q( {5 L& R
call Change: h! ]( a+ J- @5 }1 B! c/ q( Y
mov cl,4
3 T' m$ U7 V- I! D9 s) C0 m shl ebx,cl
` i" i% R: A2 e E. _* O add ebx,eax
1 Y9 j4 [& ?( i. [ mov al,es:[si+3]
8 |" V5 L ^! {: e call Change$ h/ |! y/ W @; p3 P0 P
mov cl,49 g0 p: {7 @; F2 `7 P! [
shl ebx,cl5 [' Z0 b$ ]7 `6 t3 {. F
add ebx,eax: ~! C* e( }2 F' Z4 E1 f( C
mov al,es:[si+4]
% j2 ~6 A: v. @! P call Change
7 ^1 e+ B0 |" O mov cl,4
- c( P& k$ |* U7 G3 K shl ebx,cl, u0 i; Y" Q1 q. W* u
add ebx,eax
, K. S6 J3 }6 X' B mov al,es:[si+5]
\4 ~* x" Z0 }/ b/ ?5 b call Change M& C) t7 m1 r- A' R4 ~
mov cl,4
' }, x" H: l$ S- m6 g0 R9 } shl ebx,cl
9 V" c3 I' C; {* u- z- M0 O add ebx,eax m7 v' R/ R% K0 v$ {
mov al,es:[si+6]
* L- L3 X1 K y% K: F( Y8 q call Change
' t& }7 B7 O9 m6 r mov cl,4# h; h) m& f6 e' I, u- \' m
shl ebx,cl4 {2 t' w+ M8 B1 [9 A
add ebx,eax
8 X% i0 U2 N1 K; {" a1 g; \ mov al,es:[si+7]8 T! y$ o+ l6 s' @
call Change
+ _; T4 J" C) ?+ `& ~7 w! s% [2 n4 X mov cl,4
* M5 I/ S+ x2 z1 E V) C2 d shl ebx,cl5 t+ c7 B; r* H% t5 t
add ebx,eax
9 K* a; W0 s& D( X8 ^7 ~( J3 w ret
4 q; W( M# I" oDPSP endp) f# w, L s" y5 J& X
;================================================================================================! l, g; _ g2 i" ]& ?
WDPSP proc near* C D8 W: c- h8 o
xor eax,eax
0 }1 S2 e1 I8 U% ` xor ebx,ebx1 n3 q5 o' C* `0 @$ p. v" ?# m: n
mov si,93h' X: g# F( b" b; d
mov al,es:[si]' I: c5 v6 G ^' f# J6 P* p
call Change* ]7 ~5 p, w" [& {3 E& @& d) N
mov cl,48 ]* Z1 m5 B3 Z+ J' D3 E$ U* Q
shl ebx,cl7 l: k4 W8 c. c! ?8 j
add ebx,eax2 x/ @* ]' `1 O; U1 E7 l
mov al,es:[si+1]
3 V7 W9 T( W0 S% @$ A; o call Change% h& o. Z& x p7 u+ r9 ]9 l# E
mov cl,4
2 c) m; f; w7 H f% ? shl ebx,cl
u# [5 [) W9 D; t$ w) Q3 b add ebx,eax
6 M/ `, u7 a8 ]& ] mov al,es:[si+2]! l) X* A- v0 N% N" C. A
call Change8 O+ p! d/ `% c
mov cl,4- p( J8 A* ^! N. ~7 E2 T
shl ebx,cl
- _) Y0 Y0 q8 r& r! s+ e+ V& K add ebx,eax4 [$ g# \. [" d% b+ C$ l( U, E" R
mov al,es:[si+3] S9 h/ u! n1 `3 A+ Z O- N
call Change- q6 E' P: e8 j: U% G4 N# C/ L: s* k
mov cl,45 q5 }7 T4 V W4 {4 k9 Y
shl ebx,cl
. u; h# |. D. x add ebx,eax
8 d' n$ K( B9 B( i5 S. A mov al,es:[si+4]
3 p( u; g/ H% y2 W call Change
6 `3 T, i0 ]) ~( e C- |% b mov cl,43 ^6 \# b& X& d, F
shl ebx,cl
! l; A$ `5 O* A' ^* j6 G. S add ebx,eax; g- D5 K' n4 a# k( L0 }
mov al,es:[si+5]
4 h, y$ B h9 W) P) K( u6 L call Change
: m$ [" m5 A5 |" K% S( Z mov cl,4
8 f0 z1 m4 V) C8 l; g2 _; q shl ebx,cl
4 G v2 N+ E, o6 K+ @; d! ? add ebx,eax4 K% M% F8 Q& C
mov al,es:[si+6]
+ ^, K# O$ ?; T- M+ X0 M8 t U, E! F call Change. ~1 ~ ?; k4 {& t' z1 q5 n9 R
mov cl,4+ a0 \$ e$ f. G. f/ d+ T/ s
shl ebx,cl% }0 m: ^' Y& ]+ m
add ebx,eax3 u* n7 c+ Z# D @
mov al,es:[si+7]
5 r& i# ]1 W, f call Change/ i! ^- P% R: J4 Q
mov cl,4# T- Y3 f# @: b8 [1 F6 O: Q
shl ebx,cl
. ?4 h, a; D* }' d% i add ebx,eax
O; l- V" S$ v0 \ {3 x5 _ ret3 ?0 S! P# E# n) t2 ~
WDPSP endp8 l/ E( v. j" C2 Y+ _
;================================================================================================
8 L# F6 z! e+ |3 A9 ^& [. PChange proc near5 p( r2 m3 f' P
A:
+ f3 @6 i% S- M' C; X$ ^4 y movzx eax,al
! I" d$ Q3 y, p! `( h mov edx,eax
, v- N6 Z: u& c; S* s; X5 f- m cmp eax,'0' % E9 o) z) j: N( L. H7 Z
jb A
5 s" }6 r8 |0 `7 c' R @; o cmp eax,'9' C; E( B- u' _. C
ja B4 h& c+ a! s7 j! A$ F% r9 b( Q
sub eax,'0'2 b1 J$ N3 Y% n! t! b
jmp short E" R* ]. V. s9 n3 G% ]
B:2 U/ J. K* J* b9 U; S/ d( K' o$ {
and eax,0dfh
( m" S* a( @; ? mov edx,eax4 @7 k, }1 u. T; T I
sub eax,37h
4 q" O1 e7 X4 Q* v5 J; X cmp eax,0ah) d5 x/ Y. u" T, u4 E5 ]
jb A $ A9 ^' T' O. r- l' `1 ^
cmp eax,0fh, K* R# E. ~9 n8 p, G7 v" z
ja A - u: Z- j2 ^7 M9 J" G8 D# P
E:+ y2 z' [- y T2 Q) f7 ^8 s5 m+ S8 w
push eax
- y% a1 X& f& q$ v! Q" z call PRT
& z: Q6 u1 Z; A2 O5 c pop eax& x V1 H# q( \2 h
CExit:) a6 F( |. H) j
ret
) m" w" ?- J" y* ^8 d' A0 T: W$ OChange endp
& _0 T I4 \. E0 [+ ];------------------------------------------------------------------------------------------------$ P3 @( g* o8 l! W- V1 ]& O
PRT proc near. _- H1 N7 b9 M1 U6 G- i! ^1 w7 R
mov ah,02h
1 h( q5 B! d7 R' R int 21h
, J( Z; |# X- h5 l- k7 S& M ret
* }' {0 l6 V& m7 tPRT endp2 s+ Q w, E7 ^2 V! u. Q, n
;------------------------------------------------------------------------------------------------
U% |, ~, |# I+ M% ]crlf proc near% k( d9 l. ?+ ?
mov ah,02h7 A3 `4 U& s+ U. I
mov dl,0dh
( K5 P+ P. O$ q9 f- ] int 21h
$ Z% _5 r# \' @- Z& W+ t mov ah,02h
7 j( t1 G% h/ `) i% M7 v mov dl,0ah
7 w' I. T) _0 W8 M" w6 Y int 21h+ z, x$ A' Q' j$ w, y# U6 Q
ret
& F' J( k' }: ` M- s% v& gcrlf endp
' c0 w! ]& w# w;------------------------------------------------------------------------------------------------8 S* z" \! S7 a+ p" {
_32bits proc near
0 Q" x* O+ [1 [& x8 ] pushad6 x. q$ F, E3 [5 D- V0 a
mov cl,4
7 A9 K0 U$ ]! G# Z rol ebx,cl6 G$ {1 _3 P1 Z4 R% V
call print_4_bits
# t4 y$ A/ J; N) V3 C$ V/ O rol ebx,cl
, W C( q x; l, u7 @/ W/ g8 A9 S call print_4_bits
1 o5 Y9 m r1 O rol ebx,cl
' ]4 F1 K$ ~3 q. e call print_4_bits& j" u/ b" j$ A- w; W
rol ebx,cl
. _- v2 M C( C) Q2 \9 e call print_4_bits
0 v( n+ r0 C' o rol ebx,cl
; I* B g4 \' K1 q call print_4_bits
0 L* I# v0 ]0 X) Z7 c rol ebx,cl
5 V! {+ b4 s5 p8 F5 D call print_4_bits, O' D7 A- c% c, U$ p8 E
rol ebx,cl
& x. H( M0 p+ N( f8 [9 J call print_4_bits
9 L2 b; g( {# z9 U7 H! Q: N }3 v' e rol ebx,cl' I# K; K) l8 W) S7 a' k0 t
call print_4_bits' z2 A0 g* u2 u" q0 H' x8 W! P: Y
rol ebx,cl
! Y: Z+ Y9 _& `( @ popad* R4 Z( P7 W; a: f% d7 L3 y& u
ret
. a/ A9 n `5 F1 q. b_32bits endp
) s7 b: r+ \! n;------------------------------------------------------------------------------------------------
/ P; d0 t3 _0 F& t& W& K! l2 P_16bits proc near
" Z: R2 y5 I3 {* w) A1 `3 K pusha # H0 N. G" T1 ^
rol bx,cl5 @7 K. l( R6 k+ u5 V+ b& @
call print_4_bits
% \3 [% h& s5 C* k, j rol bx,cl9 m" R+ r! }: t, L
call print_4_bits! a* q6 i! p- I# I- {
rol bx,cl8 L& O- v, F$ R, v2 q) Z, T7 P
call print_4_bits
: X: R/ L2 C) a9 x) o {" V rol bx,cl
$ R' u' F' `, T* f; B8 h call print_4_bits9 K _" v! w6 m2 s4 \
popa& e2 T: W6 ]4 d# ]$ B8 v) [& l
ret
% n& k5 k' `( x3 d' s0 |3 o: j_16bits endp! y F+ p T" h8 j2 U" y
;------------------------------------------------------------------------------------------------
+ `: {+ g+ @2 F; y_8bits proc near
: p2 p# V1 |% \# t2 F) ~6 b pusha ; Y. r! y9 N& C- e; R
rol bx,cl
* H5 t. H$ b5 k7 g call print_4_bits
# R3 \6 B$ L" A$ p4 F3 \% ]4 \6 }; G rol bx,cl9 s: L2 E. k2 T a j
call print_4_bits
! ?/ L8 Z' Q$ J, r/ B( a' A' h4 t popa
: ~' \$ t' b8 H; X ret
" w- R1 K( @7 O3 B7 e h# i3 V4 C_8bits endp) q8 z$ r2 Y; K* K1 Q) I' x
print_4_bits proc near" }) l( q k2 i. R$ s. M
mov dx,bx- O- z$ I, F/ q' `
and dl,0fh Q- g0 L0 Y" D, `+ w! h# O
add dl,30h
, {% u& |6 @3 ^9 J& d cmp dl,3ah1 f2 ]( g, T9 a! [! R' a Z2 q
jb print) c4 P0 w) \; l3 Y$ H$ ~) i$ ?
add dl,7, O2 @2 b% k& v- S8 }) G
print: . G( u, C; ~; ]9 N% Q# W0 Q v
mov ah,2* f6 t& W m5 |7 z
int 21h1 l( i$ T; Y# }3 J( ` T$ G; T
ret
0 z) L+ @$ r1 t; @0 ^print_4_bits endp
% F2 b% m# I3 h" A4 M2 b+ F+ G! tCSEG ends# `! z5 f- ]8 y5 p7 D0 K
END |
|