|
|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address) r, u8 {; q8 d# g) P( d, d; w! |
8 u2 Q8 ^ q4 S
則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'0 Z( I; c; P e* N
" e7 R1 s/ j4 |* z! m6 H: f宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝
5 q! [% n9 J$ m# q) J
+ L' X+ c, f1 Y/ }+ R% q: @# ^.model small
6 W7 R ~" s* U. U.386p
$ f# w, D/ a" x+ y6 B1 X, j# |, Q! S- VDSEG SEGMENT USE16'data' 5 B- H- ?/ U7 i
; C( ]1 V8 D% s* xDESC STRUC2 w. Y4 D; z" i) o
LimitL DW 0
' t. F5 {# y) Z, q- r6 p# p BaseL DW 0
% U) x2 @' N( Y- F0 I! b% x BaseM DB 0
5 f& `0 A5 b+ l Attributes DB 0 2 W$ d( f3 F% `$ B8 n
LimitH DB 0 8 u2 {0 s1 {- M# R( z
BaseH DB 0 1 X" `' D6 D9 R& z" o' j. `; ]: \
DESC ENDS
2 J) w8 Y. e* n3 X" m+ Z- F- k
& s4 b5 ]( v1 N. M4 sPDesc STRUC2 k. L5 x8 e$ @! @$ ~4 u
Limit DW 0
3 J. Y; a7 x% T Y% V7 C0 X Base DD 0
1 J, B$ A! A1 ^% ^PDesc ENDS1 n* I! M* J& j* W" C3 {5 m' `
( z7 v' @" h* J0 v0 `$ U$ N; t& E* dGDT_def Label Fword
6 V1 z2 z9 o+ `9 PNull_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>
3 r7 H- _% _# Q p& rData_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>+ G# m& w& u" G- X5 O* v: c& }
GDT_Addr PDesc <$-GDT_def-1, >
1 M4 v9 A$ _6 l& D+ J, I9 I
. {" F0 m# {" r7 L# aMaddress Dword 0
( X& I. p. f$ c+ K; [; r+ q3 v8 k" e4 M1 z% U" O! C
DSEG ENDS
w7 \3 W0 ^( \) D8 W7 Z5 @ASSUME CS:CSEG,DS:DSEG
6 S5 U1 Q# k6 X0 p3 s4 l* h0 `2 y, E1 C+ ]9 x* g6 e
CSEG SEGMENT USE16'code' ' S! [" S4 V: u1 L
push ds, n0 S# R) F6 y
push es: c4 ?* w/ ]# u( I: j, H8 {) v
push fs
7 [, C4 R+ s/ [2 ?5 w- W" X9 C push gs1 e$ c3 b, _# E& V: ~0 ?
call big_real_mode 1 o/ G& B i3 ~3 [
call Get_Commandtail
9 j- a2 u: V" S0 g) x* e( f& ]8 T xor ebx,ebx7 E7 a( z7 Q, B$ P' j$ {- l
mov si,82h9 ~& W) Z4 E3 p$ Z5 n7 L) `
mov al,es:[si]
2 m: K# E/ K( ^ cmp al,'r'$ m+ ~. V6 i O% t( _6 ~+ f- _$ H/ L
je R
4 M$ V% @' t- C% v- h cmp al,'R'8 s4 u6 P* i5 a+ l* o7 O- \' C
je R P" ?# l( a. T9 Q. `
cmp al,'w' U$ [! s! E8 B2 u% M7 P: [) P
je W
7 `" E8 }+ v5 R0 l4 e* C4 I cmp al,'W'4 s0 t5 `8 C( ], g* g, }6 X; J
je W 7 V5 h2 w' K$ f" j
R:
) A o* v: J$ i; m: p" x mov si,84h2 F# y8 F) U* l g/ M" K2 o
mov al,es:[si]
% J* u7 K7 s- b; K. _ cmp al,'b'6 x q- j! K8 \% J# z2 p
je RBT
0 o; G# P; A1 Q/ A+ Y" P$ U( L cmp al,'B'2 y6 E; d* _: k
je RBT# [! k; K% I1 i; `
cmp al,'w'* H; T6 U3 @4 Z7 w {; F _
je RWR
1 b$ k! |0 I7 R' M2 P* P cmp al,'W'0 E6 u* p' b# e/ k P- g
je RWR
0 `' y" h8 R9 w cmp al,'d'' F: V3 D( ?5 p6 q; [* O+ r
je RDR2 c3 H- a& r3 e6 t) C
cmp al,'D'
; Y- f) ~$ `5 B je RDR / `, h* I8 w4 X+ j' `- k$ ^! {9 P9 C
W:
5 z1 g# P- T D1 ]5 p: Z, ? mov si,84h. m I. ^4 c& D0 y# G& ?% S" E, X
mov al,es:[si]
# H2 f; F: v& q8 k( d cmp al,'b'& J [) Q/ I+ v" q0 W
je WBT9 n( v) I0 `7 S$ P8 Z( ?6 ^
cmp al,'B'6 R9 j: v. l: {
je WBT: M& i. S/ j% D5 O: N0 P. |
cmp al,'w'
' |8 C: `9 ~; ` je WWR
( E6 P* h5 y) @0 E6 o cmp al,'W'
$ ?4 y$ L$ R7 X; b je WWR% \- \7 @9 a. z' ?! m
cmp al,'d'
% B5 a) B: C b- b* ^ H je WDR9 i5 _, X# @' L& X' G
cmp al,'D'0 o2 p# L, u! v, \8 n8 n
je WDR
% Y/ d( y0 y% z @RBT:8 X! ?4 t* ^( |( _& i8 e
call PSP 6 g' R5 s9 Z$ r( u
call crlf
3 E, p* i) @8 y/ V% H# F! | mov esi,ebx8 Z3 P+ Q5 y+ X
mov eax,fs:[esi]: d: E6 D& }$ T( G. Z# o( Q
out 80h,eax
0 ~: W2 d {8 e9 b& P3 L5 L mov ebx,eax9 }# @7 }5 m4 T- h7 a
call _8bits
% ]2 p8 r+ Z7 O7 Q jmp Exit9 b7 ?, J* ]5 C' O$ z/ u
RWR:
\; S2 ~+ `3 d. r5 T call PSP
! G; R! N+ y: _+ L& l! `9 \ call crlf 8 Z h% S! X1 x3 N
mov esi,ebx
6 J( N" e6 s, w9 s mov eax,fs:[esi]
+ t: |9 H; `$ H. ^, _/ b! N- u+ i5 m out 80h,eax9 P+ ]- L1 w3 ~( M6 M
mov ebx,eax# _0 O+ c5 Q5 ]8 c" O8 I
call _16bits6 \1 {) w8 W8 l: V( d+ [) ?! W5 A8 n
jmp Exit
7 B) R3 D. J) J, R6 @; s# o" VRDR:
' R. H0 G( V i. [ call DPSP
4 L4 ^ U" D2 w) ?/ y. w call crlf 9 C$ C1 C) @: l. y7 r7 f
mov esi,ebx
2 S1 D0 }8 j/ K# u" ^ W' p9 ] mov eax,fs:[esi]
+ G+ C/ x P! n% y$ A0 O# Z out 80h,eax) M: R: g3 p( z& e' G g
mov ebx,eax; c0 H- A$ E: r: J, p' B
call _32bits
+ }8 S* E6 ~9 Z0 l; Z jmp Exit
' q) I, Y' l( C$ e;------------------------------------------------------------------------------------------------' p& C2 L+ \; F6 `$ H% ]
WBT:
. \( {& C9 r) h! u" Z jmp Exit" l7 N( D4 b3 s; g* Q% C
WWR:0 z: o$ m0 L4 D$ Y% |7 u: z$ B
jmp Exit
/ ?# q% G# |! k6 DWDR:9 @) `5 C; b; M8 m/ s/ v9 y2 m
call DPSP# X8 [0 Z; f6 m# R- Q
mov Maddress,ebx / H5 x+ g* E: G6 S2 `7 {
call crlf+ r- q% O; ^; o/ J* T4 ]% H% z
call WDPSP% c f. T6 T) a
mov eax,ebx9 d4 s! H+ E4 i. P2 Y9 }* v/ Y7 s
mov esi,Maddress / Z% L2 n8 f, n
mov fs:[esi],eax
$ a, r2 `) w* x/ A5 m out 80h,eax
% B; |% W; H% }, @7 e F jmp Exit
. t' `5 S/ @6 _0 C, M V;------------------------------------------------------------------------------------------------
. `8 ^8 T0 A: I. i* l) g5 X% YExit:6 y8 y# z/ C" V8 _
call real_mode 6 F; T6 L; |# z. K' D. `
pop gs
) S9 I+ S: {. ] ~ pop fs
- @. P( @0 l# ~2 I4 m pop es
4 y9 F+ I$ P% J, y! J pop ds
# o, r( ~6 c' @1 L8 k3 b" n1 x4 V .exit7 a- j* _" D3 {/ s" ~8 R. M
;------------------------------------------------------------------------------------------------
: D. _# L. W) d% ^8 x1 |0 |big_real_mode proc near% ^. A4 o4 y' ?# ^) O2 `$ ?( ^
in al, 92h% ?* h% S" Y% r- L1 w8 e0 Z$ E/ M
or al, 002/ W6 ?2 O/ Y6 E: Y0 @
out 092h, al
8 _" Y5 h0 \; k* a j/ d0 @ out 0edh, al' l' t# N0 q a: e6 e
cli) `: o( P+ s: i" H6 O6 H
mov eax,DSEG
u4 P) X9 L4 c9 k* m( P% S shl eax, 4
! y: y& y+ m9 x: \. q xor ebx, ebx
: N+ c T" Y3 k2 x" W mov ebx, offset GDT_def
- G( \; w) b% V/ E% Z- y add eax, ebx- d5 W+ k; Q5 ]4 K2 q
mov dword ptr GDT_Addr.Base, eax
, X0 N7 s; j- W+ _, D9 j* W1 G0 G# N. { lgdt fword ptr GDT_Addr
4 m' c- S; y5 ^) s$ t0 b2 { mov bx, 8
5 P" b' R1 f7 N, |* K. N1 S D mov eax, cr0
- n6 Y7 [( i2 L: T or al, 17 ~4 n# z& E. K# f& M" o- k
mov cr0, eax& c- [8 w8 ?5 P2 j
jmp PMod3 [; E' A( j# s; V+ \& U
PMod:0 i9 y( }. h9 T7 Y1 ^
mov fs, bx
9 _' K6 S* _/ u r/ ^2 j; P0 b% r mov gs, bx
8 H' H, s: v2 F# T, A7 v$ N mov eax,cr0
8 O- f) M9 f% {; S4 T+ w7 ? and al, 0FEh
& U: a- S+ x/ b- M9 q, T mov cr0, eax 3 e. `% Y+ E% m/ {% j: O. h( E6 y
jmp RMod
+ c1 @! o5 g8 d4 M2 h1 `. g# }RMod:
$ [( o4 ]# @' M8 w0 Z: \, C( } xor ax, ax; P4 U- y$ z4 z- W* b$ t
mov fs, ax5 L/ `3 r# F- T$ g
mov gs, ax % t. u3 |5 M9 Z( d# `: M& A3 R/ z
sti
0 Y1 ?7 f4 Z* z# S! d ret6 n) h9 W) M$ H! t
big_real_mode ENDP& K" }1 S! c5 ~7 K7 q* d4 j, P
;------------------------------------------------------------------------------------------------
/ A8 F. z% k. G. F" i, dreal_mode proc near
# i: D/ {% I3 G. V1 D3 U in al, 92h' [5 R( V% r- z5 b( Q- `) p
and al, 028 a* }$ M' A& i% u2 {2 T- G4 T
out 92h, al
& B8 k4 h* e' o1 A ret
) h* L9 d) S2 dreal_mode ENDP
/ C& r& g3 y: r% Q& q% X1 S;------------------------------------------------------------------------------------------------- H$ ^' l& \; X' Z
Get_Commandtail PROC near4 m" t2 o' @6 m6 U+ [# ?" j
mov ah,62h
$ R3 y3 d& f) V' ?9 X int 21h$ ] V M, l8 Y+ ^! k
mov es,bx
$ d3 j# m x# G$ ^% @3 H( W; W ret7 d( k( T) `/ c0 h8 o+ J
Get_Commandtail ENDP 6 G. o% m [0 Y9 g6 a' S! C- @; a) {
;------------------------------------------------------------------------------------------------* {9 f; I6 p9 D1 p$ D
PSP proc near$ ^4 I9 [. _% h
xor ebx,ebx
6 w' |6 O1 i1 K$ G% G/ n! w mov si,89h
6 b# u4 Z: w8 {/ T' a1 W mov al,es:[si]' K8 X8 G0 w) Y- [
call Change: P8 o4 l9 ~0 ^# Y/ p' @
mov cl,4 M* q7 J% L# j
shl ebx,cl
6 r- H, a7 I2 X/ Z% L9 Y2 G add ebx,eax
7 x" k0 F& w+ U# B& t& y mov al,es:[si+1]
) M( r: h) n# `- t* Y7 c, R. o \ call Change# n) d7 _5 O) ], v) i/ X2 [0 G$ ]
mov cl,4
) K7 @* ?/ N% V shl ebx,cl
/ ~! [& e5 K" S8 c( N% j add ebx,eax# K7 r4 T* O0 I
mov al,es:[si+2]$ n! P; ]* E5 Y
call Change
3 E% q4 x& v4 [% u2 w$ k& r mov cl,4" h: Y& A7 q7 f: u+ F8 _) Y7 r
shl ebx,cl
# J5 e; D5 t7 j% e6 Y* g add ebx,eax
7 c( Z2 V2 C# H6 w. y: z9 Z mov al,es:[si+3]" {& }4 O" p V9 z8 [5 O! ?* W7 ~
call Change
5 x7 c) K8 |- E% x: A( S; q! ^/ k( X mov cl,4
( J0 u- b5 t: W, s b, V$ I; k shl ebx,cl
0 K+ |5 ^7 S( e5 o1 H add ebx,eax8 f9 V% w& |$ p' p! ], O
mov al,es:[si+4]
1 }2 [' B( B `3 q2 v2 H3 M call Change
7 P0 V* ?3 r% j. i* R mov cl,4; d( S. z) }8 I% \ @- X# A, K0 `& z. l
shl ebx,cl
& v" \) P: [. E! M/ d" s/ ]- V add ebx,eax
) |8 }% k& a1 k mov al,es:[si+5]
8 @5 i% ~$ V7 q( d7 v call Change
3 X& E$ N3 ?$ N) [# @2 p Y mov cl,4! p0 P+ L! K3 ^+ y9 {- c2 w
shl ebx,cl, l+ T1 t8 p; [0 k0 P8 l
add ebx,eax
0 h/ T1 M' e+ [/ G$ l; m# k6 e mov al,es:[si+6]
# ?! u, a/ q; u# x0 ] call Change
, }4 Z, h+ _* p8 u mov cl,4
7 N. z8 t2 B1 A& z% L) o+ d shl ebx,cl
f) ~/ Y# T$ Z5 ? add ebx,eax
% n# b* L8 s- O1 z# R# @ mov al,es:[si+7]1 J5 q3 c% W0 n( T
call Change
. b1 K. |: ~' c. [! J9 m mov cl,49 N8 u# o) K6 I8 A
shl ebx,cl
% ]8 v; d) }: c$ ^5 t, h add ebx,eax
: Z: s, V B: c ret/ i* J8 ~4 @4 N
PSP endp
& B) r! q( b9 Y" Q;================================================================================================
5 G9 u- I' a" s+ A2 t, |DPSP proc near
5 ~) v5 |3 V3 ]! q7 ^6 C xor ebx,ebx
$ v( }9 W) @( z4 A mov si,8ah
% p4 V6 g$ O- Q- Q; ?- ? mov al,es:[si]# N2 u& ^) w5 O5 w0 l7 O5 m
call Change+ I0 y2 L+ _4 s
mov cl,4
3 v* H& q" }0 t& s shl ebx,cl
7 L0 p2 I2 m9 N2 f3 u4 C; i add ebx,eax2 Z, D; ?& b f' \
mov al,es:[si+1]
+ ?% c3 i1 V: A+ t4 A call Change
3 ~ p6 U/ I: ^' w mov cl,4, Y! k5 H7 B! {2 r' U
shl ebx,cl
8 Z5 E5 y! m" V) J, x; n add ebx,eax
$ b; U! o, a: ~1 u3 j mov al,es:[si+2]1 i. o& q$ u8 N
call Change( N3 s* L0 @ q. X
mov cl,4
+ A# `/ U6 H0 G shl ebx,cl' h/ L* |0 q! {9 W2 |4 [
add ebx,eax$ {9 w n$ k# L6 b; w! B! K
mov al,es:[si+3]6 ?' i4 G3 b% U6 u# P
call Change
" j$ a4 D3 y1 M9 H. _1 H$ ~* T mov cl,4/ s" ~1 z. z& |4 i3 }' a- P
shl ebx,cl2 ?7 i2 {+ U; w' W! U
add ebx,eax
+ X- x: I2 P3 R: K" b0 q mov al,es:[si+4]
) E7 I M M* E, H$ @ call Change! I1 g" C# Z6 A( s" n6 W: {
mov cl,4
, Z( m+ y/ v, B# J5 v* w0 I6 i# h y shl ebx,cl
! l; ]$ ]! F. c- @: [ add ebx,eax# ~( D) \+ ]# N
mov al,es:[si+5]
9 k2 i1 G1 U! ] call Change: [/ m& I1 U7 @' [3 y
mov cl,4
* w, [+ ^, Z8 O shl ebx,cl
! z' B$ W7 f9 X0 X add ebx,eax, l" M$ X h; s. \
mov al,es:[si+6]6 [ y+ A/ G' D$ c! P) ?; m
call Change8 e! c' {8 U7 R9 v& H5 \% I% L
mov cl,4
" y4 q' L/ V0 u& N/ M shl ebx,cl3 v ]7 ~6 [- [
add ebx,eax" ?0 l/ L1 }$ b* w
mov al,es:[si+7]# `# d3 K! K" [9 |
call Change: ]* d4 h5 a0 X
mov cl,4# T' o1 f3 Y/ J) P1 `, d
shl ebx,cl
+ r" g8 g# H" h0 ~ add ebx,eax5 C. o0 s2 ?$ h5 E/ [
ret
7 k0 t; X* u/ f% gDPSP endp$ ^" J- u8 V9 ~# S
;================================================================================================( E3 n- a+ e- W8 w- x3 H7 r
WDPSP proc near
+ T) k) C9 R3 i2 X( T xor eax,eax: s. s) E# D. ~9 C
xor ebx,ebx4 u' U- w; h- Z: g" _
mov si,93h8 U. C$ C7 d% h( {) w
mov al,es:[si]( j3 O2 q5 X% a
call Change
3 F7 t. H' }# D) O mov cl,4
+ A2 C& n) V. }8 e a shl ebx,cl
/ }" o6 E) H0 w5 j3 ` add ebx,eax
/ z! T& H3 O6 Z% o/ G5 P mov al,es:[si+1]
* z% [, e9 \9 P4 x4 n call Change
( `) P+ r& G9 j) W. g# A3 o mov cl,4
* [! N% V8 G( g$ I* Q; g' y `9 { shl ebx,cl6 Y( t9 d6 _% z
add ebx,eax$ {3 M" o/ ^4 a/ [. K
mov al,es:[si+2]* e- u+ l( X8 ~0 r2 ?. a5 ~
call Change& t& @, s2 ]% a! ^' e; W1 U
mov cl,4
) P1 W+ J8 ?- ~: n, d shl ebx,cl
+ P0 @9 p8 O6 K, q- J- V add ebx,eax
6 I/ {4 t' l) W% H. L mov al,es:[si+3]# W7 ~. V6 L7 m
call Change
$ o( ?7 ]0 A w s0 [/ I% f mov cl,4
3 b, q: o; K/ F+ Y$ M3 ^ shl ebx,cl2 Z3 H3 E; a. B- Y& M
add ebx,eax
( @- z6 Y& v2 a, P C9 J mov al,es:[si+4]4 b i$ i$ ~1 V5 B
call Change
% `2 ^# A( h4 @. A; u5 K9 u3 b6 h* X mov cl,4
+ j8 p6 E2 l0 W1 Z( o' ]4 T shl ebx,cl* m! g! A: J2 W
add ebx,eax
' `/ a, S% V* J6 J5 C K mov al,es:[si+5]( \0 q& @/ l' l9 I8 o2 S. E
call Change( R. o( G v$ Z; T
mov cl,40 r; k6 m( y. |
shl ebx,cl6 j4 w7 [ q' W* Q6 S
add ebx,eax
: M" k+ V$ Z8 `, A% S; ~ mov al,es:[si+6]
7 y& H _. g/ h7 K& [! O call Change
$ ]4 c( w. X) B* ]; ~ mov cl,4, N9 T" G8 t/ n0 ^4 G& K
shl ebx,cl+ V2 C6 E+ G) a' O
add ebx,eax
* u. D% {& J9 l: B. g. E mov al,es:[si+7]
! Y: j6 \ l L, Q call Change
, s; }4 _- A5 h5 j mov cl,40 U4 J# a: k( o/ K
shl ebx,cl
Z$ o0 L* i4 A7 p1 }8 O add ebx,eax) m9 u4 d! j. K6 f& f9 D
ret
- `: p$ z; c w Y* g yWDPSP endp
+ C( R' ]% e+ w5 h$ ?;================================================================================================ G# @9 i( c; W5 E) k }
Change proc near
! n1 B1 a% `6 J( _% A5 Y( VA: ( N) m o6 E2 H; N
movzx eax,al( |* G3 f2 l* F& q0 C
mov edx,eax
9 k( j' R7 i4 h9 t cmp eax,'0' ) [ M/ y- l6 {3 Z) x0 V
jb A8 Z* @, b7 s8 w0 P2 @4 S/ x
cmp eax,'9' 6 h: x6 q* l, V4 U _! \6 n3 K
ja B# c* M4 r" x% d
sub eax,'0'5 G; K2 G4 u. W2 m, T' _7 |
jmp short E
[7 k& q" x: a/ C9 I. cB:; ?0 s+ F- G& A P0 i2 h
and eax,0dfh 1 N0 I* n1 N- L
mov edx,eax( D! G$ S2 K1 U u- X+ }' g- t6 d
sub eax,37h . K( _8 Q: N# t$ ~( `# }' }5 U
cmp eax,0ah1 e( H, [5 G9 |; A) E$ i# Q$ F' L
jb A X# w1 F8 h' F7 A
cmp eax,0fh
/ w# ~/ Y1 P- k8 b+ R( j ja A ( E1 s4 A1 q! P6 K: j/ W
E:
! |' R$ ~+ S! F9 j push eax
& P8 c" i }+ ~ call PRT 0 O% w M$ ]# a8 N5 A! I& [5 B
pop eax4 [0 h6 g- j" z. Z2 e- U
CExit:( V! z0 C& Y( r! g0 L
ret2 s" u% d) v- D5 j) W% t# u( b
Change endp- m c. c1 r) P0 w' ?
;------------------------------------------------------------------------------------------------
% T' \. d' P5 g/ J0 E% MPRT proc near
9 U/ m4 L' U: H7 c# t! g. J9 P mov ah,02h, e q0 K' A1 n9 D
int 21h
0 W, x: n) \! J( y' n& n ret3 ]: e+ F" O2 d3 i
PRT endp# {. Z7 O3 l' g: m" u
;------------------------------------------------------------------------------------------------
, r% q" n6 o5 ~6 l5 Zcrlf proc near
* Q6 H3 `% [; c0 r: Q3 P c mov ah,02h
d$ X# P; M/ Z" \! H2 U! } mov dl,0dh9 z" m; i1 i4 z- I( n$ e! G q) b
int 21h
5 B( _: ~* @$ {# L mov ah,02h
! p( W/ `8 u2 q4 d8 L2 J9 g: Q" R mov dl,0ah
" j+ b1 G5 ~) ~) C# Z& o int 21h
5 \' h9 C2 Q+ d ret
1 ~* y; h9 X9 k, _6 K. k5 |' hcrlf endp- x- E# d l2 u
;------------------------------------------------------------------------------------------------2 i& q: U0 _; L
_32bits proc near5 D5 c1 B# t4 `5 C$ j
pushad2 m% b5 k% u) |4 n
mov cl,4. e" ?6 o- Q- p
rol ebx,cl$ D0 e4 R! n+ L8 I. I# U( J1 P1 \
call print_4_bits) L- c8 a4 P0 v3 V; Q c
rol ebx,cl
$ r+ O: P9 {# N: j4 l& z( v( a0 a' x call print_4_bits
8 I4 d$ q5 l4 ]# g4 i$ W! L rol ebx,cl
3 |% @* j% c1 t4 M0 W call print_4_bits& k; U9 Z! z+ |9 ?0 |$ M
rol ebx,cl5 P8 A! E7 Q' T7 a) w: B3 _+ E
call print_4_bits
2 `5 Q+ A X \3 J rol ebx,cl
) Z% e- O) {) ]; h9 F call print_4_bits/ @6 ^7 b/ h4 M, y
rol ebx,cl
* m& L* P; s/ X. Y# i call print_4_bits9 \0 B! |& Q) C( J" g. N
rol ebx,cl
* v5 v1 P4 N& L' M call print_4_bits
: F+ ` J- W. h& D* }' i9 r! P rol ebx,cl) a }7 h; I0 Y6 g* A
call print_4_bits
+ R# f! \# Y+ E! w- r" v$ |: f rol ebx,cl8 E% u. ]- o% \. p: |& m; L" U
popad
- O: v) a0 p+ i8 P- t ret1 V4 m: d( s5 j# E! a/ S% I0 @6 r% V
_32bits endp
6 h3 ]" ?' k& H$ z# r5 e' p;------------------------------------------------------------------------------------------------
1 a' Z- e( j8 C __16bits proc near
( i1 i# U0 @8 K% A7 `+ a pusha
! j) [. O, Y; y1 l5 L2 b1 L rol bx,cl+ v0 m9 Q0 D; g) ?* F
call print_4_bits- M/ |. A$ G$ {- K9 ?# |
rol bx,cl0 j9 v) g! M. z4 a4 ?, Z
call print_4_bits
# W) G1 T3 |! L7 S rol bx,cl
" U. ~) U2 ]4 f% `/ S3 ]0 k2 m call print_4_bits
0 Z3 O* Z P$ [. Q' y) w* G/ ` rol bx,cl' t2 w" y) R" T/ {8 w
call print_4_bits
8 p* {$ h. C, c6 w3 \/ ~: o popa
- ? [% J3 u$ y) C! s& I- b ret
) j2 c8 C* \! f" I1 t9 J_16bits endp& F1 R, @) E5 r: A, I
;------------------------------------------------------------------------------------------------6 j/ c+ H5 \' i0 @- {9 g
_8bits proc near
5 ]' I3 G. _+ @ pusha ) |* s0 J8 K0 A! ] \
rol bx,cl
. X7 Y3 c# W$ {+ a. l call print_4_bits$ ?" M* }; M7 ]3 Z/ s
rol bx,cl$ h8 P4 S6 P4 s% X, K% t
call print_4_bits( X: d w" S* \$ S7 u4 g9 y% k
popa
; q% V* `4 q1 t5 X3 K ret, H2 E, k% z7 _, a p
_8bits endp4 E% e$ ^" w6 N. e( [3 G& [# k) Q
print_4_bits proc near
$ i8 H8 d! D0 ~! k: a) B/ U: V j0 \. u mov dx,bx& r/ J0 m( g5 r) C# b$ Z3 ~
and dl,0fh
" L7 \6 B$ w1 O add dl,30h. @# q: p: W* R% E. T4 Y" y$ v
cmp dl,3ah5 e; f, B$ n. q8 v" ~# S! t
jb print
O# O# L" u: u: C+ n" X, B s6 C add dl,7
7 Y3 O2 m1 o/ s) R! T3 gprint: U* R! r! ^& A0 c/ D* E( v( y
mov ah,2
* B3 X1 S7 @2 }, f9 d int 21h
9 c5 h# f) ]% Q$ V) A3 _ ret
6 u7 ?! m6 l- z- r5 vprint_4_bits endp 2 q8 f+ T+ L/ {2 N
CSEG ends$ Q$ ^4 p- S* R; h; J
END |
|