الشامل فى لغة الاسمبلى

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 329

 

 


  :

  

 
          !
"#$ !
%&     '( #)  *

      Personal Computers
%+ 
/0  .
!     Intel
),
-
   -10   2$  3
(
45
Assembly 6)    2$  7( *0 38 
Language Programming and Organization of The
!
9 ": ; < ='  *0 9 2$) IBM PC
@A 2$ 
( <
!>  "7  ?
)
68 
B4 ! C0 *0  
 :   
_____________________________________________________________________

Background
'- 
'% 

 
D4 2   
8  $ E > FB
G+(  &  HI  ED   
'% 
2$ 3
'% 
&C  '  2    "7$<
.
D4 M'0 !
'%  E:J
& 6 KL
' 
 N  1 @ O< '( P  FB M )
&0   1'  @ O< Q80 Q9 RB  '(
I Structured Programming Language
'8 
S N  *!
& 38B 38  &  8N 
.@A ' 
 N  1 3 GT E > 7
UA 3 S N  V
)  M W 3 P  
V B Q80 Q9 RB 2 
1 X
.
'% 
 N  :

"7  YB: 0 6'9


<
!> "7  ? E % YB:   *
3( M W *B .
NO  0N8  S  3
(
3( 2 (N9 " O "C YB: 0 ZBL
E B ;'( (
[U[ <
!> \" O  "C'

__________________________________________________________________
2 SUST
 :   
_____________________________________________________________________

)
B4 !
'-  S N 
8 F -  !

-  0 (N9 S N  EU *B .
'O
.*&  6C 
8N, E % M W *B W
"! : '( :NA5 3
( ( *B )
! H  QC 5 <
!>  "7  YB: 0
.":   " 
B4
"7  BC
IB ! ) \  3
( "7  *& 0 *0
Q ]O F0   
:7 FB
' & " O
RB .; Z&    '( "7( B ! )
! )
B4 ! 0T0  
'^ ) 3(
$>
)
B4 ! S N  3
(
) F'L * )
: 0_ !   I0 .!

( ":
     B : 4I   

aA ": Intel
),
-
    
U&  8088 S ' 'A  F)' XB *[
.")  2 FL% 
BL ;
'% 
2 
1 !  J E  8+  bB :] I   
P  <
!> /I  1  cB0
8+  '( P 
   3
( '(

__________________________________________________________________
3 SUST
 :   
_____________________________________________________________________

E '
L   = 4 E % S 4N' E 

) *B  
B4 ! .dA> A7> '
.0 "1a S 
Flag e:N  & '( P  ;! *B :2   
b0
'%  '  e:N  [T0 Register

'( 0  f C0   
'%  QR  5O
."7 C

'%     9 b0 ;! *B :Y %   
"1  S N  BC0
) '( P  *B  
High Level   G&  W S N  3
   9 BC0 M W 3RB Language

) *0 M W  .2 
1 g <
'%  :8 
'C0
) b0 hN&4 "N8  S N  O9
S 4N'
8 
'O g < S 4N 

'%  Z-  6&C   9 B :i7&   
3RB U&  2    !   %
BL
*0  
B4 ! .Q: 
Oj>  9 M W

) "=
(  =$> 3
(
)
.G+(  &  HI  3 D  ! E:

__________________________________________________________________
4 SUST
 :   
_____________________________________________________________________

i 8  3(   ]B C  B :2&   


'( P  *B M W  \;   
) Stack

(  S N 
)
BL
6R   9 '( P  ;! *B :3 I   
) ZBL 3(
(  S N  E %
& 
"=  E 0
(! S 
) *B .c'% c' !
.
,+  ! (NL b0 
O 3
B+( E:9

4  k49 '( P  ;! *B :2   
P  *B ) 2 
1 !
%& 
'% 
.
'%  !  2   
BL '(
2     9 '( P  ;! *B :,   
.Strings PC  U l 

3
( X ;! *B :+( G7C   
V =79 ! 1+  ED4 2  0   S N 
*0 
: ZBL 3( M W "7 C  cHm 

'I  VN M W n: :    UA ;:7
.
 
' 

__________________________________________________________________
5 SUST
 :   
_____________________________________________________________________

"7  3 P  

a%  S N  V


8 -R4 QO 3 I) !

'% "#$9 3 ED  48 2  0   h $


 F -  Q8B "7  ?
:7 3 =45 (
",N Z  S   2   
) '( P0
j' g47 G&  ! : B 
! 
2  0 S 
) '( h:7 bNB Low_Level
*! 'C0 ;48 o bN ) ;'a0 e79 ! ED 
h#$ F -  bNB .2 
1' F) S 4 G9
.Systems Programming *D 
  "7
:

4I   
%+  FC  *D0   
:

3    '( IBM ED4 2
!  "#$ 0
 ' E( X( *    ! .Intel S  
'H(
P  *B ]O  =#  ! 8086 S  
'H( 3

'%  U&  b0 2 8086 S   '(

__________________________________________________________________
6 SUST
 :   
_____________________________________________________________________

")  *& 0
'( b0 *B *[ & )   %
.Segments (- <

Intel 8086   


'H(
   '( IBM 2
! 
%+  NC  0
 8088  8086    +0  Intel   3
Pentium S   hA9  80486  80386  80286
"7 C pH% 6O ED4 =N S   E % *B ]O
3 6C  =N 8088 S   E % 5O ! )
6C  =N 80286 S   E %  IBM PC  
ED  = *0 ) XT ( eXtended Technology ) g& 
S   :m 2 AT ( Advanced Technology )
.80386
2'
! 
[ *D4 2

4 M W  *[
EISA  ISA (Industry Standard Arch.)
D49 m
80386 3   &0
D49  ( Extended ISA )
. 80486 

$C  m Pentium &  B   S   :m 2
'C   
D49 D!
 (
( W " B $
D4

__________________________________________________________________
7 SUST
 :   
_____________________________________________________________________

M W VESA ED4 PCI ED4 I Local Bus Systems


.S ' " B   48 > 3 "7U
'( /D!O Intel
'H( 3    Q9 ?)W : B 
0 6 *B ]C    *0 !
 ! 
!
B     2  ) /0   S N 

 ! g&B   )+ Q  " B     
! "N) "#  Software Compatibility S N 
B 0 G9 Q7
B  S N  qO5 *0 ]O * 
" B   48 > W " B   S N  1+0
48 < 2
'B ! .
B     ! "7$ 380 *  
b M W   3 = +
'%     
Word Length
'8  L ]O 3 S '
  pH% 
.
  pH%  VN
!> ")'
 9

8088 S   8086 S  


8086 S   K- 1978 E( ! Intel
), / 
   *B) 16-bits -
') 2  B S  
1979
 ! M W .( " O  "  !16-bit
3 8086 S ' ;+  8088 S   KL *0
__________________________________________________________________
8 SUST
 :   
_____________________________________________________________________

   ! ;( c'% ;8  'A  F) 


O4
;'8 $:%     ;! *B ]O $:%  E 

RN4 E % 8086 S    B  8-bits  L



RN 
( "7Bj) R! ?=79 Q!  
B
 EjU  3 #  Q 4   77  "7Bj g0
77  B C S  
( cB0 *B 7 C  9
77  " O i 0 ; B G  g
.(MHz #0 
FC  =N 8088 S   :A IBM
), / 

!> ;   
& M W IBM PC %+ 
M W ! c'8  3 Q) ]O
'8  pA: <
16-bitt  W 8086 S   g'( FC  = / 
? (&  O ED4 =
'80 0: FN& M W
.3 #  M W ! 16-bit -
') 2  0
 '  Y 8088 8086 Q    B
    9   
B N 
- 4 QUIB
FC  "#$9 !   *B   " B  
3   g'( 0   S N  Q!  
%+ 
   ! '
C a / j 8088  8086
.S N  !
 !  ?9   " B  

__________________________________________________________________
9 SUST
 :   
_____________________________________________________________________

80188  80186 Q  


3 ' hB-0 80188  80186 Q   NB
'  ) 0 ZBL 3( M W 8088  8086

!>
B     !
%& /4)  
 O  V 2   
%    V <
V
!< /0 M ). Support Chips " (& 
Extended  g&0  g " B    
! 3    *B *t h ( . Instruction
e:! 7$ E 
N&4 M W "N) ": "#$
B   S   :m g <
!>   3( N)
.e ! 80286

u: 80286 S  
S   E 1982
 ! 80286 S   KL *0
3 I8 9 ;8  16 Bits -
') 2  B
12.5 MHZ < ;( 0 ]O 8086 S  

__________________________________________________________________
 10  SUST
 :   
_____________________________________________________________________

M ) .8086 S ' 10 MHZ 2


4: M W
u:
   B#  80286 S   #0
Two Modes Of Operations =7J 3-4 u 1
n   3-4 !   ;8B 80286 S  
Protected gC  n  Real Mode  C 
. Mode
S ) 80286 S   B  C  n  !
/0   S N  Q!   8086   3
Q  n   ! 0 8086 S ' )
.B 0 G9
1+0 *B Q9 38B ;4! gC  n  !  9
Multi_Tasking O / ! S 4 3 I)9

- B   3 S 4 )
BO E#'B  
/  Y4 ! ")  ! B Av S 4
8 ")  3 "7 C
- p% M W
2    3 S 4N  2  " O g'( S 4
.A_ S 4N  p%0   ")  ZL
u: N)9 ")W u 2

__________________________________________________________________
 11  SUST
 :   
_____________________________________________________________________

0 ")W 2 FL%  80286 S ' 38B


 ) gC  n  ! M W 16 MByte <
. ( 8086 S ' 1 MBYTE
u:
!5 ")  2    u 3

O0o M W gC  n  ! M W *B ]O
3B#%   O 2  ' S '
a 
1 GBYTE t 0 "N) S  
$:% 
16 MBYTE  ")'
 g9 Q9 wO5)
 
B-  ? 3( f C  * (n !
. 1+  *D4 "7 !
u: 80386 S  

') 2  B S  9 d4< *0 1985 E( !
9  80386 S    32 BITS -
L
(R M W 80286 S   3 I8

(&'
N&4 (32_BITg < 16_BIT 3 )
'8 
40 < 0   S     B   "N8 
!   3 N) 7 (  E B ;4o! MHZ
S   1&B   RN  7 ( 3 9 7 (
. 80286

__________________________________________________________________
 12  SUST
 :   
_____________________________________________________________________

 C  n  2    80386 S   2-&B


S  )  C  n  ! B ]O gC  n 
M W .80286 S  ) gC  n  g! 80386
!5 n  g&B B $ n4 <
!>
 ( VIRTUAL 8086 MODE ) 8086 S '
S   S  3 S 4 3 I)9  * n4
. O / ! ")  ! 0 8086
B ")W 2    80386 S   2-&B
B
! ")W 4 Gbytes < O
.64 T BYTES g < O
g&0 S   3
A:
%&4 M ) $0
'A  8+  Y4 g'( @C0 g 80386SX
16 2  0 $:A 8  80386 S '
. BITS

u: 80486 S  
3( ":N(  80486 S   m 1989 E( !
g'( @CB ]O 80386 S   3
B
%&4
"N8 
(&'
!> 80386 S   B# )
! "I8
%&    3 I8  0

__________________________________________________________________
 13  SUST
 :   
_____________________________________________________________________

S   '( ;HO M ) n ! " O


RN4
 
&C  '  p%  80387 (& 
? /4) ]O
  O 7 (9 g'( @C0
 80386 S   3 hUBL h e1&0 ' 
S   &B G  80387 S   7$ F'-0
*0  Math. Co_Processor B  (& 
<
!> 80386 S   2 S    S 7
) Cache Memory t  &0 "1a ")W
  % *B h $ 1a a 3 j W ")W

B7  ")  3 4N  7N
')
.8 Kbytes O(Z  S  
80386 S   3 9 80486 S   NB
. fU[ C 77  Y4 '( B G 
'( B 80486 S   Q9 <
!> 
.100 M Hz < 0 h $
 ( (() 770
h 0 80486 S  ) ! 80486SX S    9
'( GCB 5 ;49  ( ! 'A    ]O 3
3 : a< " ( m  .;'A7 B: S 

B$ !UA $0 5 38  80486 S  
.) 2&B 5     "N)

__________________________________________________________________
 14  SUST
 :   
_____________________________________________________________________

Pentium S  
Intel
), : a< Av  Pentium S  
64 Bits -
') 2  B S  9 
 B   h $
  
(&  <
!>
*O "7Bj <
!>  80486 S  
4:
.Cache Memory
'A  ") 
Pentium S '
'% : a< m 
48 <
!< /0 S  
( ! 77j
; QT jB G  MMX I ! ; <
!<
."7   nH  2  '  9
8086 S   8088 S ' 'A  F) 
S ' 'A  F)  '( P  * =#   !
"7$ 
'%  U&  '( P  ZBL 3( M W

   =#$ ! * & )
m S   A7
2    !   % *B  
'%   
+
! '( qC  *0   S N 
 !
N&4 .S  
38B '  ? Q9  " B     
. Pentium t  gO
IB C     2   %

__________________________________________________________________
 15  SUST
 :   
_____________________________________________________________________

U& 
*& 0 *B \U&  ! S   A7 4N  3B#%0 *B
4N  2    ! *B 4 U& < U& 

 - 
&C  '  =$< 3B#%  ]O 3
& 
'%  3B  3B#%0 ! *B 3B( U& 
.7 C  9 0  S  
O '( GCB  5C 
  =#  ! E  & 14 7 ( '( S   GCB
.& )
m =9 b

DX,CX,BX,AX 4N  U&


2    !
: U&  ? E % *B
",N    S N' 38B  S   A7 4N 
Q9 2-&B S   Q9 3 *x  .U&  ? 2
2    Q9 5< ")  g! 4 2  B
")  2    3 I8 9 Q8B U& 
hH7 R4    (RN  3  7 ( ; #'B)
7 ( "7Bj FN  . (& U&  2   
.
IB C     ! U& 
? O ;4 g'( U&  ? 3 ) 2    38B
" O ) 30 O g'( 9 16-BITS *C " O

__________________________________________________________________
 16  SUST
 :   
_____________________________________________________________________

R% 
4I   HIGH '   O< 8-BITS
&
& ;4 g'( AX &  2    38B UI LOW
H IGH ) G'  c  2    9 16-BITS *C
AL V%  &   8-BITS & ;4 g'( AH(
U&  2 I  .8-BITS& ;4 g'( (LOW)
8-   3 U& 8 B bNB    D,C,B
.16-BITS   3 U&
:9 9 BITS
; (   % W
: U&  Q9 *x 
38B ]C GENERAL PURPOSE REGISTERS
& 8 Q9 5< ; (   % G9 !   %
u:   =#  ! ; 4 haA h  %

( Accumulator )AX & u1


! E %U R  &   AX &  NB
    4N   4  Z-   6&C  '(
 .dA>  A7> y4  ")  2
"=) 3 B#B  S  B ;  %
3: 6 ;'( ! UI FB ]O .S 4N 
6'- 
  2 2 ;! 3  O9 2

__________________________________________________________________
 17  SUST
 :   
_____________________________________________________________________

?= *0 *[ ;! 7 C dA = < $A<


;! 7 C dA = 3  A7< *B  
 
;4 g'( AX&  2    *B  ( .H7
.S   ! "7$  U&  *9
(Base Register ) BX & u2
]O ")  ;4( ! BX &  E %&B
")  2    '  V F'-0
;'( =$> ,z  ; 10 *B 7 C ,z
.  ! G ) ")  3 7 C =# b&
(Count Register) CX & u3
7  *8C' 7 ) CX &  E % *B
M ).'  3 ?7 C ;( :80 
& Q:7 ;'( :80 ! ;  % *B
.  3 7 C 7 
(Data Register )DX & u4
M )
&  6R  '( ! ;  % *B
dA> A7> y4 ,z) ;  % *B
.dA> A7> '( E % (

CS, DS, SS, ES 2L   U&

__________________________________________________________________
 18  SUST
 :   
_____________________________________________________________________

! 7 C Q( B C U&  ? E % *B



B N  ! FB U&  ?
m b  .") 
. ")  *D0
BL b0
4 ) 3B( ":,< 20 2  B 8088 S   Q9 *'4
  (":,< 20 '( GCB Address Bus 3B 
1 G9 220 = 1,048,576 < 0 ")W
NL% 38B
. Mbytes
:  ")  ! 4A 5 9 3B( Q9 4
00000 h = 0000 0000 0000 0000
0000
00001 h = 0000 0000 0000 0000
0001
00002 h = 0000 0000 0000 0000
0010
00003 h = 0000 0000 0000 0000
0011
00004 h = 0000 0000 0000 0000
0100
3! h $
'BL Q80
HI  ":  ! 3B  Q

 &  ":  ! 8 3B  2    


 ")  !
4A 9 Q( Q8B   +(
. FFFFFh 
4A Av Q( 00000h

__________________________________________________________________
 19  SUST
 :   
_____________________________________________________________________

) 
4A 20 3 Q8B Q  Q9 bRB ZN 
16 ?: L W S   A7 "7$  U& 
E %
'C& ') ") 
NL% B  n !
4A

NL% ;(- O  &  Q9 wO5 ) n ! O &


? :D
4 ( n ! 64 Kbytes < 0 ")W
2L   3
( < ")  *& 0 *0
'8+ 
! b ) 64 K Bytes
& 2- ) Segments
.   =# 

")  2L
) 216 = 64 Kbytes -  =#$  ")  2-
2-   *: &B 7 C * ? B C0 *B ")  ! 2-
B 0000h *  9 NB *:  Segment Number
.FFFFh * 
"7 C
Oj<
- Q  B C0 *B 2-   A 
3 7 C  2  { 3( ":N(
Oj> ? Offset
; K0 G9 16 Bytes - *:  2-  
B 
.FFFFh  0000h 3  3

__________________________________________________________________
 20  SUST
 :   
_____________________________________________________________________

 b0 FB ")  ! 7 C Q( B C  


'( Q 
) *0  
Oj> 2-   3 )
: ": 
Segment : Offset
hUI! Logical Address -  Q  &B  
2-   A7 5566
Oj> B AABB:5566 Q 
.AABB
! 2-  
 6 *B HB#  Q  '( C'
9
H[ 4A
:9 :  :&' ;Oj< ) 16 * 

Oj>

!< M W  *B (+(
  " O
4A
Q' m  HB#  Q  Qo!   ; <
 AABB:5566
A ABB0
+ 5566
= B 1116 ( HB#  Q 

4A 20 -)

 + 16 * 2-   *: = HB#  Q  bNB  

Oj>

__________________________________________________________________
 21  SUST
 :   
_____________________________________________________________________

LOCATIONS OF SEGMENTS 2L   2


Q  9 NB ")  !  2-   Q9 ZN  bRB
 2-   A7 Q( Av 00000 G9 0000:0000
9 NB  0FFFF Q  G9 0000:FFFF Q 
Q  G9 0001:0000 Q  ! 4I  2-  
Q  G9 0001:FFFF Q  B 00010
! A   3 hI)  Q! @4 ) .1000F
3B( ")  bB (1)8+  . ")  A7 2L  
'A 
'%  2L  

Q  BC

) 
"
2 *: 2-  
B4 1001F 45
……..
1 *: 2-  
B4 1000F 45
……..
0 *: 2-  
B4 0FFFF 53
……..

__________________________________________________________________
 22  SUST
 :   
_____________________________________________________________________

2 *: 2-  
B  00020 29

1 *: 2-  
B  00010 76

0 *: 2-  
B  00000 54
( 1 ) 8+ 
!
4A 16 )  9 NB 2-   Q9 bRB (1)8+  !
"  ")  !
4A 16 ) g&0 M W g'( . ") 
g'(
&  N 0   3B  3 G9 g&B .Paragraph
. Paragraph Boundaries    7 C 10h 7  
HB#  Q  B C0 Q! -  ! hUA 0 M  Q
!
'8+0 3 I) ZBL 3( G9
BL 3 I)T *B 
: M W b0
  
'I  .
Oj> Q( 2-   Q(

Q  B C
'- 
Oj>
 B C * u: I
: ! M W 1256A
1240 -  u6 1256 -  u9
: C 

__________________________________________________________________
 23  SUST
 :   
_____________________________________________________________________

+ 16 * 2-   = Q  :
7   *B

Oj>
VB  X
'- 
Oj>
 Q9 X! u9
Q9 4
7  !
1256A = 1256*10h+ X
1256A = 12560+ X
000A = X
1256:000A  Q  Q!  

=#  ! N0  
B-  Y4 N0o – 6
Z& 
! VB  X
'- 
Oj>
 Q9 X!
Q9 4
7 
1256A = 1240* 10h+ X
1256A = 12400+ X
016A = X
1240:016A  Q  Q!  
")  ! Q  Y4 < Q+B 34  Q9 G9

__________________________________________________________________
 24  SUST
 :   
_____________________________________________________________________

1256A = 1256:000A = 1240:016A


Q 
! 2-   *:
! hRB9 38  3
:   I  ! )
Oj>
 HB# 
I
/4) W< 80FD2h Q  B C 2-   Q(  
8FD2h G&0
Oj>
\
Oj> + 16 * 2-   = Q  :
7  
Q9 4
+ 10h * 2-   &
 = 80FD2h
BFD2h
7500h = 2-   &


Q_ 8B
'% 2L  ")  *& 0
'( b0 
3 S 4N  Q8B ]O \
'%  2L   U& ( K,
 1  3 ;( <
!>   3
(
Stack 4N  i 8 E %5
$C  <
!>
.h O5 ;'( ;  %
BL b G 
2 Code Segment S 4N  2- ! S 4N  2 *B
M ) Data Segment 4N  2- ! 4N 

__________________________________________________________________
 25  SUST
 :   
_____________________________________________________________________

B  Stack Segment i 8  2- ; ]O i 8 


.Extra Segment t  &B !< 2-

Code Segment Register (CS) S 4N  2- &


Code S 4N  2- Q( '( &   GCB
! 7 C 2- B C0 *B ]O Segment Address
cB0 E#'B M W  \;! S 4N  2 *B ") 
M  S 4N  0 * ]O S ' Q  M W
lA & ! ; 2-    Q( B C0 FB
Code Segment 4N  2- & &B
E %
Oj>
 B C0 *B Register (CS)
G  Instruction Pointer '  ,z &
.h O5 ;( f C  *

Data segment Register (DS) 4N  2- &


Data 4N  2- Q( '( &   GCB
  4N  cB0 *B ]O Segment Address
")  3 "7 C
- ! S 4N    B
 Q( B C0 *B ( 4N  2- &0 )

NL% 38B M W  .DS &  ! ; 2-  

__________________________________________________________________
 26  SUST
 :   
_____________________________________________________________________

E %
'%  1  2    ") 
.
'- 
Oj>
 GC0 GA9 U&
Stack Segment Register (SS) i 8  2- &
i 8) ;    ")  3 =#$ B C0 *B
(Last In First Out
B- i 8  B ]O
9 '  3
( ! ;  *B( LIFO )
*B h O5 G )
(! S N =  
'(
3 
Oj>
 GC U& 
( 
. Stack Pointer (SP) i 8  ,z 9
Extra Segment Register (ES) !> 2-   &
2-
NL%  B C &   E % *B
I)9
NL%
'( QO V ! E#'0 ]O !<
4N  3
)  4 I ) O / ! 2- 3
2- ! Av Q8 7 C Q8 3 ")  !
dC4 38  n ! 4N  & 8B 5   
2-    *! A_ 2-   B C !< &
( ES !>

Index and Pointer


  ,z  U&
Registers (SP, BP, SI, DI)

__________________________________________________________________
 27  SUST
 :   
_____________________________________________________________________

[ C0   2L   U& 2 U&  ? E % *B


! "7 C 3B( 2 FL%' Z&  =#  ! (
'( =$< 38B 2L   U& Y8( \") 
.U&  ? '( Z-  6&C 
Stack Pointer (SP) i 8  ,z
* i 8  2- 2 &   E % *B
.
7    ! i 8  3(   f C 
Base Pointer (BP) " (  ,z
4N  2 FL%' h9 &   E % *B
i 8  ,z Y8( ;8  i 8  ! "7$ 
2L ! ") 
NL% ;  % 38B ]O
.i 8  2- x GA9

Source Index (SI) :  


! &
2- ! ") 
NL% ! &   E %&B
(
B4 9 )
B  < ":,> E B ]O 4N 
    6'- ")  3 "7 C
-

__________________________________________________________________
 28  SUST
 :   
_____________________________________________________________________

2    *B " ) ! &  


 1
.")  3
-  ? )
Destination Index (DI) 7& 
! &
]O SI :  
! & I E %&B &  
* G  ")  Q( < &   +B
2-   E % "7( M W *B ;! 4N  3B#%0
2  0     3
(  ES !>
Q( :   Q( Q9 X0   l 
.3'&  3B !  B C0 *B 7& 

Instruction Pointer (IP)   9 '  ,z


  % *B Q_ gO ( [ C0   U&  )

NL% .")  !
4#%  4N 
NL% !
S 4N  !  9 9 Q(
! S   E#'B S 4N 
Q( B C S   E B M W  \?0 6'- 
.S 4N  0 ! &B    
,z ! ?0 6'-   J
Oj> 3B#%0 *B
]O Instruction Pointer (IP)   9 ' 
  Code Segment S 4N  2- ! M W *B
5 .CS:IP  ?0 6'-    Q( Qo!

__________________________________________________________________
 29  SUST
 :   
_____________________________________________________________________

A7 3 ",N '  ,z


NL% 38B
I ",N x
B- ; 10 *B 4< S 4N 

 2 *B ]O 7 C Q( <   5O

O ! M W '  ,z ! Q  M W
. 
'( f O

Flags Register e:N  &


(EU( ) e:N  3
( '( &   GCB
e:N
N&  .*8C  e:
C  e: :Q(4 

'( ) 0  S  
O b0 !
C 
e:N  ? ZBL 3( 38B ]O
 
O b
;!: *0    e Q) W< hUI )
 
!
  ( a G&0
'( Av
4 Q9 M W !
:  W%0
N  e:N  :NA 38B
:-A>   *! *8C  e:  9 .
N 
e E % 38B hUI 7 C = + E  S  
;! a
  2 Interrupt Flag
L  
= 4 B Q9 S   3 F'-4 4o!  

__________________________________________________________________
 30  SUST
 :   
_____________________________________________________________________

*B 5 G9 ) hUI b0 


O 3 ; < "7: 
L  
3( f C  * ( b0 
O 3 UA N 
.h O5   e:N  ?

Memory %+  FC  ! ")  *D0


Organization
38B 5. 1Mbyte - ")W 2 8088 S    B
38  ) *B   S N  ! ")  ) E %
UI! "7 C Xx "jC ")  ! ZL 
3B jC 1KByte - ")  3  =#  B
 M ) Interrupt Vector Table
L   = 4
BIOS dA> A7‚  ED  S N
% =#$9
*B  j  ! dA>  A7> ' E B G 
ROM(READ ONLY n ! "= ")W A7 ;B#%0

'O  ! j  1+0 = N E B G   MEMORY)


. 
" O
% ")  !
- $0 M )
.(VIDEO DISPLAY MEMORY
,+ )X 

I/O PORTS dA> A7> y4

__________________________________________________________________
 31  SUST
 :   
_____________________________________________________________________

A7> 3B( 3 64KB 2 8088 S    B


.
$:% 
!> =#$ 2  ' M W dA>
",N dA> A7> y4 2 FL%  RB 5  (
10 O FN& M W
a%  5C  V ! 5<
2    *B Q9 RB "#$ V ! 3B 
?  E  1+  ED = 4 ZBL 3( "#$
.
 

3B:0
ƒ 8088 S   80286 S   3 e    u1
ƒ ")  ! 7 C  2  &  3 e    u2
. DX,CX,BX,AX 4N  U& cHm )W u3
Q  7 C  2' HB#  Q    u4
ƒ 0A51:CD90
:F&O 4A37B ;4( ")  ! 2 u5
. 40FF  -  Q( Q) W<
Oj> u9
.123B
Oj>
 /4) W< -  Q( u6
ƒ ")  !    7 O   u 6

] I   
__________________________________________________________________
 32  SUST
 :   
_____________________________________________________________________

2 
1 < A

g'( P  8088 S ' 'A  F)  b0 

)    !  ; "7$ 


'%  U& 
 
B 2 
1 S 4 1+0 #0
)

B„: ;'1+ E 4 Q 20
1 S 4 F84 Q9 2-&
.
 
;1a g  J
 
1  b 9 N
1 GT)
cB0
BL b   .2 
1 ! h $
-&
 4  9 V X&4   S 4N  A7 1 

B  ! .
-&N 
&C  '   9 4N 
3 Q8B ;4 wOU G  S 4N' E  8+  X&
lA A9 =#$ 4N  lA 4[ =#$   lA =#$
ED
-&N  =   V E % * \i 8 
.dA> A7> '(  E  1+ 
g < 2 
1 S 4 BC0
) b0 *
B  !
.
H  ;0:a ! S 4N  1+0
_
1
u: 2 
1 '0
g&B S 4
-
_
1' 2 
1 S 4 BC0 *B
?7 C ?: ' 
) FB   Assembler
__________________________________________________________________
 33  SUST
 :   
_____________________________________________________________________

 =#   g! \Assembler t  '( PB gO


.
%&   J E  8+ 
]C   9 '  3 ;( 3 S 4N  Q8B
3(4 M  Q9 ) n ! O  9 g'( - ) @CB
.'  3
t  E B   Instructions '  9  
Assembler- jB>
_
1 < 'BC Assembler
VN E ' Assembler t' WB< g Directives
1 ")  3 =#$ p%0 I "7 C  ' 
.g(! S 4  0 7 C
":  AT0 2 
1 !   )
NAME OPERATION OPERAND(S)
COMMENT
9 TABt  K
-  C  3   *B
 g'( O …!  Q8B G9 (SPACE) "-& 
.    C   O ) 3
2B0
'( f O
O ! NAME *5 E % *B
3  =#$ ! (S 4N  3 -&   )   
.G:A  O  S 4N 
.?0 6'-    g'( @CB Operation  C 

__________________________________________________________________
 34  SUST
 :   
_____________________________________________________________________

U   9    g'( @CB Operation(s)  C 


4 g'( B 7 C   
- 0 6'- 
 7$ F'-0 5   V  Q9 wO5) . 
.( C 
Z'' "7( E %&B Comments t  mC'   O
.S 4N  Z[ E %&B  C    g'(
'' I)
CX , 5 ; MOV Srart:
initialize counter
MOV E %&    Start Q( W   ?
5 *  2  M W   5 *  CX  U  

   5 Q9 bB DOU   O CX &  !
.7 '
H 5
jB‚ I 
Proc Main
.Main * (=$<) (! S 4 cB E B jB> 
: 
'%   C  3( f C 'B !
Name Field Q   O
9 7 C   Q( =-(>  C   E % *B
=9 QU(> M ) (! S 4N * =-(>
__________________________________________________________________
 35  SUST
 :   
_____________________________________________________________________

! 3B( <  C   BC0 *B \1 


.") 
x PO 31 gO -  C   Q8B Q9 38B
E %&B 5 M )  C  A  !& 7$ K&
*B 5 * 9 NB 5 *5
B  ! 5< “.” PC 
.;! "1  "N8  PC  3 ZB 
:
N =
'I 9
start – counter - @character – sum_of_digits
- $1000 – done? - .test
:
N x =
'I 9
two words '( GCB
x!
2abc * 9 NB
a45.ab
; ! (.) PC  '( GCB

Operation Field ( )


'   O
6'-  OpCode   '(  C   GCB
@ O< Q80 Q9 FB -&   ! 0

  E  G  S 4N'
!  ' 
< 'BC E  ]O Assembler t   S 4N 
__________________________________________________________________
 36  SUST
 :   
_____________________________________________________________________

Mov  Add  Sub '  M  I)


_
1
  ( ]B C  *
! '0 ')
.h O5
'BC0 *B U! Pseudo-Op hjB< /4) W<  9
= + E  Assembler t  :-A> 8 
_
1'
(! S 4 cB E %&0 Proc hUI 7 C
Procedure

Operand Field U    O


1  U& 3 U   '(  C   GCB
I ) '( C    0 *   /[
'( GCB Q9  C   38B ( hUI 2 
'(
'(
 G9 '( GCB 5 9 " O
 9 3

  
'I  E %&    4 F&O M W eUL>
M W b0
U    
U  $0 5 NOP
CX &   O   $B INC CX
Word1 1   QU  $B ADD
Word1 , 2
2 * 

__________________________________________________________________
 37  SUST
 :   
_____________________________________________________________________

     Q8B 3'   W  C 


O !
7&  &B ;!
  3B#%0 * G 
U&  O9  < Q8B  destination Operand
V Q9 wO5 ) ")  ! 7 C 2 9
4I      9 ( hUa9
  3B#% E 0 5  
*B 5 "7( Source Operand :   '( GC!
. C    0  ; 10
'( "7(    GC! jB‚
N&   9
.jB> 3(
!<  '

Comment Field DOU   '   O


 '0 S N  3 DOU '(  C   GCB
 
m b E B  "7(  C    '(
 p%, G "  Q80 
!<  ' G9
 C   =  *B .;! ! ? (&0 S 4N  9 B

'a  ?  2 0 ":N( G9 ";"


L  
'a 
.DOU 49 '( '0 *B
L  
2 
1 Q 38  G:A  C   Q9 *x:
Q9 R! 3 ;4o! K+  VN ! '  dC0
dCB 9 b x  9 G9 '(  '0 2 *B

__________________________________________________________________
 38  SUST
 :   
_____________________________________________________________________

-9 3 - ) '( Z'0 2 *B  "7( &



) 3( 3 #  : "N%  6&) *B S 4N 
: F x   Z'  hUI! .F  Z'  2
; move 0 to CX MOV CX , 0
:   Z' 
) *B Q9 R! 3 Q)
; CX counts MOV CX , 0
terms, initialized to 0
Z'0 ;49 '(  ) - E % h4O9 *B )
I  ! ) "7 C " ! K,
O ! M W
:  
;
; Initialize Registers
MOV CX,0
MOV BX, 0
Program Data S 4N  !
%&  4N 
E:9 ":a ! 4N  2    S 4N  E B
2    *B 2 
1 S  !
H[
9 +(
 &  9
HI  ":  ! E:
.PO ":a ! gO 9
B+ 
Numbers 7 (

__________________________________________________________________
 39  SUST
 :   
_____________________________________________________________________

0 1 0 ":a !
HI  E:
) *B 
Binary H[ *  Q9 '(
5 ' b 9 B PC 
11100011b 9 01010111B I 
"7  ":  ! ) *B
B+  E: 
0 Q9 38B ) \
B  ! PO Q 

B+( 49 '(
57 d PC  9 D PC 
.–234D  1345d  1234 I Decimal
0 * 9 N0 Q9 FB +(
 &  E: 
+(
  49 '(
5 ' h PC  9 H PC 
! FN&  ) . 56H 9 0abh I Hexadecimal
 6'-  Q9 b  I  ! 0 
&  1  Y  ab +(  &  * 
.( ab

'I  V bB     
mC'
* 
G+( 10011
H[ 10011
b
G+( 6455
+(   -456h
__________________________________________________________________
 40  SUST
 :   
_____________________________________________________________________

( * 9 NB 5 ) T-A FFFF


h
x PO g'( GCB ) T-A 1,234
( :
(H 9 h PC  B * ) T-A 0ab

Characters PC 
hUI p   U( A7   PC  2 *B
< PC  BC0 h'A7 *B ‘SUDAN’ 9 ‘A’
t 
- ASCII t  7) ! "m  E:
M W '( ")  ! B#%0   Assembler
*   ) 41h *  ‘A’ PC  3 e! $B 5
9 S 4N  A7 M W (   ! A PC' m 
.")  ! 3B#% 
O4 3
VARIABLES tt1 
G  :  Y4 2 
t1 ! 1  F'0
High   @&  W 1'  S N  ! ;N'0
8N 
1 I Level Programming Languages
1  =9 B C0 FB M W g'( .g& 
__________________________________________________________________
 41  SUST
 :   
_____________________________________________________________________

#O * ]O 1 ) 4 S 4N  !


%& 
4 2 FB - 1 8 ")  ! Q8
E % *B .1  cB0 7 M W 1 
]O 2 
1 ! 1  cB     
.;B0 6'-  1   WB< ) +B
gtttttttttttttttt  jtttttB5

4A 1+B !O 1 cB DB (Define


Byte)
")  ! " O
34A 1+B
') 1 cB DW (Define
Word )
")  ! 3 
4A
:9 1+B 1 cB DD (Define
Double Word)
")  !
 
4A Q[ 1+B 1 cB DQ (Define
Quad Word)
")  !
 
4A +( 1+B 1 cB DT (Define Ten
Bytes)
")  !
 
 DB   3 1  2    E  =#   !
. DW

: Byte Variables
tt!C  1 
__________________________________________________________________
 42  SUST
 :   
_____________________________________________________________________

:
   ": 
!C  1  cB 0 *B
Name DB Initial_Value
hUI
Alpha DB 4
! " O ;4A 1+B 1 cB jB>  E B

tH  ; 2 *B Alpha ; ") 
. 1   ! 4 :
7$ E (
O ! (ƒ ) E5
U(  *B
. tt1'
H  ;
Byte DB ? : I
K0 1   ! B#%0 38B   *tt 
Q  B#%0 *B   E:
O ! 255  0 3
 u128 3  Unsigned Numbers ":,<
":,o B#%0 *ttB   E:
O ! +127
. Signed Numbers

Word Variables   1


*B Word   3 ;49 '( 1  cB0 *B
M W Two Bytes ")  3 34A ! ;B#%0

1  E %
name DW initial_value
__________________________________________________________________
 43  SUST
 :   
_____________________________________________________________________

  cB  hUI
-2 DW WRD

H 
 2 WRD * 1 cB0 ;! *B
;! ( 2– *  )
! ƒ
U  2 *B
!C  1 
O ! )
.1'
H 
 7$ E (
O
K0 E:9 3B#%0 word   3 1' 38B
E:
O ! ( 216 –1 ) 65535  0 3
Unsigned Numbers( n !
N$  ) ":,< Q 
gO ( -215 ) 32768– 3 E: 3B#%0 38B
":,o E:
O ! ( 215 - 1 ) 32767
.Signed Numbers (
N & 
N$  )

Arrays ! 

( 49 '( !  2  4 2 


1 !
! ")  !
a  '8  9 PC  3

[U[ '( GC0
! cB hUI! .
  3B(
 10h
H  *  3Bytes !C    3 E:9
:   cB  E % *B F0  '( 30h  20h

__________________________________________________________________
 44  SUST
 :   
_____________________________________________________________________

10h, 20h, 30h DB B_ARRAY


!    < +B B_ARRAY *5
+B B_ARRAY + 1 *5 ( 10h 7   )P 
< +B B_ARRAY + 2 *5 4I    <

Oj> Q( p%0 *0 W< hUI! .] I   
) ")  8, Q8B B_ARRAY 1' 0200h
: 'B
#   ) *5 Q 
GC 
(Symbol
B_ARRAY 0200h 10h
B_ARRAY + 1 0201h 20h
B_ARRAY + 2 0202h 30h

hUI! ') 3 Q8 P cB0 *B


B-  Y
cB 
W_ARRAY DW 1000h,
2000h, 3000h

H  *  a(


[U[ '( GCB P cB E B

  3B%0 *B .F0  '( 3000h  2000h  1000h



4I 
  W_ARRAY Q  !( 1000h ) 
Q  !
I I 
  W_ARRAY +2 Q  !
! P  3B#%0 *0  hUI! .8 W_ARRAY + 4
__________________________________________________________________
 45  SUST
 :   
_____________________________________________________________________

) ")  8, Q8B 300h Q  3 h=  ") 


: 'B

#   ) *5 Q  GC 


( Symbol
W_ARRAY 0300h 1000h
W_ARRAY + 0302h 2000h
2
W_ARRAY + 0304h 3000h
4

")  ! B#%0 *B    3 1' Q9 wO5


Low  Qj  W
4%  3B#%0 *B ]O 34A !
High N) Qj  W
4%  
4%  ! Byte
B Q) W< hUI! .",N   Q  ! Byte
Word1 DW 1234h : cB 
( Qj  W
4%  IB G  ) 34h *  3B#%0 *B
W
4%  IB G  ) 12h *  word1 Q  !
.word1 + 1 Q  ! (N) Qj 
Character Strings l  H 

__________________________________________________________________
 46  SUST
 :   
_____________________________________________________________________

*B PC  3
'&' 49 '( l  3B#%0 *B
*  9 PO ":a !
H 5
  2
ASCII Table PC   $ ! PC' "m 
Y4 < QB7zB 3   Q   QB  hUI!

  2 Letters ; 1 cB0 


 
;! ‘ABC”
H 5
1 - Letters db ‘ABC’
2 – Letters db 41h, 42h,43h
*  PC  GC
H 5
  S 7 38B
  I  ! )  "m 
msg db 0dh,0ah,’Sudan$’
Capital "N8  PC  3
  2N-   *B
.Small Letters "1  PC  Letters
/I 
3 9 S 4N   /I  E % "7( *B

'%  /I  cB M W *  "=  ]O
EQU jB> E % *B .S 4N  !
%& 
:   C  '( /I  cB (EQUate )

name EQU Constant


__________________________________________________________________
 47  SUST
 :   
_____________________________________________________________________

&B /[ cB hUI ./I  *  name ]O


F84 0Ah
H 
  LF
0Ah EQU LF
0Ah *  3( h5  LF /I  E % 38B  
MOV 0_ E % 3( h5  MOV AL , LF 0_)
/I  BC Assembler t  E B ]O . AL,0Ah
.0Ah *  < S 4N  A7 LF
  I  E % 8B M )
Prompt EQU ‘Type your
Name’
Msg DB prompt
 9 9 ;'0 Y  jB< 3( ":N( EQU Q9 wO5
.")  ! ; 1 cB0 ;( SB 5  


   V

)
   V '( P =#   !
Q9 X   % '(
'%  7    %

') 1  Byte2  Byte1 *


!O 1 B
Word2  Word1 *
MOV   – 1
__________________________________________________________________
 48  SUST
 :   
_____________________________________________________________________

A_ Q8 3 4N   4 ! MOV   E %&B

a%  U&  9
  U&   3)  ?
( 2 )  4 ! gO 9 ")  ! 1  9
.& '( 9 ")  3 7 C Q8 !
[

  J
  ": 
Destination , Source MOV
7&  < Source :   BC  4 *B ]O
  0  :  
 [T0 5 Destination
hUI
AX , Word1 MOV
< Word1 1  (
 ) BC ‡&4 *B ]O
AX &'
 
  ! *B 2N-  .AX & 
  M ) .  0 
AL, ‘A’ MOV
A PC' m  *   ) 041h *  2 E B
.AL &  ! ( ASCII t   $ !
MOV   E % 7 bB     

__________________________________________________________________
 49  SUST
 :   
_____________________________________________________________________

7& 
/[ 1 & &
:  
! 2 ) 2- E(
(") 
x K& K& K& E( &
K&
x K& x K& &
K& K& 2-
x x K& K& 1
K& K& 2 )
!
(") 
x K& x K& /[
K& K&

(Exchange) XCHG   u2
9 3'&
  N5 XCHG   E %&B
")  ! 7 C 2 2 &
  N5
:   J
 
1  .(1 )
__________________________________________________________________
 50  SUST
 :   
_____________________________________________________________________

XCHG Destination, Source


:I
XCHG AH, BL
AH
 bN0) AH, BL 3'&  * 7N0 *B ]O
.(AH @&0 BL BL
 @&0
:I
1  2 AX & 
  N E B    
WORD1
XCHG AX, WORD1
XCHG   E % 7 bB     
7& 
! 2 & :  
")  E(
K& K& E( &
x K& ! 2
K& ") 
:ADD, SUB, INC, DEC, NEG
&C  '  u 3
KL 9 2 SUB  ADD 3B  E % *B
2 9 ")  ! 2  & 9 3'& BC
__________________________________________________________________
 51  SUST
 :   
_____________________________________________________________________

")  ! 2 2 & 9 & 2 ")  !


u:  3B J
 
1 
Destination, Source ADD
SUB Destination,
Source
  hUI
ADD WORD1, AX
1 
 < AX &  BC 2 E B
5) WORD1 1  !
  3B#%0 *B WORD1
(  0  AX &  BC
 10 *B
  M )
SUB AX, DX
AX &  3 DX &  BC KL *B ]O
BC Q9 wO5) AX &  !
  3B#%0 *B
(  0  10 5 DX & 
 ADD 3B   7 3NB     
SUB
7& 
! 2 E( & :  

__________________________________________________________________
 52  SUST
 :   
_____________________________________________________________________

") 
K& K& E( &
x K& ! 2
K& ") 
K& K& /[
3 ,N  K-  9 2  K& x ;49 wO5
  Qo!   O  9 ! ")  ! 2
38B 38  ; K& x ADD BYTE1, BYTE2
:":  g'( ;) "7(<
1 
 *B ]OAL, BYTE2 ; MOV
2 
'( N & 
BYTE1, AL ADD
< 5 *  2 E B ADD BL,5  
.BL &  !
  3B#%0 BL &  BC
 3B1  Q8B Q9 FB ;4 4 ; (
DOU)
N x     Q9  -  Y4

__________________________________________________________________
 53  SUST
 :   
_____________________________________________________________________

MOV AX ,BYTE1
 9 " O ;4A  BYTE 1  L Q M W
Q9 G9) .2-BYTE 34A  ; L Q! AX & 
(   Y4 3 Q80 Q9 FB (U  ) 1 

  N t&B ASEMBLER t  tt4 tt


:   Qo! /B AH E7 ) MOV AH, ‘A’
( /B M ) Q8B Q9 FB
RB9 E B AH &  ! 41h *  2 *B ]O
  N 
:   Qo!
') AX E7 ) MOV AX ,’A’
(
') M ) Q8B Q9 FB
t&  ! 0041h *tt  2tt *tt ]tO
. AX
INC (Increment) , DEC (Decrement) , NEG  
Q 4 9 "7Bj ! *B INC ,DEC 3B   9

1t  1 :  ")  ! 2 9 & ;
:  
 
INC Destination ; Destination =
Destination +1

__________________________________________________________________
 54  SUST
 :   
_____________________________________________________________________

DEC Destination ; Destination =


Destination - 1
BC g < 1 2 Et B INC WORD1  UIt!
WORD1t1 
1 *  l 4o E tB DEC WORD2   t
. WORD2 t1  BC 3t
G  NEG(Negate)   3( f C4 hA9
F  *: < F$  *  ":,< ttBC &B
M W F$ *: < ;'tBC0 *tB F &  *t 
2’S Complement 3[5 8  g < ;'tttBC
:   J
 
1 
NEG Destination
! 2t 9 U&  O9 2t  t  *tB ]tO
") 
: tttI
NEG BX ; BX = -BX
NEG BYTE ; BYTE = -
BYTE .
u:2  S  ":a < :N  BC0
 ! E 
&    2    *B 8
' 
 N  1 3 '  V BC =# 

__________________________________________________________________
 55  SUST
 :   
_____________________________________________________________________

< High Level Programming Languages


. 2 
1' '0
3( ":N( B  A 3B1  Q9 ! W<
.WORD   3 3B1
B=A ":N  BC
< ")  ! 1 BC  4 38B 5 ;4
< ":N  BC0 E#'B h",N ")  ! Av 1
< & 
  4 *[ & < 1 
  4
6'-  * 
B g  ' 4 N AX &   A BC  4
MOV AX , A
MOV B , AX
  g <
'BC0 *B A=5-A    9
MOV AX , AX ! 5 2
5
SUB AX , 5-A '( GC0 AX
A
MOV A ! 
A , AX
  g < 9
NEG A
ADD A,5
__________________________________________________________________
 56  SUST
 :   
_____________________________________________________________________

  g <
'BC0 *B A=B-2*A   hA9
MOV AX,B
SUB AX,A
SUB AX, A
MOV A,AX
u:S 4N' E  8+ 
")  *& 0
'( b  Z&    !
'(  2-   @CB ]C
'% 2L g <
CODE S 4N  2- g&B ;&4 S 4N 
4N  '( @CB Av 2-  SEGMENT
DATA 4N  2- g&B S 4N  !
%& 
g&B i 8  '( GCB ] [ 2-  SEGMENT
STACK SEGMENT i 8  2-
2L   ?  0
) b0 * =#   !

)
) b0 2 ASSEMBLER t 
-
.S 4N  A7 2- ) cB0
:MEMORY MODELS ")  dW4
6'-  S 4N  Q8B  ;4 gR ! 4)W )
8 n ! O 2- 2&B Q9 38B ]C 1a ;)
< dC0  i 8  4N  S 4N  3
__________________________________________________________________
 57  SUST
 :   
_____________________________________________________________________

 *B .? O g'( 8  2- E %


:   -& 
8 M W .MODEL
'8 
.MODEL
MEMORY_MODEL
$B
- 4 G9 cB0 N -&  
) *B
! C0 *B P ")' dW4 3 I) B
4N  *O 38B * W< h ( 38      
  SMALL dW  E % hN x *B hN)

) *B . e-   S N  F'x ! C 
SMALL .MODEL :
   ":  g'( -& 

'%  ")  UB7 =9 bB     


 ) pHA b0
ca  B7 
MODEL
! 4N  O 2- ! 78  SMALL
O 2-
4N  2- 3 I) ! 78  MEDIUM
O 2- !
! 4N  O 2- ! 78  COMPACT
2- 3 I)

__________________________________________________________________
 58  SUST
 :   
_____________________________________________________________________

4N  2- 3 I) ! 78  LARGE


K& x 38  2- 3 I) !
64k BYTE 3 N) P cB
4N  2- 3 I) ! 78  HUGE
Q9 38B 38  2- 3 I) !
3 N) - P  Q8B
64k BYTE

:DATA SEGMENT 4N  2-


1  ) cB0 g'( 4N  2- @CB
4N  2- ! ! B0 38B /I'
N& 
! Q8 1+0 5 4
N&4 Av Q8 G9 ! 9
.") 
.DATA cB  E % *B 4N  2- cB
",N /I  1  cB0 *B M W 
M W bB   I 
.DATA
WORD1 DW 2
WORD2 DW 5
MSG DB ‘THIS IS A
MESSAGE’
__________________________________________________________________
 59  SUST
 :   
_____________________________________________________________________

MASK EQU 10011001B


: Stack Segment i 8  2-
")  3 =#$ #O  i 8  2- 3 X1 
0 =[9 4N  YB 80
'( ! ;  % *
) 3B#% !) *C   Q8B Q9 FB .S 4N 
6'-  *  ) 3B#% ) ;05O 9 ! i 8 
.( S 4N  ( =[9 &B 80
:cB  E % i 8  2- cB0 *B
.Stack
Size
i 8  *O  hB:A< h7 ( IB size ]O
cB E B   I  .bytes  O 
100h *C i 8 
.Stack 100h
1KB *C  X! *B *C  cB0 *B * W<
. Assembler t 
-
: Code Segment S 4N  2ttttt-

%&  '    g'( 2-    @CB


:   C  g'( ;B0 *B S 4N  A7
.Code Name
* =-(> (7 5. 2-   * ttt Name ]O
O 2- B Q5) Small dW 
O ! 2- '
__________________________________________________________________
 60  SUST
 :   
_____________________________________________________________________

=-(o Assembly t  S 4 E  ]O ( n !


.
C  ? ! T-A
:
S  ":a !   2 *B S 4N  2- A7
cB0 n&9 Procedure ( =$<) "tt1a
  C  g'( =$> ?
Name Proc
; A7 '   
=$>
Name ENDP
! Endp  Proc  9 \=$> *  Name ]O
Pseudo_Ops jB<

 ) S 4 2- bB   =# 


.CODE
MAIN PROC
;=$> A7 '   
MAIN ENDP
; ttt) *tttB =$>
 
ttttt
E  8+  Q! S 4N  2L ) B9: Q9  Q_
:   C  g'( Q8B .small dW 
O ! S 4N'
.MODEL SMALL
.STACK 100H
__________________________________________________________________
 61  SUST
 :   
_____________________________________________________________________

.DATA
; /I  1  cB0 Q8B 
.CODE
MAIN PROC
; =$> A7   ' 
MAIN ENDP
; F80 =$>
 
END MAIN
S 4N 
B4
') @CB S 4N  ! - Av
. S 4N  ! &H  =$> *
(N END

INPUT &OUTPUT dA> A7> '0


INSTRUCTIONS
E %
$:%  "#$ 2 Z  S    B
IN   E % M W dA> A7> y4
!
8' OUT   A7< = g! "= '
V !   ? E % *B . dA< =
2   
(  6'-  Q) W<   QO
!   ? E % *B 5 "7( $:%  j 
 y4  3B( Q9  3NN&
 N-  S N 
) ! S 4N  B 0 F'-B  A_ j$ 3 c'%0

__________________________________________________________________
 62  SUST
 :   
_____________________________________________________________________

"#$ 2     3 ;4 4I  \ "



- "#$J
  )+ 
-
$:% 
!0 *B SERVICE ROUTINES
A 0:
. "#$J
  )+ 
-
   !
%& 
%  0: ! Q(4 $B
BIOS (BASIC INPUT  g&B y4  2
E % 4I  /OUTPUT SYSTEM )
")W ! B#%0 *B BIOS t  0:. DOS t 
y4 2 ",N  B ( ROM t ) n ! "= 
 E 0 DOS t   A  dA> A7>
 PO
'&'
(NL hUI h  0 I) '(
'( 0 ! BIOS  E % "7( E 0
.",N dA</A7<
"7 C
'(  DOS t  9 BIOS t  = 4 *B
=   INT (INTERRUPT )
L = 4 E %
":  ? g'(
INT INTERRUPT_NUMBER
hUI 7 C *: 
L   = 4 *: B C0 *B ]O

aA g BIOS t  !
A F'- E B INT 16h
lA INT 21h  b0 
O !
 "= 

__________________________________________________________________
 63  SUST
 :   
_____________________________________________________________________

B# g'( P  * DOS t  3


A = 
‰ QWo h O5  %  3

( INT 21H ) 21H*: 2L   = 4


3 "N)
(  =    E % *B
*B ]O DOS 1+  ED4  B    % 
F'-B  AH &  !
'- 
%  *: 2
F&O M W @A9 U& ! *  V 2  

L   F'L = 4 *B M W 


'- 
%  4
= 4 ! "7 C * N    F'-B . 21H
2 *B. U&  !  *B ]O
L  
)
m bB N)  $ !
'%   % 
. $%   < UA  
A

   %  3 n !
[U[ bB     
ED   %B
( 30  ) ca 
*:

% 

__________________________________________________________________
 64  SUST
 :   
_____________________________________________________________________


O 3 " O
 "= 1
b0 

,+  ! O PO
) 2
! PC  3
(
) 9

,+ 

 %  ? V    =#  !


b0 
O 3 PO "= : 1 *:
% 
AH &  ! 1 *  2 : UA  
ASCII  7) '( GCB AL &  : $% 

O ! ;'( n1R  *0 G  PC'
x K g'( n1R 
O ! 0 9 b0 
NON CHARACHTER KEY !O
.( F1-F10 b0  UI )
u: 0_
) *B
%  ? 
AH,01 MOV
INT 21H
n1R  3O g < E %&  :D4
%  ? E 0
G9 g'( n1R  ( . b0 
O g'(

__________________________________________________________________
 65  SUST
 :   
_____________________________________________________________________

3 K' ASCII t  7) g'( C  *B K


;'( n1R  *0 G  PC  X( *B ) AL & 

%  ? E 0 5 .
,+  '( b0 
O !
*B gO D0 n ! ! E %&  <
: :o

a%  b0  V n1 *0 W< .K g'( n1R 

  '( AL &  GCB P&! F1-F10 I
pC! 2-&0 INT 21h '0   '  . a
.F    %0  AL & 
0 9
,+  g'( PO X( : 2 *:
%  u2
.*8C0
m
. AH &  ! 02 *  2 : UA  
PC' 7) ASCII t  ", 2
. DL &  ! ;( 6'- 
*0 G  PC' ASCII t  78  : $% 
.AL &  ! ; *B ;(

,+  '( E
U( X0
     :I
MOV AH , 02H
MOV DL , ‘?’
INT 21H

__________________________________________________________________
 66  SUST
 :   
_____________________________________________________________________

,z  CB
,+  g'( PC 
(NL 
2  Q) W< )   2  <

B  < ,z  CB -& 
B4  C 
.( B   -& 
*8C  PO
(N-
%  ? E % *B
bB      hRB9 Control Character
(*8C  PO V

tm  #ttt tt  78 
ASCII
a : a< BEL 7
(Beep)
Back c'%'
!& BS (Back 8
space)
( Space )
Tab :  C0 HT 9
(Tab)
B $ - LF (Line A
Feed)
C  -& 
B  CR (Carriage D
return)
ASCII ", '( AL &  CB   
*8C  PC
: S 4N 

__________________________________________________________________
 67  SUST
 :   
_____________________________________________________________________

b0 
O 3 PO "=  E    4
-& 
B  ! ; A7< *0 G  PC 
(NL *[
.S 4N  =4< *[  
:
   =#$ 3 S 4N  Q8B

,+  g'( "ƒ" E5
U( :m< u1
MOV AH,2
MOV DL,’?’
INT 21h
b0 
O 3 PO "= u2
MOV AH,1
INT 21h
BL Av & ! ; A7< *0 G  PC  wO u3
E %& 4 M W  hUI
-& 
B  < ,z  MBC0 ! DL & 
AL &  BC 1 M W G7z B  
6'-  PC  N  E 0 2
%  Q9 wO5 )
N-  PC  "7(o E 0 DL &  ! ;(NL
(;!
'& 
  4 'B  AL &  !
BL I Av & ! ;0BC 3B#%0 FB  
MOV BL , AL
FB B   -& 
B  < &  MBC u4
*8C  PO
(NL
__________________________________________________________________
 68  SUST
 :   
_____________________________________________________________________

0_) M W *B Line Feed  Carriage Return


MOV AH,2
MOV DL,0dh ;
Carriage Return
INT 21h
MOV DL,0ah ; Line
Feed
INT 21h
*0 ;4 wO5) ; A7< *0 G  PC 
(NL u5
(3) "-%  ! BL &  ! ;B#%0
MOV DL , BL
INT 21h

M W *B 1+  ED4 g  "7   S 4N  =4< u6


AH &  ! 4Ch *  2
.21h *:
L   = 4 =( 
MOV AH,4CH
INT 21h
:
   ":  g'( S 4N  bNB M W g'( 
TITLE FIRST : ECHO PROGRAM
.MODEL SMALL
.STACK 100H
.CODE
MAIN PROC
; F 
U( :m
__________________________________________________________________
 69  SUST
 :   
_____________________________________________________________________

MOV AH,2 ; PO


(NL
MOV DL,’?’ ; 6'-  PC 
;(NL
INT 21H
;b0 
O 3 PO "=
MOV AH,01 ; PO "=
INT 21H
MOV BL,AL ; PC  3B#%0
; - g < 6 
B $
MOV AH,02
MOV DL,0DH ; carriage return
INT 21H
MOV DL,0AH ; line feed
INT 21H
; PC 
(NL
; A7< *0 G 
MOV DL,BL ; ; 3 PC  :RO<
& 
INT 21H
; DOS 1+  ED4 g < "7 
MOV AH,4CH
INT 21H
__________________________________________________________________
 70  SUST
 :   
_____________________________________________________________________

MAIN ENDP
END MAIN
DOS t' *8C  CB ;4o! S 4N  cB  ( ;49 wO5
4Ch
m  INT 21h 
! 4N  - PO ! 1  E % *B * ;4
S 4N  

u: S 4N  1+0 =+4<


1+' S 4N  #0  =+4<
BL b =#   !
u:
   -%  M W 3RB ]O
S 4N 
8 Text Editor S 4 G9 E % u1
(:   S 4 c' ) .Z&  I  ! b 
g&  c'    ASSEMBLER t  E % u2
. OBJECT FILE
t  ' n LINKER n  S 4 E % u3
1+  c'   OBJECT
. EXECUTABLE FILE
.S 4N  1+0 u4
u:
&  -%  3 "-A )   b0 'B !

__________________________________________________________________
 71  SUST
 :   
_____________________________________________________________________

u: SOURCE FILES N  c' =+4< u1


S 4N 
8 Editor l4 :C G9 E % *B
Text @7( 4 c' SB :C G9 E % 38B
7   c'  3B#%0 "7( *B EDIT I Editor
c'  wC4 Z&  I  UI ASM (Extention)
. FIRST.ASM *5

u:ASSEMBLE THE PROGRAMS 4N  20 u2


t  O9
- S 4N 
  ZBL 3(  *B
MASM(Microsoft Macro I Assembler
   TASM(Turbo Assembler) 9 Assembler)
S 4N  g'( @CB G  'a c'  BC E 0

_
1 g < 6 c' g < 2 
1'
8 
*B
'  ? =[9 . (OBJECT FILE)g&B
! T-A G9 7$ E ( 3 )T  c'  2   
(1) "-%  < $  *B ]O S 4N 
)
E 
: g'( C4 gO CC0  =-A B C0
.S 4N  ! =-A9 7$
C  g'( *B MASM9 TASM S 4N  E %
:  
TASM FILENAME;
__________________________________________________________________
 72  SUST
 :   
_____________________________________________________________________

MASM FILENAME; 9

  =#  TASM S 4 E %& =#   !


u:
'  ? bB
>TASM FIRST;
TURBO ASSEMBLER VERSION 3.1
COPYRGHT(C)1988,1992BRLAND
INTERNATIONAL
ASSEMBLING FILE : FIRST.SAM
ERROR MESSAGE : NONE
WARNING MESSAGE :NONE
PASSES: 1
-&  ASSEMBLER t  4 bB  -& 
  =-A 3B- ;'B c'  * bB 4I 
.S 4N  ! $0
'a S 4N  ! T-A G9  Q) W< ;49 wO5
3(
B "N4 -&  *: GC0
: :m< *B
bC0 first.asm 'a c'  b! FB ]O T-% 
gO "-%  ? "7(< @A9 " "7  *[ T-% 
. first.obj c'  g'( C4

Linking the program S 4N  n:u3

__________________________________________________________________
 73  SUST
 :   
_____________________________________________________________________

1' c' 
&  "-%  ! ?„+4< *0 G  c' 
;4 '  x ;8  Machine Language
_
'
'  S N' F  8+  g'( GCB 5
:
   6NJ M W
")  ! c'  C0 Q8 cB0 E ( u9
5 S 4N  A7
4  ;'( Qo!  
.0 38B
Q80 S 4N  A7 3B  = V u6
3 I)9 n:
O !  
! x
S  = 4 S N  O9 3 *B ]O S 4
.Av c' ! 68 @A9 ;(!

n 
'( =$o E B Link Program n  S 4
A7 3B  B C0
'%  Object Files t  3
. EXE'  c' d4o M W  E B S 4N 
:   C  g'( (Executable File)
> TLINK First;
Turbo Link Version 2.0 Copyright (c) 1987
Borland International .

Run The Program S 4N  0 – 4


__________________________________________________________________
 74  SUST
 :   
_____________________________________________________________________

DOSt  ]C 3 ;
) n ! *B S 4N  1+
C:\ASM > first
?t
t
C:\ASM >
3O < :D45 "ƒ" PC 
(N- S 4N  E B
E B .b0 
O 3 K '( n1R 

(NL B   -& 
B  < 6  S 4N 
=45 *[ ;'( n1R  *0 G  PC 
.1+  ED4 < "7 

Display String
,+  '(
: :m<
= 4 3 1 *:
m  E % *0 Z&  S 4N  !
3 PO N 5 E %&0  21h *:
L  

(N-  2 *:
m  M ) b0 
O
.
,+  '( PO
*B
,+  '(
' )
: :m> I   !
9 *:
%  E %

,+  '(
: :m< : 9 *:
A

__________________________________________________________________
 75  SUST
 :   
_____________________________________________________________________

; *B
 
B N Offset
Oj> Q( : UA  
DX &  !
( "$" PC 
  0 Q9 FB )
.
,+  '( ;(NL *0 5
 
B4 ! "$" PC 
Control *8C0 PO G9 '(
  O W<
.
(N-  =[9 ?0 *B ;4o! Character
:mo E B S 4
8 E 
'  ? b

  ? cB0 *B .
,+  ! ‘Hello!’
 

  
-  4N  2- !
msg db ‘HELLO!$’
LEA  
< INT 21h
L   = 4 ! 9 *:
%  dC0
M W   DX &  !
 
Oj< Q( #0
LEA ( Load Effective Address)   0 *B
Destination , Source LEA
 :  
  U&  O9  7&  ]O
  E B .(")  ! 2 ) !C  1  *
&  ! :   1'
Oj> Q( 2
  hUI! .7& 

__________________________________________________________________
 76  SUST
 :   
_____________________________________________________________________

DX, MSG LEA


! msg 1  Q
Oj>
 2 E B
. DX & 
dC4 4o! 4 2- '( GCB S 4N   Q
.4N  2- < +B 8 DS &  #0 <

PSP (Program Segment Prefix) S 4N  2-


H7
ED4 E B ")  ! S 4N  C0 *B  (
.PSP &0  S 4N'
4A 256 p% 1+ 
M W '( S 4N  3(  ' '( PSP t  GCB
ED4 E B . '  ? 2    S 4N  2-&B
) ! ; l%  2-   Q( 2 DOS 1+ 

4 S 4N  0 N ES  DS 3'&  3
'( GCB 5 DS 4N  2- & Qo! M 
? dU  S 4N  l%  4N  2- Q(
FB 4 2- '( GCB S 4 G9 Qo!
'8+ 
2- < + 4N  2- & # 9 NB Q9
  C  '( S 4N  l%  4N 
AX, MOV
@DATA
MOV DS, AX
__________________________________________________________________
 77  SUST
 :   
_____________________________________________________________________

l%  4N  2- Q(  @DATA ]O


t  E B ]O .DATA t P  S 4N 
IB *: < @DATA *5 BC ASSEMBLER
&  !
  3B#%0 2-&4 5 4 2-   Q(
n &) AX E( &  ! ",N DS
< ' 4 *B M W  h59 ;!
  2 *B
.DS & 
3( M W ‘HELLO!’
 
(NL 38B M W 

%  E % DX &  ! 4( 2 ZBL
  S 4N  .21h *:
L   = 4 ! 9 *:
 
'  ? bB

TITLE SECOND: DISPLAY STRING


.MODEL SMALL
.STACK 100H
.DATA
MSG DB 'HELLO!$'
.CODE
MAIN PROC
; initialize DS
MOV AX,@DATA
MOV DS,AX
;display message
__________________________________________________________________
 78  SUST
 :   
_____________________________________________________________________

LEA DX,MSG ;
  '( O
MOV AH,09H ;
'&'&  X(
m
INT 21H
;return to DOS
MOV AH,4CH
INT 21H ; 1+  ED4  d% 
MAIN ENDP
END MAIN
A Case Conversion PC 
O BC0 S 4
:Program
A7o E  E %&  z& E  I   !
:mo S 4N  E B lower-case letter 1a PO
g < ;'BC0  ; A7< *0 G  PC  2N-0
:
hUI upper-case letter N) PO ":a
Enter A Lower Case Letter : a
In Upper Case It Is :A
cB EQU jB> E % S 4N   ! *
CR,LF 3 )
CR EQU 0DH
LF EQU 0AH
  C  g'( H  cB0 *B 
MSG1 DB ‘Enter A Lower Case Letter :$’

__________________________________________________________________
 79  SUST
 :   
_____________________________________________________________________

MSG2 DB CR,LF,’ In Upper Case It


Is :‘
Char DB ? ,’$’
MSG2
   ;B0 *0 char 1  cB0 (
msg2
  :mo E  S 4N  Q M W ",N
; A7< *0 G  PC  ) char PC  ",N
(N
KL
B- M W *B Upper -case g < ;'BC0 
(; A7< *0 G  PC  3 20h * 
msg2
  N CR,LF *8C  PO cB0 *0
. B   -& 
B  3 9 N0
  $ P 
;4o! ‘$’
 
B4
U 0 5 msg2
  Q

,+  ! char PC 


(NL
(N-  ! :5 *
char 1 
B4 ! $0 ‘$’
U  Q9 wO5 )
.( ",N
3 PC  "= *[ msg1
  :mo S 4N  9 NB
b0 
O
LEA DX ,msg1
MOV AH ,9
INT 21h
MOV AH ,1
INT 21h

__________________________________________________________________
 80  SUST
 :   
_____________________________________________________________________

N) PO g < PC  BC0 *B M W upper-case


7   K- M W20h 3 e  Q M W) PC  3
 $ ! "1  "N8  PC ASCII 7   
20h 3 ‹=  "N8  PC  9 N0 ]O 41h 9 N0 
3 ‹=  "1  PC 61h !
  3B#%0 *B (
1 char
SUB AL,20h ; N) PO  ; O
MOV char ,AL ; 1  ! {;4Œ#A *[
2N-0 msg2
4I 
  :mo S 4N  E B M W 
p4 'B ! . h  4)W ) char 1 
(N
: S 4N 
TITLE THIRD: CASE CONVERSION PROGRAM
.MODEL SMALL
.STACK 100H
.DATA
CR EQU 0DH
LF EQU 0AH
MSG1 DB 'ENTER A LOWER CASE
LETTER: $'
MSG2 DB CR,LF,'IN UPPER CASE IT IS :'
CHAR DB ?,'$'
.CODE
MAIN PROC
; initialize DS
__________________________________________________________________
 81  SUST
 :   
_____________________________________________________________________

MOV
AX,@DATA
MOV DS,AX
;print user prompt
LEA DX,MSG1
MOV AH,09H
INT 21H
;input character and convert to lower case
MOV AH,01H
INT 21H
SUB AL,20H
MOV CHAR,AL
;display on the next line
LEA DX,MSG2
MOV AH,09H
INT 21H
;return to DOS
MOV AH,4CH
INT 21H
MAIN ENDP
END MAIN
u: 3tttttB:ttttt0

1 ! T-A B9 hCCa


   = 3 G9 )W u1
ƒ... W  IBM PC t
a%  2 
1- two_words
2- ?1
3- tow words
__________________________________________________________________
 82  SUST
 :   
_____________________________________________________________________

4- t=
/4) W< . T-A B9 bCa
   E: 3 G9 u2
.G+(   9 G+( H[ *  4 )W
CCa
1- 246 2- 246h 3- 1001 4-
1.101
5- 2EAH 6- FFEH 7-1011B
Q) W< )
   1  3 ) cB0 Œn(9 u3
(h8
. 52
H 
 ; A ; word
') 1 u9

 ; $0 5 word1 ; word
') 1 u6
.
H 
. 52
H 
 ; B ; Byte PO 1 ut$

 ; $0 5 C ; Byte PO 1 u7
.
H 

H 
 ; word2 ; word
') 1 ut
. 65536

 ! 2 Array1  ')
! u

H 
. 7 G&B Bell ; /[uj
‘This Is A G&B msg ;
: /[ utO
Message $’

__________________________________________________________________
 83  SUST
 :   
_____________________________________________________________________

3 ‹=  ")  !


4#%
   4N  Q9 X!u4
0000h
Oj>
DB 7 A
B DW 1ABCH
C DB ‘HELLO’
. A,B,C 1'
Oj> Q( Œn(9u9
. 0002h
Oj> ( /BN  BC b u6
. 0004h
Oj> ( /BN  BC b ut$

') ! ‘O’ PC'
Oj> Q( b u7
. ‘HELLO’
]O T-A 9
CCa
   :N  /4) W< b u5
":N( w1,w2 Byte
!O 1 3( ":N( B1,B2
. words ') 1
1-MOV Ds,Ax
2-MOV
Ds,1000h
3- MOV CS,ES 4-MOV w1,DS
5-XCHG w1,w2 6-SUB 5,B1
7-ADD B1,B2 8-ADD
AL,256
9-MOV w1,B1
MOV, ADD , SUB ,INC , DEC ,   E %u6
g <
:
1'
8 
   :N 
$ NEG
: 2 
1' :N(
__________________________________________________________________
 84  SUST
 :   
_____________________________________________________________________

1- A=B - A
2- A= -(A+1)
3- C= A + B
4- B= 3* B + 7
5- A= B - A- 1
: 0_ E  ( ) S 4 Y ) :N( F) u7

,+  !   2  ! ;(NL *[ PO "=u1


. -&  Y4 !
;(NL *[ Upper case letter N) PO "= u2
! M W
,+  ! -&  Y   2  !
. Lower case letter 1a PO ":a
:
8' S 
: 0_ E B S 4 F) u8
. ‘?’
U 
(NL u1
3B+( 3: "=  E B u2
10 7   3 9 (
 6&C S 4N  E Bu3
.   -&  !
 
(NL 3B7  
' I
? 35
The sum of 3 and 5 is 8

__________________________________________________________________
 85  SUST
 :   
_____________________________________________________________________

E B . PO
[U[
) F'- E B S 4 F) u9
- ! PO ) (NL
[UI  PC  "=  S 4N 
' I . 
Enter Three Letters :
ABC
A
B
C
ED  ! PC  O9 "=  E B S 4 F)u10
m  * 
(N- S 4N  E B ( A-F ) +(  & 
' I .   -&  ! G+  ED  !
Enter A Hexadecimal Digit :
C
In Decimal It Is : 12
2   
e:N  &

:  W%0 '( ":   FC  # *9 O9


0  Z  S  
O B C0 ZBL 3( M W *B
 S  
O I0 *B 8086 S   ! ."7 C
'(

__________________________________________________________________
 86  SUST
 :   
_____________________________________________________________________

Flags e:N  &0


H[ 4A 9 !
'( Av 0
.e:N  ?
 F&O
'%  :  W%0 *B
Flag e:N  & &B & ! e:N  3B#%0 *B
e:  3(4 < e:N  *& 0 38B Register
E 0 .Status Flags
C  e: Control Flags *8C 
0 =[9 "7 C '( -0 9 1+ *8C  e:
0  S  
O Y8
C  e: E 0  S 4N 
3( M W a G&0
  Q9 :m< *B QT) 7 C  9
.   =#  ! G )   e 2!: ZBL

e:N  &
b  )
'%  e:N  '( &   GCB
 4  2  0 4%  !
C  e: I0 *B ]O 8+ 
10  9  8 4%  *8C  e: 1+0  11  7  6
G:R  3 Y ) E %   4% 
  N0
$0 ]O 5C  F'x9 ! &  3 eN  2
!
=#  !  \( " O '( e ) 2 FL%'  9

C  e:  

__________________________________________________________________
 87  SUST
 :   
_____________________________________________________________________

O D If T S Z A P C
f f f f f f f f
e:N  & bB 8,
Status Flags
C  e:
 9 Av 0  S  
O :mo e:N  ? E 0
[TB   e Qo! SUB Ax,Bx   0 ( hUI!
.a G&0
  /4) W< 1 G&0 ; bN0

'%  e:N  bB     

Status Flags
C  e:

4%  Name *5 #  
0 Carry Flag C  e
CF
2 Parity Flag
4A e PF
Z- 
4 Auxiliary C  e AF
Carry Flag
(& 

__________________________________________________________________
 88  SUST
 :   
_____________________________________________________________________

6 Zero Flag ZF
  e
7 Sign Flag ":,> e SF
11 Overflow QR  e OF
Flag
Control Flags *8C  e:
8 Trap Flag   e TF
"-% "-A
9 Interrupt -   e IF
Flag
10 Direction ?05 e DF
Flag

Carry Flag (CF) C  e


( eN  2!: *B) ‘1’
  '( eN   GCB
N) Qj  W
4%  < 9 3 C $ W<
5O ! M W *B Most Significant Bit (MSB)
eN 
 Q80 M W PUA .
'%  K-  2 
.a G&0
Shift
Oj> '(
O ! hRB9 eN  [TB
.  ! ( f C   Rotate Q: 
Parity Flag (PF) Z-  e

__________________________________________________________________
 89  SUST
 :   
_____________________________________________________________________

PC  Q) W< ‘1’


  '( eN   GCB
$j 7 ( '( GCB Low Byte
  3 1a
a G&B .‘1’ *  '( GC0   4%  3
‘1’ *  '( GC0   4%  7 ( Q) W<
*  
'( Av
4 /4) W< hUI! .G7!
FEH 7   '( GCB 1a PC  Qo! FFFEh
  4%  7 ( Qo!   ( 1111 1110 )
'( (G7! 7 ( ) 4A 7  ‘1’ *  '( GC0
( PF = 0 ) ‘0’ G&0 eN 
 Qo! 
Auxiliary Carry Flag (AF) (&  C  e
 Q) W< ‘1’
  '( eN   GCB
E % *B bit-3
 
4%  < 9 3 C
Binary Coded Decimal 78 
O ! eN  
.(BCD)
Zero Flag (ZF)   e
/4) W< (ZF=1) ‘1’
  '( eN   GCB
a G&0
 
Sign Flag (SF) ":,> e

4%  /4) W< ‘1’
  '( eN   GCB
 B ]O ‘1’ G&0 MSB N) Qj  W

__________________________________________________________________
 90  SUST
 :   
_____________________________________________________________________

MSB /4) W< SF = 1 Q9 G9 ) .


N 
  Q9
(MSB= 0 /4) W< SF= 0  =1
Overflow Flag (OF) QR  e
f O W< (OF=1) ‘1’
  '( eN   GCB
Signed ":,> W E:
O ! VH!
 Ž .a '( GC ;4o! 5< Numbers
.   3
 N  =#$ !    
Overflow QR 
6C  ! E: 3B#%0
48 < Qo! *'4 )
3B#%0 ;! * G  Q8  F&O M W "7 C

4A ! ;B#%0 ;'I0 38B *: N)9 hUI ) * 
W< M W '( ( 255 *   One Byte " O

  ? 3( S0  7j
&O
'( =$< 47:9

C  ? !
  3B#% b&B 3 Q8  Qo!
.QR! f O  Q8B
QR  '(
'I 9
n !
N$  E: 3( f C  ( QR  c'%B
! ;( Unsigned Numbers ( ":,< Q  E: )

'( =$< ( .Signed Numbers ":,o E:
:
' 5O 2:9 M  2  I

__________________________________________________________________
 91  SUST
 :   
_____________________________________________________________________

QR! $B 5 u 1
n ! ":,o QR! u 2
n ! ":,< Q  QR! u 3
":,< Q  ":,o QR! u 4
Q9 X! ":,o Y  ":,< Q  QR' I)
BX &  Q9 FFFFh *  '( GCB AX & 
ADD AX, BX     1 *  '( GCB
:   C  '(
  Q8
1111 1111 1111 1111
+ 0000 0000 0000 0001
= 1 0000 0000 0000
0000
3 O O9 B 8B  
":,< Q  E:9 49 '( E: ? 4&! W< u1
*  G9 65536 *  
CC 
  Qo!
38B 5
  ? 38  10000h +(  & 
;B#%0 38B *: N)9 3 N)9 ) &  ! B#%0
*  3B#%0 1 *  ! * ]O ( 65535
*0  
  Qo!   AX &  ! 0000h
.
^LA
4  '&0

__________________________________________________________________
 92  SUST
 :   
_____________________________________________________________________

Qo! ":,o E:9 49 '( E: ? 4&! W<  9 u2


1 *  2$ ( 1– *  FFFFh * 

  Qo!  '( 0 *  
  Qo! ; <
f CB *  '(
CCa (0 *  ) B#%0 *0  
.":,o QR!

) Q9 X! \":,< Q  Y  ":,o QR Av I


*0 7FFFh 7   '( QBCB BX  AX 3'&  3
:   C  '(
  Q80 ADD AX,BX   0
0111 1111 1111 1111
+ 0111 1111 1111 1111
1111 1111 1111 1110
= FFFEh

E:
O ! 7FFFh *' & 
C  ? !
W
4%  Q9 ]O O &0  ":,< Q  9 ":,o
32767 *   ( MSB = 0 ) 0 G&0 N) Qj 
Q80 Q9 FB 2  aO
4 Qo! M W '( (7FFFh)
5
  ? 65534 *   3 C  ! " O
? &0 Q9 ]O ":,o E:
O ! B#%0 38B
( -2 ) F &  *   ":,o E:
O !
 

__________________________________________________________________
 93  SUST
 :   
_____________________________________________________________________

$B 5 ":,o QR! I   ! B '! M W '(


":,< Q  QR!

ƒ QR  f O b S   E B c)


f O W< OF=1 QR  e 2! S   E B
QR! f O W< C  e 2!: ":,o QR!
CF=1 ":,< Q 
49 3 G9 f O 3 )T  S 4N 
m bN0
.
N  =$> W%0 4)W   4R 
Q80 ! QR! f O e:N  ? 0 *0 W<
.
CCa x
 
9 ":,o E: 3 eB 5 S   Qo!  '(
f O QN e:N  2! E B n ! ! ":,< Q 
! ) Wo! .":,< Q  9 ":,o QR  3 G9
4o! ":,< Q  49 '( E: 2  4 S 4N 
QR  e 4 CF n ! C  eN *4
e Qo! ":,o E: 2  4 ) W<  9 .OF
.B G   OF QR 

__________________________________________________________________
 94  SUST
 :   
_____________________________________________________________________

ƒ QR  f O B C S   E B c)


Ž QR! f O < G7z0   3 I)
n&N' K-  2   9 

Unsigned overflow ":,< Q  QR 


Q) W< ":,< Q  QR! f CB 2 
O !
]O MSB N) Qj  W
4%  3 C 
! B#%0 *B Q9 3 N)9
  Q9  B
*: N)9 3 N)9
  Q9 G9 ) 7&  & 
Q8B Q9
O ! FFFFh *   ;B#%0 38B
Q9
O ! FFh 9
H[
4A 16 ; 7& 
.(
H[ 4A 8 ; 7&  Q8B

4%' PU5
O ! QR  f CB K- 
O !
3 9
  Q  B ]O N) Qj  W
.( F  *: )  
Signed Overflow ":,o QR 
! QR  f CB ":,> Y E:9 2$
O !
":,< 3(
'% 2  aO ":,< Q80 Q9
O
":,o 3: KL
O ! ;49 4 ) .3 

__________________________________________________________________
 95  SUST
 :   
_____________________________________________________________________

":,o 3 2 


'( ;+0
'  Qo!
'%
Q9 ]O " O
A– ( - B ) =A+ B , -A – ( +B ) = -A -B
3(
  ":,< /'A W< ":,o QR  f CB
2 
'(
O ! )
  ":,>
f O Qo! 3'% 30:,o 3: 2$
O !  9
3( ":N( A+-(B)
'  Q9 ]O C& QR 
38 9 "1a E:9 B A E: Q9 ]O A-B
38B 1a *: hRB9   e  Qo! 'I0
30:,o 3 K- 
'( Qo! I  . ;'I0
.QR! G9 -0 3 3'%
: 0_) QR  e 2! E B S   Qo! h (
MSB N) Qj  W
4%  < C  Q) W<
Q'% N) Qj  W
4%  3 C 
C $B 5  < C $B ;49  B )
.(  C $B 38   < C $B 5 9 

'I  D49 ) QR  e 2!: *B
C  ? !
.( h O5

:e:N  '( '  [z0 c)


__________________________________________________________________
 96  SUST
 :   
_____________________________________________________________________

e:N  2!: *B  9 G9  S   E B  (


[z0 5  9  h ( .
  b
N 
0  W< n ! R ! [z0 4< e:N  ) !
0
'( Qo! h ( . [T0 Q7 e:N  )
JUMP    9 E % S 4N 
e:N  * '( h'( 0 INSTRUCTIONS
.  ! G )
'% 
0
O ! e:N  [T0 b =#   !
!  ' 0 +4     V
: Z&   

"[T  e:N   
e:N  3 G9 [T0 5 MOV /
XCHG
e:N  ) [T0 ADD /
SUB
(CF) C  e  ( e:N  ) [T0 INC /
DEC

  /4) W< 5< CF=1 ) e:N  [T0 NEG


    Q) W< 0F=1 \ 0 G&0

__________________________________________________________________
 97  SUST
 :   
_____________________________________________________________________

! 80h 9 WORD
O ! 800H * 
( Byte   
O
V  E  '   e:N  [T0 b
U   GC    b I ) !
'I 

'%  e:N  * 20 6&O operands
;4 AF (&  C  e ) 0f,sf,zf,pf,cf
.( n ! BCD   3 E: W
C  !
:1 I
'( AX &  GCB ]O ADD AX,BX   4
'( BX &  FFFFh * 
FFFFh * 
: C 
FFFFh
+FFFFh
1FFFEh
(0FFFEh) 1111 1111 1111 1110 *  3B#%0 *B
:   C  '( e:N  Q80  '( AX &  !
Qj  W
4% 
 Q 1 G&B : SF ":,> e
. 1 G&0 MSB g'(
4A 7 7 ( B Q 0 G&B : PF Z- 
4A e
g47 c  ! 1 '( GC0 (G7! 7 ()
__________________________________________________________________
 98  SUST
 :   
_____________________________________________________________________

.
  ! LOW BYTE
. a G&0 5
  Q 0 G&B : ZF   e

4%  ! C  Q 1 G&B : CF C  e

'( ! MSB N) Qj  W
. 2 
Y4 
  ":,< Q a G&B : OFQR  e
$ *0   E: ":,<
3( c'%B 5 MSB
4%  < C  )
.( MSB
4%  3 C 
: 2 I
*  '( AL GCB ]O ADD AL,BL   4
80h *  '( BL  80h

: C 
80h
+80h
100h
00h *  '( AL &  GCB
0 '( GC0 MSB
4%  Q SF=0 : SF ":,> e

4A 0 7 ( B ;4 PF=1 :PF Z- 
4A e
$j 7 (   NB 1 *  '( GC0
__________________________________________________________________
 99  SUST
 :   
_____________________________________________________________________

0 G&0
  Q ZF=1 : ZF   e

4%  3 C  Q CF=1 : CF C  e
MSB N) Qj  W

N 
(  E: Q OF=1 : OF QR  e

4%  < C  )
N$
 
.(  C  G&B 5 MSB
:3 I
AX &  Q) W< SUB AX,BX   4
&  8000h *  '( GCB
0001h *  '( GCB BX
: C 
8000h
-0001h
7FFFh = 0111 1111 1111
1111
MSB=0
4A Q SF=0 : SF ":,> e
3 G1 
4%  Q PF=1 :PF Z- 
4A e
"1"  ( $j 7 () 4A 8 
 
0 G&05
  Q ZF=0 : ZF   e
1a 7 ( K-  4 CF=0 : CF C  e
; N)9 7 ( 3 ":,< Q 

__________________________________________________________________
 100  SUST
 :   
_____________________________________________________________________

":,o E:
O ! OF=1 : OF QR  e
 . F  *: 3 F$ *: K-4 4o!

  Q .3N  3: 2$
'( I
. (T-A
  ":,<)
N$ /CNa9
:4 I
FFh *  '( GCB AL ]O INC AL   4
: C 
FFh
+ 1h
100h
? 0 . AL &  ! 100h *  3B#%0 *B
Q9 4
' 

. (PF=1) 1 : Z-  e


MSB=0 Q SF=0 : SF ":,> e
GC0 4A 8 7$ PF=1 :PF Z- 
4A e

  3 g47 /BN  ! “1” '(
a G&0
  Q ZF=1 : ZF   e
f O 3 *x  INC   [TB 5 : CF C  e
.VH!

__________________________________________________________________
 101  SUST
 :   
_____________________________________________________________________

*: 24 4 M W OF=0 : OF QR  e


< C  ) F$ *: < F 
.(  C  G&B MSB
4% 

:5 I
MOV AX,-5   4
G9 [T0 5 AX &  ! (FFFBh) –5 *  2 *B
. MOV   e:N  3
:6 I
*  '( AX &  GCB ]O NEG AX   4
8000h
8000h = 1000 0000 0000 0000
COMPLEMENT = 1000 0000 0000 0000
1000 0000 0000 0000
SF=1 : SF ":,> e
PF=1 :PF Z- 
4A e
ZF=0 : ZF   e
Qo! ":,> 10
O ! ;4 CF=1 : CF C  e
*  Q) W< 5< hH7 1= CF
. a G&B

__________________________________________________________________
 102  SUST
 :   
_____________________________________________________________________

NEG   0 ( 4 OF=1 : OF QR  e


*
C  ? ! ;0:,< 10 24
. ":,> 10
: DEBUG S 4
S 4N  0
 DEBUG S 4 E % 38B
"-A )  U&  [T0
  :m< "-A_"-A
< ;'BC E B ]O 2 
1' S 4
) 38B )
")  ! B#%0 ",N
_
1

1' S 4
8 E 4 DEBUG t  S 4 5
'   c'  '( C4 gO ?#0 2 
S 4N  C0 8B M W  EXCUTABLE FILE
 
-
C:\DOS\DEBUG TEST.EXE


O ! ;49 '(  7 "u" ":,> 7  S 4N  E B
u:
    VN b0    O :D4

 2  . U&  BC bB  R   .1
*o h(N R  
) *B U&  O9 ! "7 C
.(R IP UI ) & 

 C  "-%  0 < G7zB  (TRACE) T   .2


. S 4N  3 n !
__________________________________________________________________
 103  SUST
 :   
_____________________________________________________________________

. S 4N  0 < G7zB ( GO ) G   .3


. S 4N  3 d%  < G7zB (QUIT) Q   .4
. S 4
)
a! bB ASSEMBLE A   .5
. ")  3 =#$
B„ U   .6
. ")  3 =#$ :m< < G7zB DUMB D   .7

:   S 4N  0 24 (7 Debug S 4




MODEL SMALL
.STACK 100H
.CODE
MAIN PROC
MOV AX , 4000H ;ax =
4000h
ADD AX , AX ;ax = 8000h
SUB AX , 0FFFFH ;ax =
8001h
NEG AX ;ax = 7fffh
INC AX ;ax = 8000h
MOV AH , 4CH
INT 21H ;DOS exit
MAIN ENDP
END MAIN

__________________________________________________________________
 104  SUST
 :   
_____________________________________________________________________

 0 test.asm ; 38  Z&  S 4N 


) 
*5 C G  Executable file '   c' 
M W S 4N  C0 Debug S 4 = 4 *B Test.exe
c:\asm> :DOS t  ]C 3     
DEBUG TEST.EXE
+0 G  "u" ,z  :m< C  S 4N  E B
.  ' 7 U
U&  BC :m> M W R  
 9 N4
:
   ":  '( $%  Q80
'% 

-R
AX=0000 BX=0000 CX=001F DX=0000 SP=000A BP=0000 SI=0000 DI=0000
DS=0ED5 ES=0ED5 SS=0EE5 CS=EE6 IP=0000 NV UP DI PL NZ NA PO NC
0EE6:0000 B80040 MOV AX , 4000

!
'%  U&  BC :mo S 4N  E B
6'- )     Q( bB ] I  -& 
3'&  BC  Q 
 wO5 u ?0
 Machine Code  J
_ 78 h(N ( CS:IP

1' h8   4 M W  B80040 * 
.2 

__________________________________________________________________
 105  SUST
 :   
_____________________________________________________________________

E: 3(
'% E:9  S 4N  1+0 (
U&  BC   I   !
C 
.
'% 
( PO dj9 8 7 ( $B 4I  -& 
B4 !
b0 NV UP DI PL NZ NA PO NC ": 
:      F&O M W
'%  e:N  BC

2!: E (
O ! 2!:
O ! eN 
Clear eN  Set eN 
NC (No Carry) CY (CarrY) CF (CarryFlag)
PO (Parity Odd) PE (Parity PF (Parity Flag)
Even)
NA (No AC (Auxiliary AF (Auxiliary
Auxiliary carry) Carry) Flag)
NZ (NonZero) ZR (ZeRo) ZF (Zero Flag)
PL (Plus) NG (NeGative) SF (Sign Flag)
NV (No OV (OVerflow) OF (Overflow
oVerflow) Flag)
Control Flags *8C  e:
UP (UP) DN (DowN) DF (Direction
Flag)
DI (Disable EI (Enable IF ( Interrupt
Interrupt) Interrupt) Flag )

__________________________________________________________________
 106  SUST
 :   
_____________________________________________________________________

' Trace G9 T   : 4 S 4N  1+0


B N
:  J   &'&  Q8! "-A "-A

,+  :8)   C  '( U&  /4)


B N  !
    24 gO
& 

-R
AX=0000 BX=0000 CX=001F DX=0000 SP=000A BP=0000 SI=0000 DI=0000
DS=0ED5 ES=0ED5 SS=0EE5 CS=EE6 IP=0000 NV UP DI PL NZ NA PO NC
0EE6:0000 B80040 MOV AX , 4000

MOV AX , 4000h    :  9 N4 *[


-T
AX=4000 BX=0000 CX=001F DX=0000 SP=000A BP=0000 SI=0000 DI=0000
DS=0ED5 ES=0ED5 SS=0EE5 CS=EE6 IP=0003 NV UP DI PL NZ NA PO NC
0EE6:0003 03C0 ADD AX , AX

AX &  ! 4000h 2RB  


10 *B *  4000H *  ; bNa9 AX &  Q9 wO5
ADD   bNa9     Q9 e:N  BC
AX,AX
-T
AX=8000 BX=0000 CX=001F DX=0000 SP=000A BP=0000 SI=0000 DI=0000
DS=0ED5 ES=0ED5 SS=0EE5 CS=EE6 IP=0005 OV UP DI NG NZ NA PE NC
0EE6:0005 2DFFFF SUB AX , FFFF

__________________________________________________________________
 107  SUST
 :   
_____________________________________________________________________


  Q9 8000H *  ; bNa9 AX &  Q9 wO5
+ QR  e 2!: *0 ]O e:N  ! [9
& 
Q9 < + ":,> e ":,o QR! f O <
3 1a
4%  Q Z-  e M )
N 
 
4%  3 $j 7 ( '( GC0 (AL G9) AX & 
  ]O S 4N  0 24 Q_ . 1 *    
SUB AX,FFFFh     
-T
AX=8001 BX=0000 CX=001F DX=0000 SP=000A BP=0000 SI=0000 DI=0000
DS=0ED5 ES=0ED5 SS=0EE5 CS=EE6 IP=0008 NV UP DI NG NZ AC PO CY
0EE6:0008 F7D8 NEG AX

-T
AX=7FFF BX=0000 CX=001F DX=0000 SP=000A BP=0000 SI=0000 DI=0000
DS=0ED5 ES=0ED5 SS=0EE5 CS=EE6 IP=000A NV UP DI PL NZ AC PE CY
0EE6:000A 40 INC AX

-T
AX=8000 BX=0000 CX=001F DX=0000 SP=000A BP=0000 SI=0000 DI=0000
DS=0ED5 ES=0ED5 SS=0EE5 CS=EE6 IP=000B OV UP DI NG NZ AC PE CY
0EE6:000B B44C MOV AH , 4C

-G
PROGRAM TERMINATED NORMALLY
-Q
C:\>

__________________________________________________________________
 108  SUST
 :   
_____________________________________________________________________

: 3B:0
DESTINATION REG 7&  &  BC 2
.
     3 ) 0  e:N  * M )
*  '( AX &  GCB ]O ADD AX,BX .1
.0001h '( BX&  7FFFh
BL=FFh  AL=01h ]O SUB AL,B .2
AL=00h ]O DEC AL .3
AL=7F ]O NEG AL .4
. BX=712h  AX=1ABCh ]O XCHG AX,BX .5
. BL=FFh  AL=80h ]O ADD AL,BL .6
. BX=8000h  AX=0000h ]O SUB AX,BX .7
. AX=0001h ]O NEG AX .8

E:9 '( QBCB AX BX 3'&  Q X!9u2


$B ;49 b ADD AX,BX   0 *0 .
N$

__________________________________________________________________
 109  SUST
 :   
_____________________________________________________________________

n ! M W  C $B 5 MSB


4%  < C
. ":,o QR! f O
O !
.
N  E:9 '( QBCB AX BX 3'&  Q X!9
3 C $B ;49 b ADD AX,BX   0 *0

O ! n ! M W  < C $B 5 MSB
4% 
. ":,o QR! f O

/4) W< ?0 *0 ADD AX,BX   Q9 X!9 u3


; BX &    *   AX &  BC
5C  3 ) ! AX &  BC b .   * 
. ":,< Q  9 ":,o QR! f O C
0_
7132h .7 E1E4h .d FE12h .6 512Ch .9
6389h .t
+7000h +DAB3h +1ACBh + 4185h
+1176h
/4) W< ?0 *0 SUB AX,BX   Q9 X!9 u4
; BX &    *   AX &  BC
5C  3 ) ! AX &  BC b .   * 
. ":,< Q  9 ":,o QR! f O C
0_

__________________________________________________________________
 110  SUST
 :   
_____________________________________________________________________

.7 19BCh .d 81Feh .6 2143h .9


88CDh t 0002h
-81Feh -1986h -1986h
71ABh FE0Fh

Y %   
Flow Control 6&45 nN '0  
Instructions

 9 E % *B  N x 7 C  E B S 4 F84 8


"7 C : W%0 '( h:7 S N  0    
B
(! S  0 < :8     9 G7z0
3( M W U&' "7 C * '( "7( :8  9   
*0
'( A‘ hH7 [T0   Status Flags
C  e: ZBL
.0
 %&
'%     9 b    ! E 
HIGH '  1'  !   :8  :N( I0 !
. 2 
1' ) "7(o M W LEVEL LANGUAGE
: ' I

__________________________________________________________________
 111  SUST
 :   
_____________________________________________________________________

PC 
(N- E B I 9 N    9 ( b
ASCII PC   $
(NL ZBL 3( M W ')
%& 
. hU ) Table
.Model Small
.Stack100h
.Code
MAIN PROC
MOV AH , 2
MOV CX , 256
MOV DL , 0
Print_Loop:
INT 21h ! 7$  PC  2NL
;DL
& 
INC DL ;   PC  #0
DEC CX ; 7   p 4
JNZ PRINT_LOOP ; g < 0 4 * W<
7 C  Q 
; DOS_EXIT
MOV AH , 4Ch
INT 21h
MAIN ENDP
END MAIN

__________________________________________________________________
 112  SUST
 :   
_____________________________________________________________________

 IBM Character Set ! PO 256 7 ( B $B


*B
,+  ! PC  :m> .
a%  PC  E: PC 
2 M W ( n ! O PO :m<) 2 *:
%  E %
PC  @C DL &  E % *0 .AH &  ! 2 * 

H 
 ) ;! 0 *  2 *0 M  ;(NL 6'- 

  7 ) CX &  E % *0 ) " ) ! ;07Bj
.  < ; 0 gO " ) ! ;a 4< 256
H 
nNRB G     (Jump if Not Zero) JNZ   E %
*0 W< (Print-Loop) 7 C  Q  g < ' M W
'C 
M W *B   g <
  0 *  O CX &  l 4<
G&0 5
  /4) Wo! . ZF   e  ZBL 3(
a

  /4) W<  9 7 C  Q  g < #  *B (ZF= 0)
g < "7   S 4N  ! :5 *B (ZF= 1)   G&0
.4CH *:
%  E % 1+  ED4
CONDITIONAL JUMP k+   
Q8B  .k+      I  Z& JNZ  95
":  g'( k+     9
Jxxx destination-Label

__________________________________________________________________
 113  SUST
 :   
_____________________________________________________________________

b  Q  g < S 4N  0 *B 7 C  k+  Z C0 Wo!


Q  ! 7$         Q8B \ J  )
  g < 7 ) :5 *B k+  Z CB * W<  9. 7 C 
. ",N  
;'(   * G  Q  Q8B Q9 FB  
O !
C  Q   127 9 C  Q  N 126  g'(
. @    3 9 3) 9 g <  
)  ! @
ƒ k+   
'(  S   E B c)
Q9 ]O .  
'( B C e:N  E % S   E B
 9 Qo!  
'( Av 0 
C  Y80 e:N 
*B ]O "7 C e: 9 7 C e g'( 0 Q9 FB  
. e:N  ? 2!: *0 W<  

  IP '  ,z C S   E B   Z C0 W<
Z C0 *B * W<  9.    9 ! 7$  Q  "7 C 
. ",N   Q  g < aB '  ,z Qo! k+ 
  4 Z&  I  !
JNZ PRINT-LOOP
;4o! ZF= 0 O G&B 5   e Q) W< ;49 B 
,z C M W PRINT-LOOP Q  g <   *B

__________________________________________________________________
 114  SUST
 :   
_____________________________________________________________________

(ZF= 1 )   G&0


  /4) W<  9 . Q  ' 
.
   "-%  g < aB S 4N  Qo!
: (
[U[ g < k+     9 *& 0
Signed Jumps ":,>   g 
(  
Singed ":,> E: E %
O ! E %&0
Numbers
Unsigned Jumps ":,< Q   
4I 
(  
Unsigned ":,< Q  E: E %
O ! E %&0
. Numbers
0   Single Flag Jumps O eN   
. 7 C e g'(
   Q9 wO5 .
'%     9 b0
     
/4) W< 0 0 ]O JNLE  JG UI * 3 I)9 ATB
9 3 1a9 /&
  /4) W< 0 9 JG N)9
 
Y4 g < QB7zB 4 3B  3 G9 E % 38B . G&0
.
 

__________________________________________________________________
 115  SUST
 :   
_____________________________________________________________________

Signed Jumps ":,>  u1


k, ca 
   
ZF=0 & Y ) 3 N)9
O ! 0 JG /
SF=OF
( G&B 9 3 1a9 JNLE
SF=OF 9 3 N)9
O ! 0 JGE /
JNL
( 3 1a9 Y ) G&B
SF<>OF Y ) 3 9
O ! 0 JL /
JNGE
( G&B 9 3 N)9
ZF=1 OR G&B 9 3 9
O ! 0 JLE /
SF<>OF JNG
( 3 N)9 Y )
Unsigned Jumps ":,< Q   u2
k, ca   
 
CF=0 & Y ) 3 N)9
O ! 0 JA /
ZF=0
( G&B 9 3 1a9 JNBE
CF=0 9 3 N)9
O ! 0 JAE /
JNB
( 3 1a9 Y ) G&B
CF=1 Y ) 3 9
O ! 0 JB /
JNAE
( G&B 9 3 N)9
__________________________________________________________________
 116  SUST
 :   
_____________________________________________________________________

CF=1 OR G&B 9 3 9


O ! 0 JBE /
ZF=1 JNA
( 3 N)9 Y )
Single Flag Jumps O eN  u3
k, ca 
   
ZF=1   9 G& 
O ! 0 JE / JZ
ZF=0 5 ) G&  E (
O ! 0 JNE /
JNZ
(   G&B
CF=1 Carry C
O ! 0 JC
CF=0 C 7$ E (
O ! 0 JNC
Carry
OF=1 QR 
O ! 0 JO
OF=0 f O E (
O ! 0 JNO
QR 
SF=1
N 
 
O ! 0 JS
SF=0
N$
 
O ! 0 JNS
PF=1 $#  Z- 
O ! 0 JP / JPE
PF=0 G7  Z- 
O ! 0 JNP /
JPO

__________________________________________________________________
 117  SUST
 :   
_____________________________________________________________________

CMP  
ATB 3:
4:  E %&B Compare(CMP)  
:
1 
CMP Destination , Source
:   KL ZBL 3(
4:  
' S 4N  E B

  3B#%0 *B 5 destination 7&  3 source
3
4:  CMP   E B 5 \ [T0 e:N  38 
Q9 38B 5 destination 7&  Q9 ) ")  !
. /[ *: Q8B
Q9  ( ! SUB    0 [B CMP   Q9 wO5
. B#%0 *B 5
 
:   g'( GCB S 4N  Q9 X!
CMP Ax , Bx
JG Below

Ax,Bx  
4 Q! BX=0001h\ AX=777Fh ]O
:  CMP
7FFFh - 0001h = 7FFEh

__________________________________________________________________
 118  SUST
 :   
_____________________________________________________________________

zf = sf = of =0 Q80 e:N  Q9 ]O *B   


Q80 Q9 F'-B JG  
g <   *B  g'( Sf = Of M )  Zf = 0
. Below 7 C  Q 
F&O *0  
'( Q9 *x: k+   
O !
Q    g < DB S N  Q!
'%  e:N 
O
: UI! e:N  a0
CMP AX,BX
JG Below
*  3 N)9 AX &  ! 7$  *  Q) W<
Q  g < B S 4N  Q! BX &  ! 7$ 
. Below
  2  ' A *a CMP   Q9 3 *x 
 Q80 Q9 k+    ":N 38B 38  k+ 
: UI Av  9 G9
CX DEC
JNZ loop
& 
 380 * W< loop Q  g <    *B
.a G&0 CX

__________________________________________________________________
 119  SUST
 :   
_____________________________________________________________________

:":,< Q    ":,o  


UI \ ":,< Q  0  9 ?mB ":,o 0  9 )
g'( B  G9 E % JA   ?mB JG  
   Q9 ]O .S 4N  A7 E: 2   
BL
0 '  ? 3
'( ) Q9 b E Z& 
e:N  2  B ":,o   Q9 ]O "7 C e: g'(
e:N  g'( B ":,< Q     zf , sf , of
x SH4 g < G7zB  F  x   E % zf , cf
.
CCa

GCB Ax &  Q) ":,o E:  % W< UI


*0 8000h *  g'( GCB Bx & 7fffh *  g'(
:
     0
CMP AX,BX
JA Below
Q! ":,o E:
O ! 7EFF > 8000h Q9 3 *x N!
Q M W Below Q  g <   E B 3 S 4N 
  &4 3C4 ":,o E:
O ! 7FFFh < 8000h
. ":,< Q  E: 2  B G  JA
:PC  2   
__________________________________________________________________
 120  SUST
 :   
_____________________________________________________________________

":,o E: E % 38B PC  2    (


0 *  g'( GC0 PC  Q M W ":,< Q  9
E %&4  ( MSB N) Qj  W
4%  !
PC  2   
O ! ":,< Q  E:

  Extended ASCII Code "   "& 
. 80h - FFh @   !
: I
E:9 '( QBCB BX  AX 3'&  Q9 X!
! N)
  2RB S 4 3 =#$ F) \":,o
.CX & 
MOV CX , AX
CMP BX , CX
JLE NEXT
MOV CX,BX
NEXT:
Unconditional Jump k+ 1   
Q  M W 7 C Q( < ' JMP   E %&B
:   J
 
1  ]O k, G9
Jmp Destination
S 4N  2- A7 ; <   * G  Q  Q8B
N)9 ; <   38B G  @   Qo! M W '( C 

__________________________________________________________________
 121  SUST
 :   
_____________________________________________________________________

)
a%  ? U1 38B .k+   
O 3
.k+    =79 3&C M W   =#  !
TOP:
; Loop Body
'C  :N(
Dec CX ; 7   3 O p 4
JNZ TOP ; Q) W<   ! 
a G&B 5 7  
Q  Q8B ]C "I) :N( '(
'C  O W<
3 JNZ   Qo! (
4A 126 3 9 ) h $ TOP
S 4N 
) "7(o
'8+  ? dU( 38B 38  b'B
    bB G  JMP   E %   C  '(
N)9 G 2

TOP:
; Loop Body
'C  :N(
DEC CX
JNZ BOTTOM
JMP EXIT
BOTTOM:
JMP TOP
EXIT:

__________________________________________________________________
 122  SUST
 :   
_____________________________________________________________________

S 4N 
'8
  !   % 38B   '( Q9 4)W
=#   ! e-
-&    9 Q :8 
1 !
%&    :8   9
)
8
. High Level Programming Languages
 
 N 

   9
IF……..Then…….  
 If..Then… ":N E  8+ 
IF condition is True then
Execute True branch statements
End_IF
*B 5 Z CB * W<   0 *B k+  Z C0 W< G9
= , 0

.
'- 
  AX &  BC  N I
(a 3 ) ;N  &  BC /4) W< G9
.
N$ 
   N
IF AX < 0 then
Replace AX with –AX
__________________________________________________________________
 123  SUST
 :   
_____________________________________________________________________

End_IF
bN0 2 
1'
CMP AX , 0
JNL END_IF
; Then
NEG AX
END_IF:
IF…THEN…..ELSE…..ENDIF ":N( – 2
":  '( Q80 
IF Condition is True then
Execute True_Branch statements
ELSE
Execute False_Branch
statements
End_IF

* W<   3
( 0 *B k+  Z C0 W<
  3 GA9
( 0 *B Z CB
u:I
* \ (ASCII CODE) PO QBCB BL,AL Q9 X!
(1a
  W) F0   PC  X
__________________________________________________________________
 124  SUST
 :   
_____________________________________________________________________

IF AL < = BL THEN
DISPLAY AL
ELSE
DISPLAY BL
END_IF
u: 0_) (2 
1' bN0)
AH,2 MOV
CMP AL,BL
JNBE ELSE_
MOV DL,AL
JMP DISPLAY
ELSE_:
MOV DL,BL
DISPLAY:
INT 21H

CASE ":N( u3
;NB Q 38B :& 3 I) $B CASE ":N(
O !
:   J E  8+  S 4N 
CASE EXPRESSION
VALUE_1 :
STATEMENT_1
VALUE_2 : STATEMENT_2
:
VALUE_N : STATEMENT_N
__________________________________________________________________
 125  SUST
 :   
_____________________________________________________________________

END_CASE
:I
1– *  2 F  *: g'( @CB AX &  Q) W<
! 0 *  2 a ; AX Q) Wo! BX &  !
2 F$ *: ; AX &  Q) W<  9 BX & 
.BX &  ! 1 * 
:C 
CASE AX
<0 : PUT –1 IN BX
=0 : PUT 0 IN BX
>0 : PUT 1 IN BX
END_CASE

: 2 
1 !
CMP AX, 0 ; AX pC!
JL NEGATIVE ; AX < 0
JE ZERO ; AX = 0
JG POSITIVE ; AX > 0
; Otherwise (Else) part will be here
NEGATIVE :
MOV BX,-1
JMP END_CASE
__________________________________________________________________
 126  SUST
 :   
_____________________________________________________________________

ZERO :
MOV BX,0
JMP END_CASE
POSITIVE :
MOV BX,1
END_CASE:
   9 Q " O CMP t n ! dC4 49 wO5
.e:N  '( [z05
9 1 *   AL &  BC /4) W< : I
BC /4) W<\ "0" 2NL9 3 * 
.‘E’ 2NL9 4 *  9 2 *   AL & 
: C 
CASE AL of
1,3:DISPLAY “0”
2,4:DISPLAY “E”
END_CASE
2 
1'
CMP AL , 1
JE ODD
CMP AL , 3
JE ODD
CMP AL , 2
JE EVEN
CMP AL , 4
__________________________________________________________________
 127  SUST
 :   
_____________________________________________________________________

JE EVEN
JMP END_CASE
ODD: MOV DL , ‘O’
JMP DISPLAY
EVEN: MOV DL , ‘E’
DISPLAY: MOV AH ,2
INT 21H
END_CASE:
Compound Conditions
N) k+  
I  
' F) k,  *B QO V !
IF condition1 AND condition2
IF condition1 OR condition2
9
! AND "" k+  E % *0 
C  ! ]O
OR "9" k+  E % *0
4I 
C 
AND Condition "" k+ 
3 ) Z C0 W<
CCa "" k+ 
4 Q80
O Qv ! 3L+ 
hN) h!O Q) W< \b0 
O 3 PO 9 :I
;NL Capital Letter
:C 
 j:A
Read a Character into AL

__________________________________________________________________
 128  SUST
 :   
_____________________________________________________________________

If ( ‘A’ <= character AND character <= ‘Z’)


then
Display character
End_IF
2 
1'
MOV AH , 1 ; PC  "=
INT 21h
CMP AL , ‘A’
JNGE End_IF
CMP AL , ‘Z’
JNLE End_IF
MOV DL , AL
MOV AH , 2
INT 21h
End_IF:
OR Condition "9" k+ 
9 3L+  3 G9 Z C0 W< "9" k+  Z CB
U)
;NL ‘Y’ 9 ‘y’ PC  Q) W< PO 9 : I
S 4N  =4o * ‘Y’ 9 ‘y’ G&B * W<
C 
 j:A
Read character from keyboard into AL
IF ( character = ‘y’ OR character = ‘Y’ )
then
Display character
__________________________________________________________________
 129  SUST
 :   
_____________________________________________________________________

Else
Terminate the program
End_IF
2 
1'
MOV AH , 1 ; PC  "=
INT 21h
CMP AL , ‘y’
JE then
CMP AL , ‘Y’
JE Then
JMP else_
Then: MOV DL,AL
MOV AH , 2
INT 21h
JMP End_if
else: MOV AH ,4ch
INT 21h
End_if:
:8 
3 I)   3
( 0
'(  :8 
 9   3 7 C 7  :8  Q8B ."
.7 C f O f O gO :8  Q8B
7 C 7  :8 

__________________________________________________________________
 130  SUST
 :   
_____________________________________________________________________

7 C 7    3
( :80 *B
C  ? !
 E  8+  for loop &0   3
For loop_count times do
statements
End_for

1  
'C  I loop   E % *B
loop destination_label

  ;'C0 *B 7 ) CX &  E % *B ]O
G7zB loop  0 (
'C  :80  7 () 7  
bN0 * W< O :  CX & 
 l 4< g <
Q  <   *B a= CX & 

%  Q  ZN&B Q9 FB G )destination_label

'  ? :80 *B ( 9 C)
4A 126 : 
3 =45 *B  (   < CX & 
 0 gO
C  g'( Q8B loop E % .S 4N 
'a 
'C 
 
; ( CX )&  !
H 
 2
top:
; S 4N  *&$
loop top

(N- M W :8 
'O E %&B S 4 F) u: I
" *"
4 80
__________________________________________________________________
 131  SUST
 :   
_____________________________________________________________________

C 
for 80 times do
display “*”
End_for
2 
1'
MOV CX , 80 ; E   7 (
( 6'- 
MOV AH , 2
MOV DL , ‘*’
Top: INT 21h
LOOP top

  E % :8 
'( Q9 wOU4 Z&  S 4N  3
 '( " O ?
'C  *&$ :80 < G7zB LOOP
Qo! a G&0 CX 7  
 /4) W<  
]O " O "
'C  *&$ G7z S 4N 

]O 65535 7  
 bN 7   3 1 K- E B
(00FFFh) 65535 7 ( :8 
'C  E 0
.S 4N  B   "
5 CX & 
 Q9 3 )T  FB
C  ? dU
JCXZ   E % M W
'C' A  N a G&0

__________________________________________________________________
 132  SUST
 :   
_____________________________________________________________________

C  '( S 4N  8, Q8B ( Jump if CX is Zero )


 
JCXZ skip
Top:
;
'C  *&$
loop top
skip:
WHILE
'O
8+  ]O 7 C k, f O gO
'C  ? :80 *B
  C  '(  E 
While Condition DO
Statements
End_while
*B k+  Z C0 Wo!
'C 
B  ! k+  :NA *B

'C  3 d%  *B Z CB * W<
'C  *&$ 0
.S 4N  !
     0
*B 5  
B N  3 Z CB 5  k+  Q9 wO5
E (
48 < < G7zB 
'C  *&$ ! hUa9 A 
E B
'C  *&$ Q9 hRB9 wO5 .eUL> '(
'C  *&$ 0
k, Z CB gO
'C  k, U  O9 1 hH7

__________________________________________________________________
 133  SUST
 :   
_____________________________________________________________________

Q80 k+  U  10 E (


O ! )
'C  =4<
(
H45
'C 
! PC  7 ( 7Bo E B S 4 3 =#$ F): I
7 C -
C 
INITIALIZE COUNT TO 0 ; 7   9 
a
 
READ A CHARACTER ; PO 9
WHILE CHARACTER<>CARRIAGE-
RETURN DO
COUNT =COUNT+1
READ A CHARACTER
END-WHILE
:2 
1'
MOV DX,0 ; PC  7 (
MOV AH , 1 ; "=) 1 *: ; % 
(PO
INT 21h
WHILE:
CMP AL,0DH ; -& 
B4 3
JE END_WHILE ; -& 
B4 /4) W

__________________________________________________________________
 134  SUST
 :   
_____________________________________________________________________

INC DX ;  g < O c9


7 
INT 21H ;   PC  9
JMP WHILE.
END-WHILE :

REPEAT
'O
k, f O gO :8  E 0 GA9
'O g
":  g'( Q8B  E  8+ .7 C
REPEAT
STATEMENT(s) ;
UNTIL CONDITION
:NA *B M W  *[
'C  *&$ 0 *B 
* W<  9
'C  3 d%  *B k+  Z C0 Wo!. k+ 
.
'C  :80 *B Z CB
0 PO "=  E B S 4 3 =#$ F): I
blank
!& 
MOV AH,1 ; PO "=
A
REPEAT:
INT 2!H
CMP AL ,‘ ‘ ;
!&  PC  Q:
JNE REPAET ; ; 'C  :) ;B&B * W

__________________________________________________________________
 135  SUST
 :   
_____________________________________________________________________

REPEAT
'O WHILE
'O 3 e 
 ( p%+  R0 g'( B "7( 3 'C  E %
A  N ?:NA *B k+  Q WHILE
'O j0
eUL> g'(
'C  *&$ 0 E ( 38B  
'C  g <
*[ h59
'C  *&$ g'( :  REPEAT
'O j0 
" O "
'C  *&$ 0 FB   k+  :NA
. g'(

S 4
)

1 <
:
1 3 ?N) S 
)
) b
:   I  b4 2 
E B ;'$ A7> E %&  z& E B  ) S 4 F)
N)9
  ! 7: N) PO 1a9 B C S 4N 
PC  F00 F&O M W)
  g! 7B N) PO
.(ASCII t   $ !
(No
  :mo S 4N  E B ?N) PO 70 * W<
: 0_) . capital letters )
TYPE A LINE OF TEXT :
SUDAN UNIVERSITEY OF SCIENCE
AND TECHNOLOGY

__________________________________________________________________
 136  SUST
 :   
_____________________________________________________________________

FIRST CAPITAL = A LAST CAPITAL = Y


'8+  ;H#0
BL g'( S 4N  
8 E 4 P
) O *B   "1 
(  )+  3 ;( <
*  ; B- g&0
B-  ? ? O g'(  " O
TOP - DOWN PROGRAM  < g'(9 3
: 0_) DESIGN
.p4 A7> E %&'
: mu1
. p  2  0 9 u2
.
  m u3
.  ?-A ) 2    *B M W 
p4 A7> E %&'
  :m<u1
  =# 
) ZBL 3( M W *B
MOV AH,9 ; p4 9 *:
A
LEA DX ,PROMPT ;
  Q(
INT 21H ; (
g'( 4N  2- ! PROMPT
  cB0 *B ]O
  C 
PROMPT DB ‘ TYPE A LINE OF TEXT :

‘,0DH,0AH, ‘$’

__________________________________________________________________
 137  SUST
 :   
_____________________________________________________________________

  -&  g < CURSOR ]C  BC0 3R0 g


:;    p  "= u2
=#  ! *B   S 4N  F' g'( GC0 "-%  ?
C  g'( 
 j:% 
) 38B S 4N  ! N8 
 
Read Character; PO 
While Character Is Not a Carriage Return Do
IF Character Is A Capital Letter Then
IF Character Precedes First Capital
THEN
First Capital =CHARACTER
END_IF
IF Character Follows Last Capital THEN
Last Capital = Character
END_IF
END_IF
Read Character
END_WHILE
Character >= k+  Z C0 W< N) PC  Q8B ]O
‘A’ AND Character <=’Z’
  C  '( 2 
1' =#   Q8B
MOV AH , 1
INT 21H
WHILE:
CMP AL,0DH
__________________________________________________________________
 138  SUST
 :   
_____________________________________________________________________

JE END_WHILE
CMP AL , ‘A’
JNGE END_IF
CMP AL , ‘Z’
JNLE END_IF
CMP AL,FIRST
JNL CHECK-LAST
MOV FIRST,AL
CHECK-LAST:
CMP AL,LAST
JNG END-IF
MOV LAST,AL
END_IF: INT 21H
JMP WHILE
END_WHILE :
B0 *B
!O 1 3( ":N(LASTFIRST ]O
u:g   C  g'( 4N  2- !
FIRST DB ‘]’
LAST DB ‘@’
 @ PC   Z PC'   PC   ] PC  ]O
A PC' Z&  PC 

u:
 
(NL /3
:   *B "-%  ? g!
IF NO CAPITAL LETTER TYPED THEN
__________________________________________________________________
 139  SUST
 :   
_____________________________________________________________________

DISPLAY ’NO CAPITAL’


ELSE
DISPLAY FIRST & LAST
CHARACTER
END_IF
G9 A7< E (
O ! g 
  :m< *B ]O
*0 PO 1a N)
 9
  A7 N) PO
:
   4N  cB E 4 M W =$ .; A7<
NOCAP-MSG DB ‘NO CAPITALS $’
CAP-MSG DB ‘FIRST CAPITAL=‘
FIRST DB ‘]’
DB ‘LAST CAPITAL=‘
LAST DB ‘@ $’
  =# 
) *B 
MOV AH , 9
CMP FIRST,’]’
JNE CAPS
LEA DX ,NOCAP_MSG
JMP DISPLAY
CAPS : LEA DX, CAP_MSG
DISPLAY: INT 21H

 8  S 4N 
TITLE THIRD: CASE CONVERSION PROGRAM
.MODEL SMALL
__________________________________________________________________
 140  SUST
 :   
_____________________________________________________________________

.STACK 100H
.DATA
CR EQU 0DH
LF EQU 0AH
PROMPT DB ‘TYPE A LINE OF
TEXT',CR,LF,'$'
NOCAP_MSG DB CR,LF,'NO
CAPITALS $'
CAP_MSG DB CR,LF,'FIRST CAPITAL
='
FIRST DB ']'
DB ' LAST CAPITAL = '
LAST DB '@ $'
.CODE
MAIN PROC
; initialize DS
MOV AX,@DATA
MOV DS,AX
;display opening message
LEA DX,prompt
MOV AH,09H
INT 21H
;read and process a line of text
MOV AH,01H
INT 21H
WHILE_:
CMP AL,CR
__________________________________________________________________
 141  SUST
 :   
_____________________________________________________________________

JE END_WHILE
;if char is capital
CMP AL,'A'
JNGE END_IF
CMP AL,'Z'
JNLE END_IF
; if character precede first capital
CMP AL,FIRST
JNL CHECK_LAST
MOV FIRST,AL
CHECK_LAST:
; if character follow last capital
CMP AL,LAST
JNG END_IF
MOV LAST,AL
END_IF:
INT 21H
JMP WHILE_
END_WHILE:
MOV AH,9
;if no capital were typed
CMP FIRST,']'
JNE CAPS
LEA DX,NOCAP_MSG
JMP DISPLAY
CAPS:
LEA DX,CAP_MSG
__________________________________________________________________
 142  SUST
 :   
_____________________________________________________________________

DISPLAY:
INT 21H
;exit to DOS
MOV AH,4CH
INT 21H
MAIN ENDP
END MAIN

__________________________________________________________________
 143  SUST
 :   
_____________________________________________________________________

3B:0
2 
1 <
   :N  O u 1
1 - IF AX < 0 THEN
PUT -1 IN BX
END_IF
2 - IF AL < 0 THEN
PUT FFh IN AH
ELSE
PUT 0 IN AH
END_IF
3 - IF ( DL >= “A” AND DL = < “Z” )
Then
DISPLAY DL
END_IF
4 - IF AX < BX THEN
IF BX < CX THEN
PUT 0 IN AX
ELSE
PUT 0 IN BX
END_IF
END_IF
5 - IF ( AX < BX ) OR ( BX < CX )
THEN
PUT 0 IN DX
ELSE
PUT 1 IN DX

__________________________________________________________________
 144  SUST
 :   
_____________________________________________________________________

END_IF

6 - IF AX < BX THEN
PUT 0 IN AX
ELSE
IF BX < CX THEN
PUT 0 IN BX
ELSE
PUT 0 IN CX
END_IF
END_IF

=#  F) CASE ":N '8  8+   u 2


2 
1' S 4N  3  
.PO 9 u 9
Carriage (4 ) 2NL ‘A’ PC  Q) W< u 6
Return
Line (4 ) 2NL ‘B’ PC  Q) W< u t$
Feed
S 4N  =4o * Av PO G9 Q) W< u 7
.1+  ED "7 
: 0_ E B S 4 3 =#$ F) u 3

__________________________________________________________________
 145  SUST
 :   
_____________________________________________________________________

+ ........ + 7 + 4 + 1 E:  6&O 2 u 9


.AX &  ! 148
90 + 95 + 100 7 (  6&O 2 u 6
.BX &  ! 5 + ...... +
: 0_ E B S 4
8 * LOOP   h %& u 4
\ 9 \ 5 \ 1
   ! ( 50 9 6&O u 9
AX &  ! 13
.   -&  ! " 80 ;(NL PO "= u 6

'( E % 3:


&  E 0
  
 j:%  u 5
K- 
INITIALIZE QUOTIENT TO 0
WHILE DIVIDENT > = DIVISOR DO
INCREMENT QUOTIENT
SUBTRACT DIVISOR FROM
DIVIDEND
END_WHILE
! 7$  * 
&  E B S 4 3 =#$ F)
7$  *  '( AX & 
CX &  !
  2 BX & 
 N3: 6 aO 7Bo E 0
  
 j:%  u 6
:8  2 
'( E % M
INITIALIZE PRODUCT TO 0
__________________________________________________________________
 146  SUST
 :   
_____________________________________________________________________

REPEAT
ADD M TO PRODUCT
DECREMENT N
UNTIL N = 0
! 7$  *  6R E B S 4 3 =#$ F)
7$  *  ! AX & 
M8B ) CX &  !
  2 BX & 
(QR 
'( f O 0
3RB LOOPZ  LOOP 3B  Q9 /'( W< u 7
W< CX & 
 l 4< 0
:80 *B ZF = 1 ( AND )  CX <> 0 /4)
.(7 C  Q  < #  *B )
'C 
3RB LOOPNZ  LOOPNE 3B  M )
W< CX & 
 l 4< 0
:80 *B ZF = 0 ( AND )  CX <> 0 /4)
.(7 C  Q  < #  *B )
'C 
K '( n1R   < 0 PO 9 B S 4 F)
*B  Carriage Return A7>
.( LOOPNE    ) PO 80 A7<
S N 

__________________________________________________________________
 147  SUST
 :   
_____________________________________________________________________

"=  E B *[ ‘?’ PC  :mo E B S 4 F) u 8



(N- S 4N  E B .3BN) 3!O
.   -&  ! N00  3!C 
PC  3 =  PC 
(N- E B S 4 F) u9
t  PO 3 FFh *  PC  O 80h *:
-&  ! PO 10
(N- S 4N  E B ASCII
.!& '0 O 
  *: A7> E %&  z& E B S 4 F) u10
) " O
4A 3 Q8 +(

(N- S 4N  E B ( "F" g < "A" 9 "9" g < "0"
G+  ED  ! "m 
 
W< E %&  z& S 4N  E B .   -&  !
n1 Wo!
4[ "
C  BB Q)
:8 S 4N  E B ‘y’ PC  9 'Y’ PC  '(
*B Av PO G9 A79 W<
' 
x *: G9 E %&  A7 W< ) .S 4N  =4<

: :mo S 4N  E B ; K&
(@A9 "
C 
! E %&  +! W< ]C 10 ! S N  :) u11
5C 3 7 ( ! +(   *: A7<

__________________________________________________________________
 148  SUST
 :   
_____________________________________________________________________

.1+  ED4 < "7  =45 S 4N  E B


i7&   
Q: 
Oj>  9
 -   

AND,OR,XOR
 -   
" O
H[
4A 2    !
 -    E %&0
:  J E  8+  7 C  &  !
AND
DESTINATION ,
SOURCE
OR DESTINATION ,
SOURCE
XOR DESTINATION ,
SOURCE
Gt  DESTINATION 7&  !
  3B#%0 *0
t   t ")  ! 2 9 & Q8B Q9 FB
t! 2t 9 t& Qt8B Q9 38B SOURCE A_
3t 2t    38B 5 h ( .
[
 9 ") 
.")  !
:   C  g'( e:N  [T0 Q8B
.
 
O Y80 : PF,ZF,ZF
.
! x : AF
__________________________________________________________________
 149  SUST
 :   
_____________________________________________________________________

. a G&0 : CF,OF

t4A t10 
 -   J
    %5 O9
]O MASK 6O E % M W *B & A7 "7 C
*tB t t   6t'- 
t4%  B C0 ;- *B
:
 -   J
   pH% 
45
b AND 1 =b , b AND 0
= 0
b OR 1 =1 , b OR 0 =
b
b XOR 1 =~ b , b XOR 0
= b
: 0_ 38B  g'(
Clear "7 tC (t4A 9)
4A ! ‘0’
  2 u1
t! ‘0’
  2 *B ]OAND   E % *B
t t! '0’ 2 6'-  4%' MASK 6C 
. 'B 0 6'- 1  4%  ! '1’
  2 *B
SET "7 tC (4A 9)
4A ! ‘1’
  2 u2
t! ‘1’
t  2 *B ]O OR   E % *B
t t! '1’ 2 6'-  4%' MASK 6C 
.'B 0 6'- 1  4%  ! '0’
  2 *B
"7 tttC (ttt4A 9)
ttt4A
ttt Yttt8 u3
*tB ]O XOR   E % *B COMPLEMENT
__________________________________________________________________
 150  SUST
 :   
_____________________________________________________________________

6t'-  4%' MASK 6C  ! '1’


  2
1  4%  ! '0’
  2 *B   Y8(
. 'B 0 6'-
:I
AL t&  t! ":t,>
t4A ! '0’
  2
.B 0 Q  4%   0
C 
6tC) 0111 1111b = 7Fh
t  E % *B
AND   E % *B MASK
AND AL, 7Fh
I
tN) Qjt  W
4%  3 ) ! Set ‘1’
  2
AL t&  t! LSB 1a Qj  W
4%  MSB
B 0 Q  4%   09
C 
E %&4 Mask = 1000 0001b = 81h 6C   *B
 ) OR  
OR AL , 81h
I
DX &  ":,< x
__________________________________________________________________
 151  SUST
 :   
_____________________________________________________________________

C 
1000 0000 0000 t  Mask 6tC  E %t *B
XOR   E %&4 0000b = 8000h
XOR DX , 8000h
3t
t( t!
t -  t  E % *B h (
  =#  ! R 3( f C    N- 
"N) PC "1  PC  BC0
tt   $ ! 2 0 ( ‘a’ to ‘z’) "1  PC  Q9 *'4
PC  2 0  7Ah gO 61h *  3 =  ASCII
3t = t ASCII tt   $ ! ( ‘A’ to ‘Z’) "N8 
3t PC  BC ;4o! M W '( 5Ah gO 41h * 
DL &  Q) W< hUI! 20h *  K-4 N) < 1a
tN) PtO < ;'BC0 6'-  1a PO '( GCB
?t E %t   SUB DL , 20h   &4
.BC' GA9
BL E %  B4 .N 3
B- 
Q9 4 PC' "m  E:J 4D4 W<
61h = 0110 0001  ‘a’ PC' m  * 
61h = 0100 0001  ‘A’ PC' m  * 
Ft'-B N) < 1a 3 PC  BC0 wOU4 E: 3 
GtCB G  &  !
7& 
4%  ! ‘0’
  2

__________________________________________________________________
 152  SUST
 :   
_____________________________________________________________________

1101 t  Mask 6tC  E % M W *B PC 


AND   &4 1111b= 0DFh
AND DL , 0DFh
t < "tN8  PtC  BC0
) b0 Q_ M8B
.M& "1a PO

Clear Register ( ;! a 2) & ’B0


tO9 E %t 8B & ! a
  2 ;49 *'4
MOV AX,0 3B 
t8B -  9 E % 47:9 W< SUB AX , AX 9
Q9 *'4 ]O XOR  
45
1 XOR 1 = 0  0 XOR 0 = 0
2tR ;&4 2 &' XOR   E % 8B  
  C  '( ;! a * 
XOR AX , AX
& ! a *  7$ :NA
  Qo! '1’ OR ‘1’ = ‘1’  '0’ OR ‘0’ = ‘0’ Q
t10 *B 5 ]O h^, B 5 ;4T)  NB OR AX , AX
Et B t  3t8  \  0  AX &  BC
Q) Wo! SF ":,> e  ZF   e '( [T 
( ZF =   e 2!: *&! a *  GCB AX & 
__________________________________________________________________
 153  SUST
 :   
_____________________________________________________________________

  E % 3 h5     E % 38B   1 )


CMP AX , 0
NOT  
) 1’s Complement O 8  6&C NOT   E B
Yt8( G9 '0’ t < '1’ tt  ‘1’ t < ‘0’ t  BC0 
:   J E  8+  ( &  A  4% 
NOT Destination
NOT AX   ; I 
TEST  
t10 Q t 3t8  AND    TEST   E B
[Tt  t ; P   Destination 7&  BC
  J E  8+ 
C  e: '(
TEST Destination , Source
:
   e:N  '( [T  E B

  Y80 SF  ZF  PF e:N 
P x AF eN 
0 *  '( GC0 CF  OF e:N 
"7 C 4A 9
4A :NA<
"7 C 4A 9
4A BC :NA5 TEST   E %&B
6tO E %t *tB ]O '0’ 9 '1’  Q) Q<
! 
2 :NA 6'-  4%  ! ‘1’ *  2 Mask
__________________________________________________________________
 154  SUST
 :   
_____________________________________________________________________

Q Mt W 
! 6'- 1  4%  ! '0’ * 
*tB 1 AND b = b  0 AND b = 0
  E %
TEST Destination , Mask
7 
4%  ! '1’ *  '( GC
  Qo!  
\‘1’ *t  '( GC0
4%  ? /4) W< n ! :NA
.GA 4%  ) ! a Q80

:I
* $j *: g'( @O W< AL & 
 NA
Even_No Q  g < # 

C 
Qj  W
4%  ! 0 *  g'( GC0
$#  E:
? :NA5 M W g'( LSB 1a
1b0000000 t  MASK 6C  E % *B
4% 
:
   ":  g'( S 4N  Q8B
TEST AL , 01h
JZ Even_No
:
Oj>  9

__________________________________________________________________
 155  SUST
 :   
_____________________________________________________________________

9
t4A : t 
Oj<
'( =$>
Oj>  9 E %&0
9 3t' Mt W 7t&  ! "7$  4%' I)9
. :&'
tOj< *tB  
4%' ! *B shift   E % (
?t A7 *B Q:   9
O !  \ d:%  g <
t! @t t)\ 7&  3 4I  P-  g <
4% 
. 
:  < 
Oj>   QU8, $B
Opcode Destination,1

Opcode 9
Destination,CL
6'- 
Oj>  7 ( g'( CL &  GCB ]O
. 0

: Shift Left (SHL) :&'


Oj>
Qt80 Q9 3t8B :t&'
tOj<  SHL   E B
:  &4
C  ? ! " O
4A : 
Oj>
SHL Destination , 1

tOj> t 7 t( 2t *tB ]O


4A 3 I)9 9
   CL &  !
'- 
__________________________________________________________________
 156  SUST
 :   
_____________________________________________________________________

SHL Destination , CL
  0  CL & 
 10 5

.
 
O b PF , SF , ZF e:N  E 0
d:%' Oj< /0
4A Av g'( GCB CF eN 

tOj<
'( Av /4) W< 1 g'( GCB of eN  
. F  *: g < 79
:I
tBC t t CL = 3  DH = 8AH Qt) W<
SHL DH , CL t  t0 t DH  CL 3'& 
.C  e M )
:C 
*t   DH &  BC /4)   0 N
h = ;t0BC bN0 :&  < Oj 3  10001010
;t gt'( CL t&  @CB  50 01010000

t  gt'( C  e @CB (3 * )


& 
3 bt& t'( tC  38B " B   DH BC ) .‘0’
gt9 t! :a9 3
!< :&  g9 !
H[ E:9
(3 
::&'
Oj> E % 6R 

__________________________________________________________________
 157  SUST
 :   
_____________________________________________________________________

*t  ! 6
'( :&'
Oj>
'( N0
:t&' ;Oj< /0 W< (5d) 101 *  hUI (2d)
(10d) 1010 *  g'( C4 " O ;4A : 
tN0 34tA : 
Oj> /0 Wo!  
.t8 (4d) 7 t  ! *  6R  4T)
;t 0 H[ *: ! :&'
Oj> Qo!  
(2) !
:Shift Arithmetic Left ( SAL )  
E %t&B 38  SHL   I SAL   NB
3Bt  Et B ]tO
&C  '  ! SAL
.Machine Code
_
1 Y4  
:QR 
gt'( [Tt  E 0 ;Oj>9
'( Q9 3 *x 
;Oj /[ O W< ;4 5< C  QR  e:
G9 gt'(  0 5 e:N 
O Q! ? 3 I)

t'( A9
4 n ! Y8B S   Q9 ]O y,
@CB & ;Oj
'( /[ O W< hUI! ;Oj
&! CL=2 34A :  M W 80h *  g'(
*x  M W a @&0 Of , Cf e:N 
 Q9
.QR 
'( f O 3

__________________________________________________________________
 158  SUST
 :   
_____________________________________________________________________

! AX &  BC 6R


jU    F)9 :I
.QR! 7$ E ( h (8) * 
.4A (3) :  :&'
Oj< < dC4 :C 
MOV CL , 3
SAL AX, CL
:Shift Right (SHR)   3'
Oj5
ATB 7&' 3' ;Oj  SHR   E B 

tt  ttA7< *ttB SHR Destination,1 ": 


*tB  MSB g'( Qj  W
4%  ! a
et gt < LSB 1a Qj  W
4% 
Oj<

'( =$< 38B ;Oj5  9


 N) . Cf C 
t 7 t( 2t M W ;4A 3 I) ;Oj5
.
1  E % CL &  !
'-  ;Oj5
SHR Destination, CL
.SHL  
O ! ) e:N  [T0 Q8B
:I
t CF etN   DH t&  BC  
S 4 3   =#  0
MOV DH, 8Ah
MOV CL , 2
SHR DH,CL
:C 
__________________________________________________________________
 159  SUST
 :   
_____________________________________________________________________

DH = 10001010
&  BC bN0 34A :  ;Oj5 
DH = 00100010 = 22h
‘1’ g Cf eN 
 Q80
:Shift Arithmetic Right (SAR )  5
Q9  ( SHR   ( Y SAR   E B
*tB 5 MSB gt'( Qj  W
4%  BC
;tOj5 t 9
 N) .  0  10
.
1    AT
SAR Destination , 1
*tB ]tO   3 7 ( ;Oj5
O g! 9
CL t&  t! 6'- 
Oj>  7 ( 2

1    AT
SAR Destination, CL
:3' ;Oj5 E %
& 

t& 
t'( =$> 3' ;Oj5 E % *B
.
t$#  7 (
O ! M W 2 7   g'(
Qt80
t  Q!
B7  7 (J
N&   9
et
t Q80 1a bC  7 ' ;
;Oj5
'( =$< ( hUI! 1 @&0 Cf C 

__________________________________________________________________
 160  SUST
 :   
_____________________________________________________________________

*t  
  Q! (00000101)=5 *' 3'
.2 *   (00000010)
:":,< Q  ":,o
& 
E: 3
  FB
& 
'( =$< (
Et:
t O t! .":,< Q  E: ":,o
t . SHR t  E % 38B ":,< Q 
SAR   E % FB ":,o E:
O !

t4A Q9 )0) *  ":,o qO5 *B ]O


.(N) Qj  W
4%   ":,>
:I
*t  g'( 65143 * 
& 3' ;Oj5 E %
.AX &  !
  2 4
:C 
AX, 65143 MOV
MOV CL,2
SHR AX, CL
:I
BC   -15 *  g'( AL &  @O W<
.  0  AL & 
SAR AL,1
:C 
__________________________________________________________________
 161  SUST
 :   
_____________________________________________________________________

AL t&  tBC
t& gtB   0
t t4)W )
  FB 0 *B 2 7  
7 t  gt  ;tNB  -7.5 *t  
 
7 t' 4D4 W< -8 7   g'( C4 1a
t -15 7 t  Q9 t4
t4I  ":t  !
C4 3' ;Oj5
'( =$<  11110001
.-8 7    11111000 *  g'(
3'  :&' ;Oj5  9 E % 38B h (
9 2 7 t  gt'(
&  6R  '( =$>
gt'( 6tR 
'( =$< 47:9 W< ;0(R

t'( =$< *B ;0(R  2 7   x 7 (<


3t8B t) t t! @ ) 2$
Oj<
t  6tR' IMUL, MUL t  E %
*t: G9 gt'(
t& 
t'( =$> IDIV, DIV
.;Oj5
'( 3 T-9   ? N0 38 
:Q:   9
Rotate Left (ROL) :&' Q: 
*tB :t&' ;Oj
'( =$o    E 
W
t4%  t! g'( Qj  W
4%  2
t! t *B /  Y4 g! 1a Qj 

__________________________________________________________________
 162  SUST
 :   
_____________________________________________________________________

;t 'O ;4T) &' D  *B . CF C  e


:t gt'( Qjt  W
t4%  ]O
' )
:    ATB 1a Qj  W
4% 
ROL Destination , 1
ROL Destination , CL
Rotate Right (ROR) :3' Q: 
 ( ! ROL   ( Y    E B

t4%  2t *B ]O 3' Q80 ;Oj5 Q9


Qjt  W
t4%  t! 1ta Qj  W
et t! t *B /  Y4 g! N)
:31  O9   ATB .C 
ROR Destination ,1
ROR Destination ,CL

t4%  2t *B ROR , ROL 3B  ! ;4 wOUB


CF C  e ! 7L *B  
:I
t  t4%  7 t( 6&C ROL   E %
10 Q7 BX &  ! (1) *  g'( @C0
.Ax &  !
  2 .BX &  BC
:C 

__________________________________________________________________
 163  SUST
 :   
_____________________________________________________________________

MOV DX ,16D ; :tt8  7 tt(


P U
XOR AX,AX ; AX 6&O *B
! 4%  7 (
MOV CX,1 ;4%  7 (
Top : ROL BX,CX ; CF
4% 
! $0 7L *0  
JNC NEXT
INC AX
NEXT: DEC DX
JNZ Top
(RCL) Rotate tC  et tN( :&' Q: 
through Carry Left
:t&' Q: t 
t'( =$ot    E B
*tB ]O &  3 =#$ C  e :N(
C  e ! g'( Qj  W
4%  2
W
4%  ! C  e BC 2 *B
.31  @ O< ATB .1a Qj 
RCL Destination , 1
RCL Destination , CL
Rotate through tC  et N( 3' Q: 
carry Right RCR

__________________________________________________________________
 164  SUST
 :   
_____________________________________________________________________

 t( t! RCL   ( Y    E B

t4%  2 *B ]O 3' Q8B Q:  Q9


e 2 C  e ! 1a Qj  W
tATB gt'( Qjt  W
t4%  ! C 
31 
RCR Destination , 1
RCR Destination ,CL
:I
8Ah *t  t DH t&  tBC /4) W<
&  CF=1 *   C  e BC /4)
DH t&  BC   3 *  g'( @CB CL
  0  C  e
RCR DH, CL
:C 
CF DH
1 10001010
H 5
 
0 11000101 gt 5 ?:  
3  C4
1 01100010
4I  ?:  
3  C4
0 10110001
I I  ?:  

__________________________________________________________________
 165  SUST
 :   
_____________________________________________________________________

3  C4
et B1h *   DH &  BC G9
.a @&B C 
:I
"7t$  4%  Y8 E B S 4 3 =#$ F)9
hUIt! DL t&  !
  2 AL &  !
4tI  *t  t AL t&  BC /4) W<
t&  t! 00111011 *t  2 *B 11011100
.BL
:C 

t4%  2t *tB ]O SHL   E % *B


 t tC  et ! N) Qj  W
t! t RCR t  E %t *B ",N
:80 BL &  ! g'( Qj  W
4% 
  =#  ! ) . 8 7 (
'  ?
MOV CX, 8
Reverse: SHL AL,1
RCR BL,1
Loop Reverse
MOV AL , BL

:+(
 & 
HI  E:
(NL "=
__________________________________________________________________
 166  SUST
 :   
_____________________________________________________________________

Et 0 S 
)
)  =#   !

tO 3t t+(
  9
H[ E:9 "= 

HI  ":  ! E:


(NL M ) b0 
.
,+  ! +(
 & 
:
HI  E: A7< u1
E %t&  E B
HI  E:J A7> S 4 !
Kt gt'( n1tR  gt4 H[ *: A7o
*t  Qt8B ]tO .Carriage Return tA7>
t( '1’  '0’ PtC 
&' 3( ":N( A  
"mt 
t  g < ;'BC0 *B PO ) A7<

t j:%  .& ! 4%  ? 24 (1, 0)


b0t 
tO 3t H[ *: A7o E 0
  
: BX &  ! ;
Clear BX ( BX will hold Binary values )
Input a character ( ‘0’ OR ‘1’)
While character < > CR DO
Convert character to binary value
Left shift BX
Insert value into LSB of BX
Input a character
End_While

__________________________________________________________________
 167  SUST
 :   
_____________________________________________________________________

*t  tA7<
O !
 j:%  b0 38B
:  ) 110
Clear BX : BX = 0000 0000
0000 0000
Input character ‘1’ , convert to 1
Left shift BX: BX = 0000 0000
0000 0000
Insert value into LSB of BX: BX =
0000 0000 0000 0001
Input character ‘1’, convert to 1
Left shift BX: BX = 0000 0000
0000 0010
Insert value into LSB of BX: BX = 0000
0000 0000 0011
Input character ‘0’ , convert to 0
left shift BX : BX = 0000 0000
0000 0110
Insert value into LSB of BX
BX = 0000 0000 0000 0110
110b  BX &  BC
@tC0
'A   E: Q9
& 
 j:%  X0
16 @ tB 5 t4%  7 ( Q9 n ! ‘1’  '0’ g'(

t O t! t A7< *0 ;4A 9 ! * 5<


4A
;t4A 18 A7< *0 W< 34A 9
4A 17 A7<
.8
__________________________________________________________________
 168  SUST
 :   
_____________________________________________________________________

&  !
4A b :&' BX &' ;Oj ( *0
*t  tA7< 1ta Qj  W
4%  ! BX
]tO OR   E %
O 
4%  ! A  
) 0 *t  g'( @C0 1a Qj  W
4%  Q9
*t'4 (! 0 *  2R0   :&'
Oj‚
4
  E %  ;4!   b OR 0 = b Q9
Qjt  W
t4%  gt!
t4#% 
  bN0 OR
3t =#   bNB A   * 
  1a
:   C  g'( 2 
1' S 4N 
XOR BX,BX
MOV AH,1
INT 21h ; PO 9
While_:
CMP AL, 0Dh
JE END_While
AND AL , 0fh ; gt < PC  O
H[ *:
SHL BX, 1
OR BL, AL ; BL
t4%  !
  A7
! 1a Qj  W
INT 21h ;   PC  9
JMP While_
__________________________________________________________________
 169  SUST
 :   
_____________________________________________________________________

END_While:
:Binary Output
HI  E: dA< u 2
E %t&4
tHI  ":t  ! *  dA<
O !
W
t4% 
tOj< *tB ]O :&' Q: 
'(
BC :A *B .C  e g < N) Qj 
‘1’ PtC 
t(NL *tB 1 @&0 /4) Wo! eN 
t! .'0’ PtC 
(NL *B a @&0 /4) W<
S 4N 
 j:A 'B
FOR 16 times Do
Rotate left BX
If CF = 1 then
Output ‘1’
else
Output ‘0’
end - if
END_FOR
. F -' 3B) {B 2 
1' S 4N 
:Hex input +(
 &  E: A7< u 3
'0’ 7t  @tC0
'A   +(
 &  E:
! A7> K 0 'F’ g < 'A’ PC  '9’ g <
PtC  Q9 t Xt nt&N'  .*t 
B4
@ t0 5 UA   Q n ! ?N) PO
'A  

BL .(&' @  ;&  ) +(


  4A 4
__________________________________________________________________
 170  SUST
 :   
_____________________________________________________________________

A7< !
N 
B-  &4 
 j:%  (
*t0 &' ;Oj5
'( Q9  ( !
HI  E:

tt4%  Q5) " ttO  "tt  t! ttOj<


tt:T
M W (
H[ 4A
:9 g'( @CB +(
 & 
t! .;! +(
 & 
4%  A7> Q8 ’B
:S 4N 
 j:A )4 'B
Clear BX
Input Hex character
While character <> CR Do
Convert character to Binary value
Left shift BX 4 Times
Insert value into lower 4 bits of BX
input a character
End_While
: 'B ) 2 
1' S 4N  Q8B
XOR BX , BX
MOV CL,4
MOV AH,1
INT 21h ; PO 9 9
While_:
AL , 0dh CMP
JE END_While
;
HI  ":  @9 PC  O

__________________________________________________________________
 171  SUST
 :   
_____________________________________________________________________

CMP AL , 39h ; PtC  2t Q:


"9“
JG Letter ; t! tN) Q) W
PO
;*: 3( ":N( "7 
AND AL , 0fh ; H[ *: g < O
JMP shift
;PO 3( ":N( "7 
Letter: Sub AL , 37h ; *: g < O
H[
Shift: SHL BX, CL
; BX &  !
  A7
OR BL, AL ; 4A 2: !
  2
'& 
INT 21h ; 4I  PC  9
JMP While_
END_While:

:HEX Output 3(
 &  E: dA< u4
4 G9
tH[
t4A 16 gt'( BX &  @CB
t! *t  t ;t(N-  .+(
  4A

__________________________________________________________________
 172  SUST
 :   
_____________________________________________________________________

Av AT4 :&  3 9 N4 +(


 &  ": 
t+(
t  ;4A g <  C4 *[ 4A
:9
t ! tt) tt 4 M tt) tt&4 ttN-4
:
  
 j:% 
For 4 times Do
MOV BH to DL
Shift DL 4 times to Right
If DL < 10 then
Convert to character in 0 ......9
else
Convert to character in A..........F
end_if
Output character
Rotate BX left 4 times
END_For
3B:0
:
  
 -  '  =$o * u 1
a. 10101111 AND 10001011 b.
10110001 OR 01001001
c. 01111100 XOR 11011010 d.
Not 01011110

: 0_ E 0  
 -      u2

__________________________________________________________________
 173  SUST
 :   
_____________________________________________________________________

tN) Qjt  W


4%  ! ‘1’ *  2 u9
2t BL &  ! 1a Qj  W
4% 
.10 Q  4%   0
t! tN) Qjt  W
t4% 
 Y8( uII
.10 Q7 4%   0 2 BX & 
t1  ! "7$  4%  )
 Y8( uIII
.Word1
: 0_ ! Test   E % u3
&  Q) W<   e ! '1’ *  2 .1
.a *  g'( @CB AX
&  Q) W<   e ! '0’ *  2 .2
.@7! 7 ( g'( @CB DX
&  Q) W< ":,> e ! '1’ *  2 .3
.F  7 ( g'( @CB DX
&  Q) W<   e ! ‘1’ *  2 .4
.a g'( @CB DX
Qt) W< Z- 
4A e ! ‘1’ *  2 .5
t4%  3 $j 7 ( g'( @CB BL & 
'1’ *  g'( @C0  

__________________________________________________________________
 174  SUST
 :   
_____________________________________________________________________

*tt  gtt'( @ttCB AL tt&  Qtt) W< u4


C  e
 /4) 11001011b
AL t&  tBC   CF=1 O @&0

   '  3 ) 0 
.(
'( ) 2
H 5
  X!)
a. SHL AL,1 b. SHR AL , 1
c. ROL AL , CL ; if CL contains 2 d.
ROR AL, CL ; if CL contains 3
e. SAR AL,CL ; if CL contains 2 f. RCL AL, CL if
CL contains 3
g. RCR AL ,CL; if CL contains 3
t  t E 0     9   F)9 u5
.QR! f O E ( h
B5h * 
(R u9
8 *  ! AL &  BC 6 u6
2 4 *  g'( 32142 * 
& ut$
AX &  !
 
2 16 *  g'( -2145 * 
& u7
BX &  !
 

: 0_ E 0     9   F)9 u6

__________________________________________________________________
 175  SUST
 :   
_____________________________________________________________________

* 10 3 9 *: g'( @CB AL &  Q) W< .1


.m  PC  g  *  BC
ASCII 7t8  gt'( @tCB DL &  Q) W< .2
.1a PC ;'BC * .N) PC
: 0_ E 0     9   F)9 u 7
10D *tt  t! BL tt&  tBC 6t .1
.QR! f O E ( h
* .F$ 7 ( g'( @CB AL &  Q) W< .2
&  ! N  KL (8) g'( *  
& 
.(ROR   E % : " (& ) AH

: S N  3B:0
.PO A7> E %&  z& E B S 4 F)9 u 8
tt  7t8 
t(N- 4tI  -&  ! S 4N  E B
7 ( M ) A   PC'
HI  ":  ! ASCII
I . 78  ! ‘1’ 7   g'( @C0   4% 
TYPE A CHARACTER : A
THE ASCII CODE OF A IN BINARY IS
01000001
THE NUMBER OF 1 BITS IS 2

__________________________________________________________________
 176  SUST
 :   
_____________________________________________________________________

.PO A7> E %&  z& E B S 4 F)9 u 9


tt  7t8 
t(N- 4tI  -&  ! S 4N  E B
E B .A   PC' +(
 &  ":  ! ASCII
tA7< E t E %t&  E B gO :8  S 4N 
.A7> K g'( n1R  PO
TYPE A CHARACTER : 7
THE ASCII CODE OF 7 IN HEX IS : 37
TYPE A CHARCTER :
7 ( A7> E %&  z& E B S 4 F)9 u 10
Et B .gt9 C) 4A 4 3 Q8 +(  
t! A t  * 
(N- 4I  -&  ! S 4N 
tx
t A7o E %&  E W< .
HI  ": 
S t4N  Et B ( G+(   x *:)  K&
.@A9 ?
C  ; z&
TYPE A HEX NUMBER (0000 - FFFF) :
xa
ILLEGAL HEX DIGIT, TRY AGAIN ; 1ABC
IN BIRARY IT IS 0001101010111100
*t: A7> E %&  z& E B S 4 F) u11
7 
4A 16 3 Q8B H[
* 
(N-   -&  ! S 4N  E B. 9
W< . +(
 &  ":  !
__________________________________________________________________
 177  SUST
 :   
_____________________________________________________________________

t'( GCB ) H[ x *: A7o E %&  E


G&0 5 9 "0" G&0 5
4A
?t tC E %&  z& S 4N  E B ( "1"
.GA9
TYPE A BINARY NUMBER UB TO 16
DIGITS : 112
ILLEGAL BINARY DIGIT , TRY AGAIN :
11100001
IN HEX IT IS EI
3B7 ( A7> E %&  z& E B S 4 F)9 u12
4A 8 g9 - 3H[
-t&  t! 3B7   
(N- S 4N  E B
. hRB9
HI  ":  !  
A7< F'L *B T-A *: A7o E %&  E W<
.GA9 ? * 
TYPE A BINARY NUMBER , UP TO 8
DIGITS : 11001010
TYPE A BINARY NUMBER , UP TO 8
DIGITS : 10011100
THE BINARY SUM IS 101100110
tA7> E %t&  z& E B S 4 F)9 u 13
E B ":,< Q  +(   7 (

__________________________________________________________________
 178  SUST
 :   
_____________________________________________________________________

.   -&  ! 3B7   


(N- S 4N 
T-A *: E %&  A7 W<
S t4N  Et B . GtA9 ?
C' ; z *B
QR 
'( f O :NA

CC 
  2N-B ":,< Q 
TYPE A HEX NUMBER (0 – FFFF ) :
21AB
TYPE A HEX NUMBER (0 – FFFF ) :
FE03
THE SUM IS 11FAE

tA7o E %t&  z& E B S 4 F) u14


g'( n1R  0
B+( E:9

t(NL 6t&C S t4N  Et B . A7> K


*0  
B+  4%  

t &  ":t  !   -&  !  A7<


A7o E %&  E W< . +(
; z& S 4N  E B ( 9 , 0 3 2 B 5 ) T-A *:
@A9 "
C'
ENTER A DECIMAL DIGIT STRING :
1299843
THE SUM OF THE DIGITS IN HEX IS
: 0024
__________________________________________________________________
 179  SUST
 :   
_____________________________________________________________________

2&   
=$> 3(
 i 8 
The Stack and Introduction to Procedures

3Bt' /z  3B#%' i 8  2- E % *B


t    g! S 4N  ( =[9 4N 
= t 
t'( t! ;  %t i 8  (
BL

t) bt M W Procedures


(  S 4N'
t  E % ; * A9 i 8  ! * 2

(  S N  = 4
848 e-4 *[ pop, push
.M  I b0 2
*tB ")t  t! G7tO9 P) i 8  NB

!t< *tB ]tO ; n ! O PL 2   


t! t( Av A9 *B i 8 
 !  
A Av
B- B ;4 
   FC& 
'(
) g'( FB LIFO (Last In first out) d% 9 
t0 ")t  !
- B C E B Q9 S 4
Mt W
t&  t  t! 4)W ) i 8)
.  E %
STACK 100h
__________________________________________________________________
 180  SUST
 :   
_____________________________________________________________________

2t- gt < SS i t8  2t- t& +B ]O


i t8  t,z @CB Z&  I  ! i 8 
tA i 8 g < +0 g 100h
  g'( SP
.
  ? l 4< *B ;! * 2 (
:PUSH , PUSHF   i 8  ! * 2
t!
t tA7> PUSH t  E %t *B
;1a i 8 
PUSH SOURCE
")t  t! 2t 9 &  :   ]O
hUI .
4A 16 -
PUSH AX
: 0_
'  ? ! *B
2
  SP i 8  ,z
 l 4< u1
")  ! :   3
%&4 2 *B u2
SS:SP Q  !
.10 *B 5 :   BC Q9 wO5
e:tN  t& BC 2!  E B PUSHF  
t,z tBC /t4) t hUIt! .i 8  !

t'  t0 N 100h *  g SP & 


3t 2 lt 4< *tB PUSHF   0 N!
t 00FEh ;t bNt SP &  BC
__________________________________________________________________
 181  SUST
 :   
_____________________________________________________________________

e:tN  t& BC 3


%&4 ( *B M W
.00FE
Oj> ( i 8  2- !

:POP , POPF   i 8  3


 FC
POP   E % *B i 8  3
 FC&
;1a
POP Destination
 t( )
4A 16 & 3( ":N( 7&  ]O
POP BX hUIt ")t  !
4A 9 (IP & 
:   3RB POP   0
Qt  3t ")t  tBC ‡&4 u1
7&  g  SS:SP

t  SP i 8  ,z
 "7Bj u2
2
i t8  3
 9 FC& E B POPF  
.e:N  & g <
t! [zt0 5 i 8  2     9 Q9 wO5
16 t- t1 2  0 49 ) e:N 
t  t  hUI! .4A 8 2  0 5
4A
bCa x
__________________________________________________________________
 182  SUST
 :   
_____________________________________________________________________

Push AL ; ILLEGAL
E B User Program E %&  S 4 g <
!>
hUIt! ;'( =7 i 8  E % 1+  ED4
EtD4 E B INT 21h
L   = 4 E % (
t! Ut&'
t'%  *t  3B#t% 1+ 
=t45 t( @A9 ? ($ *[ i 8 
t  S 4N' "7 
L   = 4 ( 3
! /0   1  E %&  S 4 [TB 5
.U& 
:i 8  E %  N- I

 Av Q9 g'( 0 i 8  (


BD4 Q5
LIFO NCt *t
t 9 t B#%0 *0
"=t  Et B I b =#   ! E 
-t&  ! S 4N  E B .b0 
O 3
'$
:' I
&8( ":
' 
(N-  
? this is a test
tset a si siht
: 
 j:% 
Display ‘?’
Initialize count to 0
Read a character

__________________________________________________________________
 183  SUST
 :   
_____________________________________________________________________

While Character is not a Carriage return


Do
push character onto the stack
increment counter
Read a character
End_While
Go to New line
For count times Do
Pop a character from the stack
Display it
End_For
PO 7  qOU CX &  S 4N  E %&B

t 'O 3t dt%    A7< *0  


' 
&  ! "7$  PC  7 ( Q8B while
t A7< *t0 t  PtC  t) Q80 CX
S t4N  t)TB M W  i 8  ! "7$
3t )T  M W PO A7< *0  ;4 3
.a @&B 5 CX &  Q9
.MODEL SMALL
.STACK 100H
.CODE
MAIN PROC
; display user prompt
MOV AH,2
MOV DL,'?'
__________________________________________________________________
 184  SUST
 :   
_____________________________________________________________________

INT 21H
;initialize character count
XOR CX , CX
;read character
MOV AH , 1
INT 21H
;while character is not a carriage return do
WHILE_:
CMP AL , 0DH
JE END_WHILE
PUSH AX
INC CX
INT 21H
JMP WHILE_
END_WHILE:
MOV AH , 2
MOV DL , 0DH
INT 21H
MOV DL , 0AH
INT 21H
JCXZ EXIT
TOP:
POP DX
INT 21H
LOOP TOP
EXIT: MOV AH , 4CH
INT 21H
__________________________________________________________________
 185  SUST
 :   
_____________________________________________________________________

MAIN ENDP
END MAIN

:PROCEDURES
(  S N 
*t& 0 *tB  "N8    S 4N 
) (
t  "1 
(  S N 
( g < S 4N 

t(  S tN  ?t t( Q8B ) &0


"7 tC
tm @7z0 UA 
' & " O)
  &B  
C ?7 C $%  
@ ) @A9 S  !   % "7(< M )
.  !

'8+  *&  9 N0 S N 


)
BL Q!  
?t 2tBj0 *t[ "1t  S N  3
( g <
?:tNA ? O g'(  )
) "1  S N 
gt- "1t  S tN  ? 20 *B M W 
.N) S 4
t &H  S 4N   "1  S N  ? O9
S N  =  ?:  E B S 4N' A 
- 4 NB
t ?: t t t) E B   @A
( 
.;H( t Et Gt  S 4N  g < "7  =45
High Level t  @&  W S N 
O g!
__________________________________________________________________
 186  SUST
 :   
_____________________________________________________________________

= tt 
tt'( Qtt80 Programming Languages
2t 
t1 t! 38  S N  3(
% "7 
RET "7t  t 9 CALL =( 5  9
) FB
.
(  S N  2    ( @ )
:Procedure Declaration
(  S N  3( SB 
:   C  g'( (  S 4N  3( bB  *B
Name PROC type
; Body of the procedure
RET
Name ENDP
t  t type  =t$> *t t Name ]O
FAR 9 NEAR 31t  ATB G:A Operand
3t *B (  S 4N  = 4 Q9 g0 NEAR ]O
S 4N  = 4 Q< g! FAR  9 2-   Y4 A7
y,
) *B * W< .c'% 2- 3 *B ( 
.NEAR   3 (  S 4N  Q9 X! *B
S tt4N  =tt4< gtt < @7zttB (Return ) RET tt 
G9 . ;H( t E G  S 4N  g < "7  ( 
RET t  E %t Et B Q9 FB g(! S 4
 t( t! ) ?„(  E G  S 4N  g < "7'

__________________________________________________________________
 187  SUST
 :   
_____________________________________________________________________

t!
'$ Av ! "7(  *B ( &H  S 4N 
. (  S 4N 


(  S N  3 05

t48 < ;t Qt80 Q9 g(! S 4 G9 g'( FB


gt <
t  "7(o E B Q ; < UA   N 
UA t  7 t( Q) W< ;H  E G  S 4N 
*B 3) T) U&  E % 38B 1a $% 
t 9
t'% 
(  S N  3 05  BL 3(
-tR4 tN) $%  9 UA   7 ( Q) W<
t  t! + * GA9 eL E % g <
.
  


(  S N  Z[0
Et  t(  S t4N 
) 3 =45  FB
/t G9 t! t&B gO ;  8  Z[ 
'

__________________________________________________________________
 188  SUST
 :   
_____________________________________________________________________

W< (  S 4N   E % p%, G9


-
:g'( Z[  +B M W 7:9
S t4N   E B  
m' E  K+  u1
( 

'%  UA   cB0 ! *B :UA   u2


(  S 4N'

t'%  $%  cB0 ! *B :$%  u3


(  S 4N'
Q<)
t(  S N  b0 *B   %5 u4
 E B   ( $
.  % (  S 4N 
:RET , CALL  5
31ta ;t  CALL   E % *B S 4 = 
  C  g'( g DIRECT ,N 
CALL name
.?„ 4 6'-  (  S 4N  *  name ]O
gt'( g Indirect ,N 1  = '
4I 
1 
": 
CALL address_expression

__________________________________________________________________
 189  SUST
 :   
_____________________________________________________________________

9 t&  7 tC0 CALL address - expression ]O


6t'-  (  S 4N  Q( @CB G  1 
.?0
0_ *B g(! S 4 = 4 (
t! Return address t$  Q( 3B#%0 *B u1
     i 8 
=   E G  S 4N  ! CALL  J
S t4N  t! t 9 9
Oj< Q( 2 *B u2
&  ! ( 
Mt W gt < t  *tB t  IP ' 
(  S 4N 
RET t  E %t&4 t(! S 4 G9 3 "7' 
i t8  3t t$  Q( A g < @7z0 ]O
"7t  gt < @7ztB  '  & g! ;
=   E G  S 4N'
RET Pop_value ":  ATB Q 38B
/tt4) W< .G:ttA tt  Pop_value ]ttO
7 t( FC *B Q9 M W g Q! Pop_value = N
.i 8  3
!< N -Bytes
u:g(! S 4N I

__________________________________________________________________
 190  SUST
 :   
_____________________________________________________________________

6t taO 6&O ;! *B (! S 4N I  b

tOj> 2t 
'( E % M W a,b 3N$ 3:
u:   C  '( 6R 
 j:A Q80
Product = 0
Repeat
If LSB of B is 1 then
Product = Product + A
End_if
Shift left A
Shift right B
until B = 0
= 1101b A= 111b Q tN(
t j:% 
t 
Q 4
 j:%  ZN-B
product = 0
since LSB of B is 1 , product = 0 + 111b = 111b
shift left A: A = 1110b
shift right B : B = 110b
since LSB of B is 0 ;
shift left A : A=11100b
shift right B : B = 11b
since LSB of B is 1 ; product = 111b +
11100b = 100011b
shift left A : A = 111000b
shift right B : B =1b

__________________________________________________________________
 191  SUST
 :   
_____________________________________________________________________

since LSB of B is 1 , product = 100011b +


111000b = 1011011b
shift left A : A = 1110000
shift right B : B=0
since LSB of B is 0 ,
return Product = 1011011b = 91d
:S 4N  'B !
.MODEL SMALL
.STACK 100H
.CODE
MAIN PROC
CALL MULTIPLY
MOV AH,4CH
INT 21H
MAIN ENDP
MULTIPLY PROC
PUSH AX
PUSH BX
XOR DX , DX
REPEAT:
TEST BX , 1
JZ END_IF
ADD DX , AX
END_IF:
SHL AX , 1
SHR BX , 1
JNZ REPEAT
__________________________________________________________________
 192  SUST
 :   
_____________________________________________________________________

POP BX
POP AX
RET
MULTIPLY ENDP
END MAIN
 AX 3'&  ! UA   N  =$> E B 
N0 .DX &  ! 6R  aO 6&O *B BX
3: g'( BX  AX QU&  @CB QR  f C
.FFh 3 9
Ut&  *t 3B#t% g(! S 4 G9 hH7 9 NB
;t( E % i 8  !   % E   
*tB =t$> t( =4  *[ PUSH  9 3

t( E % i 8  3
B  *  $
Et B   U&   ( ! M W pop  9 3
Ut&  10 *B 5 gO M W !
  $:o
S tN' Et  8t+  Qt!   'a S 4N'
:
( 
NAME PROC
Push AX
Push BX
: =$> A7  
Pop BX
Pop AX
__________________________________________________________________
 193  SUST
 :   
_____________________________________________________________________

RET
NAME ENDP
:3B:0
t S t4N  t! i t8  ctB0 Q) W< u1
100H .STACK
t SP i t8  t,z BC   u9
ƒ",N S 4N  0
B 
*  g'( @C0
   U&  Q9 X! u6

C 
AX = 1234h , BX = 5678h , CX = 9ABCh , and
SP=100h
t SP , CX , BX , AX U&  BC b
S 4N    =#  0
PUSH AX
PUSH BX
XCHG AX , CX
POP CX
PUSH AX
POP BX
t,z tBC Qt80 i t8  yt'B  ( u3
W .( SP=0 ) a *   i 8 
f C W .i 8  ! " B $
') 2 *0
38B W  ƒ SP &'
__________________________________________________________________
 194  SUST
 :   
_____________________________________________________________________

.S 4N' f CB Q9
:   =#  ; S 4 Q9 X! u4
CALL PROC1
MOV AX , BX
:Q9 X!
t! ")t  t! 2 B MOV AX,BX   u9
08FD:0203 Q 
t! 2t B Near   3 PROC1 S 4N  u6
08FD:300h Q 
SP =
t  gt'( i t8  ,z @CB ud
010Ah
  0  SP , IP 3'&  BC  
   ,N CALL PROC1
.i 8 
 ! "7$ 
'8 
: 0_ 8 E B S 4 F) u5
! i 8 
 ! "7$ 
'8  2 u9
10 Q7 AX & 
.i 8  BC
t&  ! i 8  !
4I 
'8  2 u6
BC 10 Q  CX
.i 8 
__________________________________________________________________
 195  SUST
 :   
_____________________________________________________________________

! g 
'8  BC  N u t$

4I 
'8  2 i 8 
b i E % 38B
BN  57  ! u 6
6&C  B 9 B C0 "7 C
'(

7  0 ‘( ) { } [ ] ‘ i E %&4 ]O
)T' .A7> K '( n1R 
i ) 4 Q8B Q9 FB i 7$
Ca 3
.;C! *0 i Av 4 Y4 3

CCa
  
7  hUI!
(A +{B-(D-E)+[A+B]})

CCa x
  
7  
(A+ {B-C])
]O i 8  E %
7  3 )T  38B
') :&  3
7  "=  E 4
Q) W< .i 8  ! ; A7< *B B $ i 4 $
2 ;4: *B eUx< i  i 
3 4) Wo! ; ;$A<  i 8  ! i Av
38B * W< "=  a4   Y4

B  ! .T-A
7  Q9 M W B   Y4 3
i 8  3 i ) ’B0 *0 W<

__________________________________________________________________
 196  SUST
 :   
_____________________________________________________________________

! i9  /'m W<


CCa
7  Q80
.
CCa x
7  Q80 i 8 
4 '( GC0
7 "=  E B S 4 F)9
&B .":)  i 3
[UI 
E %&  E B 9
7  0 gO A7> S 4N 
E B ]O T-A
7 A7o

7  QT E %&  :-Ao
C  ? ! S 4N 
.T-A
@   !
H+( E:9  
  
B-  E %&4 u 7
32767 g < 1 3
.*: GT 9  u
." O
4A :&' * 
Ojo * u
 15  14 34%  a *:
4%   N u
. XOR (
.15
4%  ! a *  2 * u

:
   =$>
) 6'- 
3 H[ *: 9 B  READ &B =$< u 9
BX &  ! ;B#% E B E %& 

__________________________________________________________________
 197  SUST
 :   
_____________________________________________________________________

7 ( N &B  RANDOM &B =$< u6


H+( *: "7(o E B BX &  !
":) 
 j:%  F&O

(N- E B  WRITE &B =$< – t$
.
HI  ":  ! BX &  BC

E B *[ ‘?’ E5
U(
(N- E B S 4 F)9
=$> = 4 *[ H[ *: "= READ =$> = 
WRITE =$> = 4 *[ H+  *  6&C RANDOM
6&C
E:9 4
(NL *B ]C H+( *: 100
(NL
3 0 x! 4 2 O  -&  ! n !
.7 (

3 I   

&  6R   9
Multiplication and Division Instructions

t&  6tR 
'(
&  =#$ ! B9:

Oj>  9 E % ;0(R  3[ *  g'(


bt E t t   ! .3'  :&'
__________________________________________________________________
 198  SUST
 :   
_____________________________________________________________________

g'(
&  6R  ' E 0   ' 
.;0(R  3[ 7   x 7 (9

O !  ":,o E:J 6R  '( c'%0

t&  t'( M t) ":t,< Q t E:

t&  6R   9 3 3(4 B  


Q t Et:J @tA ":t,o E:J  O9
- E:9 2  ' :a  M ) ":,<
16 - E:9 2  ' @A9 n ! 4A 8
.;4A
t
t&  6tR  t 9   %t O9
":t  t! Et: dA< A7>   %
.  "=) 3 B#B 
B+ 
MUL & IMUL 6R  '(
6tR  3
  6R  '(
+ 9 N4
tI  Nt g'! ":,< Q  6R  ":,o
 10000000 3HtI  3t  6t *0 W<
t&  .3' 3B&0  B '! 11111111
t  ":,< Q  ;'I E: Q9  
*t  t! 128 *t  6  6'-  Qo!
t 4I  &   9 .32644 S0  bN 255

__________________________________________________________________
 199  SUST
 :   
_____________________________________________________________________

6t'-  Qo! ":,o E:9 3( ":N( E: Q9

t  bN -1 *  ! -128 *  6 


*0  
  3( h 0
'%
4 g 128
.(32640)  &  ! '( C 
3t( ct'%0 ":t,o E:J 6R  '( Q
E %t *tB ":,< Q  E:J 6R  '(
Et:J 6R  '( ! E %&B  :3B 9
4tI  .MUL (Multiply)    ":,< Q 
t ":t,o E:J 6R  '( ! E %&B

'   ? E 0 .IMUL (Integer Multiply)


aO Q8
H[ 4A 8 - 3 6R 
3t: 6tR 9
H[ ;4A 16 - 6R 
t- 6R  aO Q8
H[ ;4A 16 -
:  3B J
 
1  .
H[ ;4A 32
MUL Source
& IMUL Source

gt  t  ?t 2  ' Q0:a M 


t(
t4I  t4A 8 - E:9 6 (
;4A 16 - E:9 6
Byte Form 4A 8 - E:9 E %
__________________________________________________________________
 200  SUST
 :   
_____________________________________________________________________

AL t&  t! 7$  *  6 *B ]O


 <  Source :   ! 7$  *  !
K& x) ")  ! 2 9 & BC
16 t-)
t  3B#%0 *B .(/[ E %
.AX &  ! (;4A
Word form 4A 16 - E:9 E %
t! 7t$  *  6 *B ":  ? !
t :   ! 7$  *  ! AX & 
Kt& tx) ")t  ! 2 9 &  <
! (;4A 32)
  3B#%0 *B .(/[ E %
ct  g'( AX @CB ]C AX , DX 3'& 

  F80 G'  c  g'( DX  '& 


: 't&  ct  } .DX:AX ":t  gt'( ?7(
{ G'  c 

  Y4 g'( C4


N$  E: 6
O !
.IMUL, MUL3B  E % (
6R   T e:N  [T0
SF, ZF, AF, e:N  3 ) 6R   T [T0 5
PF
: Cf/Of 3N'
N&   9
MUL   E %
O ! /9
__________________________________________________________________
 201  SUST
 :   
_____________________________________________________________________

W< (CF/OF = 0) (0)


t  e:N  AT0
a @&B
  3 G'  c  Q)
f tCB *t W< (1)
t  e:tN  AT0
.M W
IMUL   E %
O ! /6
W< (CF/OF = 0) 0
t  etN  tATB
":t,> 7   3( ":N(  G'  c 
) Q9 G9) Sign Extension '&  c 
":t,> ;t4A @&0 G'  c  4A
e:tN  tAT0 ( 't&  c  3 MSB
.M W f CB * W< (CF/OF = 1) (1)
 
tAT0 CF/OF e:tN  Q9 wtOU4 3B J
N& 
3t8B 5 ?tN)
  /4) W (1)
 

t O t! AL) n ! '&  c  ! B#%0

t O t! AX  t4A 8 - 3: 6


FtB t  .(;t4A 16 t- 3: 6
ct  t! 7t$ 
   2   
.G' 

__________________________________________________________________
 202  SUST
 :   
_____________________________________________________________________

:
'I 9

'I  V X E  =#   !
.
'%  6R  '( b
BX = ffffh , AX = 1 Q) W /1
CF/O DX AX
tttttt 
ttt   
F
tttt ) G+ 
(G+(
0 000 ffff 0000ffff
65535 MUL
0 BX
0 ffff Fff Ffffffff -1 IMUL
f BX
BX = ffffh, AX=ffffh Q) W /2
CF/ DX AX
tttttt 
ttt   
OF
(+(  ) (G+()
1 FF 00 FFFE0001 4294836 MUL
FE 01 225 BX
0 000 000 00000001 1 IMUL
0 1 BX
AX = 0fffh Q) W /3
__________________________________________________________________
 203  SUST
 :   
_____________________________________________________________________

CF/ DX AX
tttttt 
ttt   
OF
(+(  ) (G+()
1 00ff Eo 00ff E00l 1676902 MUL
o1 5 AX
1 00ff E0 00ff E00l 1676902 IMUL
01 5 AX

CX = ffffh , AX = 0100h Q) W /4


CF/ DX AX
tttttt 
ttt   
OF
(+(  ) (G+()
1 00F FF 00FFFF00 1677696 MUL
F 00 0 CX
0 FF FF FFFFFF00 -256 IMUL
FF 00 CX
:6R   9 g'(
-&  N-0
t47:9 W< hUIt!
'% 57 6&O /1

  
7  6&O
A = 5 x A - 12 x B
QR! f O E ( X! 0_ E 4
MOV AX,5 ; AX = 5
IMUL A ; AX = 5 *A
MOV A , AX ; A = 5 *A
MOV AX,12 ; AX = 12

__________________________________________________________________
 204  SUST
 :   
_____________________________________________________________________

IMUL B ; AX = 12 x B

SUB A ,AX ; A=5xA


- 12 x B

7 ( 6R 6&O /2
gt&B PROCEDURE =$<
)  6'- 
G N! 6t&C =t$> t E B FACTORIAL
bCt  7   =$> *'&B ( N ) F$ bCa 7 (
N 6R "7(o =$> E B CX &  ! N
(QR! f O E ( X4 ) .AX &  !
: 7   6R cB0
N ! = 1 if N =1 Then
N ! = N × (N - 1) × (N - 2) × ..... × if N > 1 Then
2×1

  
 j:%  F&O M W *B
PRODUCT = 1
Term = N
For N Times Do
product = product * term
Term = Term -1
END_For
__________________________________________________________________
 205  SUST
 :   
_____________________________________________________________________

:
   ":  g'( =$> bNB
FACTORIAL PROC
; Computes N1
MOV AX, 1
Top: Mul CX
Loop Top
RET
FACTORIAL ENDP
6tR 6t&C E B =$>  Q9  wO5
5 ]tO 65535 tR @ B 5   7 (
.QR  5O 2    *B
DIV , IDIV
&   9

t&  '( Q! 6R  '(


O ! )
t! t( ":,o E: 2    ( c'%0
E %&4 M W g'( ":,< Q  E:
O
DIV t  ":t,< Q t E:
O !
(Divide)
IDIV (Integer t  ":,o E:
O !
Divide)
: 0_) 3B J
B1' 
1 
DIV Source
IDIV Source

__________________________________________________________________
 206  SUST
 :   
_____________________________________________________________________

d:tA gt'( tC4


& 
'( =$< (
t!
t& 
t'(  & !
& 
.Av &
 <
& 
'( E % ( 30:a B
t- E:9 9 4A 8 - E:9 E %&0
: 'B )
4A 16

Byte form 4A 8 - E:9 E %


7t$  *t 
& *0 ":  ? !
3B#t%0 *tB : t  g'( AX &  !
t AL &  ! (/ 8)
&  d:A
.AH &  ! (/ 8)
& 
Word form
4A 16 - E:9 E %
7t$  *t 
& *B ":  ? !
DX :AX ":  g'() DX , AX 3'&  !
c 
$ AX  G'  c  ; DX ]O
d:tA 3B#t%0 *tB : t  g'( ( '& 
t!
t&  t AX &  !
& 
.DX & 

__________________________________________________________________
 207  SUST
 :   
_____________________________________________________________________

tN  ":,< Q80 ":,o E:


O !
Qt) W< .Et&   *  ":,< Y4 
Qt80 3N$t ;'( E&   E&   * 
.IDiv , Div E % ( " O
 
') e:N  Q80
&   9 0 
.;! x
Divide Overflow
&  QR!
d:A Q) W<
& 
'( ! QR  *B
&  ! ;B#%0 38B 5 N) *:
& 
*t:
t& t( M W *B .M  p% 
?t t! .h t$ 1a *: g'( h $ N)
EtD  Et B =t45 S 4N  E B
C 
"
t& QtR! f C 0
:
(N-
. Divide Overflow”
BX = 0002 , A x =0005 , DX = Q) W< :I
0000
DX AX
&  
t&  d:A  
(G+() (G+()
000 0002 1 2 Div BX
1
000 0002 1 2 IDIV
__________________________________________________________________
 208  SUST
 :   
_____________________________________________________________________

1 BX
BX = FFFEh , AX = 0005 , DX = Q) W< :I
0000
DX AX
&  
t&  d:A  
(G+() (G+()
000 0000 5 0 Div B x
5
000 FffE 1 -2 Idiv B x
1
BX = 0002h , AX = fffbh , DX = Qt) W< :I
ffffh
DX AX
&  
t&  d:A  
(G+() (G+()
) S0  2 '( fffffffbh * 
& ( QR! Div B x
AX ! ;B#C0 38B5 ( 7ffffffeh
Ffff FffE 1u -2 Idiv B x

BL = Ffh , AX = 00fBh :I


AH AL
&  
t&  d:A  
(G+() (G+()
__________________________________________________________________
 209  SUST
 :   
_____________________________________________________________________

FB 0 251 0 Div B L
- @&B)
&  d:A Q5 Divide overflow Idiv B
L
AL ! ;B#%0 38B 5 ( 25
Sign Extension of Dividend E&   ":,< B 0

4A 16 - E:9 E %
O ! /1
DX , AX 3't&  t! 7t$ E&   Q8B
t! nt ! ;tB#%0 3t8B *  Q)   gO
FtB DX t&  Qt!  g'( AX & 
:   C  g'( ?#0
*t  2 *B Div   E % ( .1
DX &  ! 0
Q80 Q9 FB IDIV   E % ( .2

t Y DX &  ! 4%  )
Q)  G9) AX &  ! ":,>
4A
0 *t  2 *B F$ AX ! * 
AX ! *  Q)   DX &  !
t&  t! ffffh *  2 *B F 
CWD t  t&4 M W   (DX
tI  .(convert word to Double word
t  t&4 AH gt < AL ":,< B 
CBW (Convert Byte to Word)
__________________________________________________________________
 210  SUST
 :   
_____________________________________________________________________

7 g'( - 1250 *& :I


AX , -1250 MOV
CWD ; prepare DX
MOV BX , 7
IDIV BX
:
B+  E: dA< A7<
t'( *tB 0tN8  A7 E: ) I0 Q9 *x:
$:t%  * t  2    Q9 5<
H[ E:9 ":a
t! 
B+  ":  ! E:T *B Q9 RB

Bt+  ":t  Et: "=t


) =#  
.
B+( ":a !
,+  ! (NL
)
Qt! b0t 
tO ! *:
) ( A7> !
PtO
't&' t49 t'( UA   N &B S 4N 

tHI  Et:J PtC  tBC0 59 FB  

t O t! M t) .;t A7< *0 G  *' "m 


PtC  gt < HtI  *  BC0 *B ]O dA>
.
,+  ! (NL G+  ED  ! "m 
Decimal Output
B+  E:
(NL

t(N- M W outdec g&B =$9


8  E 
*: '( AX &  GO W< \ AX &  BC

__________________________________________________________________
 211  SUST
 :   
_____________________________________________________________________

t&   N *B *[ (u)


U(
(N- E  F 

  AX
t  (
N$
 '( AX Q_ @CB ]O) -AX
@CB G  AX &  BC
(N-
'  BC0
 ?
B+  ":  !
,+  '( F$

.
 j:% 
1- If AX < 0
2- print a minus sign
3- Replace AX By its two’s complement
4- End-if
5- Get the digits in AX’s decimal
representation
6- Convert these digits to characters and
print them

W< ]O
 j:%  ! 5 "-%  b Q_ E 
EtD  3567 *  mB H[ *: AX &  Q)
0_ E B
,+  ! *  
(N- G+ 
7 N  356 SB 10 '( 3567 *&
6 N  35 SB 10 '( 356 *&
5 N  3 SB 10 '( 35 *&

__________________________________________________________________
 212  SUST
 :   
_____________________________________________________________________

t t t(NL
'-  4%  Q!  '(
tN00 3t8  "t t) ! 10 *  '(
& 
i t8  ! B#%0 *B
'8+  ? C  i8
count 7 tC & ! 7  qO5 *B stack
.
 j:%   ?
count = 0
Repeat
Divide quotient by 10
Push remainder on the stack
count = count + 1
Until quotient = 0
t ( quotient)
&  d:%
H 5
  ]O
6 "-%  b4 M  AX &  ! 7$  * 
t *0   E: FC *B !
 j:%  !
( count t1  ! 7$  7 () i 8  !
.
,+  ! (NL *0 *: ) FC 

  
 j:%  F&O M W
For count times do
Pop a digit from the stack
Convert it to a character
Output the character
End_For

__________________________________________________________________
 213  SUST
 :   
_____________________________________________________________________

tC  t'( 2 


1' U ) =$> bNB  g'(
:  
OUTDEC PROC
; Prints AX as a signed decimal integer
; input : AX
; Output : None
PUSH AX
PUSH BX
PUSH CX
PUSH DX
;if AX < 0
OR AX , AX
JGE @END_IF1
;Then
PUSH AX
MOV DL , '-'
MOV AH,2
INT 21H
POP AX
NEG AX
@END_IF1:
XOR CX , CX ;Get Decimal Digit
MOV BX , 10D
@REPEAT1:
XOR DX , DX
DIV BX

__________________________________________________________________
 214  SUST
 :   
_____________________________________________________________________

PUSH DX
INC CX
OR AX , AX
JNE @REPEAT1
;Convert Digits to characters and print them
MOV AH , 2
@PRINT_LOOP:
POP DX
OR DL , 30H
INT 21H
LOOP @PRINT_LOOP
POP DX
POP CX
POP BX
POP AX
RET
OUTDEC ENDP
ct'% c' ! Z&  outdec =$>
) 8B
 E  G  S 4N  @CB G  c'  3(  0
=t$> =( t t8B c'  M W ! . =$>
Assembler tt  :-A9 *B Q9  38  outdec
*tB Av c' ! "7$ =$<  QT
.":  ATB  Include jB> E % M W
*t t Filespec ]O Include Filespec
tt  E B M W g'( .=$> @CB G  c' 
__________________________________________________________________
 215  SUST
 :   
_____________________________________________________________________

=$> 3( ]CN  c'  M W b Assembler


.;'A  6'- 
t! Z&  OUTDEC =$> wO *0 W< hUI!
=t$> = 4 38B PRocfile.ASM ?9 c'
:   C  g'( S 4 3
.MODEL SMALL
.STACK 100h
.CODE
MAIN PROC
MOV AX , 1234
CALL OUTDEC
MOV AH, 4Ch
INT 21h
MAIN ENDP
INCLUDE PROCFILE.ASM
END Main
Decimal Input
B+  E: "=
PtC  tBC dtC4
Bt+  E: "=
mt 
tHI 
t  g  PO 8 ASCII
E  . ! *  ? 20
B+ 
4%'
.S 4N 
 j:A b
Total = 0
Read an ASCII Digit
__________________________________________________________________
 216  SUST
 :   
_____________________________________________________________________

Repeat
Convert character to a Binary value
Total = total* l0 + value
Read a character
Until character is a carriage return
Q8 157 *   UA   /4) W< hUI!
:   C  g'(
 j:%  0
Total = 0
Read “1”
Convert “1” to 1
Total = 10 x 0 + 1 = 1
Read “5”
Convent “5” to “5”
Total = 1 x 10 + 5 = 15
Read “7”
Convent “7” to 7
Total = 15 x 10 + 7 = 157
! 
& 
 j:%  B- Q59 E 

t U(
t(N- =t$> E B INDEC g&B =$<
.b0t 
O 3 G+( *: "= *[ E5
*t  @O W< .+ 9 - ":,o *  9 NB 
(9  0 3 2 B 5 PO)
B+( x
4A g'(
*t  tB . tB $ 3 "=  S 4N  E B
.A7> K g'( n1R 
__________________________________________________________________
 217  SUST
 :   
_____________________________________________________________________

Print “?”
Total = 0
Negative = False
Read a character
Case character of
“- “ : Negative = True
Read a character
“+“ : Read a character
End_Case
Repeat
if character is not between “0” and “9”
then
GO TO Beginning
Else
convert character to a Binary
value
total = 10 * total + value
End if
Read a character
Until character is a carriage return
IF negative = True then
Total = -total
End_if
: 0_) 2 
1' S 4N  bNB
INDEC PROC
; Reads a number in range -32768 to 32767
; input : None
__________________________________________________________________
 218  SUST
 :   
_____________________________________________________________________

; Output : AX = Binary equivalent Of Number


PUSH BX
PUSH CX
PUSH DX
@BEGIN: MOV AH , 2
MOV DL , '?'
INT 21H
XOR BX , BX ; total =0
XOR CX , CX
;Read A Character
MOV AH , 1
INT 21H
;Case Char of
CMP AL ,'-'
JE @MINUS
CMP AL , '+'
JE @PLUS
JMP @REPEAT2
@MINUS: MOV CX , 1
@PLUS: INT 21H
@REPEAT2:;If Character Between 0 AND 9
CMP AL , '0'
JNGE @NOT_DIGIT
CMP AL , '9'
JNLE @NOT_DIGIT
; Convert Character To Digit
AND AX ,000FH
__________________________________________________________________
 219  SUST
 :   
_____________________________________________________________________

PUSH AX
; TOTAL = TOTAL * 10 + DIGIT
MOV AX , 10 ;Get 10
MUL BX ;AX = TOTAL * 10
POP BX ;RETRIEVE DIGIT
ADD BX , AX ; TOTAL =
TOTAL*10+DIGIT
;Read A Character
MOV AH , 1
INT 21H
CMP AL,0DH
JNE @REPEAT2
MOV AX , BX
OR CX , CX
JE @EXIT
NEG AX
@EXIT: POP DX
POP CX
POP BX
RET
@NOT_DIGIT:
MOV AH , 2
MOV DL , 0DH
INT 21H
MOV DL , 0AH
INT 21H
JMP @BEGIN
__________________________________________________________________
 220  SUST
 :   
_____________________________________________________________________

INDEC ENDP

ct'  t! ;t *tB =t$> :NA5 Q_


Et 4 *t[ OutDec =t$5 2t procfile. ASM
3B=$> =  E B ]C YH  S 4N 
8
INDEC =t$> = 4 *B ]O   C  g'(
  AX &  ! ;07(< G+( *: "=
*t 
t(N- OUTdec =$> = 4 *B ",N
g'(
B+  ":  ! AX &  ! 7$ 
.
,+ 

TITLE DECIMAL: READ AND WRITE A


DECIMAL NUMBER
.MODEL SMALL
.STACK 100H
.CODE
MAIN PROC
;INPUT A NUMBER
CALL INDEC
PUSH AX
;MOVE CURSOR TO NEXT LINE
MOV AH , 2
MOV DL , 0DH
__________________________________________________________________
 221  SUST
 :   
_____________________________________________________________________

INT 21H
MOV DL , 0AH
INT 21H
;OUTPUT A NUMBER
POP AX
CALL OUTDEC
;EXIT
MOV AH,4CH
INT 21H
MAIN ENDP
INCLUDE PROCFILE.ASM
END MAIN
Overflow QR 
T-%  E: 2    Indec =$> E B
5 38  (
B+( x
4A g'( @C0  )
2-t&B 5 t  "N8  E: 2  B
- @   d:A E:) &B Q9 AX & 
d:A *  Q) W< .(32767 g < 32768
Input tA7< QtR! f tCB @   
.Overflow
:3Bt 9 0 ( QR   f CB 
10 tt! total tt1  6tt tt( 

__________________________________________________________________
 222  SUST
 :   
_____________________________________________________________________

t1' " tB  
t  2$ ( 4I 
.total
E %t&  Et B t 
C  b 
QtR  f tCB ]O 99999 *  A7o

t C  t 9 10 ! 9999 *  6 (


32769 *t  E %t&  tA7 W<
4I 
*  g < 9 *  2$ ( QR  f CB
B t0 Mt W 3t )T  38B 32760
.
   ":  g'( bN
 j:% 

Print “?”
Total = 0
Negative = false
Read a character
case character of
“-“ : Negative = True
Read a character
“+“ : Read a character
End_Case
Repeat
If character is not between “ 0 “ & “ 9 “
then
GO TO Beginning
__________________________________________________________________
 223  SUST
 :   
_____________________________________________________________________

Else
Convert character to a value
Total = 10 x total
If overflow then
go to Beginning
Else
Total = total + value
If overflow then
Go To Beginning
End_If
End_If
endif
Read a character
Until character is a carriage return
If Negative = True then
Total = - total
End_if
:3B:0
e:tN  M ) DX , AX 3'&  BC b /1
:g05 3 ) 0  CF/OF
BX = 0003h , AX Q) W< MUL BX   /9
= 0008h
BX = 1000h Q) W< MUL BX   /6
, AX = 00ffh

__________________________________________________________________
 224  SUST
 :   
_____________________________________________________________________

CX = FFFFh , AX = Qt) W< IMUL CX /d


0005h
word = FFFFh , AX Q) W< MOL word /7
= 8000h
AX = FFE0h Q) W< MUL 10h /t
t Cf/of e:tN  AX t&  BC b /2
:
     3 ) 0
BL = 10h , AL Q) W MUL BL   /9
= ABh
BL = 10h , Qt) W TMUL BL   /6
AL = ABh
AX = 01ABh Q) W MUL Ah   /d
Byte1 = Fbh , Q) W IMUL Byte1   /7
AL = 02h
t0 t( DX , AX 3't&  tBC b /3
:QR! f O b 9
    5
B x = 0002h, AX = Q) W< Div BX   /9
0007 , DX = 0000h
B x = 0010h , AX = Q) W< Div BX   /6
FFFEh , DX = 0000h
BX = 0003h , AX = Q) W< IDIV BX   /d
fffch , DX = ffffh

__________________________________________________________________
 225  SUST
 :   
_____________________________________________________________________

BX = 0003h , AX = Q) W< Div BX   /7


fffch , DX = ffffh
3 ) 0 fu] AH , AL 3'&  BC b /4
:
    5
DL = 03h , AX = Qt) W DIV BL /9
000Dh
BL = Ffh , AX = Qt) W Idiv BL /6
FFFBh
BL = 10h , AX = Q) W Div BL /d
00ffh
BL = 02h , AX = Qt) W Div BL /7
FFE0h
W< CWDt  t0  DX&  BC b /5
:
   E: @CB AX &  Q)
1ABCh /d 8ABCh /6 7E02 /9
W< CBWt  0  AX &  BC b /6
:
   E: @CB AL&  Q)
80h /d 5Fh /6 F0h /9
Et B ]tC 2t 
t1' S 4 3 =#$ F)9 /7
Q9 :ttN(
tt   57tt  3tt tt) 6tt&C
$B 5 ;4 Word   3 C , B , A 1 
QR!
__________________________________________________________________
 226  SUST
 :   
_____________________________________________________________________

a- A = 5xA-7
b- B = (A - B ) * (B - 10)
c- A = 6 -9*A
d- if A2 + B2 = C2 then
set cf
else
clear cf
end_if
S N 
E %t Xt0 S tN  t V Q9 wO5
t! ) *0   Outdec , Indec =$>
.  
3t )T  E  INDEC =$> B  * /8
QR! f O
tA7o E %t&  z& E B S 4 F)9 /9
S t4N  Et B (65535 gtO) 4I t 3 # 
2t 4tI  ZH t  (&  3 # 
(N-
.
N
:

gt'( t&) "=t  E B S 4


8 * /10

(N- S 4N  E B M < N ]O (M/N) ": 


__________________________________________________________________
 227  SUST
 :   
_____________________________________________________________________

Ft&O Mt W Gt+( t&) ":a !


 
:
  
 j:% 
1. Print “.”
2. Divide 10 x M By N , getting Quotient Q &
Remainder R
3. Print Q

4. Replace M By R & go to step 2

N , M 3  "= INDEC =$> E %


t+  *t  6&C E B S 4 F)9 /11
(GCD) Greatest common Divisor ttN)
.
  
 j:%  F&O M W M , N 3CCa
Divide M by N , getting Quotient (1) and

remainder R

If R = 0 , stop N is the GCD of M and N

If R <> 0 , Replace M by N by R and Repeat step

2   
__________________________________________________________________
 228  SUST
 :   
_____________________________________________________________________


'% 
4  eL ! 
Arrays and addressing Modes
t! t-  2t dC4  N-  V !
6Ut-  t$:7 "= dC4  hUI! (
ctB0 3t8B
t C  ? ! ?7 C "7 !
? ! 6U-  7 ( @&B 1  3 7 (
6U-  ) 2    E B S 4
) FB
C 
P ! $:  ? 2 T'4 FN&   

t B-  ?t .6Ut-  7 (  ?a( 7 (

t  E %t Pt  2    38B


7tB< 9 Pt  a( 2$ 38B  
3t( Mt W *tB G:  PC45 9 n 

t'  =t$< ;t 9 3 P  b& ZBL


.
'- 
!t  cB0
) b    !
t 
'% 
4  k4 X4 *[
'% 
.S t4N  ! P  a(
NL%  dC
P  cB0
BL g'( P0 *[
One - Dimensional tO  N  W ! 
Arrays

__________________________________________________________________
 229  SUST
 :   
_____________________________________________________________________

ta  3t
t( 3t( ":N(  P 
?t Q80  ")  ! R =:
N0
Words $ 9 Bytes PO 3( ":N( a 
A  P  * Q) Wo! .Av 4 G9 9
A[3]  A[2]  A[1] t P  a( QT!
t P  a( 7 (  N ]O A[N]....
hUIt! Pt  cB0
) g'( h  !0
E %t&4 Msg ; PC  3 P cB
cB 
MSG DB “ABCDE”
MSG[2] = (B)  MSG[1] = A Qt8B *B ]O
. 8
1t+B ( )) '8  3 P cB 
ctB  E %t&4 A * ( ")  ! 34A
:  
A DW 10,20,30,40,50,60
) 4A 5 ; P cB0 M W 3RB ]O
A[1] =
H  *  Word ;') 3( ":N( ;4A
A[5]  A[4] = 40  A[3] = 30  A[2] = 20  10
= 50

__________________________________________________________________
 230  SUST
 :   
_____________________________________________________________________

P'  Q  P  Q( g&B


t tB C0 *tB Base Address of the array
W< hUI! ")  g < S 4N  C0 ( Q 
Qt  t A Pt'
Oj> Q( Q)
:   C  g'( P  8, Q8B 0200h
ED  ! BC 
Oj>
 Q 
G+  G#  
10 0200h A
20 0202h A + 2h
30 0204h A + 4h
40 0206h A + 6h
50 0208h A + 8h
DUP (Duplicate) [z 
3t 7  P cB Dup [z  E %&B
Qt8B
H 5
  Y4 ') AT0 a 
.":  g'(
Repeat_Count Dup (value)
3 7 ( value
  :8 Dup [z  E B
:hUI Repeat_count @&B  
GAMMA DW 100 Dup (0)

__________________________________________________________________
 231  SUST
 :   
_____________________________________________________________________

@tCB GAMMA *t P cB0 *B 


2 Word 3( ":N( ( ) ( 100 g'(
.Av I) a  ) ! 0
H 

DELTA DB 60 Dup (?)
3 Q8B Delta * P cB0 *B ]O

tt G9 2tt E tt( Byte t !O tt( 60


a'
H 
( M W line Q  ( ")  BC  
:
   ":  g'( ;B0
Line DB 5 , 4 , 3 DUP ( 2 , 3 DUP
( 0 ) , 1 )   cB  hUI
Line DB 5 , 4 ,
2,0,0,0,1,2,0,0,0,1,2,0,0,0,1 Zt-B
cB 

!  a( 2
3t 9 t ")t  ! P  3B#%0 9 NB
t  Qt( t P'  Q 
gt'( tB 4tI    Q( Q8B 
Qt8B Byte /4) Wo! P  a(
(4
Qt8B Word /t4) W<  9 1 +  
2 + t Qt   4I    Q(
__________________________________________________________________
 232  SUST
 :   
_____________________________________________________________________

t( tL t S /4) W< h ( 8


3t( ":tN( a  /4) W< S =1 )P 
3t( ":tN( ta  /4) W< S = 2 Byte
Qt  t N t  Qt( Q8B (Word
Pt  hUI! ( N - 1) * S + P' 
 N   Q( ;! Q8B h  P  A
A + (N - 1) S
t! 25 *t: 10 *t: 3B   N :I
W DW 100 Dup (?) ]O W P 
C 
W + (10 - 1 ) * 2 =  ,    Q(
W + 9 x 2 = W + 18
W + (25 - 1) * 2 = W  25   Q(
+ 24 x 2 = W + 48
 S 4N  Q8B  
MOV AX , W + 18
XCHC A x , W + 48
MOV W + 18 , A x

ta( 2t  ' dC4  N-  3 I) !


t 7tB< t47:9 W< hUIt .') P 
__________________________________________________________________
 233  SUST
 :   
_____________________________________________________________________

t4o! t( N 7 ( ; G  A P  a(


t! t)
t 'O tA7 ta 
tNL% dC4
:
  
 j:% 
Sum = 0
M = 0
Repeat
Sum = sum + A [M]
M = M+1
Until M = N
ta( 3t tC'
t B- dC4 M W  
t10 7 tC t,z E % M W P 
t! E t M t 
'C  A7 ? ) ;

tt'% 
tt4  ettL btt tt  =#tt 
.
%& 
ADDRESSING MODES
4  k49

4  e- g&0   U  E %


BL

t4'
t'% k49
[U[ 2 h  ' 0 
:g
Register Mode U&  n4 /1

t!  Ut&  O9 E % *B ;!


I
MOV A x , B
__________________________________________________________________
 234  SUST
 :   
_____________________________________________________________________

Immediate Mode DC'  n  /2


I U  /I  E % *B ;!
MOV A x , 5
t  3t ;t4( tNB Ax t   
DC'  n  3 NB 5    Register
Immediate
Direct Mode ,N  n  /3
tI t1  tO9 t   Q8B O
Ax , Words MOV

t( 3t( ":tN( Words t   ]O


",N
f tC  E t @tA9 k49
:9 
:
   =#$ ! (
Ut&' t,N 1  E %5
4  n4 /4
.Register Indirect Mode
t! 6'-  ")  Q( B C0  *B
BP 9 DI 9 BX 9 SI Ut&  tO9
Pointer t,z ;49 &  NB  g'(
t   2 *B ;NL% 6'-  Q'
:
   ":  g'(   A7
[Register]

__________________________________________________________________
 235  SUST
 :   
_____________________________________________________________________

3Bt  t < t+0 DI , SI , BX U& 


t+B BP &  DS 4N  2- A7
.SS i 8  2- A7 3B  <
:I
Qt  !
'8  SI = 0100h Q) W<
1234h *  g'( @C0 4N  ! 0100h
  Qo!
MOV AX , [SI]
B C0 SI &  3 100h
  A9 *B
"7$ 
  A9 *[ DS: 0100 Q 
!  (1234h * ) Q  M W !
2N- t  (AX = 1234h G9) AX & 
  x
MOV AX , SI
t&  ! 0100h *  2 E B G 
AX
:I
DI = 3000h , SI = 2000h , BX Q9 X!

t   *t  @C0 ")  Q9 = 1000h


t$B 1000h ;tOj5 ! 4N  2- !
t$B 2000h ;tOj5 t! 1BACH * 
__________________________________________________________________
 236  SUST
 :   
_____________________________________________________________________

t$B 3000h
tOj> t! 20FEh * 
2- ! ?U(9 Oj5 Q9 ]O 031Dh * 
  3 hB9 7 O . Data Segment 4N 
t! ;t' 4 *tB G  7   2 .hCCa ?479
:
C  ?
MOV CX, u 6 MOV BX, [BX] u 9
[SI]
ADD [SI] u 7 MOV BX, [AX] ut$
INC [DI] u t [DI]
:C 
1BACh *t  2t *B MOV BX, [BX] u 9
BX &  !
20FEh *t  2t *B MOV CX, [SI] u 6
CX &  !
E %t 3t8B 5 T-A –MOV BX, [AX] t$
.",N 1 
4  ! AX & 
BC 2$ 38B 5 T-A ADD [DI], [SI] u 7
O  T ")  ! 3B(
gt < tO *t  2$ *B INC [DI] /t
bNt 3000h ;Oj5 ! ")  BC
"7$  031Eh
 
__________________________________________________________________
 237  SUST
 :   
_____________________________________________________________________

ta  2t E B S 4 3 =#$ F)9 :I


Q) W< AX &  ! W P' "+ 
W DW
10,20,30,40,50,60,70,80,90,100
:C 

  2 ,z) SI &  E % *B


*tB
t 'O tA7 t! M W  ;! a
ta( Q) 2 *t  2$ *[   "=
t < (Word t') 3t( ":N( P 
: 'B ) SI & 
XOR AX , AX
LEA SI , W
MOV CX , 10
ADDNOS :
ADD AX , [SI]
ADD SI ,2
LOOP ADDNOS
E B G  REVERSE g&B =$< F)9 :I
t') t( N 3 Q8 P Y8
2t  t  B t M W ) Words
tAJ Zt&  t  2t 4I  A
.( 8

__________________________________________________________________
 238  SUST
 :   
_____________________________________________________________________

*tB P  a( 7 (  N Q) W< :C 


*tB ?t t) ! ? N/2
'C  :80
t&  ;t < +B  O9 3B(  N
t  D1 t&  ;t < +B 4I  S1
9 gt < t+B SI &  $ FB M W
gt < t+B DI &  P  ! (
#t0 t( *tB
t 'C  A7 .( Av
gt < 2 *  2 M W DI , SI 3'& 
DI t&  3t 2 *t  KL SI & 
t') t Pt  a( Q M W)
.(Words
REVERSE PROC
; P a( Y8(
; Inputs : SI ;tOj5 Qt( g  +B
P'
; BX P  a( 7 (
; Outputs : SI ;&8(  P  < +B
Push AX
Push BX
Push CX
Push SI
Push DI
__________________________________________________________________
 239  SUST
 :   
_____________________________________________________________________

; D1 ( Av g  +B


Mov DI , SI
Mov Cx , Bx ; Cx =
n
Dec BX ; Bx = n -
S
SHL BX , 1
ADD DI , Bx ; DI = SI +
2 (n - 1)
ShR Cx , 1 ; Cx = n/2
XCHG_Loop:
Mov AX , [SI]
XCHC AX , [DI]
Mov [SI], AX
ADD SI ,2
Sub DI , 2
Loop XCHg_Loop
Pop DI
Pop SI
Pop CX
Pop BX
Pop AX
RET
REVERSE ENDP
Indexed and
t
  ;4  k49 /5
Based Addressing modes

__________________________________________________________________
 240  SUST
 :   
_____________________________________________________________________

gt&B 7 t(
!t< *tB kt4 ? !
 &  BC Displacement
Oj5
A ]tO
t   *t  O9 ;Oj5 Q80
.;B0 *0 1 3( ":N(
A I 1 ;Oj5
 u
2 I
[
 u

 g  ;!5 1 ;Oj5


 u
nt  t ATB A + 2 I ":,
[
:
   :  @ O<
[ Register +Displacement ]
[ Displacement + Register ]
[ Register ] +Displacement
Displacement + [ Register ]
Displacement [ Register ]

BP  BX U&  O9 Q8B Q9 FB & 


BX Ut&  O9 E % *0 W<DI  SI 
2t-   < +B DS &  Qo! DI 9 SI 9
Qot! BP t&  E % *0 W<  9  
.   2-   < +B SS & 
BP t&  9 BX t&  E %t *0 W<
tt nt  &B  Based t n  &B
__________________________________________________________________
 241  SUST
 :   
_____________________________________________________________________

&  9 SI &  E % *0 W< Indexed


.DI
3( ":N( W 1  Q) W< n   I)
BX &  Q9 Word Array   3 P
t  2t E B     Qo! 4 *  ;
t! W + 4 Q t ")t  t! 7$ 
AX & 
MOV AX , W [ BX]
3t8B \Pt  ! ] I     
Y4 G7z0  
   :  OT  
)
:X1 
MOV AX , [ W + BX ]
MOV AX , [ BX + W ]
MOV AX , W +[ BX ]
MOV AX , [ BX ] + w
t'( GtCB SI t&  Q9 X! Av I)
.Word Array   3 W P
B  Q(
  BC 2 E B
     3 G9
t&  t! W + 2 Q  7$  4I 
: AX
MOV AX , [ SI + 2 ]
MOV AX , [ 2 + SI ]
__________________________________________________________________
 242  SUST
 :   
_____________________________________________________________________

MOV AX , 2 + [ SI ]
MOV AX , [ SI ] + 2
MOV AX , 2 [ SI ]

I
3t =#t$ (

4  *4 hU& ) F)9
t! W Pt  a( 2 E B S 4
W DW :Qtt) W< AX tt& 
10,20,30,40,50,60,70,80,90,100
:C 
XOR AX , AX
XOR BX , BX
MOV CX , 10
ADDNOS:
ADD AX , w [ BX ]
ADD BX , 2
LOOP ADDNOS
tC' SI &' 2 * 
!< *B
;t Pt  Q9 ]O   '
Words ')
I
tC  t'( Pt Alpha 1  Q9 X!
:  
__________________________________________________________________
 243  SUST
 :   
_____________________________________________________________________

ALPHA DW 0123h, 0456h, 0789h,


0abcdh
SI =4, BX = 2 :
   *   U&  Q9
t! 1084h *t  t ")t  Q9 DI = 1

tOj> ! 2BACh *   0002


Oj>
.0004
  Q) W< bCa
     3 hB9 b
*0 G  *  : '
Oj> Q( b bCa
:
   5C  3 ) ! ;   
a. MOV AX , [ALPHA + BX ]
b. MOV BX , [ BX+ 2 ]
c. MOV CX , ALPHA [ SI ]
d. MOV AX , -2 [ SI ]
e. MOV BX , [ALPHA + 3 + DI ]
f. MOV AX , [ BX ] 2
g. ADD BX , [ALPHA + AX ]
:C 
 *0  
 
Oj> Q( z& 
&  ! 
0456h APLPHA +2
A
2BACh 2+2=4 B
0789h ALPHA + 4 C
1084h -2 + 4 = 2 D
__________________________________________________________________
 244  SUST
 :   
_____________________________________________________________________

0789h ALPHA + 3 + 1 E
6tt8 : tt  F

CCa x
B-
E %tt 3tt8B 5 G
 AX & 

:LABEL WB> PTR   


Q9 FtB t J 3' t  Q9 ZNt ! 4)W
3t QU t  Q8B hUI!   Y4 3 48B
W< . WORD t  3 9 Byte !C   
2t  Et B /t[ *: 3( ":N(    Q)
   *B hUI! 4I     4 F&O ?&
":tN( ;49 g'(   I  ! /I  *  2
. WORD   3 1 3(
MOV AX , 1
1 ;4 g'(   /I  2    *B 
Byte !O
MOV AL , 1
    2    38B 5 38 
MOV [ BX ] , 1

__________________________________________________________________
 245  SUST
 :   
_____________________________________________________________________

E9 word t t Pt x 7&  Q M W


. Byte
E %t&4 Byte t  3 ;49 g'( /I  3B#%0 *
 
MOV BYTE PTR [ BX ] , 1
E %&4 WORD   3 ;49 g'( /I  3B#%0 * 
 
MOV WORD PTR [ BX ] , 1

MSG t&B t1 t!  PtC   Nt :I


“T” PC 
:C 
: g 
B- 
U&  E % ",N 1 
4 
BL E %
Register indirect mode
LEA SI, Msg
MOV BYTE PTR [SI], ‘T’

Index
t 
t4  E %t :
4I 
B- 
Mod
XOR SI, SI
__________________________________________________________________
 246  SUST
 :   
_____________________________________________________________________

MOV mSG[ SI ] , ‘T’


Q9 ]O PTR    E %  G: x
!O 1 3( ":N( Msg

:1 cB0 "7(> PTR E %


;B0 *0 1 cB0 "7(> PTR E % 38B
: 
 
1  N 3
Type PTR
Address_Expression
 Dword 9 WORD 9 Byte  Type ]O
DD 9 DW 9 DB g Address_Expression
:   cB  B Q) W< hUI!
DOLLARS DB 1Ah
CENTS DB 52h
t! Dollars t1  tBC 2 47:9 W<
AH t&  t! Cents t1  AL & 
M W 2-&4 3 O  9 E %
MOV AX , DOLLARS ;
ILLEGAL
7&   Byte 3( ":N( :   Q9 ]O
g'(  
) "7(< 38B 38  Word ":N(

   ": 
__________________________________________________________________
 247  SUST
 :   
_____________________________________________________________________

MOV AX ,word PTR DOLLARS ;


AL=DOLLARS , AH =Cents
AX &  ! 521Ah *  2 *
:LABEL   
E %t ?t 4 PUA
'8+ O 38B
QUt(> E %t 3t8B hUIt! LABEL   
:  
MONEY LABEL WORD
DOLLAR DB 1Ah
S
CENTS 52h
DB
3t ;t4 g'( MONEY 1  E %&B  
CENTS  DOLLARS 3Bt1  Word  
t  . Byte t  3 1 3( ":N(
hCCa     bNB
MOV Ax , Money
3B  [T0 Y4 ; 
MOV AL , DOLLARS
MOV AH , CENTS
:
   4U(> N( :I
.DATA
A DW 1234H
__________________________________________________________________
 248  SUST
 :   
_____________________________________________________________________

B LABEL BYTE
DW 5678H
C LABEL WORD
C1 DB 9AH
C2 DB 0BCH
:   C  g'(   Q80
4N 
mC'    

   *
6:R0 x MOV AX , B 1
4 bCa
78h bCa MOV AH , B 2
0BC9Ah bCa MOV CX , C 3
5678h bCa MOV BX , 4
WORD PTR B
9Ah bCa MOV DL , BYTE 5
PTR C
0BC9AH bCa MOV AX , 6
WORD PTR C1
Segment Override 2-   j0
Ut&  E %t ,N 1 
4  n4 !

4' DI  SI  BX U&  E %&0 Registers


E %t 3t8B .DS t4N  2- A7 !

__________________________________________________________________
 249  SUST
 :   
_____________________________________________________________________

tAv 2t- t! 3B( B C U&  ?


:   C  g'( M W
Segment_Register : [
Pointer_Register]
  hUI
MOV Ax , ES : [SI]
ES 2t-   ! ")  ! 4N    @7zB

B-  ? &0 AX &  < SI


Oj>
Yt4 ! 2- 3 I)9 ! 4
NL% !
t!  A_ Q8 3 4N   4 I / 
.") 

:Accessing the Stack i 8  < a 


2t-   & 2 E %&B BP &  Q9 4)W
t  i t8  2- 2 FL%' M W SS
.i 8  4 "= 38B
:I
t! i 8  ! 4A fU[ g'(9 BC  49
Mt W i t8  CX , B X , AX U& 
.i 8  BC 10 Q7
:C 
__________________________________________________________________
 250  SUST
 :   
_____________________________________________________________________

MOV BP , SP
MOV AX , [ BP]
MOV BX , [ BP + 2]
MOV CX , [ BP + 4]

:P F00 :ZN-0


. Pt tBC F0 " B ( eL M 

t BL gt et-  ?t @ O<  4


Select Sort :A5 F0 
tC  g'( M W *B ( N ; P F0
 
3 a  ! N)   $9 :  " 
A t  2 ;  N * A [N] < A [1 ]
N < I 3 a  F0 dC   [N]
- 1
ta  t! N)   $9 :
4I  " 
2t ;  Nt *t A [N - 1] < A [ 1 ] 3
ta  F0 dC   A [N-1]  
N - 2 < I 3

__________________________________________________________________
 251  SUST
 :   
_____________________________________________________________________

3 a  ! N)   $9 :N - 1 " 


A [1]   2 ;  N * A [2] < A [I ]
/')  F0 
'( Q80 
:F0  ;'(      2
5 4 3 2 1 2 
7 40 16 5 21 59 4N 
; 
40 7 16 5 21 "tttt 
g 
40 21 16 5 7 "tttt 

4I 
40 21 16 5 7 "tttt 

I I 
40 21 16 7 5 "tttt 

 

:   C  g'(
 j:%  Q80
i = N
For N - 1 Times Do
Find the position K of the Largest
element among A [1] .. A [ I ]
__________________________________________________________________
 252  SUST
 :   
_____________________________________________________________________

SWAP A [K] and A [ 1 ]


I : = I - 1
End_For

: 2 
1'

SELECT PROC
;SORTS A BYTE ARRAY BY THE
SELECTSORT METHOD
;INPUTS:SI= ARRAY OFFSET ADDRESS
; BX=NUMBER OF ELEMENTS
;OUTPUTS:SI=OFFSET OF SORTED ARRAY
;USES:SWAP
PUSH BX
PUSH CX
PUSH DX
PUSH SI

DEC BX
JE END_SORT
MOV DX , SI
SORT_LOOP:
MOV SI , DX
MOV CX , BX
MOV DI , SI
MOV AL , [DI]

__________________________________________________________________
 253  SUST
 :   
_____________________________________________________________________

FIND_BIG:
INC SI
CMP [SI], AL
JNG NEXT
MOV DI , SI
MOV AL , [DI]
NEXT:
LOOP FIND_BIG
CALL SWAP
DEC BX
JNE SORT_LOOP
END_SORT:
PUSH SI
PUSH DX
PUSH CX
PUSH BX
SELECT ENDP

SWAP PROC
;INPUT: SI=ONE ELEMENT
; DI=OTHER ELEMENT
;OUTPUT:EXCHANGED ELEMENTS
PUSH AX
MOV AL , [SI]
XCHG AL , [DI]
MOV [SI] , AL
POP AX
__________________________________________________________________
 254  SUST
 :   
_____________________________________________________________________

RET
SWAP ENDP

;tOj 59 Q( Z&  SELECT =$> N &B


ta( 7 t( SI t&  ! P 
B N
. BX &  ! N P 
2
   4N  E % S 4N  ;0 38B
A P  a( F0 b  S 4N 

TITLE SORT: SELECT SORT PROGRAM


.MODEL SMALL
.STACK 100H
.DATA
A DB 5 , 2 , 1 , 3 , 4
.CODE
MAIN PROC
MOV AX , @DATA
MOV DS , AX
LEA SI , A
CALL SELECT
;dos exit
MOV AH,4CH
INT 21H
MAIN ENDP
INCLUDE PROCFILE.ASM
__________________________________________________________________
 255  SUST
 :   
_____________________________________________________________________

END MAIN
Debug S t4 E %t S 4N 
0 38B
t < S 4N  1+0 *B ]O :   C  g'(
  C  '( =$>
B  Q(

-GC
AX=100D BX=0005 CX=0049 DX=0000 SP=0100
Bp=0000 SI=0004 DI=0000
DS=100D ES=0FF9 SS=100E CS=1009 IP=000C
NV UP EI PL NZ NA PO NC
1009:000C E80400 CALL 0013
P  BC X *B =$> = 4 N

-D 4 8
100D:0000 05 02 01 03- 04
=$> =(  *B Q_

-GF
AX=1002 BX=0005 CX=0049 DX=0000 SP=0100
Bp=0000 SI=0004 DI=0005
DS=100D ES=0FF9 SS=100E CS=1009 IP=000F

__________________________________________________________________
 256  SUST
 :   
_____________________________________________________________________

NV UP EI PL ZR NA PE NC
1009:000F B44C MOV AH , 4C
;N00  P  BC X *B Q_

-D 4 8
100D:0000 01 02 03 04- 05

:3B N  W P 
*tB Pt 3t( ":N( 3B N  W P 
*t: c  *: B C ( ) 2 FL% 
t  t B [ I, 1]   Q8B ]O 7  
8 *: 7   1 *: 2 B G 
:P  3B#%0
)
cta 3( ":N( P 3 ":N( ")  Q5
;'&'&0 ?: P  a( 3B#%0 FB O
W Pt  3B#% 3 BL $0 M W g'(
3B N 
Row Major Order ca_ca .1
ct  h! ;')  c  3B#%0 *B ]O
8 4I 
Column Major Order 7(_7( .2

__________________________________________________________________
 257  SUST
 :   
_____________________________________________________________________

7  h(N ;')  7  3B#%0 *B ]O


8 4I 
Pa 3 ; B P B Q) M  I)
t! 40  30  20  10 a  ; " (9 4 
ctt  t ! 80 ,70 ,60 ,50   ctt 
ctt  tt! 120 , 110 \ 100 , 90  4ttI 
.] I 
g'( ca_ca ":a ! P  3B#%0 *B 
  C 
B DW 10, 20,30,40

DW 50 , 60 , 70 , 80
DW 90 , 100, 110 , 120
tC  g'( 7(u7( ":a ! ;B#%0 38B
:  
B DW 10 , 50 , 90
DW 20 , 60 , 100
DW 30 , 60 , 110
DW 40 , 80 , 120
P  cB E 0 ' 
 N  1 I)9
3t8B 2t 
1 ! . ca_ca ":a !
R4 ]O )+ Q  3 B-  G9 2   
__________________________________________________________________
 258  SUST
 :   
_____________________________________________________________________

ct  ta( /t4) W< cta_cta


BL
t) ?7 tC
t 'O !     *B O 
2t t   Q) W< 7(_7(
BL R4
. ?7 C
'O ! *B ;') 7 
t! Pt  2    ( ;4 M,5 )

t1' ;t t   "7t(< '  1'  @ O<


t! Pt  3B#%0
BL :N( FB @A9
3B#t%0 *0 W< " B ( =-A9 f C 5< 31' 
gt'( ;0= *0 ca_ca ":a ! P 
7(_7( ":a
:  Q( B C0
7t( N  ca M ; A P  Q9 X!
S Q9 ca_ca ":a ! ;B#%0 *0  ;4
t O ( 3B#%
'-  4%  7 ( 
3( ":N( a( 3B#%0
O ! S=1 Q9 wO5 )
3t( ":tN( a( 3B#%0
O ! S=2  Byte
A [ I   Q( B C0 6'-  . ( Word
ƒ, j ]
:3 BL g'( Q  B C E 
I *: c  ! ( 9 Q8 7B< .1

__________________________________________________________________
 259  SUST
 :   
_____________________________________________________________________

Mt W t! j *t: t  Q8 7B< .2


c 
Qt  ! ;B#%0 *B  c  !  
A
( N  ca ) ! a  7 ( Q5
t! ;tB#%0 *B 4I  c  !   
A + s * N Q 
t! ;tB#%0 *tB ] I  c  !   
A + 2 * N * S Q 
A Q  ! ;B#%0 *B I c  !   
+ (I - 1 ) N * S
:
4I  "-%  Q_
( j - 1) NB Q8 ! ;B#%0 * j *:  
j - ) ]O) 7 C  c 
B  Q( 3 * s
t! t  t
&  a  7 (  (1
A [ I , j ]   Q( bNB M W g'( (c 
 ca_ca ":a g'( Q#%  P  !
A + ( i - 1) × N × s + ( j - 1 ) × s
7(_7( ":a ! P  3B#%0 *0 W<
A [   Q( Q9 
& 
B-  Y4
 I , ]]
__________________________________________________________________
 260  SUST
 :   
_____________________________________________________________________

A + ( j - 1) × M × S + ( I - 1 ) × s
:I
7t( N  cta M gt'( @CB A P 
ca_ca ":a ! Q#%
I *: c 
B  Q( )W9 .1
j *: 7 
B  Q( )W9 .2
Yt4 t! 3Bt( 3t 2 0
4A *) .3
7 
C 

tB  Qt( Q9 t4 Q4  ! ZN-  .1


 I *: c 
A + (I - 1) + N × S

tB  Qt( Q9 t4 Q4  ! ZN-  .2


 j *: 7 
A + ( j - 1) × S
7 t( Qt! cta t! t( 3 B Q5 .3
3B: 3B( 3 4% 
N x S  7( !

__________________________________________________________________
 261  SUST
 :   
_____________________________________________________________________

based - i  G ( 
4  n4
:indexed
t  '
Oj> Q( Q8B n   !
 3( ":N(
( BP 9 BX) " (  & BC .1
(DI 9 SI )
  & BC .2
1
Oj> Q( & hB:A .3
(F  9 F$ )
Oj> /[ Q( hB:A .4

t! Mt W Qt8B BX &  E % *0 W<


DS &  7 C  2-  
t! Mt W Qt8B BP &  E % *0 W<
SS &  7 C  2-  
I
BL 3 I)T   
) *B
1. Variable [ Base_Register ] [ index_Reg]
2. [ Base_Reg + index_Reg + VAR + const]
3. VAR [ Base_Reg + index_Reg + Const]
4. Const [ Base_Reg + Index + Var]
hB:A   
) ( a  F00
BC /4) Wo!
') 1 W Q9 X! hUI
@tCB SI t&  Q 2 *   BX & 

__________________________________________________________________
 262  SUST
 :   
_____________________________________________________________________

2 E B
'%  ?:     .4 *  g'(
t&  ! W+6 Q  ( ")  BC
Ax
MOV AX , W [ BX] [ SI]
MOV AX , W [ BX+ SI]
MOV AX , [ W + BX + SI ]
MOV AX , [ BX + SI ] W
2t t   t( "7( n   E % *B
3B N  W ! 
;t ? t(9 7  Pta 5 ; A P :I
":ta t! Q#% words 3( ":N( a(

t4  nt4 h %t& Ft) cta_ca


: 0_ E B S 4 3 =#$ Based - Indexed
ct  ta( t! 0 *t  2 .1
] I 
7t  ta( t! 0 *t  2 .2
2 
t! 2t B ]t I  c  ! ( 9 u1 :C 
Q 
A + ( 3 - 1) x 7 x 2 = A + 2 x 7 x
2 = A + 28
MOV Bx, 28
XOR S I ,SI
__________________________________________________________________
 263  SUST
 :   
_____________________________________________________________________

MOV Cx , 7
CLEAR : MOV A [ Bx] [SI] , 0
ADD SI , 2
LOOP CLEAR
t! 2t B 2t  7  ! ( 9 u2
Q 
A + ( 4 - 1) x 2 = A + 3 x 2 = A
+6
3B: 3B( ) 3 ( 2 x 7 ) ( 14 7 ( $B
O  7  !
MOV SI , 6
XOR BX ,BX
MOV Cx , 5
CLEAR : MOV A [ Bx] [SI] , 0
ADD BX , 14
LOOP CLEAR
: XLAT  
3t t4N  tBC dC4  N-  V !
Q   ) XLAT   d% *B .@A ":a
]O  $ ! "7 C @AT Byte BC ( U 
t&  @tCB AL &  BC BC0 *B
Et B  t 
tB N
Oj> Q( g'( BX
: 0_  
__________________________________________________________________
 264  SUST
 :   
_____________________________________________________________________

BX &  < AL &  BC 2$ .1


6'-    Q( B C
Q  M W ( ")  BC 2 .2
AL &  !

:hUI
0h 3t 2 B *: ; AL &  Q9 X!
mt  ASCII 78 t ;  Nt B4 Fh 
42h tt 0ch 36h tt 6h  N *B hUI )
(..... ‘B’ @9
TABLE DB 30h, 31h,32h, 33h, 34,35h,
36h, 37h, 38h, 39h
DB 41h, 42h , 43h, 44h, 45h,
46h
tBC0 t( hUIt )   E % *B M W 
(‘c’ *  < ch * 
Mov AL , och
LEA BX, TABLE
XLAT
:I
?7 tC
t: + E B b  S 4N 
__________________________________________________________________
 265  SUST
 :   
_____________________________________________________________________

( t$ 3t tAv PC PC   N)

t  "7 *[ . "+


 
(NL

t(NL (tAv  t$ E %) @A9 "


.($ 
 
TITLE secret message
.MODEL SMALL
.STACK 100H
.DATA
CODE_KEY DB 65 DUP('
'),'XQPOGHZBCADEIJUVFMNKLRSTWY'
DB 37 DUP (' ')
DECODE_KEY DB 65 DUP('
'),'JHIKLQEFMNTURSDCBVWXOPYAZG'
DB 37 DUP (' ')
CODED DB 80 DUP ('$')
PROMPT DB 'ENTER A MESSAGE :' , 0DH ,
0AH , '$'
CRLF DB 0DH , 0AH , '$'

.CODE

MAIN PROC
; initialize DS
MOV AX,@DATA
MOV DS,AX
;print user prompt
__________________________________________________________________
 266  SUST
 :   
_____________________________________________________________________

LEA DX,PROMPT
MOV AH,09H
INT 21H
;READ AND ENCODE MESSAGE
MOV AH , 1
LEA BX , CODE_KEY
LEA DI , CODED
WHILE_:
INT 21H
CMP AL , 0DH
JE END_WHILE
XLAT
MOV [DI],AL
INC DI
JMP WHILE_
END_WHILE:
;GOTO NEW LINE
MOV AH , 9
LEA DX , CRLF
INT 21H
;PRINT ENCODED MESSAGE
LEA DX,CODED
INT 21H
;GOTO NEW LINE
LEA DX,CRLF
INT 21H
;DCODE MESSAGE AND PRINT IT
__________________________________________________________________
 267  SUST
 :   
_____________________________________________________________________

MOV AH , 2
LEA BX , DECODE_KEY
LEA SI , CODED
WHILE2:
MOV AL , [SI]
CMP AL ,'$'
JE END_WHILE2
XLAT
MOV DL ,AL
INT 21H
INC SI
JMP WHILE2
END_WHILE2:
;return to DOS
MOV AH,4CH
INT 21H
MAIN ENDP
END MAIN
:3B:0
: 0_ X! .1
0500h *  g'( @CB AX & 
1000h *  g'( @CB BX & 
1500h *  g'( @CB SI & 
2000h *  g'( @CB DI & 

__________________________________________________________________
 268  SUST
 :   
_____________________________________________________________________

gt'( @tC0 1000h Q  ( ") 


0100h * 
gt'( @tC0 1500 Qt  ( ") 
0150h * 
gt'( @tC0 2000 Qt  ( ") 
0200h * 
gt'( @tC0 3000 Qt  ( ") 
0400h * 
gt'( @tC0 4000 Qt  3( ") 
3000h * 
tt( 7tt$ Word tt1 Beta tt1 
1000h
Oj>
*tB t 
t  : '
Oj> Q( 2
/t4) Q9)
t     3 ) ! B#%0
(
CCa
a- MOV DI , [SI] b- MOV DI ,
[DI]
c- ADD AX , [SI] d- SUB
BX, , [DI]
e- LEA BX ,Beta [BX] f- ADD, SI],
[DI]

__________________________________________________________________
 269  SUST
 :   
_____________________________________________________________________

g- ADD BH , [BL] h- ADD,


AH, [SI]
c- MOV AX, [BX + DI + beta]
  cB  -(9 W< .2
A DW 1,2,3
B DB 4,5,6
C LABEL word
Msg DB ‘ABC’

tOj> gt'( @tCB BX t&  Q9 X!


bt bCa
     3 G9 . C 1'
7&  &  !  *B  
 
a- MOV AH , BYTE PTR A
b- MOV AX , word PTR B
c- MOV AX , C
d- MOV AX , Msg
e- MOV AH , BYTE PTR C
  E %&0 5) 0_ E ' BP &  E % .3
(pop  push
 i 8  ! 3'$ 9
  N /9
t < i t8  t! t$ 5 9 ‡&4 /6
7$ 
'  2 *B ]C ST_ARR 1 

'8  ST_ARR Q  ! i 8 


 !
8 ST_ARR+2 Q  !
  

__________________________________________________________________
 270  SUST
 :   
_____________________________________________________________________

a( 10 g'( @CB A  O< 3! B .4


  3 ( g'( @CB B  word   3
Byte
t  Pt  3t ( ) ! 2 /9
2R4 A [ I ] G9 ) ",N ;  
2t ta  8 ( 8 A[1 + 1] !
  A [ 10] A   !
.A[1] 
gt  ta  7 t( DX t&  ! 2 /6
. A P  ! θ *  g'( @C0
&  ! 2 .
: ; B P  Q9 X! / t$
*t Q< .
  ! $ Q< ‘E’ PC' ,z SI
t! 1 *  2 'E’ PC 
  ! $B
cf C  e
t$:o Et B G  Find_ij g&B =$< F)9 .5
c  ! 7$  I , J *: '
Oj> Q(
Q#t%   3 P ! j *: 7  I *:
I t1  N  =$> E B ca_ca ":a !
7 t( BX t&  t! i 1  AX &  !

tB N
tOj> Q( Cx &  ! N " (

__________________________________________________________________
 271  SUST
 :   
_____________________________________________________________________

t$:o Pt  E B . DX &  ! P 


. DX 1  ! '
Oj5 Q(
:
8' S 
E B G  BUBBLE g&B =$<
) 6'-  .6
Mt W PtC  3t Pt F00 N 
Bubble *
!  F0 
 j:A E %
P'
Oj> Q( N  =$> E B Sort
. BX &  ! a  7 ( SI &  !

't&' tA7> E %&  z& E B S 4 F)9


t nt ! O ;4A g'(
BC  E: 3
=t$> = t *t . nt ! tO BLANK …!
Pt  ta(
t(N- * M W  Bubble
.N00 *0  
:' I
? 1 2 6 537
1 2 3 567
tC  gt'( Bubble
t j:%  t0 :
mC'
 
A [J]  Nt N < 2 3 J a' :g  " 
A [ J ] < A[ J – 1] Q) W< A [j - 1] 2

__________________________________________________________________
 272  SUST
 :   
_____________________________________________________________________

! ( N)9 2


'  ? *
N *: Q8 
A [J]  N N-1 < 2 3 J a' :
4I  " 
A [J ] < A[ J – 1] Q) W< A [j - 1] 2
! ( N)9 2
'  ? *
N-1 *: Q8 
:
 Nt A[ 2] < A [1] Qt) W< :N - 1 "t 
A [ 1 ]  A [ 2 ] 3B 
:   cB  X! .7
CLASS
DB ‘Ali ‘ , 67 , 54 , 9 ,8 ,
31
DB ‘HASSAN ‘ , 30 , 50 , 59 ,42 ,
53
DB ‘AHMED ‘ , 65 , 73 , 85 ,18 ,
90
PO 7 ! = 3B#%0 *B ]O
nt  Ft -  *
(N- E B S 4 F)9
7  h 4C 5 ! jO9   $: 
bCa

__________________________________________________________________
 273  SUST
 :   
_____________________________________________________________________

t( 100 ;t P 2  B S 4 F)9 .8


z& S 4N  E B
B N  !
! x * 
Et B (PtO_PtO) PtO tA7> E %& 
Pt  Ft0 PO ) "=  S 4N 
E %t&  zt& E B M W  .hN0 ;(NL
.ESC K g'( n1R  ( S 4N 
:' I
?A
A
?D
AD
?B
ABD
?a
ABDa
?<esc>
E %&B G  PRINTHEX g&B =$< F)9 .9
t! BX t&  tBC
(N- XLAT  
zt& =t$> 6t$ .t+(
t &  ": 
4 3t Qt8 +(   *: A7> E %& 
Gt  IN_HEX =t$> E % M W 4A
= t *t *[ .
&  =#$ ! ;8 /

__________________________________________________________________
 274  SUST
 :   
_____________________________________________________________________

; A7< *0 G  * 
(N- PRINTHEX =$>
.S 4N 
B  !
,   
String Instructions U&  2     9

2t t 4      =#   !


gt'( pt  2  4 4o! *'4 ) .l 

t( B t   PC  3 P ;4


!t  ?t 2t t 4     3
  E '  9 B hUI!
a% 
Q8 Q8 3 p4 9
: ‡&4 *

'&' !
') 9 3 PO 3( ]CN  *

'&' ! PO9 3B#%0 *
hB 9 j   3
'&'
4: *
3t
t( 0 38B '  ? 2$

t'% 
t4  kt49 E %t&0 t   

t'  ?t 3t8  Z&  =#  !


C 
E %
O !   3
(
) F'-0
t t0 *tB Q9 38B l 
aA  9

__________________________________________________________________
 275  SUST
 :   
_____________________________________________________________________

l   9 E % B  n ! O  T


. H 

:DF ?05 e


Control *8Ct  e:t tO9  ?05 e
t   ;! * G  ?05 7 CB  Flags
Ut&  E %t *B ]O l   9 2
Q BL  .l  2    ( DI , SI

tB N  3t ;t     < .p  2  '


< +B SI 9 DI &  4
C  ? !
"7tB# *B    Q!   p  ! PO 9
t! t  PtC  g < + U&  BC
.DF eN  ! 0 *  2 *B
C  ?
Mt W gt eN  ! 1 *  2 *0 W<
l 4< *B
B  ( *B p  2    Q9
.
  U& BC
E %t ?t05 e ! a *  2 *B
 
CLD ; clear Direction flag
  E % eN  ! 1 *  2 *B
STD ; set Direction flag
__________________________________________________________________
 276  SUST
 :   
_____________________________________________________________________

.@A e:N  !   ? [z0 5

:Moving String
'&'  4
:   cB  B Q) W<
String1 DB ‘Hello’
String2 DB 5 Dup ( ? )
pt  t!  pt  3t
%&4 ( 47:9
3t ;%t&4 B4  ( "7( f CB   
. S 4N  ! 3 : S 7 ( 9
:
. U  Q   9  MOVSB   E %&B
Qt  ! ")  BC     E %&B
*tB 5 ES:DI Q  ! ")  g < DS:SI
*tB PtC  t 4 t .:   BC 10
O DI:SI 3'&  BC "7Bj 80 09
. 0 *t  gt'( @tCB ?05 e Q) W<
t'( I  ! (1)
'&' ‡&4 38B M W g'( I)
:    (2)
'&'
MOV AX ,@DATA
MOV DS, AX
MOV ES, AX
LEA SI , String1
LEA DI , String2
__________________________________________________________________
 277  SUST
 :   
_____________________________________________________________________

CLD
MOVSB
MOVSB
:
t B ; 4  9 9  MOVSB   NB
. O / ! ")  ! 3 2

:REP
H7N 
   . n ! " O
4A 2 MOVSB    B
PtC  7 t( 2t *tB PtC  3 7 (
t  t0 :80 7 ( )     6'- 
t0 *B M W  CX &  ! (MOVSB
 
REP MOVSB
3t N 7 t( MOVSB t  t0 *tB M 
t! *B " )  CX BC p0 . 
  .CX=0
 bN0 gO MOVSB   0
":  g'( Z&   
) 38B
CLD
LEA SI , String1
LEA DI , String2
MOV CX, 5
REP MOVSB
__________________________________________________________________
 278  SUST
 :   
_____________________________________________________________________

:I
String1 1  ‡& E B S 4 3 =#$ F)9
.
8 ": 38  String 2 1  <
C 
 t1 
tB4 t < +B SI &  4
t1 
tB  < +B DI  (;! PO A9)
SI p t4 Mt W t *[ .PC  C4 4I 
B#4 Q9 g&4 5 (?05 e ! 1 *  2)
lt 4< *t ;4 ]O ? )  2 t DI

3C4 MOVSB   0  1 :  ;0BC
.1 t ;07Bj B4
LEA SI, String1 + 4
LEA DI, String2
STD
MOV CX, 5
MOVE:
MOVSB
ADD DI , 2
LOOP MOVE
:MOVSW  
‡&4 *B
C  ? ! 38  MOVSB   I
3't&  Qt8B Byte 3( h5 
' ) WORD
__________________________________________________________________
 279  SUST
 :   
_____________________________________________________________________

3't&  : t  Q( < Q+B DS: SI


9 "7tBj *tB .7t&  < Q+B ES:DI
F&O 2 :  DI, SI 3'&  BC l 4<
DF = θ
t O t! "7tBj) ?t05 e

(DF = 1 Q8B Q9
O ! Q 4
:I
:   P  !
ARR DW 10,20,40,50,60, ?
3t  3 2 B  30 *  A7< 6'- 
Qt+B ES  DS 3'&  Q9 X! .40 , 20
. 4N  2- <
:C 
t " tO
t4A 60 , 50,40 E:  4 *B
30 *  A7< 38B M W
STD
LEA SI , ARR + 8h ; SI Points to
60
LEA DI , ARR +0Ah ; DI Points to ?
MOV CX,3
REP MOVSW
MOV WORD PTR [DI], 30
:Storing String p4 3B#%0

__________________________________________________________________
 280  SUST
 :   
_____________________________________________________________________

AL t&  BC   STOSB   E %&B


3't&  7 tC  Qt  t! ")  !
DI t&  BC "7Bj *B M W  . ES:DI
/4) W< ;a 4< *B DF=0 /4) W< O
DF=1
BC 3B#% E B STOSW   Q! I 
7 tC  Qt  ( ")  < AX & 
Qtt 4 9 "7ttBj *ttB . ES: DI 3'tt& 
. ?05 e
 F&O DI &  BC
t1 
tB  t! ‘ A ‘ PtC  3B#t% UIt
String1
LEA DI, String1
MOV AL, ‘A‘
CLD
STOSB
:
4
: 3B#%0 "=
Et 0 21h *:
L   = 4 ! 1 *:
% 
3B#t%0 "=t 38B . n ! O PO "= 
. STOSB   E % PC  3
(
"=t  Et B READ_STR g&B   =$>
0 ")  ! B#%0 PC  3
(

__________________________________________________________________
 281  SUST
 :   
_____________________________________________________________________

tA7> Kt gt'( n1tR  PtC 


(
. Carriage Return
t1'
tOj> Qt( 2t =$> = 4 *B
Et B DI t&  t! ;t
  "= 6'- 
t!  A7< *0   PC  7 ( "7(o =$>
PO A7< ! E %&  T-A9 W< . BX & 
PtO *tB Back_Space tt  K g'( n1
:  =$>
 j:A
  3 PC 
Chars_Read = 0
Read a Character
While character is Not a carriage
Return Do
If character is a Back_Space Then
Chars_Read = Chars_Read - 1
Remove Previous character from
String
Else
Store character in String
Chars_Read = Chars_Read + 1
End_If
Read a character
End_While
: 2 
1'
READ_STR PROC NEAR
__________________________________________________________________
 282  SUST
 :   
_____________________________________________________________________

;READS AND STORES A STRING


;INPUT: DI ODFFSET OF THE STRING
;OUTPUT: DI OFFSET OF THE STRING
; BX=NUMBER OF CHARACTERS
READ
PUSH DX
PUSH DI
CLD
XOR BX , BX
MOV AH , 1
INT 21H
WHILE1:
CMP AL , 0DH
JE END_WHILE1
;IF CHARACTER IS BACHSPACE
CMP AL , 8H

JNE ELSE1
DEC DI
DEC BX
JMP READ
ELSE1:
STOSB
INC BX
READ:
INT 21H
JMP WHILE1
__________________________________________________________________
 283  SUST
 :   
_____________________________________________________________________

END_WHILE1:
POP DI
POP AX
RET
READ_STR ENDP

:Load String p4 C0


AL tt&  ttC LODSB tt  E %tt&B
3't&  7 C  Q  ! ")  BC
t SI t&  Q 4 9 "7Bj *B . DS:SI
et
t Ft&O M W 1 :    0
. ?05
AX tt&  ttC LODSW tt  E %tt&B
3't&  7 C  Q  ! ")  BC
t SI t&  Q 4 9 "7Bj *B . DS:SI

tt  Ftt&O Mtt W 2 : tt  tt  tt0


. ?05 e ! "7$ 
:
,+  ! p4
(NL

 
(N- E B Disp_Str &    =$>
6t'-  PtC  7 t( SI &   < +B
. BX &  ! "7$ (NL
For count times Do
__________________________________________________________________
 284  SUST
 :   
_____________________________________________________________________

Load a String Character into Al


Move it to DL
Output Character
End_For
2 
1' =$>  
DISP_STR Proc
; inputs SI : offset of the String
; BX : No of Characters to Display
; Outputs None
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH SI
MOV CX, BX
JCXZ P_EXIT
CLD
MOV AH , 2h
TOP:
LODSB
MOV DL , AL
INT 21h
LOOP TOP

P_EXIT:
POP SI
POP DX
__________________________________________________________________
 285  SUST
 :   
_____________________________________________________________________

POP CX
POP BX
POP AX
RET
DISP_STR ENDP
:Scan String p4! ]CN 
;t PtC  Q9 3t )T' SCASB   E %&B
Et B . AL &  Q80
  ? ?7 C

ES:DI Q  ( ")  BC K-B  
*tB
 
 F&O AL &  BC 3
.t  t0 
  3B#%0 *B 5 e:N  2!:

t F&O DI &  BC Q 4 9 "7Bj *B


.?05 e
t 0 gt SCASW   J
4I  ": 
gt   b  AL 3( h5  AX &  2
.S 4N  3   =#  X!9 SCSAB
String1 DB ‘ABC’
:
MOV AX, @ DATA
MOV ES, AX
LEA DI , String1
MOV AL, ‘B’
CLD
SCASB ;Scan first byte
__________________________________________________________________
 286  SUST
 :   
_____________________________________________________________________

SCASB ; Scan second Byte


@t&B   e Q8B    0 
t 41h *t  KtL 
'  Q9 ]C 0
.‘B’ PC   42h *  3 ‘A’ PC 

Mt W t  et 2!: *


4I  "  !
.3  @&
7 t( 2 *B p4 ! 7 C PO 3( ]CN  (
0 *B CX &  ! p'
48  PC 
 
REPNZ SCASB
AX t&  tBC 3t PO ) KL *B ]O
:tI  *tB gO O CX &  BC l 4<
Mt W ' CX
 0 9 6'-  PC  '(
.6'-  PC  '( :I  E ( (
:I
PtC  7 t( 6t&C E B S 4 F)9
Vowels
)C  PC  Consonants
)& 
.


:C 
__________________________________________________________________
 287  SUST
 :   
_____________________________________________________________________

initialize Vowels_Count and


Consonant_Count to zero
Read and Store a String
Repeat
load a String Character
IF it is a Vowel Then
Increment Vowel_Count
else if it is a Consonant Then
Increment Consonant_Count
End_IF
Until End of string
Display Vowels_Count and
Consonant_Count

  C  '( S 4N  Q8B


.MODEL SMALL
.STACK 100H
.DATA
STRING DB 80 DUP(0)
VOWELS DB 'AEIOU'
CONSONANTS DB
'BCDFGHJKLMNPQRSTVWXYZ'
OUT1 DB 0DH,0AH,'VOWELS= $'
OUT2 DB ‘CONSONANTS= $'
VOWELCT DW 0
CONSCT DW 0
__________________________________________________________________
 288  SUST
 :   
_____________________________________________________________________

.CODE
MAIN PROC
; initialize DS
MOV AX,@DATA
MOV DS,AX
MOV ES,AX
LEA DX,STRING
CALL READ_STR
MOV SI,DI
CLD
REPEAT:
LODSB
LEA DI,VOWELS
MOV CX ,5
REPNE SCASB
JNE CK_CONST
INC VOWELCT
JMP UNTIL
CK_CONST:
LEA DI,CONSONANTS
MOV CX,21
REPNE SCASB
JNE UNTIL
INC CONSCT
UNTIL:
DEC BX
JNE REPEAT
__________________________________________________________________
 289  SUST
 :   
_____________________________________________________________________

;OUTPUT NO OF VOWELS
LEA DX,OUT1
MOV AH ,9
INT 21H
MOV AX,VOWELCT
CALL OUTDEC
;OUTPUT NO OF CONSONANTS
LEA DX,OUT2
MOV AH ,9
INT 21H
MOV AX,CONSCT
CALL OUTDEC
;EXIT TO DOS
MOV AH,4CH
INT 21H
MAIN ENDP
INCLUDE PROCFILE.ASM
END MAIN
:Compare String lt 
4:
")t  tBC K- COPSB   E %&B
Qt  ")  BC 3 ES:DI Q  !
5
t'%  e:tN  *: M  hN0 *B DS:SI
]B tC0 *tB   0  .
  3B#%0 *B
et
t Ft&O DI , SI 3'&  BC
. ?05
__________________________________________________________________
 290  SUST
 :   
_____________________________________________________________________

2  0 ]O CMPSW   J


4I  ": 
.Words $
String1 DB ‘ACD’
String2 DB ‘ABC’
MOV Ax, @ DATA
MOV DS, Ax
MOV ES, Ax
CLD
LEA SI, String1
LEA DI, String2
CMPSB ;sub ‘A’ from ‘A’
CMPSB ;sub ‘B’ from ‘B’
CMPSB ;sub ‘C’ from ‘D’
REPE  t :t8  E % "7( *B
]O l 
4: ( (Repeal While equal)
3t  Q9 t L
t4:  
t'( :80 *B
O9 @&B * W< 5< c  *B 5 3B&
.g4  7   Q8B Q9 3!C 
 STR1 3Btt1 B tt Q9 Xtt! ttI)
a *  2 6'-  .PO 10 - STR2
3t+ 3t  Qt) W< BX t&  !
pt  Q) W< AX &  ! 1 *  2

__________________________________________________________________
 291  SUST
 :   
_____________________________________________________________________

2 *t  2t 4I  p  N ;N00 STR1


. p  N ;N00 4I  p  Q) W<
MOV CX,10
LEA SI, STR1
LEA DI, STR2
CLD
REPE CMPSB
JL STR1_FIRST
JG STR2_FIRST
MOV AX, 0
JMP EXIT
STR1_FIRST:
MOV AX, 1
JMP Exit
STR2_FIRST
MOV AX,2
EXIT:
:p4 A  (! p4 3( ]CN 
tN) pt4 Q9 tB C
BL 3 I)9 M 
t-(9 W< hUIt ;t'A  1a p4 g'( @CB
:   cB 
SUB1 DB ‘ABC’
SUB2 DB ‘CAB’
MAINST DB ‘ABABCA’

__________________________________________________________________
 292  SUST
 :   
_____________________________________________________________________

pt  tA7 7t$ SUB1 p  Q9


!
]O p  9 3 = N  38B &H 
SUB1 ABC
MAINST ABABCA
= N C4 ] I  PC  ! Z-0 7$ E  
4I  PC  3
4:  
SUB1 ABC
MAINST ABABCA

'ta Q7 ;t'( Zt- x  PC 


PtC  3t =  O5  V!4
4:  
] I 
SUB1 ABC
MAINST ABABCA
pt4 3t( ":N( SUB1 Q8B Z-0 f O 
*t W< N8  p  3( SUDSTRING 1a
tN8  pt  gt4 W< :80 Z-0 f CB
x 1  p  Q8B  ) Z-0 f O Q7
W< Mt W Qt8B . tN8  p  ! 7$
]O STOP t 7 C  PC  ( 49 
STOP = MAINST + Length of MAINST
- Length of sub string

 j:%   ?
Prompt the use to enter SUBST
__________________________________________________________________
 293  SUST
 :   
_____________________________________________________________________

Read SUBST
Prompt the User to enter MAINST
READ MAINST
If(Length of MAINST=0) Or (Length of SUBST=
0) Or SUBST longer than MAINST)
Then
SUBST Is Not substring of MAINST
Else
Compute STOP
Start = Offset of MAINST
Repeat
Compare corresponding chars in
MAINST (from START on) and SUBST
if All chars match then
SUBST Found in MAINST
else
START = START + 1
END_IF
Until (SUBST found in MAINST or
(START > STOP)
END_IF
Display Results

:l  2     9 bB     


":a ":a :   7&   
__________________________________________________________________
 294  SUST
 :   
_____________________________________________________________________

'8  PC 
MOVSW MOVSB DS:SI ES:DI ‡&4
CMPSW CMPSB DS:SI ES:DI
4:
STOSW STOSB AL OR ES:DI 3B#%0
AX
LODSW LODSB DS:SI AL OR C0
AX
SCASW SCASB AL or AX ES:DI (b& ) ]C

:3B:0
Q 100h *tt  ;tt SI tt&  Q9 Xtt! u 1
10h *   100h Q  ! ") 
Q 00h2 *tt  ;tt DI tt&  Q9 Xtt!
15h *   101h Q  ! ") 
Q 4142h *t  ;t AX t&  Q9 X!
20h *   200h Q  ! ") 
t! ")t  Q 0 *t  ; DF eN  Q9
25h *   201h Q 
   *B  
  7&  :   b

t  bt
t     3 ) ! 
DL , SI 3'&' " B  

__________________________________________________________________
 295  SUST
 :   
_____________________________________________________________________

a – MOVSB b- MOVSW c-
STOSB
d - STOSW e- LODSB f-
LODSW
:   cB  X! .2
STRING1 DB ‘FGHIJ’
STRING2 DB ‘ABCDE’
DB 5 DUP (?)
!  p  2 E B S 4 3 =#$ F)9
ABCDEFGHIZ p  : a> 4I  p 
B4
t! 3t  B N E B S 4 3 =#$ F)9 .3
Z&  I 
I 0 ?7) B  PC  3RB p4 .4
STR DB ‘this is an ASCIIz String’ , θ

Oj> Q( N &B Length g&B =$< F)


t! pt  tL $:o E B DX &  p'
. CX & 
3
( F)
'% 
4  k49 E % .5
:   3 )  E 0  
a - MOVSB b- STOSB c-
LODSB
d- SCASB e- CMPSB
:   cB  X! .6
__________________________________________________________________
 296  SUST
 :   
_____________________________________________________________________

String DB ‘ TH *S* AR’



& 
 
(N- E B S 4
8 *
'E ‘ PC  ‘ *’ PC   N
:   cB  X! .7
String1 DB ‘TH I S I S A T E S T’
String2 DB 11 DUP (?)
<  p  ‡& E B S 4 3 =#$ F)
.p  3 !& 
j<  4I 

:
8' S 
3t05 3t 9 0     3
( M  .8
*B " MADAM I AM ADAM’ I
'  Y4 g-
.
'  3
a%  U  !&  7N
E  3 ;(NL *[ \ p4 "=  E B S 4 F)9
t . 3 t 3B-t ! (i8 ) c'%  3 
3t8B Gt    3 p   B C E B M W
.305 3 ;0=

 "WC E:
(NL "7( *B    ! .9
:I 3 
123
12465
131
__________________________________________________________________
 297  SUST
 :   
_____________________________________________________________________

Et:9 "t+( "=  E B S 4


) 6'- 
?
(NL *[ .4A 10 gO B - O 
6'-  8+  E:
tB9 tB C0 34 "=  E B S 4 F) .10
  N B 9 0TB
A7o E B G  INSERT g&B =$< F) .11
4I  p  A7 STRING1 p 
.7 C Q8 ! STRING2
p'
Oj> Q( g'( @CB SI :UA  

pt'
tOj> Qt( g'( @CB DI
4I 
 p  L g'( @CB BX
4I  p  L g'( @CB CX
6'- 
Oj> Q( g'( @CB AX
;! p  A7<

t Oj> Qtt( gtt'( @ttCB DI :$% 


" B  
'
B   p  L g'( @CB BX

__________________________________________________________________
 298  SUST
 :   
_____________________________________________________________________

N bCta *t: 34 "=  E B S 4 F)


pt 
(NL M W  INSERT =$> = 4
B  

PC E B G  DELETE g&B =$< F) .12


…t  yt'  7 C Q8 3 p4 3 PO N
.M W 3 S0 
p'
Oj> Q( g'( @CB DI :UA  
p  L BX
C& 6'-  PC  7 ( CX
6tt'-  Qtt8'
ttOj> Qtt( SI
; =  PC 
B   p'
Oj> Q( DI :$% 
B   p  L BX
6'-  PC  p  "=  E B S 4 F)9
= 4 *[ .C& 6'-  PC  7 ( ; b& 
. B   p 
(NL *[ DELETE =$>

__________________________________________________________________
 299  SUST
 :   
_____________________________________________________________________

+( G7C   



'(  N-0
Practical Applications

E %t&0  
' 
'I  V     !
?t Ft'x9 t! \Et  Vt =7 2t 
1 !
EtD4  t B t   t%  E % E 4  N- 
E  V 0 ! 1+ 

! B   1+  ED4 ": a<


! :  ZN- 
ED 
= t 30h *t:
t %  E %t *B ZN-   !
1t+  EtD4 ": a< *: 7 C0   Int 21h
L  
tI G&) *: ": a‚ bC  *  3( ":N( 

t  t 1+  ED4 ": a< Q9 B G  6.22


 \8 22 @1 
  6 G&0 Minor


%  M'0 E 0   *  ? qO5 *B =   


")  ! 3B1 ! AH  AL 3'&  ! #
.h O5 (NL *
;======================================
__________________________________________________________________
 300  SUST
 :   
_____________________________________________________________________

==============================
; program: DosVer.asm
; purpose: gets the DOS Version using
;interrupt 21h function 30h

; purpose: gets the DOS Version using


interrupt 21h function 30h
; input : None
; output : Minor and Major versions
; usage : OUTDEC procedure in procfile.asm
; update :
;======================================
==============================
.MODEL SMALL
.STACK 100H
.DATA
CR EQU 0DH
LF EQU 0AH
MAJOR DB '?'
MINOR DB '?'
MSG DB 'GET DOS VERSION:INT 21H
FUNCTION 3OH',CR,LF,'MS-DOS
Version ','$'

MSG1 DB CR,LF,'MAJOR VERSION


NUMBER IS :$'
MSG2 DB CR,LF,'MINOR VERSION
__________________________________________________________________
 301  SUST
 :   
_____________________________________________________________________

NUMBER IS :$'
.CODE
MAIN PROC
;initialization
MOV AX,@DATA
MOV DS,AX
;get dos version
MOV AH,30H
INT 21H
MOV MAJOR,AL
MOV MINOR ,AH
;display results
LEA DX,MSG
MOV AH,9h
INT 21H
LEA DX,MSG1
MOV AH,9h
INT 21H
XOR AX,AX
MOV AL,MAJOR
CALL OUTDEC
LEA DX,MSG2
MOV AH,9h
INT 21H
XOR AX,AX
MOV AL,MINOR
CALL OUTDEC
__________________________________________________________________
 302  SUST
 :   
_____________________________________________________________________

;return to dos
MOV AH,4CH
INT 21H
MAIN ENDP
Include Procfile.asm
END MAIN
E  ‡B:0
! : 4I  ZN- 
= t 2Ah *t:
t %  E % *B ZN-   !
3t Et  ‡B:t0
! ! *B   Int 21h
L  
:   =#  ! b  ) ED 
;======================================
==============================
; program: sysDate.asm
; purpose: gets the year,month,day,and day of the
week
; from the system using interrupt 21h
function 2Ah
; Calling Registers : AH = 2A
; Return registers:
; CX : year(1980 - 2099)
; DH : month(1 - 12)
; DL : day(1 - 31)
; AL : day of the week (0 =Sunday, 1
=Monday,etc )
; usage : OUTDEC procedure in procfile.asm
__________________________________________________________________
 303  SUST
 :   
_____________________________________________________________________

; update : 27/11/2000
;======================================
==============================
.MODEL SMALL
.STACK 100H
.DATA
CR EQU 0DH
LF EQU 0AH
MSG DB 'GET SYSTEM DATE :INT 21H
FUNCTION 2A',CR,LF
DB 'YEAR :$'
YEAR DW '?'
MSG2 DB CR,LF,'MONTH :$'
MONTH DB '?'
MSG3 DB CR,LF,'DAY :$'
DAY DB '?'
MSG4 DB CR,LF,'DAY OF WEEK:','$'
Dweek DB '?'
SUN DB 'Sunday $'
MON DB 'Monday $'
TUES DB 'Tuesday $'
WEDN DB 'Wednesday $'
THURS DB 'Thursday $'
FRID DB 'Friday $'
SAT DB 'Saturday $'
.CODE
MAIN PROC
__________________________________________________________________
 304  SUST
 :   
_____________________________________________________________________

;initialization
MOV AX,@DATA
MOV DS,AX
;get system date
MOV AH,2AH
INT 21H
;assign values of date
MOV YEAR,CX
MOV MONTH,DH
MOV DAY,DL
MOV Dweek,AL
;
MOV DL,dWEEK
MOV AL,2H
INT 21H
;display values of date
LEA DX,MSG
MOV AH,09H
INT 21H
;year
MOV AX,CX
CALL OUTDEC
;month
LEA DX,MSG2
MOV AH,09H
INT 21H
XOR AX,AX ;clear AH and AL
__________________________________________________________________
 305  SUST
 :   
_____________________________________________________________________

MOV AL,MONTH
CALL OUTDEC
;day
LEA DX,MSG3
MOV AH,09H
INT 21H
XOR AX,AX
MOV AL,DAY
CALL OUTDEC
; display the equivalent day of week
LEA DX,MSG4
MOV AH,09H
INT 21H
CMP Dweek,0
JE ZERO
CMP Dweek,1
JE ONE
CMP Dweek,2
JE TWO
CMP Dweek,3
JE THREE
CMP Dweek,4
JE FOUR
CMP Dweek,5
JE FIVE
CMP Dweek,6
JE SIX
__________________________________________________________________
 306  SUST
 :   
_____________________________________________________________________

JMP END_CASE
ZERO:
LEA DX,SUN
JMP DISPLAY_
ONE:
LEA DX,MON
JMP DISPLAY_
TWO:
LEA DX,TUES
JMP DISPLAY_
THREE:
LEA DX,WEDN
JMP DISPLAY_
FOUR:
LEA DX,THURS
JMP DISPLAY_
FIVE:
LEA DX,FRID
JMP DISPLAY_
SIX:
LEA DX,SAT
DISPLAY_:
MOV AH,09H
INT 21H
END_CASE:
MOV AH,4CH
INT 21H
__________________________________________________________________
 307  SUST
 :   
_____________________________________________________________________

MAIN ENDP
Include procfile.asm
END MAIN

3 # 
! : ] I  ZN- 
= t 2Ch *t:
t %  E % *B ZN-   !
3t 3 # 
!  BL 3( *B   Int 21h
L  
:   C  '( M W ED  ! "7$ 
(& 
;======================================
==============================
; program: sysTime.asm
; purpose: gets the hour,minutes,seconds,and
hundredth of seconds
; from the system using
; calling registers: AH = 2Ch
; return registers: CH =Hour(O - 23)
; CL =Minutes(O - 59)
; DH =Seconds(O - 59)
; DL =Hundredths of seconds(O - 99)

; input : None
; output : hour,minutes,seconds,and hundredth of
seconds
; usage : OUTDEC procedure in procfile.asm
; update : 28/11/2000
__________________________________________________________________
 308  SUST
 :   
_____________________________________________________________________

;======================================
==============================
.MODEL SMALL
.STACK 100H
.DATA
CR EQU 0DH
LF EQU 0AH
MSG DB 'GET SYSTEM TIME :INT 21H
FUNCTION 2C',CR,LF,'$'
TM DB ?
.CODE
MAIN PROC
;initialization
MOV AX,@DATA
MOV DS,AX
;print msg
LEA DX,MSG
MOV AH,09H
INT 21H
;get system time
MOV AH,2cH
INT 21H
;assign values of time
MOV BX,DX ; store sec and hundred of
secs from DX
XOR AX,AX ; ax:=zero
MOV AL,CH ;hour
__________________________________________________________________
 309  SUST
 :   
_____________________________________________________________________

CMP AL,12d
JG GREAT
MOV TM,'a'
jmp CONTINUE
GREAT:
SUB AL,12
MOV TM,'p'
CONTINUE:
CALL OUTDEC
MOV DL,':'
MOV Ah,02H
INT 21H
AND AX,0 ;ax:=zero
MOV AL,CL ;minutes
CALL OUTDEC
MOV DL,':'
MOV Ah,02H
INT 21H
MOV AX,0 ;ax:=zero
MOV AL,BH ;seconds
CALL OUTDEC
MOV DL,'.'
MOV Ah,02H
INT 21H
MOV AX,0 ; ax:=zero
MOV AL,Bl ;hundred of seconds
CALL OUTDEC
__________________________________________________________________
 310  SUST
 :   
_____________________________________________________________________

;print space
MOV DL,' '
MOV AH,02H
INT 21H
MOV DL,TM
MOV AH,02H
INT 21H
;return to dos
MOV AH,4CH
INT 21H
MAIN ENDP
Include ProcFile.asm
END MAIN

‡B:  10 : 2  ZN- 


= t 2Bh *t:
t %  E % *B ZN-   !
ED' 3 #  10  BL 3( *B   Int 21h
L  
:   C  '( M W
TITLE Setdate.asm
;======================================
==============================
; Purpose: sets the System date using interrupt
21h
; function 2Bh
; Calling Registers :
__________________________________________________________________
 311  SUST
 :   
_____________________________________________________________________

; AH = 2B H
; CX : year(1980 - 2099)
; DH : month(1 - 12)
; DL : day(1 - 31)
; Return Registers :
; AL = 00 if success to change the
system date
; usage : INUNDEC procedure in procfile.asm
; update : 27/11/2000
;======================================
==============================
.MODEL SMALL
.STACK 100H
.DATA
LF EQU 0DH
CR EQU 0AH
prompt DB LF,CR,'Enter The Day : $'
MSG_M DB LF,CR,'Enter The Month
: $'
MSG_Y DB LF,CR,'Enter The
Year(1980..2099) : $'
MSGSUC DB LF,CR,'Your Date Is
Changed.$'
MSGFAIL DB LF,CR,'Your Date Is Not
Changed.'
DB LF,CR,'Do You Want To Try
Again Y/N? $'
__________________________________________________________________
 312  SUST
 :   
_____________________________________________________________________

MSGINV DB LF,CR,'Invalid Date...'


DB LF,CR,'Do You Want To Try
Again Y/N? $'
year DW '?'
month DB '?'
day DB '?'
.CODE
MAIN PROC
MOV AX,@DATA
MOV DS,AX
begin :
; Display Prompy Message
MOV AH,9
LEA DX , prompt
INT 21H
; Read the Day
CALL INUNDEC
CMP AL , 1
JL begin
CMP AL , 31D
JG begin
MOV DAY , AL
@month :
MOV AH , 9
LEA DX , MSG_M
INT 21H
; Read the Month
__________________________________________________________________
 313  SUST
 :   
_____________________________________________________________________

CALL INUNDEC
CMP AL , 1
JL @MONTH
CMP AL , 31D
JG @MONTH
;CALL INUNDEC
MOV MONTH , AL
@YEAR :
MOV AH,9
LEA DX , MSG_Y
INT 21H
; Read the Year
CALL INUNDEC
CMP AX , 1980D
JL @YEAR
CMP CX , 2099D
JG @YEAR
; Set Date using Function 2Bh
MOV CX , AX ; CX = The Year
MOV DH , MONTH ; DH = The Month
MOV DL , DAY ; DL = The Day
MOV AH , 2BH
INT 21H
;IS DATE CHANGED ?
CMP AL , 00H
JNE AGAIN
MOV AH , 9H
__________________________________________________________________
 314  SUST
 :   
_____________________________________________________________________

LEA DX , MSGSUC
INT 21H
JMP EXIT
again:
MOV AH , 9H
LEA DX , MSGFAIL
INT 21H
answer: ;ANSWER Y/N
MOV AH , 1H
INT 21H
CMP AL , 'Y'
JE begin
CMP AL , 'y'
JE begin
CMP AL , 'n'
JE EXIT
CMP AL , 'N'
JE EXIT
JMP ANSWER
exit:
MOV AH , 4CH
INT 21H
MAIN ENDP
include procfile.asm
END MAIN

__________________________________________________________________
 315  SUST
 :   
_____________________________________________________________________

3 #  10 : Y %  ZN- 
= t 2Dh *t:
t %  E % *B ZN-   !

(t t! 3 #t  10 ! *B   Int 21h


L  
:   C  '( M W ED 
TITLE Settime.asm
;======================================
==============================
; Purpose: sets the System time using interrupt
21h
; function 2Dh
; Calling Registers :
; AH = 2D H
; CH : Hours (0..23)
; CL : Minutes (0..59)
; DH : Seconds (0..59)
; Return Registers :
; AL = 00 if success to change the
system time
; usage : INUNDEC procedure in procfile.asm
; update : 27/11/2000
;======================================
==============================
.MODEL SMALL
.STACK 100H
.DATA
LF EQU 0DH
__________________________________________________________________
 316  SUST
 :   
_____________________________________________________________________

CR EQU 0AH
PROMPT DB LF,CR,'Enter The Hour(0..23) :
$'
MSG_M DB LF,CR,'Enter The Minute(0..59)
: $'
MSG_S DB LF,CR,'Enter The Second(0..59)
: $'
MSGSUC DB LF,CR,'Your time is changed.$'
MSGFAIL DB LF,CR,'Your Time Is Not
Changed.'
DB LF,CR,'Do You Want To Try Again
Y/N? $'
MSGINV DB LF,CR,'Invalid Time...'
DB LF,CR,'Do You Want To Try Again
Y/N? $'
HOUR DB '?'
MINUTE DB '?'
.CODE
MAIN PROC
MOV AX,@DATA
MOV DS,AX
begin :
; DISPLAY PROMPT MESSAGE
MOV AH , 9
LEA DX , prompt
INT 21H
; Read The Hour
__________________________________________________________________
 317  SUST
 :   
_____________________________________________________________________

CALL INUNDEC
MOV HOUR , AL
CMP AL , 23D
JG begin
@minute:
MOV AH , 9
LEA DX , MSG_M
INT 21H
; Read the Minute
CALL INUNDEC
CMP AL , 59D
JG @minute
MOV MINUTE , AL
@second :
MOV AH,9
LEA DX , MSG_S
INT 21H
; Read The Second
CALL INUNDEC
CMP AL , 59D
JG @second
; Set Time using Function 2Dh
MOV DH , AL ; DH = Seconds
MOV CL , MINUTE ; CL = Minutes
MOV CH , HOUR ; CH = Hour
MOV AH , 2DH
INT 21H
__________________________________________________________________
 318  SUST
 :   
_____________________________________________________________________

;IS DATE CHANGED ?


CMP AL , 00H
JNE AGAIN
MOV AH , 9H
LEA DX , MSGSUC
INT 21H
JMP EXIT
again:
MOV AH , 9H
LEA DX , MSGFAIL
INT 21H
answer: ;ANSWER Y/N
MOV AH , 1H
INT 21H
CMP AL , 'Y'
JE begin
CMP AL , 'y'
JE begin
CMP AL , 'n'
JE EXIT
CMP AL , 'N'
JE EXIT
JMP ANSWER
exit:
MOV AH , 4CH
INT 21H
MAIN ENDP
__________________________________________________________________
 319  SUST
 :   
_____________________________________________________________________

include procfile.asm
END MAIN

 N 
  
 N  1 3
4: : i7&  ZN- 
2 
1'
E' \
,+  '( PO 6) 6'-  ZN-   !
ZtBL 3t( Mt W ",N !
8  38B
,+  Q9

O !  ) ")  ! 
a% 
-  !
8 

t   t!
%&  SVGA   3
,+  )

t) *tB ]tO ( B8000h HB#  Q  3 9 N0


Attribute PC  pH% h(N PC' ASCII t  78 
;(NL *  
'%  Q  PC  Q 3( ":N( 
.'(

t8  S N 
(
4:  PC
,+  y' *
tI @A 1'  @ Oo
8  S N  2 
1'
*t 2 
1 S 4N
  
(&'
N&4 \8N 
1

t,+  =t Et B S t4 E %t


4:   ? !

t,+  =t *tB "t ) ! ) Z < A 3 PC 


t 9 7 t(
'  ? :80 *B (7 C  PC 
S t4N  t! = tN  N 3 # 
! E  4 M W

__________________________________________________________________
 320  SUST
 :   
_____________________________________________________________________

G  3 #  7B<   3 =45  3 # 


! 
.  ! S 4N  ;1

: Write ":N  8N 


1 E % : 
B- 
program displayrun;
uses crt,Dos;
var
hs, ms, ss, hunds,he, me, se, hunde : Word;
ch:char;
BX, Counter:integer;
begin
clrscr;
TextColor(blue);
TextBackground(white);
GetTime(hs,ms,ss,hunds);
FOR BX:= 1 TO 9 DO
for ch:='A' to 'Z' do
for counter :=1 to 2000 do
write(ch);
GetTime(he,me,se,hunde);
writeln;
writeln('Started at ',hs,':',ms,':',ss,'.',hunds);
writeln('Finished at ',he,':',me,':',se,'.',hunde);
writeln('Run time is ',he-hs,':',me-ms,':',se-
ss,'.',hunde-hunds);
repeat until keypressed;
__________________________________________________________________
 321  SUST
 :   
_____________________________________________________________________

end.

t   ":N  8N 


1 E % :
4I 
B- 
:",N ")  2
program displayrun;
uses crt,Dos;
var
hs, ms, ss, hunds,he, me, se, hunde : Word;
ATRIB,ch:BYTE;
BX, Counter:integer;
begin
clrscr;
TextColor(blue);
TextBackground(white);
GetTime(hs,ms,ss,hunds);
ATRIB:=$17;
FOR BX:= 1 TO 9 DO
for ch:=65 to 90 do
for counter :=0 to 2000 do
BEGIN
MEM[$B800:2*COUNTER]:=CH;
MEM[$B800:2*COUNTER+1]:=ATRIB;
END;
{ write(ch);}
GetTime(he,me,se,hunde);
writeln;
__________________________________________________________________
 322  SUST
 :   
_____________________________________________________________________

writeln('Started at ',hs,':',ms,':',ss,'.',hunds);
writeln('Finished at ',he,':',me,':',se,'.',hunde);
writeln('Run time is ',he-hs,':',me-ms,':',se-
ss,'.',hunde-hunds);
end.

: 2 
1 E % :
I I 
B- 
TiTle Disp_asm : Fill The screen & Compute
Runtime

.MODEL SMALL

.STACK 100H

.DATA

printCh dw '?'
MSGS DB 0DH,0AH,'Start Time is $'
Hs DB '?'
Ms DB '?'
Scs DB '?'
HSs DB '?'
MSGe DB 0DH,0AH,'Finish Time is $'
He DB '?'
Me DB '?'
Se DB '?'

__________________________________________________________________
 323  SUST
 :   
_____________________________________________________________________

HSe DB '?'
MSGR DB 0DH,0AH,'Run Time is $'
.CODE
MAIN PROC
;initialization
MOV AX , @DATA
MOV DS , AX
; Get start time
MOV AH,2CH
INT 21H
MOV Hs , CH
MOV Ms , CL
MOV Scs , DH
MOV HSs , DL
MOV AX,0B800h ;color active display
page
MOV DS,AX
MOV AH,17H
MOV BX,9
DISPLAY_ALL:
MOV AL,41h
AGAIN:
MOV DI,0
MOV CX,2000d
;fill active display page
FILL_BUF:
MOV [DI],AX
__________________________________________________________________
 324  SUST
 :   
_____________________________________________________________________

ADD DI,2
LOOP FILL_BUF ;loop until done
ADD AX,01H
CMP AL,'Z'
JLE AGAIN
DEC BX
JNZ DISPLAY_ALL
; Get finish time
MOV AX , @DATA
MOV DS , AX
MOV AH,2CH
INT 21H
MOV He , CH
MOV Me , CL
MOV Se , DH
MOV HSe , DL
; display start time
MOV AH , 9
LEA DX , MSGs
INT 21H
XOR AX , AX
MOV AL , Hs
CALL OUTDEC
MOV DL , ':'
MOV AH , 2
INT 21H
;
__________________________________________________________________
 325  SUST
 :   
_____________________________________________________________________

XOR AX , AX
MOV AL , Ms
CALL OUTDEC
MOV DL , ':'
MOV AH , 2
INT 21H
;
XOR AX , AX
MOV AL , Scs
CALL OUTDEC
MOV DL , '.'
MOV AH , 2
INT 21H
;
XOR AX , AX
MOV AL , HSs
CALL OUTDEC
MOV DL , ':'
MOV AH , 2
INT 21H
; display finish time
MOV AH , 9
LEA DX , MSGe
INT 21H
XOR AX , AX
MOV AL , He
CALL OUTDEC
__________________________________________________________________
 326  SUST
 :   
_____________________________________________________________________

MOV DL , ':'
MOV AH , 2
INT 21H
;
XOR AX , AX
MOV AL , Me
CALL OUTDEC
MOV DL , ':'
MOV AH , 2
INT 21H
;
XOR AX , AX
MOV AL , Se
CALL OUTDEC
MOV DL , '.'
MOV AH , 2
INT 21H
;
XOR AX , AX
MOV AL , Hse
CALL OUTDEC
MOV DL , ':'
MOV AH , 2
INT 21H
; display run time
MOV AH , 9
LEA DX , MSGR
__________________________________________________________________
 327  SUST
 :   
_____________________________________________________________________

INT 21H
XOR AX , AX
MOV AL , He
SUB AL , Hs
CALL OUTDEC
MOV DL , ':'
MOV AH , 2
INT 21H
XOR AX , AX
MOV AL , Me
SUB AL , Ms
CALL OUTDEC
MOV DL , ':'
MOV AH , 2
INT 21H
XOR AX , AX
MOV AL , Se
SUB AL , Scs
CALL OUTDEC
MOV DL , '.'
MOV AH , 2
INT 21H
XOR AX , AX
MOV AL , HSe
SUB AL , HSs
CALL OUTDEC
; dos exit
__________________________________________________________________
 328  SUST
 :   
_____________________________________________________________________

MOV AH,4CH
INT 21H
MAIN ENDP
Include procfile.asm
END MAIN
:
4:  
3t j
t4:  ?U(9
C  S N  1+0 
e1t Gt  S 4N    . 8  
ƒM W g'( M '0    ƒ  ! 3 j 9


  
becasod@hotmail.com
becaso_d@yahoo.com
moonweep@hotmail.com

__________________________________________________________________
 329  SUST

You might also like