|
各位前輩好,以下的程式為在 big_real_mode 讀取記憶體的值,例如: C:\memory.exe(程式檔名) 01000100(Address)3 c- n2 f k$ d1 n/ A
8 N( r% j% H: e- S, `則會顯示01000100位置的值,但是我另外在DSEG SEGMENT USE16'data'
( `, c% K6 Z5 S6 ^. o4 |
+ H ]+ x9 ]. | x: w: m宣告了Maddress Dword 0,但是程式執行時,會hand住,麻煩前輩給我一些指導,謝謝 % c% `, h* Z7 d& g# g
* C" K8 o7 Y) Y1 n6 R. f.model small6 o# y0 ~- X ?3 F. `4 Z' j
.386p3 K0 r) G/ k+ E5 ~% ~# Y
DSEG SEGMENT USE16'data'
( Z k; y P7 x2 U6 N
8 j% d g" H8 S4 A5 i+ z9 oDESC STRUC
9 r8 Z5 M/ |0 n9 s( i LimitL DW 0 , a9 V2 v& Y7 r, U% s
BaseL DW 0
, h8 [& q" k+ Z5 p# I- y7 g0 C BaseM DB 0 6 C7 \. C8 G4 E/ r' X, P$ I7 ^& b
Attributes DB 0
& m. m5 E, A4 Q& N3 U LimitH DB 0
/ |! F1 ^ `) W3 X0 \: D3 v BaseH DB 0
C, K& u" F2 k" o+ DDESC ENDS
1 u2 q/ z4 M% M) g8 w" b4 w" [- I1 I1 V+ s9 n3 I/ |
PDesc STRUC
. J# a! A3 g. J Limit DW 0 z O1 f5 `) e: N7 z
Base DD 0 4 F: [1 R( i, D; h5 W' ~. t* G" d
PDesc ENDS
! J# c: C$ l' K* [+ H0 |& R- N4 T4 ]6 G( u: |
GDT_def Label Fword0 P! [' H8 c! z+ T1 A) L1 X
Null_Desc DESC < 0h, 0h, 00h, 00h, 000h, 0>" x: ?' V y' }4 ~
Data_Desc DESC < 0FFFFh, 0h, 00h, 92h, 0CFh, 0>
3 P/ w. F# [' t( c# H4 f- qGDT_Addr PDesc <$-GDT_def-1, >
0 o( a+ E7 @2 `" O. x. ?' j
& D7 q5 g, b3 C- UMaddress Dword 0- V: ^5 C5 H3 y
8 o6 l4 @" L& Q2 v$ w. W; HDSEG ENDS 5 X/ V, p; g4 E* ?. `
ASSUME CS:CSEG,DS:DSEG
+ U- Z! D0 l h4 c7 Q
; R L0 v% R, v( MCSEG SEGMENT USE16'code'
# I+ `3 y0 {( [7 U8 ?5 d push ds, ?) N. m9 R) Q8 @1 O8 s
push es# D! E" m# a% X9 a" S2 P
push fs
& ~! J% O% s% L2 J push gs
/ E$ y$ | F d. ]; m call big_real_mode
8 k" Q( c. ^; ]* K call Get_Commandtail1 m7 @; Z0 j+ m- Z5 @2 M7 V
xor ebx,ebx2 S- q4 `0 ?% x1 s3 S8 F
mov si,82h; k, V0 d9 P \
mov al,es:[si]
# n2 ^- J/ H) v3 ?* J cmp al,'r'( |$ A+ l1 H4 y, V" ]
je R
4 W4 |: h7 n; G% i* f cmp al,'R'
8 u+ j4 u9 ]! {' q; C. [/ D8 A+ D je R
/ p8 c. A$ _5 s( {( B+ Q7 z5 y9 { cmp al,'w'
' S" i2 L: ]$ e2 @/ w je W
- G# {& s7 n4 f0 N" `# U cmp al,'W': p% J9 F: |% ]+ o% H
je W # M! d" w3 y! }& G
R:' B, z1 o, G+ K
mov si,84h
5 p" o2 h% C6 o+ j" S7 t mov al,es:[si]( l$ J* P5 i9 I5 a" @
cmp al,'b'
: m+ Y9 v" S n6 ~ je RBT
% N, l5 t9 L) l- @ cmp al,'B' e) @. u, o V
je RBT
* q5 _& x. n" M6 ?* c* Z# w, a cmp al,'w'
% t, S8 V# S9 g7 F( v+ i5 U: d0 ^ je RWR
7 E& g) J# F4 O. `, \0 J. C cmp al,'W'
% w2 {8 F. u( m! t1 Q je RWR4 o2 K4 {* e( u! V; W5 p) g N$ C [
cmp al,'d'" G& H9 n( N7 h
je RDR
: P6 {" [- e) v0 ~ cmp al,'D'% G5 E* m6 ^# B9 R2 H- b
je RDR
% D. ?& \2 |+ s1 r- ? yW:
& v/ K2 n6 e/ r" w2 q% Z! B3 f mov si,84h2 v2 W6 R% p. ~5 M
mov al,es:[si]+ L( G( o1 R9 j7 W
cmp al,'b'
5 }0 b$ E- n9 d* ~# I" B je WBT
4 r+ N' g: v. A( M5 P$ H4 { cmp al,'B'
$ }8 |- ^0 r6 k) { je WBT( _ P7 m$ B0 `3 ~& S
cmp al,'w'
9 A3 g3 d) t; f0 S5 r% i ?: z je WWR
8 @5 l- c' m/ k: ^0 } cmp al,'W'% ]. n+ X' c5 D. B. X$ F# J% X
je WWR
% P* [: |2 `' f. G4 Z cmp al,'d'
8 P9 X9 |% S/ J+ b je WDR! R- \, G4 I; s# w; B
cmp al,'D'
: O1 z4 W' B6 M$ Q u. _ je WDR
2 g; T, N6 y/ G: ^0 tRBT:4 u) D' C; ~+ S' t( U, k$ y
call PSP
% C6 G k( S2 R5 |6 {( k4 ~, n call crlf $ c# y4 a* p1 h% z& g" B4 x
mov esi,ebx
( d( t# K/ p; A+ D+ @+ n4 r1 J mov eax,fs:[esi]
, J3 `) W& ]" a$ X out 80h,eax
- L* s$ t" |0 x. z mov ebx,eax
' l: m0 }& H; A+ F; N+ \4 ~. v. o call _8bits
- [1 m' C8 }( ^" H% h& @ T0 c jmp Exit+ ? W F' t6 \: `8 b7 Z- y( M
RWR:
8 `( z/ [, ~: p7 I$ e call PSP
8 q* N7 }5 @& X( m& T call crlf
& t9 `9 g. U/ L5 T mov esi,ebx* ]/ J6 `# T: |, b# M
mov eax,fs:[esi]
' a) {: e& N; d7 h- z out 80h,eax
) K/ [* F3 L% o mov ebx,eax' n, ?) j$ N9 c$ f6 ~" ^
call _16bits
X( o8 U+ @/ O+ P jmp Exit+ X$ G$ t/ q2 U; ]' p: n
RDR:/ B. I& Q t# q) q; ?, \4 g0 H3 k
call DPSP 1 `' E( |* l7 ?0 }' x. H4 R t
call crlf
! I$ o" z1 ^( l0 R mov esi,ebx
- u# g. O- T5 s8 w: Y" i mov eax,fs:[esi]
* q: A* S3 \- ]3 m, g out 80h,eax+ U7 Z8 h/ w) Y1 S. M6 t( T+ L
mov ebx,eax# J- r# K' J9 }( D9 g
call _32bits9 L4 z; J, Y8 C$ |* {3 m5 d
jmp Exit
8 z) ? g) x+ @4 v7 I+ b2 {8 m- N;------------------------------------------------------------------------------------------------
) ?6 a/ N# u. Z) O c! qWBT:& t# o9 U& ~# @6 _- E* f! x" o
jmp Exit
' U& K) r: V& o& x: lWWR:3 D1 m5 U+ l/ i" K) ~+ \1 o
jmp Exit
' @' Q* Z5 W) H! c% H2 e: JWDR:5 y9 H0 Q6 R) g5 O* `2 K" U
call DPSP
@3 E t6 b s* C# j6 I) b mov Maddress,ebx 8 {2 x- z- Z8 T1 F M, o
call crlf0 W' U' z/ t; Q m1 Y
call WDPSP/ U7 F+ d$ q0 ?/ A' R
mov eax,ebx
, r$ l! d4 x4 ?; J+ Q) k mov esi,Maddress % Z6 {3 W- g4 ~, P% c# `4 I& U
mov fs:[esi],eax7 ^- [2 `; P! r2 L: [( P
out 80h,eax
, m8 } E# g' S q2 P! W' y1 d9 O jmp Exit
* e6 j$ C0 ]6 V! N: s8 y;------------------------------------------------------------------------------------------------
/ T5 w9 e- d. B* E+ C1 f7 M- ]Exit:& \$ H6 Y' ]6 _" \6 l7 f
call real_mode
/ m" A1 d/ T* x" Z9 {- [ S- L pop gs ^: G% a! q$ ^ H: t& a
pop fs1 P' t: b3 [" A. V: T3 ~
pop es
& h; [8 J/ I' s2 ^& B) G+ E3 P" p pop ds
8 _* E: ]# y- E5 H$ L .exit* o6 r9 E5 O/ S0 V7 F
;------------------------------------------------------------------------------------------------
0 A& h. _2 C- h; Bbig_real_mode proc near8 F: c9 X1 N- @7 k
in al, 92h& ~# `, i+ G* C' l0 @6 H
or al, 0025 k. Z# E# v, N- c- V" ^6 j# B
out 092h, al
8 H1 s( P/ `3 d- ~9 |3 |4 s( U out 0edh, al
8 E+ ^) Y& X* ^; E cli
0 z5 J! A7 i* o2 N( C4 f2 [( ^, O mov eax,DSEG% d# Z! x* @ m3 q
shl eax, 4' H8 O: y8 \ v/ f& Y; M7 w: C
xor ebx, ebx7 m$ G% e6 [5 a& g, P6 I
mov ebx, offset GDT_def
" T: G" s; V" Y# ~/ q6 Y/ G% ^" v3 t add eax, ebx
* `/ T& ]. t9 z) Z% r mov dword ptr GDT_Addr.Base, eax8 V! [" Z' z5 ]- b' B
lgdt fword ptr GDT_Addr# q7 z1 S% w" |' }3 ]
mov bx, 8; f) v% ]+ q% r) |: N2 l
mov eax, cr0/ [* [2 E" H# H, a
or al, 11 X2 {+ T' Q4 |3 w
mov cr0, eax. T4 e/ x& x. o& G2 `0 a
jmp PMod
" ]4 @, x6 r" B) D# z! O, uPMod:5 b" i; b: R6 z7 {0 w# _: ^9 I
mov fs, bx$ h2 _1 u9 t# P9 r! I
mov gs, bx7 @; w. v% I+ @7 x* K, w; _5 b, S
mov eax,cr0
8 o6 R& G4 X0 r0 w6 p9 M' Y and al, 0FEh- q- S' L% e& Z2 S
mov cr0, eax
2 g% H; |$ B* L jmp RMod2 T2 H2 t/ |6 L7 X6 j0 a
RMod:
7 s0 P& a, q" ^ xor ax, ax _, c- A( @- p4 |6 s1 d
mov fs, ax
3 T$ Z% Q) E# g# o6 t1 C mov gs, ax
/ ~. A G" A1 ~2 i4 k sti $ ?# V% o6 K ?$ M- W
ret! p1 S, v& J: r3 {$ V1 |" U" h
big_real_mode ENDP
! l0 e. d5 x. U9 x;------------------------------------------------------------------------------------------------
& S& p4 ?( a' [5 {+ Creal_mode proc near, q6 L) c* r0 h; q2 t/ F
in al, 92h
: h! Q+ _. k/ ?7 v# {& J and al, 02# `" ]5 K+ P2 t+ B; a
out 92h, al # l* p* P3 T# R2 K- @
ret
- r, o' l& C/ E: [9 ?real_mode ENDP
3 Z9 W$ v& K8 S5 s;------------------------------------------------------------------------------------------------: f; B9 ]' i$ G9 H
Get_Commandtail PROC near: n8 f* b: j1 I! B7 H
mov ah,62h ' N j% N" p6 h7 J
int 21h
* e) ^ m# ^2 ? mov es,bx+ }) ]7 A. U1 V9 I( J; Q L2 o
ret
2 z8 ~9 j6 y7 ~- q( r6 KGet_Commandtail ENDP
9 v3 L# f! f1 b+ d! S0 |& [% V;------------------------------------------------------------------------------------------------: Y& [% \! Y2 s! r$ R
PSP proc near
4 ^! M6 L4 f7 H, w1 H xor ebx,ebx" K7 m2 f3 o" u9 N" L* Y: k# \
mov si,89h
7 T! L6 T. O+ C0 L" x mov al,es:[si]
2 B8 y; {. j8 m' l6 G call Change' u7 S4 \+ y$ U7 j' \* Q2 k5 e; ~5 ^4 R
mov cl,47 A4 M0 X& N) L1 v
shl ebx,cl
2 |# i5 t" x8 J/ I" k6 q add ebx,eax
& h7 h( J3 {/ @+ @ mov al,es:[si+1]: g0 n. d% w0 O! D9 V+ K2 Q& n
call Change% x( ~0 y% D8 K1 ?; r: W' Z7 W
mov cl,4
) n6 {3 J9 @5 {9 ] shl ebx,cl
# S7 ~+ e5 o% I4 \) e/ c: n add ebx,eax# S: J. a) Y5 `/ ?& x6 M+ A
mov al,es:[si+2]+ V g' h# R K$ O9 E4 G; z+ t# o
call Change; V6 x$ z0 {! b
mov cl,4
7 [$ Q. a; Q' l7 k# {/ Y$ x& {& i shl ebx,cl* Y- _7 {( w& i' D% T
add ebx,eax
' l q9 K4 A( k* X# {' Y& i mov al,es:[si+3]4 x# }: V# b8 I' I* i
call Change/ k0 ^6 O) Z: p0 b% p
mov cl,42 i& S8 r) A4 O3 Z/ s$ C- u
shl ebx,cl
$ N! X3 G6 V5 X" ]7 a. i) n/ S add ebx,eax, S- V4 w; T5 ]# h0 j0 ]5 p
mov al,es:[si+4]
+ _- o2 r) D- ?1 F* k! `% O call Change
& e- E' l% N3 W; k$ i mov cl,4- D: S* K; x7 c$ h# ^ s8 t' v
shl ebx,cl
0 v3 I) i7 n6 `. y6 q+ G add ebx,eax
+ ]( d/ o) `: v. l& c" v mov al,es:[si+5]
, a; q8 f B: K# d call Change0 h, Y) g% `/ J
mov cl,4
2 U' Q, e V* [: D/ o, m. ? shl ebx,cl9 E/ d' x# d) k. B9 s) p4 K0 x
add ebx,eax' o, C( g0 y$ s- S# W' @
mov al,es:[si+6]
! b7 r( L8 Z7 t: Q# G' u call Change. j& P4 o" f0 M* D2 t' Y
mov cl,4
7 B5 n @, `0 ~: s# Z$ i6 A shl ebx,cl9 T- {: B$ w/ r* T& K; V8 F0 ?5 z
add ebx,eax$ L3 L3 t, c3 s$ [( }" ^
mov al,es:[si+7]
* F# V+ B L! Y$ N5 V5 ^9 R( D# J call Change
; C# ?: I( y5 L; R7 G& R& @) X mov cl,45 \3 x# T3 c# {+ m3 N8 }0 z
shl ebx,cl
5 J0 Q/ J# i2 J1 S) D' p/ }% ~ add ebx,eax" Y& Z4 d. H. O: v
ret
* T1 W+ D! r2 J& r6 t- h5 G. r: o) DPSP endp
2 S: V/ M4 L+ r f! ~5 ?;================================================================================================ E2 P' `0 V# R8 W3 B
DPSP proc near1 w4 r6 e+ _* o! \; q
xor ebx,ebx1 \% b* `% B1 O: M8 w
mov si,8ah C1 ~: N* s; S
mov al,es:[si]
g" f. m" L6 s8 g: n call Change8 W1 J' Q! i& O& I' P
mov cl,46 B" V# x8 |1 K' f0 Q' K( R, d) H
shl ebx,cl
3 d+ w. l$ ^% N& U4 T5 q! w add ebx,eax; O& V" g* c" R4 X1 N; @
mov al,es:[si+1]2 U+ a+ f* {! B
call Change# s) i( \5 E) L3 ]' ~ d5 y/ R
mov cl,4
G ?+ [, f9 v- I shl ebx,cl3 E7 H) l( I0 R& p: g0 ]
add ebx,eax
, ?/ B3 o z" f# B mov al,es:[si+2]6 f [ ^* _7 [# D6 [, p
call Change% R; x/ y2 x/ K; A' A
mov cl,4
6 v! l# y& R l+ a* S. s2 { shl ebx,cl4 Z% v* s* e$ @& V
add ebx,eax
% L! `( k1 z5 i# f( Z mov al,es:[si+3]9 W d# k9 R8 i: s) N. u0 L
call Change4 o; P! J+ a) O0 C3 Z0 F) |' y2 D* [4 q
mov cl,47 ?2 ]& a* W$ Q# C# m# H# j3 a( u8 L
shl ebx,cl9 T! ~; j& u0 @ `4 f
add ebx,eax
8 V$ ~9 z, V: T4 h8 K7 b, j mov al,es:[si+4], E0 @$ N7 @: Z: k. v, R2 U
call Change' Z H2 Y0 u! N8 v2 S5 j! G
mov cl,4+ f8 ?1 ]8 |3 |. ?* o$ z$ k; I
shl ebx,cl- v x0 z2 w7 E& K- @
add ebx,eax
- i* d8 W8 i' ?% i& r mov al,es:[si+5]
# Q' I- a! W5 H" q" q; n call Change# V' X/ N: D3 _# L& p& ~5 f
mov cl,4
7 x9 ~1 r5 O3 U shl ebx,cl! K6 I1 n- P& {4 D' |% O
add ebx,eax
# j! t Y' H" u mov al,es:[si+6]
D8 ^% [# }6 N call Change- p' K, H" U6 |2 [2 h7 x( ^, U+ t
mov cl,4/ R; X6 F! Y! N
shl ebx,cl" G! e8 a0 a0 r3 R" m
add ebx,eax8 X. u* v& i* l6 m! j" h& x
mov al,es:[si+7]
4 \' z2 b, {$ l+ h call Change
h0 ^' h! u E: ~1 o' ^ mov cl,4' [" o/ d, R' F$ U9 T
shl ebx,cl1 p% g; z8 {8 h) j, v+ s4 \
add ebx,eax* o7 q9 @. S- T" s P
ret
' [* O2 Q+ d2 B5 u# Y" uDPSP endp/ k% D* w% i/ r1 D
;================================================================================================ z/ B$ C( j1 ]$ A/ t1 q) n5 D: {
WDPSP proc near
; o% \* f4 e) D- [9 m. @& O xor eax,eax
7 ]# O; d5 [( }: M xor ebx,ebx
: A# A8 i$ p& h* A5 U mov si,93h; s( d0 P. b9 M) P$ S; T" Z
mov al,es:[si]
: {! C( N+ `6 Z$ i" R- e# K call Change
2 k1 _( Q1 x; ], O1 R# B mov cl,4! i& Y, ]* \6 m( |
shl ebx,cl: ]0 y$ {$ I: ?, g$ }" w4 G$ f" Q
add ebx,eax
& q% V& E' [, @, E mov al,es:[si+1]
7 w( d v0 F- s3 c call Change. F8 p. j8 _( v* N( _7 \
mov cl,45 Q: m, s% g! O6 }! P" v) b
shl ebx,cl
0 v+ b- y) k. u add ebx,eax
# [! U6 v- y8 s5 P6 A. [3 Y mov al,es:[si+2]
! |. _, R5 ` d; t8 v) i+ [ call Change( O* Q. C& W1 V, o
mov cl,4' R9 L; `( b( J& X6 f
shl ebx,cl
6 E8 \3 P+ B% }/ z" | add ebx,eax
$ I0 j. c q9 S* h mov al,es:[si+3]
1 g& j: J" b5 A, Y call Change" n* G0 V0 U2 H1 V3 D' F8 O( H
mov cl,4
+ I8 j# ^# ^' @% O3 T. V& [5 w shl ebx,cl
* Z+ n! r* N J& J* K/ ^/ F add ebx,eax! W! H! J p" p; }& v' Q8 M
mov al,es:[si+4] F) |: ?3 z0 @/ ?, [
call Change8 L: H/ A0 }0 X( x
mov cl,44 M6 G: M0 I6 m# P! z' z6 V4 a3 _
shl ebx,cl
" I3 l+ e; f. ~ add ebx,eax; r9 a! U4 p& e$ O+ G6 B& ?
mov al,es:[si+5]
- _8 i* n) J& v8 g* d4 k. M call Change" t; y; }6 S8 e
mov cl,4
4 S: ]1 o6 Q1 q: e& h3 Q shl ebx,cl& j* c) s: [+ h7 M7 `6 d/ C: n
add ebx,eax
' T" |. u2 K* s) Z mov al,es:[si+6]
! D4 O2 U3 k. B& H$ {+ Q) G: L: l call Change% ^% M V# y0 ]2 c2 k
mov cl,47 r5 u7 A- A# @; Y
shl ebx,cl( [3 `. U/ m5 Q0 c
add ebx,eax
8 C$ _* t" v: N, [& i6 f' c mov al,es:[si+7]+ r, \% M2 B" @8 R, o! s1 }
call Change
; q5 i, B2 t" E7 i$ @3 j, Z9 v3 W! t1 E mov cl,4
/ y) j" H$ x" e1 I0 P3 b, F- w shl ebx,cl
, ^8 t* O1 B; F+ ~/ T! c* t add ebx,eax% b& R7 n( w) o4 u
ret
# H' N; ^6 O9 H T5 v. {WDPSP endp) e8 Z3 q0 Y/ y1 g6 |. [8 t
;================================================================================================& u0 D) w* B, y1 J. {
Change proc near( m6 ^: D' {2 B, ~1 ~0 U
A: - V7 ]( ?4 |3 {" d) W" w
movzx eax,al+ w& Q! C$ g( j
mov edx,eax9 w4 O# D- j7 h7 b1 k. L
cmp eax,'0' 1 r. {# X; s5 Z2 B( |% `. ~
jb A3 h- e7 b1 E, }
cmp eax,'9'
4 g$ V4 [/ l! n ja B' I! H$ X5 k$ E$ s% z5 c
sub eax,'0'9 I, h- ]# B( M) W: c3 z
jmp short E; h1 q! r) c( L) w
B:
# ^2 k% l" C6 {% b( a% W- W8 x and eax,0dfh ; l$ k- p) e1 y# `3 f( n
mov edx,eax
/ l* `' H& b7 O1 e6 s n sub eax,37h
( h- L: F) w2 E* F2 i( g0 ~ cmp eax,0ah
$ B9 [4 X& q( S# G. \ jb A ) E8 A1 H0 l1 x3 `" Y) t
cmp eax,0fh
/ O, o' O* D& D; Q/ U7 k K2 c ja A # F" w/ e' _! l6 z: c5 F8 D4 ^
E:# a2 ]( y& Y- p4 T2 t$ q- W
push eax : V, U: [6 F! d g A: V; S' ]
call PRT 2 a: Y0 v$ e" h) S6 D9 f3 ^+ ?
pop eax% Q8 c2 |7 S, S+ m7 P) E
CExit:
( {* p" \! B& y \8 A! [$ X ret' C4 f2 U) M9 U3 h
Change endp
' {" u7 v/ U7 |: e) m+ \;------------------------------------------------------------------------------------------------# X0 F7 D+ l! ?
PRT proc near. d0 C8 ^+ D8 B; H0 j! r
mov ah,02h( D4 S. { m# \
int 21h1 }. r. O! ]4 ~
ret
4 R4 `1 t& K u, `& zPRT endp( U$ `! j: E+ Y2 ]% s! V. M# `
;------------------------------------------------------------------------------------------------
0 @1 g# { Y+ s/ ncrlf proc near
& t- w8 c9 B N0 f mov ah,02h$ V2 @4 w9 c8 Z/ M8 R( ^
mov dl,0dh) a! G0 P' o& ]# u8 [; T! V
int 21h- Z# f9 i! E* M7 G; `& s% @
mov ah,02h
) |7 j9 t+ x5 I mov dl,0ah1 ^, k( F R0 |% A' [: n2 Z
int 21h/ y& E$ r1 M; l- a
ret) ?1 R1 M5 i. f! w
crlf endp3 K5 b7 ]# o2 m, I' ?8 v
;------------------------------------------------------------------------------------------------/ o8 T5 H! M8 {( P1 p/ X
_32bits proc near- n. u3 z) P! _) ?* _
pushad
1 D1 d$ q* p4 y# ]+ d mov cl,4
! w4 R( V2 o) g! p1 u; |3 h6 H rol ebx,cl3 K: Y" O1 r( T* ` W
call print_4_bits
& ?. n8 }7 `0 L8 D# c# f* [' p rol ebx,cl, d8 b' q; o6 c/ y; i; h S9 `
call print_4_bits
# U+ o$ d2 o1 K$ J. ^ rol ebx,cl
/ M* w/ j5 x/ e call print_4_bits
4 d: x- r3 ?" V' j) S8 Q* ~: e rol ebx,cl- L) B2 o. [; c' r |$ d
call print_4_bits2 }* k9 q- X% u
rol ebx,cl
+ u& H, H' d5 S call print_4_bits
$ l( B8 l6 R ?, Q5 X rol ebx,cl
: r. {; h/ Y z7 y4 v, V& ^: J4 v call print_4_bits
: }8 W# ^9 c9 C% y% ] rol ebx,cl
' e, j: Y) J! S5 t call print_4_bits% p; e+ N7 U7 o5 O; \3 r8 ^
rol ebx,cl, ~& Q" @" c9 d9 b2 ^0 v
call print_4_bits: `) ~% l& w' x5 L* O
rol ebx,cl+ i4 P4 O+ M( C* Q9 `
popad
" }' [8 K, B! o3 D1 z ret+ t7 A( e, j6 ~; d0 z. P1 c E
_32bits endp+ u% [) m- S7 u1 E7 }; n! I$ y
;------------------------------------------------------------------------------------------------
8 H1 k6 W5 b$ z$ U. V+ Q( J5 `5 J_16bits proc near
# M. ]- c7 t" _8 p pusha
: m5 i6 w( ?; _ U: U6 _' V: ^ rol bx,cl
& |2 [5 L4 T9 q2 ?8 z/ Z' ^ call print_4_bits
& Y! F9 j* n, Q T* r rol bx,cl
" W; c7 q' K- p" v& D# B$ \1 x call print_4_bits) ]; g1 @0 Y. C$ G# p
rol bx,cl( q3 i5 C# _: _$ j1 w
call print_4_bits
# C$ d: } f, G0 h% M rol bx,cl
* \3 V5 B; g1 B* _3 S" |4 K; x call print_4_bits+ W9 ^& W2 T1 V4 U2 D2 N0 Y$ c- V
popa) P. W4 Q6 a# \9 [9 B# f2 q1 Z
ret
) V: ]& F, N0 m# x& _& f_16bits endp
* s4 a m. K S# m! @5 D! r;------------------------------------------------------------------------------------------------
, J( |( p, o9 R6 p T0 m+ ^_8bits proc near7 [& s; n0 r3 W; Z! B/ ~; ^6 X$ d9 G
pusha 1 k8 Q# Z, C8 ^4 ^0 G; f
rol bx,cl
7 R, h0 s: Q: O- } call print_4_bits4 o5 _# M2 a& S; I
rol bx,cl
& y4 h- y7 j+ \% B7 z5 k* t* v call print_4_bits
* P& Y0 M7 g+ W! j1 }, y3 I popa
+ F6 L9 Z. }6 V% `' D3 `8 J2 o ret: J7 \2 d6 q" l4 u
_8bits endp
& H6 P3 E0 S% |4 Z1 Gprint_4_bits proc near
9 ~% u3 I- P+ F3 J; l4 V mov dx,bx
9 d% { R1 L, }# F and dl,0fh
+ i# A$ G" y" a$ @+ i' m' c add dl,30h
* S( A3 e9 l- g# {6 [& K cmp dl,3ah
# @9 X d" K/ W* p! w$ R jb print1 A9 f) Y& T, z% s& {$ n
add dl,70 { J, W1 @' P6 s1 ~' Y9 T, m9 q
print: 0 J# O0 W6 |" }2 s3 N
mov ah,2$ y( m! W$ E0 K4 x( H, k! z1 _
int 21h" h- J6 O& P3 V) M3 X
ret! A# q p. p6 O. O2 S/ B2 l$ a
print_4_bits endp
2 ]- w0 [+ L8 k# `# u4 ~CSEG ends
# t5 C/ F8 Z, S5 P3 M) uEND |
|