Professional Documents
Culture Documents
الشامل فى لغة الاسمبلى
الشامل فى لغة الاسمبلى
الشامل فى لغة الاسمبلى
:
!
"#$ !
%& '( #) *
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
SN *!
& 38B 38 & 8N
.@A '
N 1 3 GT E > 7
UA 3 SN V
) M W 3 P
V B Q80 Q9 RB 2
1 X
.
'%
N :
__________________________________________________________________
2 SUST
:
_____________________________________________________________________
)
B4 !
'- SN
8 F - !
-
0 (N9 SN EU *B .
'O
.*&
6C
8N, E% M W *B W
"! : '( :NA5 3
( ( *B )
! H QC5 <
!> "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 ! SN 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% S4N' E
) *B
B4 ! .dA> A7> '
.0 "1a S
Flag e:N & '( P ;! *B :2
b0
'% ' e:N [T0 Register
'( 0 fC0
'% QR 5O
."7C
'% 9 b0 ;! *B :Y%
"1 SN BC0
) '( P *B
High Level G& W SN 3
9 BC0 M W 3RB Language
) *0 M W .2
1 g <
'% :8
'C0
) b0 hN&4 "N8 SN O9
S4N'
8
'O g < S4N
'% Z- 6&C 9 B :i7&
3RB U& 2 ! %
BL
*0
B4 ! .Q:
Oj> 9 M W
) "=
( =$> 3
(
)
.G+( & HI 3D ! E:
__________________________________________________________________
4 SUST
:
_____________________________________________________________________
3
( X ;! *B :+( G7C
V =79 ! 1+ ED4 2 0 SN
*0
: ZBL 3( M W "7C cHm
'I VN M W n: :
UA ;:7
.
'
__________________________________________________________________
5 SUST
:
_____________________________________________________________________
"7 3 P
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 (- <
__________________________________________________________________
7 SUST
:
_____________________________________________________________________
__________________________________________________________________
9 SUST
:
_____________________________________________________________________
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
:
_____________________________________________________________________
- B 3 S4 )
BO E#'B
/ Y4 ! ") ! B Av S4
8 ") 3 "7C
- p% M W
2 3 S4N 2 "O g'( S4
.A_ S4N p%0 ") ZL
u: N)9 ")W u 2
__________________________________________________________________
11 SUST
:
_____________________________________________________________________
__________________________________________________________________
12 SUST
:
_____________________________________________________________________
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
:
_____________________________________________________________________
__________________________________________________________________
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 SN
!
N&4 .S
38B ' ? Q9 "B
. Pentium t gO
IBC 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&
.7C 9 0 S
O '( GCB 5C
=# ! E
& 14 7( '( S GCB
.& )
m =9 b
__________________________________________________________________
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%
__________________________________________________________________
17 SUST
:
_____________________________________________________________________
__________________________________________________________________
18 SUST
:
_____________________________________________________________________
__________________________________________________________________
19 SUST
:
_____________________________________________________________________
)
4A 20 3 Q8B Q Q9 bRB ZN
16 ?:
L W S A7 "7$ U&
E%
'C& ') ")
NL% B n
!
4A
") 2L
) 216 = 64 Kbytes - =#$ ") 2-
2-
*: &B 7C * ?BC0 *B ") ! 2-
B 0000h * 9NB *: Segment Number
.FFFFh *
"7C
Oj<
- Q BC0 *B 2-
A
3 7C 2 { 3( ":N(
Oj> ? Offset
; K0 G9 16 Bytes - *: 2-
B
.FFFFh 0000h 3 3
__________________________________________________________________
20 SUST
:
_____________________________________________________________________
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
:
_____________________________________________________________________
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 ) 9NB 2-
Q9 bRB (1)8+ !
"
") !
4A 16 ) g&0 M W g'( . ")
g'(
&
N
0 3B 3 G9 g&B .Paragraph
. Paragraph Boundaries
7C 10h 7
HB# Q BC0 Q! -
! hUA0 M Q
!
'8+0 3 I) ZBL 3( G9
BL 3 I)T *B
: M W b0
'I .
Oj> Q( 2-
Q(
Q BC
'-
Oj>
BC * 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
:
_____________________________________________________________________
Q_ 8B
'% 2L
") *&
0
'( b0
3 S4N Q8B ]O \
'% 2L
U& ( K,
1 3 ;( <
!> 3
(
Stack 4N i8 E%5
$C <
!>
.h
O5 ;'( ;%
BL b G
2 Code Segment S4N 2-
! S4N 2 *B
M ) Data Segment 4N 2-
! 4N
__________________________________________________________________
25 SUST
:
_____________________________________________________________________
__________________________________________________________________
26 SUST
:
_____________________________________________________________________
E%
'% 1 2 ")
.
'-
Oj>
GC0 GA9 U&
Stack Segment Register (SS) i8 2-
&
i8) ; ") 3 =#$ BC0 *B
(Last In First Out
B- i8 B ]O
9 ' 3
( ! ; *B( LIFO )
*B h
O5 G )
(! SN =
'(
3
Oj>
GC U&
(
. Stack Pointer (SP) i8 ,z 9
Extra Segment Register (ES) !> 2-
&
2-
NL% BC & E% *B
I)9
NL%
'( QO V ! E#'0 ]O !<
4N 3
)
4 I ) O / ! 2-
3
2-
! Av Q8 7C Q8 3 ") !
dC4 38 n
! 4N & 8B 5
2-
*! A_ 2-
BC !< &
( ES !>
__________________________________________________________________
27 SUST
:
_____________________________________________________________________
__________________________________________________________________
28 SUST
:
_____________________________________________________________________
__________________________________________________________________
29 SUST
:
_____________________________________________________________________
__________________________________________________________________
30 SUST
:
_____________________________________________________________________
__________________________________________________________________
31 SUST
:
_____________________________________________________________________
3B:0
8088 S 80286 S 3 e u1
") ! 7C 2 & 3 e u2
. DX,CX,BX,AX 4N U& cHm )W u3
Q 7C 2' HB# Q u4
0A51:CD90
:F&O 4A37B ;4( ") ! 2 u5
. 40FF -
Q( Q) W<
Oj> u9
.123B
Oj>
/4) W< -
Q( u6
") !
7O u 6
] I
__________________________________________________________________
32 SUST
:
_____________________________________________________________________
2
1 < A
__________________________________________________________________
34 SUST
:
_____________________________________________________________________
'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
:
_____________________________________________________________________
__________________________________________________________________
38 SUST
:
_____________________________________________________________________
__________________________________________________________________
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 * 9N0 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
:
_____________________________________________________________________
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 S4N A7 M W ( ! A PC' m
.") ! 3B#%
O4 3
VARIABLES tt1
G : Y4 2
t1 ! 1 F'0
High @& W 1' SN ! ;N'0
8N
1 I Level Programming Languages
1 =9 BC0 FB M W g'( .g&
__________________________________________________________________
41 SUST
:
_____________________________________________________________________
: 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
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 !
__________________________________________________________________
44 SUST
:
_____________________________________________________________________
__________________________________________________________________
46 SUST
:
_____________________________________________________________________
*B PC 3
'&' 49 '( l 3B#%0 *B
*
9 PO ":a !
H5
2
ASCII Table PC $ ! PC' "m
Y4 < QB7zB 3 Q QB hUI!
V
)
V '( P =# !
Q9 X % '(
'% 7
%
a% U& 9
U& 3) ?
( 2 )
4 ! gO 9 ") ! 1 9
.& '( 9 ") 3 7C 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
") ! 7C 2 2 &
N5
: J
1 .(1)
__________________________________________________________________
50 SUST
:
_____________________________________________________________________
__________________________________________________________________
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
__________________________________________________________________
54 SUST
:
_____________________________________________________________________
__________________________________________________________________
55 SUST
:
_____________________________________________________________________
g <
'BC0 *B A=B-2*A hA9
MOV AX,B
SUB AX,A
SUB AX, A
MOV A,AX
u:S4N' E 8+
") *&
0
'( b Z& !
'( 2-
@CB ]C
'% 2L
g <
CODE S4N 2-
g&B ;&4 S4N
4N '( @CB Av 2-
SEGMENT
DATA 4N 2-
g&B S4N !
%&
g&B i8 '( GCB ] [ 2-
SEGMENT
STACK SEGMENT i8 2-
2L
? 0
) b0 * =# !
)
) b0 2 ASSEMBLER t
-
.S4N A7 2-
) cB0
:MEMORY MODELS ") dW4
6'- S4N Q8B ;4 gR ! 4)W )
8 n
! O 2-
2&B Q9 38B ]C 1a ;)
< dC0 i8 4N S4N 3
__________________________________________________________________
57 SUST
:
_____________________________________________________________________
__________________________________________________________________
58 SUST
:
_____________________________________________________________________
.DATA
; /I 1 cB0 Q8B
.CODE
MAIN PROC
; =$> A7 '
MAIN ENDP
; F80 =$>
END MAIN
S4N
B4
') @CB S4N ! - Av
. S4N ! &H =$> *
(NEND
__________________________________________________________________
62 SUST
:
_____________________________________________________________________
__________________________________________________________________
63 SUST
:
_____________________________________________________________________
% 3 n
!
[U[ bB
ED %B
( 30 ) ca
*:
%
__________________________________________________________________
64 SUST
:
_____________________________________________________________________
O 3 "O
"= 1
b0
,+ ! O PO
) 2
! PC 3
(
) 9
,+
__________________________________________________________________
65 SUST
:
_____________________________________________________________________
__________________________________________________________________
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 #ttttt 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
: S4N
__________________________________________________________________
67 SUST
:
_____________________________________________________________________
b0
O 3 PO "=
E
4
-&
B ! ; A7< *0 G PC
(NL *[
.S4N =4< *[
:
=#$ 3 S4N 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
:
_____________________________________________________________________
MAIN ENDP
END MAIN
DOS t' *8C CB ;4o! S4N cB ( ;49 wO5
4Ch
m INT 21h
! 4N - PO
! 1 E% *B * ;4
S4N
__________________________________________________________________
71 SUST
:
_____________________________________________________________________
MASM FILENAME; 9
__________________________________________________________________
73 SUST
:
_____________________________________________________________________
1' c'
& "-% ! ?+4< *0 G c'
;4 ' x ;8 Machine Language
_
'
'
SN' F 8+ g'( GCB 5
:
6NJ M W
") ! c' C0 Q8 cB0 E( u9
5 S4N A7
4 ;'( Qo!
.0 38B
Q80 S4N A7 3B = V u6
3 I)9 n:
O !
! x
S =4 SN O9 3 *B ]O S4
.Av c' ! 68 @A9 ;(!
n
'( =$o E
B Link Program n S4
A7 3B BC0
'% Object Files t 3
. EXE' c' d4o M W E
B S4N
: C g'( (Executable File)
> TLINK First;
Turbo Link Version 2.0 Copyright (c) 1987
Borland International .
DOSt ]C 3 ;
) n
! *B S4N 1+
C:\ASM > first
?t
t
C:\ASM >
3O < :D45 "" PC
(N- S4N E
B
E
B .b0
O 3 K '( n1R
(NL B -&
B < 6 S4N
=45 *[ ;'( n1R *0 G PC
.1+ ED4 < "7
Display String
,+ '(
: :m<
=4 3 1 *:
m E% *0 Z& S4N !
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
BN 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 S4
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
:
_____________________________________________________________________
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 S4
:Program
A7o E
E%& z& E
I !
:mo S4N 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% S4N ! *
CR,LF 3 )
CR EQU 0DH
LF EQU 0AH
C g'( H cB0 *B
MSG1 DB ‘Enter A Lower Case Letter :$’
__________________________________________________________________
79 SUST
:
_____________________________________________________________________
__________________________________________________________________
80 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
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
') 1u9
; $0 5 word1 ; word
') 1u6
.
H
. 52
H
; B ; Byte PO 1ut$
; $0 5 C ; Byte PO 1u7
.
H
H
; word2 ; word
') 1ut
. 65536
! 2 Array1 ')
!u
H
. 7 G&B Bell ; /[uj
‘This Is A G&B msg ;
: /[ utO
Message $’
__________________________________________________________________
83 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
() S4 Y ) :N( F) u7
__________________________________________________________________
85 SUST
:
_____________________________________________________________________
E
B . PO
[U[
) F'- E
B S4 F) u9
- ! PO ) (NL
[UI PC "=
S4N
' I.
Enter Three Letters :
ABC
A
B
C
ED ! PC O9 "=
E
B S4 F)u10
m *
(N- S4N E
B ( A-F ) +( &
' I . -& ! G+ ED !
Enter A Hexadecimal Digit :
C
In Decimal It Is : 12
2
e:N &
__________________________________________________________________
86 SUST
:
_____________________________________________________________________
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
__________________________________________________________________
89 SUST
:
_____________________________________________________________________
__________________________________________________________________
90 SUST
:
_____________________________________________________________________
__________________________________________________________________
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
:
_____________________________________________________________________
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
:
_____________________________________________________________________
__________________________________________________________________
94 SUST
:
_____________________________________________________________________
4%' PU5
O ! QR fCB K-
O !
3 9
Q B ]O N) Qj W
.( F *: )
Signed Overflow ":,o QR
! QR fCB ":,> Y E:9 2$
O !
":,< 3(
'% 2 aO ":,< Q80 Q9
O
":,o 3: KL
O ! ;49 4 ) .3
__________________________________________________________________
95 SUST
:
_____________________________________________________________________
"[T e:N
e:N 3 G9 [T0 5 MOV /
XCHG
e:N ) [T0 ADD /
SUB
(CF) C e ( e:N ) [T0 INC /
DEC
__________________________________________________________________
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
'
__________________________________________________________________
101 SUST
:
_____________________________________________________________________
: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
:
_____________________________________________________________________
O ! ;49 '( 7 "u" ":,> 7 S4N E
B
u:
VN b0 O :D4
2 . U& BC bB R .1
*o h(N R
) *B U& O9 ! "7C
.(R IP UI) &
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
:
_____________________________________________________________________
-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 S4N 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 S4N 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
:
_____________________________________________________________________
-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
__________________________________________________________________
107 SUST
:
_____________________________________________________________________
Q9 8000H * ; bNa9 AX & Q9 wO5
+ QR e 2!: *0 ]O e:N ! [9
&
Q9 < + ":,> e ":,o QR! fO <
3 1a
4% Q Z- e M )
N
4% 3 $j 7( '( GC0 (AL G9) AX &
]O S4N 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
__________________________________________________________________
109 SUST
:
_____________________________________________________________________
__________________________________________________________________
110 SUST
:
_____________________________________________________________________
Y%
Flow Control 6&45 nN '0
Instructions
__________________________________________________________________
111 SUST
:
_____________________________________________________________________
PC
(N- E
B I 9N 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<
7C Q
; DOS_EXIT
MOV AH , 4Ch
INT 21h
MAIN ENDP
END MAIN
__________________________________________________________________
112 SUST
:
_____________________________________________________________________
__________________________________________________________________
113 SUST
:
_____________________________________________________________________
__________________________________________________________________
114 SUST
:
_____________________________________________________________________
__________________________________________________________________
115 SUST
:
_____________________________________________________________________
__________________________________________________________________
117 SUST
:
_____________________________________________________________________
CMP
ATB 3:
4:
E%&B Compare(CMP)
:
1
CMP Destination , Source
: KL ZBL 3(
4:
' S4N 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 S4N Q9 X!
CMP Ax , Bx
JG Below
Ax,Bx
4 Q! BX=0001h\ AX=777Fh ]O
: CMP
7FFFh - 0001h = 7FFEh
__________________________________________________________________
118 SUST
:
_____________________________________________________________________
__________________________________________________________________
119 SUST
:
_____________________________________________________________________
__________________________________________________________________
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
S4N
) "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
:
_____________________________________________________________________
S4N
'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+ S4N
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
:
_____________________________________________________________________
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 7C 7 :8 Q8B ."
.7C fO fO gO :8 Q8B
7C 7 :8
__________________________________________________________________
130 SUST
:
_____________________________________________________________________
7C 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% .S4N
'a
'C
; ( CX )& !
H
2
top:
; S4N *&$
loop top
(N- M W :8
'O E%&B S4 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& S4N 3
'( "O ?
'C *&$ :80 < G7zB LOOP
Qo! a G&0 CX 7
/4) W<
]O "O "
'C *&$ G7z S4N
]O 65535 7
bN 7 3 1 K- E
B
(00FFFh) 65535 7( :8
'C E
0
.S4N B "
5 CX &
Q9 3 )T FB
C ? dU
JCXZ E% M W
'C' A N a G&0
__________________________________________________________________
132 SUST
:
_____________________________________________________________________
__________________________________________________________________
133 SUST
:
_____________________________________________________________________
__________________________________________________________________
134 SUST
:
_____________________________________________________________________
REPEAT
'O
k, fO gO :8 E
0 GA9
'O g
": g'( Q8B E 8+ .7C
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 S4 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'(
S4
)
1 <
:
1 3 ?N) S
)
) b
: I b4 2
E
B ;'$ A7> E%& z& E
B ) S4 F)
N)9
! 7: N) PO 1a9 BC S4N
PC F00 F&O M W)
g! 7B N) PO
.(ASCII t $ !
(No
:mo S4N E
B ?N) PO 70 * W<
: 0_) . capital letters )
TYPE A LINE OF TEXT :
SUDAN UNIVERSITEY OF SCIENCE
AND TECHNOLOGY
__________________________________________________________________
136 SUST
:
_____________________________________________________________________
'8+ ;H#0
BL g'( S4N
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
:
_____________________________________________________________________
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
:
_____________________________________________________________________
8 S4N
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
__________________________________________________________________
145 SUST
:
_____________________________________________________________________
REPEAT
ADD M TO PRODUCT
DECREMENT N
UNTIL N = 0
! 7$ * 6R E
B S4 3 =#$ F)
7$ * ! AX &
M8B ) CX & !
2 BX &
(QR
'( fO 0
3RB LOOPZ LOOP 3B Q9 /'( W< u 7
W< CX &
l
4< 0
:80 *B ZF = 1 ( AND ) CX <> 0 /4)
.(7C Q < #
*B )
'C
3RB LOOPNZ LOOPNE 3B M )
W< CX &
l
4< 0
:80 *B ZF = 0 ( AND ) CX <> 0 /4)
.(7C Q < #
*B )
'C
K '( n1R < 0 PO 9
B S4 F)
*B Carriage Return A7>
.( LOOPNE ) PO 80 A7<
SN
__________________________________________________________________
147 SUST
:
_____________________________________________________________________
__________________________________________________________________
148 SUST
:
_____________________________________________________________________
AND,OR,XOR
-
"O
H[
4A 2 !
- E%&0
: J E 8+ 7C & !
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
:
_____________________________________________________________________
t4A t10
- J
%5 O9
]O MASK 6O E% M W *B & A7 "7C
*tB t t 6t'-
t4% BC0 ;- *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 "7tC (t4A 9)
4A ! ‘0’
2 u1
t! ‘0’
2 *B ]OAND E% *B
t t! '0’ 2 6'- 4%' MASK 6C
. 'B0 6'- 1 4% ! '1’
2 *B
SET "7tC (4A 9)
4A ! ‘1’
2 u2
t! ‘1’
t
2 *B ]O OR E% *B
t t! '1’ 2 6'- 4%' MASK 6C
.'B0 6'- 1 4% ! '0’
2 *B
"7tttC (ttt4A 9)
ttt4A
ttt Yttt8 u3
*tB ]O XOR E% *B COMPLEMENT
__________________________________________________________________
150 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( fC
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
:
_____________________________________________________________________
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'( S4N 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
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
__________________________________________________________________
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) 7t ! * 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
'( fO 3
__________________________________________________________________
158 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 t9
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 !
AL t& tBC
t& gtB 0
t t4)W )
FB
0 *B 2 7
7t gt ;tNB
-7.5 *t
7t' 4D4 W< -8 7 g'( C4 1a
t -15 7t Q9 t4
t4I ":t !
C4 3' ;Oj5
'( =$< 11110001
.-8 7 11111000 * g'(
3' :&' ;Oj5 9 E% 38B h(
9 2 7t gt'(
&
6R '( =$>
gt'( 6tR
'( =$< 47:9 W< ;0(R
__________________________________________________________________
162 SUST
:
_____________________________________________________________________
__________________________________________________________________
163 SUST
:
_____________________________________________________________________
__________________________________________________________________
164 SUST
:
_____________________________________________________________________
__________________________________________________________________
165 SUST
:
_____________________________________________________________________
3 C4
et B1h * DH & BC G9
.a @&B C
:I
"7t$ 4% Y8 E
B S4 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
:+(
&
HI E:
(NL "=
__________________________________________________________________
166 SUST
:
_____________________________________________________________________
Et
0 S
)
) =# !
tO 3t t+(
9
H[ E:9 "=
__________________________________________________________________
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'(
& !
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' S4N
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<
S4N
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' S4N
: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
A7< !
N
B- &4
j:% (
*t0 &' ;Oj5
'( Q9 ( !
HI E:
__________________________________________________________________
171 SUST
:
_____________________________________________________________________
:HEX Output 3(
& E: dA< u4
4 G9
tH[
t4A 16 gt'( BX & @CB
t! *t t ;t(N- .+(
4A
__________________________________________________________________
172 SUST
:
_____________________________________________________________________
: 0_ E
0
- u2
__________________________________________________________________
173 SUST
:
_____________________________________________________________________
__________________________________________________________________
174 SUST
:
_____________________________________________________________________
__________________________________________________________________
175 SUST
:
_____________________________________________________________________
: SN 3B:0
.PO A7> E%& z& E
B S4 F)9 u 8
tt 7t8
t(N- 4tI -& ! S4N 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
:
_____________________________________________________________________
__________________________________________________________________
178 SUST
:
_____________________________________________________________________
2&
=$> 3(
i8
The Stack and Introduction to Procedures
( SN =4
848 e-4 *[ pop, push
.M I b0 2
*tB ")t t! G7tO9 P) i8 NB
t
SP i8 ,z
"7Bj u2
2
it8 3
9 FC& E
B POPF
.e:N & g <
t! [zt0 5 i8 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%& S4 g <
!>
hUIt! ;'( =7 i8 E% 1+ ED4
EtD4 E
B INT 21h
L
=4 E% (
t! Ut&'
t'% *t
3B#t% 1+
=t45 t( @A9 ? ($ *[ i8
t S4N' "7
L
=4 ( 3
! /0 1 E%& S4 [TB 5
.U&
:i8 E%
N- I
__________________________________________________________________
183 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
( SN
*t&
0 *tB "N8 S4N
) (
t "1
( SN
( g < S4N
=tt
tt'( Qtt80 Programming Languages
2t
t1 t! 38 SN 3(
% "7
RET "7t t9 CALL =(5 9
) FB
.
( SN 2 ( @ )
:Procedure Declaration
( SN 3( SB
: C g'( ( S4N 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 ( S4N =4 Q9 g0 NEAR ]O
S4N =4 Q< g! FAR 9 2-
Y4 A7
y,
) *B * W< .c'% 2-
3 *B (
.NEAR 3 ( S4N Q9 X! *B
Stt4N =tt4< gtt < @7zttB (Return ) RET tt
G9 . ;H(t E G S4N g < "7 (
RET t E%t Et
B Q9 FB g(! S4
t( t! ) ?( E G S4N g < "7'
__________________________________________________________________
187 SUST
:
_____________________________________________________________________
t!
'$ Av ! "7( *B ( &H S4N
. ( S4N
( SN 3 05
( SN Z[0
Et
t( St4N
) 3 =45 FB
/t G9 t! t&B gO ; 8 Z[
'
__________________________________________________________________
188 SUST
:
_____________________________________________________________________
__________________________________________________________________
189 SUST
:
_____________________________________________________________________
__________________________________________________________________
190 SUST
:
_____________________________________________________________________
6t taO 6&O ;! *B (! S4N 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(
tj:%
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
:
_____________________________________________________________________
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 fC
.FFh 3 9
Ut& *t 3B#t% g(! S4 G9 hH7 9NB
;t( E% i8 ! % E
*tB =t$> t( =4 *[ PUSH 9 3
t( E% i8 3
B
*
$
Et
B U& ( ! M W pop 9 3
Ut& 10 *B 5 gO M W !
$:o
StN' Et 8t+ Qt! 'a S4N'
:
(
NAME PROC
Push AX
Push BX
: =$> A7
Pop BX
Pop AX
__________________________________________________________________
193 SUST
:
_____________________________________________________________________
RET
NAME ENDP
:3B:0
t St4N t! it8 ctB0 Q) W< u1
100H .STACK
t SP it8 t,z BC u9
",N S4N 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
S4N =# 0
PUSH AX
PUSH BX
XCHG AX , CX
POP CX
PUSH AX
POP BX
t,z tBC Qt80 it8 yt'B ( u3
W .( SP=0 ) a * i8
fC W .i8 ! "B$
') 2 *0
38B W SP &'
__________________________________________________________________
194 SUST
:
_____________________________________________________________________
.S4N' fCB Q9
: =# ; S4 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 S4N u6
08FD:300h Q
SP =
t
gt'( it8 ,z @CB ud
010Ah
0 SP , IP 3'& BC
,N CALL PROC1
.i8
! "7$
'8
: 0_ 8 E
B S4 F) u5
! i8
! "7$
'8 2 u9
10 Q7 AX &
.i8 BC
t& ! i8 !
4I
'8 2 u6
BC 10 Q CX
.i8
__________________________________________________________________
195 SUST
:
_____________________________________________________________________
! g
'8 BC N u t$
4I
'8 2 i8
b i E% 38B
BN 57 ! u 6
6&C B 9 BC0 "7C
'(
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 i8 E%
7 3 )T 38B
') :& 3
7 "=
E
4
Q) W< .i8 ! ; A7< *B B$ i 4$
2 ;4:
*B eUx< i i
3 4) Wo! ; ;$A< i8 ! i Av
38B * W< "=
a4 Y4
B ! .T-A
7 Q9 M W B Y4 3
i8 3 i ) B0 *0 W<
__________________________________________________________________
196 SUST
:
_____________________________________________________________________
:
=$>
) 6'-
3 H[ *: 9
B READ &B =$< u 9
BX & ! ;B#% E
B E%&
__________________________________________________________________
197 SUST
:
_____________________________________________________________________
E
B *[ ‘?’ E5
U(
(N- E
B S4 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(
3I
&
6R 9
Multiplication and Division Instructions
t&
6tR
'(
& =#$ ! B9:
g'(
&
6R ' E
0 '
.;0(R 3[ 7 x 7(9
__________________________________________________________________
199 SUST
:
_____________________________________________________________________
__________________________________________________________________
202 SUST
:
_____________________________________________________________________
:
'I9
'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
__________________________________________________________________
204 SUST
:
_____________________________________________________________________
IMUL B ; AX = 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! fO 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
__________________________________________________________________
206 SUST
:
_____________________________________________________________________
__________________________________________________________________
207 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
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&
":,< B0
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
:
_____________________________________________________________________
__________________________________________________________________
211 SUST
:
_____________________________________________________________________
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 * '(
&
it8 ! B#%0 *B
'8+ ? C i8
count 7tC & ! 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:%
H5
]O
6 "-% b4 M AX & ! 7$ *
t *0 E: FC *B !
j:% !
( count t1 ! 7$ 7() i8 !
.
,+ ! (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
:
_____________________________________________________________________
__________________________________________________________________
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 S4N @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
:
_____________________________________________________________________
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
tU(
t(N- =t$> E
B INDEC g&B =$<
.b0t
O 3 G+( *: "= *[ E5
*t @O W< .+ 9 - ":,o * 9NB
(9 0 3 2
B 5 PO)
B+( x
4A g'(
*t tB .tB$ 3 "=
S4N 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' S4N bNB
INDEC PROC
; Reads a number in range -32768 to 32767
; input : None
__________________________________________________________________
218 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
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! ftCB @
.Overflow
:3Bt9 0 ( QR fCB
10 tt! total tt1 6tt tt(
__________________________________________________________________
222 SUST
:
_____________________________________________________________________
t1' "tB
t
2$ ( 4I
.total
E%t& Et
B t
C b
QtR ftCB ]O 99999 * A7o
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
:
_____________________________________________________________________
__________________________________________________________________
225 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
SN
E%t Xt0 StN t V Q9 wO5
t! ) *0 Outdec , Indec =$>
.
3t )T E
INDEC =$> B * /8
QR! fO
tA7o E%t& z& E
B S4 F)9 /9
St4N Et
B (65535 gtO) 4I t 3#
2t 4tI ZHt (& 3#
(N-
.
N
:
remainder R
2
__________________________________________________________________
228 SUST
:
_____________________________________________________________________
'%
4 eL !
Arrays and addressing Modes
t! t- 2t dC4
N- V !
6Ut- t$:7 "=
dC4 hUI! (
ctB0 3t8B
t C ? ! ?7C "7 !
? ! 6U- 7( @&B 1 3 7(
6U- ) 2 E
B S4
) FB
C
P ! $: ? 2 T'4 FN&
__________________________________________________________________
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
:
_____________________________________________________________________
__________________________________________________________________
231 SUST
:
_____________________________________________________________________
tt'%
tt4 ettL btt tt =#tt
.
%&
ADDRESSING MODES
4 k49
t4'
t'% k49
[U[ 2 h
'0
:g
Register Mode U& n4 /1
__________________________________________________________________
235 SUST
:
_____________________________________________________________________
t$B 3000h
tOj> t! 20FEh *
2-
! ?U(9 Oj5 Q9 ]O 031Dh *
3 hB9 7O . 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
:
_____________________________________________________________________
__________________________________________________________________
238 SUST
:
_____________________________________________________________________
__________________________________________________________________
240 SUST
:
_____________________________________________________________________
gt&B 7t(
!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
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 S4
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
:
_____________________________________________________________________
0789h ALPHA + 3 + 1 E
6tt8 :tt F
CCa x
B-
E%tt 3tt8B 5 G
AX &
__________________________________________________________________
245 SUST
:
_____________________________________________________________________
Index
t
t4 E%t :
4I
B-
Mod
XOR SI, SI
__________________________________________________________________
246 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 !
__________________________________________________________________
249 SUST
:
_____________________________________________________________________
MOV BP , SP
MOV AX , [ BP]
MOV BX , [ BP + 2]
MOV CX , [ BP + 4]
__________________________________________________________________
251 SUST
:
_____________________________________________________________________
: 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
:
_____________________________________________________________________
: 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
END MAIN
Debug St4 E%t S4N
0 38B
t < S4N 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
:3BN W P
*tB Pt 3t( ":N( 3BN W P
*t: c *: BC ( ) 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'(
3BN
Row Major Order ca_ca .1
ct h! ;') c 3B#%0 *B ]O
8 4I
Column Major Order 7(_7( .2
__________________________________________________________________
257 SUST
:
_____________________________________________________________________
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
:
_____________________________________________________________________
__________________________________________________________________
259 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
__________________________________________________________________
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
__________________________________________________________________
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
3BN W !
;t ?t(9 7 Pta 5 ; A P :I
":ta t! Q#% words 3( ":N( a(
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 $ ! "7C @AT Byte BC ( U
t& @tCB AL & BC BC0 *B
Et
B t
tBN
Oj> Q( g'( BX
: 0_
__________________________________________________________________
264 SUST
:
_____________________________________________________________________
: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
?7tC
t: + E
B b S4N
__________________________________________________________________
265 SUST
:
_____________________________________________________________________
.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
:
_____________________________________________________________________
__________________________________________________________________
269 SUST
:
_____________________________________________________________________
__________________________________________________________________
270 SUST
:
_____________________________________________________________________
tBN
tOj> Q( Cx & ! N "(
__________________________________________________________________
271 SUST
:
_____________________________________________________________________
__________________________________________________________________
272 SUST
:
_____________________________________________________________________
__________________________________________________________________
273 SUST
:
_____________________________________________________________________
__________________________________________________________________
274 SUST
:
_____________________________________________________________________
; A7< *0 G *
(N- PRINTHEX =$>
.S4N
B !
,
String Instructions U& 2 9
t'%
t4 kt49 E%t&0 t
__________________________________________________________________
275 SUST
:
_____________________________________________________________________
: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( fCB
. S4N ! 3 : S7 ( 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 8009
. 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
:
tB ; 4 9 9 MOVSB NB
.O / ! ") ! 3 2
:REP
H7N
. n
! "O
4A 2 MOVSB B
PtC 7t( 2t *tB PtC 3 7(
t t0 :80 7( ) 6'-
t0 *B M W CX & ! (MOVSB
REP MOVSB
3t N 7t( 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 S4 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
:
_____________________________________________________________________
__________________________________________________________________
280 SUST
:
_____________________________________________________________________
__________________________________________________________________
281 SUST
:
_____________________________________________________________________
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
(N- E
B Disp_Str & =$>
6t'- PtC 7t( SI & < +B
. BX & ! "7$ (NL
For count times Do
__________________________________________________________________
284 SUST
:
_____________________________________________________________________
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
? ?7C
ES:DI Q ( ") BC K-B
*tB
F&O AL & BC 3
.t t0
3B#%0 *B 5 e:N 2!:
:C
__________________________________________________________________
287 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
]BtC0 *tB 0 .
3B#%0 *B
et
t Ft&O DI , SI 3'& BC
. ?05
__________________________________________________________________
290 SUST
:
_____________________________________________________________________
__________________________________________________________________
291 SUST
:
_____________________________________________________________________
__________________________________________________________________
292 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
'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 S4 3 =#$ F)9
ABCDEFGHIZ p :a> 4I p
B4
t! 3t BN E
B S4 3 =#$ F)9 .3
Z& I
I 0 ?7) B PC 3RB p4 .4
STR DB ‘this is an ASCIIz String’ , θ
:
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 S4 F)9
t . 3 t 3B-t ! (i8) c'% 3
3t8B Gt 3 p BC E
B M W
.305 3 ;0=
"WC E:
(NL "7( *B ! .9
:I 3
123
12465
131
__________________________________________________________________
297 SUST
:
_____________________________________________________________________
__________________________________________________________________
298 SUST
:
_____________________________________________________________________
__________________________________________________________________
299 SUST
:
_____________________________________________________________________
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+
==============================
; program: DosVer.asm
; purpose: gets the DOS Version using
;interrupt 21h function 30h
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
; 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
:
_____________________________________________________________________
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- !
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
:
_____________________________________________________________________
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
,+ )
t8 SN
(
4:
PC
,+ y' *
tI @A 1' @Oo
8 SN 2
1'
*t 2
1 S4N
(&'
N&4 \8N
1
__________________________________________________________________
320 SUST
:
_____________________________________________________________________
end.
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:
3tj
t4:
?U(9
C SN 1+0
e1t Gt S4N . 8
M W g'( M
'0 ! 3j 9
becasod@hotmail.com
becaso_d@yahoo.com
moonweep@hotmail.com
__________________________________________________________________
329 SUST