ASSEMBLY LANGUAGE PROGRAMMING EXAMPLES
ASSEMBLY LANGUAGE PROGRAMMING EXAMPLES
Addition Programs
Example 1: Addition of two 8-bit numbers whose
sum is 8-bits.
Explanation:
This assembly language program adds two 8-bit numbers stored in two memory
locations .The sum of the two numbers is 8-bits only. The necessary algorithm
and flow charts are given below.
ALGORITHM:
Step1. :
Initialize H-L pair with memory address XX00 (say: 9000).
Step2. : Clear
accumulator.
Step3. : Add
contents of memory location M to accumulator.
Step4. :
Increment memory pointer (i.e. XX01).
Step5. : Add
the contents of memory indicated by memory pointer to accumulator.
Step6. : Store
the contents of accumulator in 9002.
Step7. : Halt
PROGRAM:
Address of the memory location
|
Hex code
|
Label
|
Mnemonics
|
Comments
|
|
Op-code
|
Operand
|
||||
8000
|
21,00,90
|
LXI
|
H, 9000
|
Initialise
memory pointer to point the first data location 9000.
|
|
8003
|
3E
|
MVI
|
A, 00
|
Clear
accumulator
|
|
8004
|
00
|
||||
8005
|
86
|
ADD
|
A, M
|
The first
number is added to accumulator [A] = [A] + M
|
|
8006
|
23
|
INX
|
H
|
Increment
the memory pointer to next location of the Data.
|
|
8007
|
86
|
ADD
|
A, M
|
The 2nd
number is added to contents of accumulator
|
|
8008
|
32,02,90
|
STA
|
9002
|
The contents
of accumulator are stored in memory 8009 02 location 9002.
|
|
800B
|
76
|
HLT
|
Stop the execution
|
Ex: Input: Ex:
(i) 9000 – 29 H & 9001 – 16 H Ex :(ii) 9000 –49 H & 9001 –32 H
Result: Ex:
(i) 9002 – 3F H Ex :( ii) 9002 – 7B
Example 2: Addition of two 8-bit numbers whose sum
is 16 bits.
Explanation:
The first 8-bit number is stored in one memory location (say 8500) and the
second 8-bit number is stored in the next location (8501).Add these two numbers
and check for carry. Store the LSB of the sum in one memory location (8502) and
the MSB (carry) in the other location (8503).
ALGORITHM:
Step1. :
Initialize H-L pair with memory address X (say: 8500).
Step2. : Clear
accumulator.
Step3. : Add
contents of memory location M to accumulator.
Step4. :
Increment memory pointer (i.e. 8501).
Step5. : Add
the contents of memory indicated by memory pointer to accumulator.
Step6. : Check
for Carry
Step 7: Store
the sum in 8502.
Step 8: Store
the Carry in 8503 location
Step 9: Halt
PROGRAM:
Address of the memory location
|
Hex code
|
Label
|
Mnemonics
|
Comments
|
|
Op-code
|
Operand
|
||||
8000
|
21,00,85
|
LXI
|
H, 8500
|
Initialise
memory pointer to point the first data location 8500.
|
|
8003
|
3E
|
MVI
|
A, 00
|
Clear
accumulator
|
|
8004
|
00
|
||||
8005
|
86
|
ADD
|
A, M
|
The first
number is added to accumulator [A] = [A] + M
|
|
8006
|
0E
|
MVI
|
C, 00
|
Initial
value of Carry is 0
|
|
8007
|
00
|
||||
8008
|
23
|
INX
|
H
|
Increment
the memory pointer to next location of the Data.
|
|
8009
|
86
|
ADD
|
A, M
|
The 2nd number is added to contents of
accumulator
|
|
800A
|
32,0E,80
|
JNC
|
FWD
|
Is Carry
exists? No, go to the label FWD
|
|
800D
|
0C
|
INR
|
C
|
Make carry
=1
|
|
800E
|
32,02,85
|
FWD
|
STA
|
8502H
|
The sum is
stored in memory location 8502.
|
8011
|
79
|
MOV
|
A, C
|
A=C
|
|
8012
|
32,03,85
|
STA
|
8503 H
|
Store the
carry at 8503 location
|
|
8015
|
76
|
HLT
|
Stop the
execution
|
Ex: Input:
8500 – 97 H & 8501 – 98H
RESULT: 8502 –
32 H & 8503 - 01 H
Example 3: Decimal addition of two 8-bit numbers
whose sum is 16 bits.
Explanation:
Decimal addition of two 8-bit numbers is same as that of two 8-bit numbers
program. Except that the use of DAA instruction. The first 8-bit number is
stored in one memory location (say 8500) and the second 8-bit number is stored
in the next location(8501).Add these two numbers and use the DAA instruction to
get the result in decimal. Also check for carry. Store the LSB of the sum in
one memory location (8502) and the MSB (carry) in the other location (8503).
ALGORITHM:
Step1. :
Initialize H-L pair with memory address XXXX (say: 8500).
Step2. : Clear
Carry register C.
Step3. : Move
contents of memory location M to accumulator.
Step4. :
Increment memory pointer (i.e. 8501).
Step5. : Add
the contents of memory indicated by memory pointer to accumulator.
Step6. : Apply
the instruction DAA (Decimal adjust after addition)
Step7: Check
for Carry
Step8: Store
the sum in XX02.
Step9: Store
the Carry in XX03 location
Step10: Halt
PROGRAM
Address of the memory location
|
Hex code
|
Label
|
Mnemonics
|
Comments
|
|
Op-code
|
Operand
|
||||
8000
|
21,00,85
|
LXI
|
H, 8500
|
Initialise
memory pointer to point the first data location 8500.
|
|
8003
|
3E
|
MVI
|
C, 00
|
Clear Carry register C.
|
|
8004
|
00
|
||||
8005
|
7E
|
MOV
|
A, M
|
Move contents of memory
location M to accumulator.
|
|
8006
|
23
|
INX
|
H
|
Increment memory pointer
(i.e. 8501).
|
|
8007
|
86
|
ADD
|
A, M
|
The first number is added to accumulator [A] = [A]+M
|
|
8008
|
27
|
DAA
|
Apply the instruction
DAA(Decimal adjust after addition)
|
||
8009
|
D2,OD,80
|
JNC
|
FWD
|
Is Carry exists? No, go to the label FWD
|
|
800C
|
OC
|
INR
|
C
|
Make carry =1
|
|
800D
|
32,02,85
|
FWD
|
STA
|
8502 H
|
The contents of accumulator are stored in memory location 8502.
|
8010
|
79
|
MOV
|
A,C
|
Carry is moved to
accumulator
|
|
8011
|
32,03,85
|
STA
|
8503 H
|
A Carry is stored in the location
8503
|
|
8014
|
76
|
HLT
|
Stop the execution
|
Ex: Input:
8500 – 67 D & 8501 – 85 D
RESULT: 8502 –
52 D & 8503 – 01 (Carry)
Example 4: Addition of two 16-bit numbers whose sum
is 16 bits or more
Explanation:
First 16-bit number is stored in two consecutive locations (Ex 8500 &8501) because
in each location we can store only one 8-bit number. Store the second 16-bit
number in the next two consecutive locations (For Ex: 8502 &8503).Add the
LSB of the first number to the LSB of the second number and the MSB of the
first number to the MSB of the second number using the DAD instruction. Store
the sum in the next two locations and the carry (if any) in the third location
ALGORITHM:
Step1: First
16 bit number is in locations 8500 & 8501 respectively
Step2: Second
16-bit number is in locations 8502 & 8503
Step3: Add the
two 16-bit numbers using DAD Instruction.
Step4: Sum is
stored in locations 8504 & 8505.
Step5: Carry
(if any) is stored in the location 8506.
Step6: Halt
PROGRAM:
Address of the memory location
|
Hex code
|
Label
|
Mnemonics
|
Comments
|
|
Op-code
|
Operand
|
||||
8000
|
2A,00,85
|
LHLD
|
8500 H
|
First 16-bit
number in H-L pair
|
|
8003
|
EB
|
XCHB
|
Exchange
first number to D-E Pair
|
||
8004
|
2A,02,85
|
LHLD
|
8502
|
||
8007
|
0E,00
|
MVI
|
00
|
MSB of the
sum is initially 00
|
|
8009
|
19
|
DAD
|
D
|
Add two 16
–bit numbers
|
|
800A
|
D2,0E,80
|
JNC
|
FWD
|
FWD Is
Carry? If yes go to the next line .Else go to the 800E Location
|
|
800D
|
OC
|
INR
|
C
|
Increment
carry
|
|
800E
|
22,04,85
|
FWD
|
SHLD
|
8504 H
|
Store the
LSB of the Sum in 8504 & MSB in 8505 locations
|
8011
|
79
|
MOV
|
A,C
|
MSBs of the
sum is in Accumulator
|
|
8012
|
32,06,85
|
STA
|
8506 H
|
Store the
MSB (Carry) of the result in 8506 location
|
|
8015
|
76
|
HLT
|
Stop the
execution
|
Ex: INPUT:
·
8500- 12 H LSB of the 1st Number
·
8501- 13 H MSB of the 1st Number
·
8502 -13 H LSB of the 2nd Number
·
8503 -12H MSB of the 2nd number
RESULT: 8504 -
25H LSB of the Sum8505 – 25H MSB of the Sum 8506 -- 00 Carry.
Subtraction Programs:
Example 5: Subtraction of two 8-bit numbers without
borrows.
Explanation: It’s a simple program similar to
addition of two 8- bit numbers, except that we use the instruction SUB instead
of ADD. The first 8-bit number is stored in XX00 memory location and the second
8-bit number is stored in the XX01 location .Use the SUB instruction and store
the result in the XX02 location.
ALGORITHM:
Step1. :
Initialise H-L pair with the address of minuend.
Step2. : Move
the minuend into accumulator
Step3. :
Increment H-L pair
Step4. :
Subtract the subtrahend in memory location M from the minuend.
Step5. : Store
the result in XX02.
Step6. : Stop
the execution
PROGRAM:
Address of the memory location
|
Hex code
|
Label
|
Mnemonics
|
Comments
|
|
Op-code
|
Operand
|
||||
8000
|
21,00,85
|
LXI
|
H, 8500
|
Initialise
H-L pair and get the First number in to 8500 location
|
|
8003
|
7E
|
MOV
|
A,M
|
[A] = [M]
|
|
8004
|
23
|
INX
|
H
|
Increment
the memory pointer to next location of the Data.
|
|
8005
|
96
|
SUB
|
M
|
The first
number is Subtract to accumulator [A] = [A] - M
|
|
8006
|
23
|
INX
|
H
|
Increment
the memory pointer to next location of the Data.
|
|
8007
|
77
|
MOV
|
M,A
|
Store the
result in the location 8502
|
|
8008
|
76
|
HLT
|
Stop the
execution
|
INPUT: Ex:
8500- 59H & 8501- 30H
Result: 8502 –
29H
Example 6:
Subtraction of two 8-bit Decimal numbers.
Explanation:
In this program we can’t use the DAA instruction after SUB or SBB instruction because
it is decimal adjust after addition only. So, for decimal subtraction the
number which is to be subtracted is converted to 10’s complement and then DAA
is applied.
ALGORITHM:
Step1. :
Initialise H-L pair with the address of second number (XX01).
Step2. : Find
its ten’s complement
Step3. :
Decrement the H-L pair for the first number (XX00)
Step4. : Add
the first number to the 10’s complement of second number.
Step5. : Store
the result in XX02.
Step6. : Stop
the execution
PROGRAM:
Address of the memory location
|
Hex code
|
Label
|
Mnemonics
|
Comments
|
|
Op-code
|
Operand
|
||||
8000
|
21,00,85
|
LXI
|
H, 8500
|
Initialise
H-L pair and get the Second number in to 8500 location
|
|
8003
|
3E
|
MVI
|
A, 99
|
[A] = 99
|
|
8005
|
96
|
SUB
|
M
|
9’s
complement of second number
|
|
8006
|
3C
|
INR
|
A
|
10’s
complement of second number
|
|
8007
|
2B
|
DCX
|
H
|
Increment
the memory pointer to next location of the Data.
|
|
8008
|
86
|
ADD
|
M
|
Add first
number to 10’s complement of second number
|
|
8009
|
27
|
DAA
|
|||
800A
|
32,02,85
|
STA
|
8502
|
Store the
result in the location 8502
|
|
800D
|
76
|
HLT
|
Stop the
execution
|
Ex: Input: 8500 -76 D & 8501- 35 D
Result: 8502 - 41 D
Example 6:
Subtraction of two 16 –bit numbers.
Explanation:
It is very similar to the addition of two 16-bit numbers. Here we use SUB
&SBB instructions to get the result .The first 16-bit number is stored in
two consecutive locations and the second 16-bit number is stored in the next
two consecutive locations. The lsbs are subtracted using SUB instruction and
the MSBs a are subtracted using SBB instruction. The result is stored in
different locations.
ALGORITHM:
Step1. : Store
the first number in the locations 8500 & 8501.
Step2. : Store
the second number in the locations 8502 &8503.
Step4. :
Subtract the second number from the first number with borrow.
Step5. : Store
the result in locations 8504 & 8505.
Step6. : Store
the borrow in location 8506
Step 7: Stop
the execution
PROGRAM:
Address of the memory location
|
Hex code
|
Label
|
Mnemonics
|
Comments
|
|
Op-code
|
Operand
|
||||
8000
|
2A,00,85
|
LHL
|
D,8500H
|
First 16-bit number in H-L pair
|
|
8003
|
EB
|
XCHG
|
Exchange first number to D-E Pair
|
||
8004
|
2A,02,85
|
LHLD
|
8502 H
|
Get the second 16-bit number in H-L
pair
|
|
8007
|
7B
|
MOV
|
A,E
|
Get the lower byte of the First number
in to Accumulator
|
|
8008
|
95
|
SUB
|
L
|
Subtract the lower byte of the second
number
|
|
8009
|
6F
|
MOV
|
L,A
|
Store the result in L- register
|
|
800A
|
MOV
|
A,D
|
Get higher byte of the first number
|
||
800A
|
9C
|
SBB
|
H
|
Subtract higher byte of second number
with borrow
|
|
800B
|
67
|
MOV
|
H,A
|
||
800C
|
22,04,85
|
SHLD
|
8504
|
Store the result in memory locations
with LSB in 8504 & MSB in 8505
|
|
800F
|
76
|
HLT
|
Stop the
execution
|
Ex: INPUT:
·
8500- FF H LSB of the 1st Number
·
8501 - FF H MSB of the 1st Number
·
8502 -EE H LSB of the 2nd Number
·
8503 –EE H MSB of the 2nd number
RESULT: 8504 - 11H LSB & 8505 – 11 H MSB
Multiplication Programs
Example 7:
Multiplication of two 8-bit numbers. Product is 16-bits.
Explanation:
The multiplication of two binary numbers is done by successive addition. When
multiplicand is multiplied by 1 the product is equal to the multiplicand, but
when it is multiplied by zero, the product is zero. So, each bit of the
multiplier is taken one by one and checked whether it is 1 or 0 .If the bit of
the multiplier is 1 the multiplicand is added to the product and the product is
shifted to left by one bit. If the bit of the multiplier is 0, the product is
simply shifted left by one bit. This process is done for all the 8-bits of the
multiplier.
ALGORITHM:
Step 1:
Initialise H-L pair with the address of multiplicand.(say 8500)
Step 2:
Exchange the H-L pair by D-E pair. so that multiplicand is in D-E pair.
Step 3: Load
the multiplier in Accumulator.
Step 4: Shift
the multiplier left by one bit.
Step 5: If
there is carry add multiplicand to product.
Step 6:
Decrement the count.
Step 7: If
count ¹ 0; Go to step 4
Step 8: Store
the product i.e. result in memory location.
Step 9: Stop
the execution
PROGRAM:
Address of the memory location
|
Hex code
|
Label
|
Mnemonics
|
Comments
|
|
Op-code
|
Operand
|
||||
8000
|
2A,00,85
|
LHLD
|
H,8500
|
Load the
multiplicand in to H-L pair
|
|
8003
|
EB
|
XCHG
|
Exchange the
multiplicand in to D-E pair
|
||
8004
|
3A,02,85
|
LDA
|
8502
|
Multiplier in
Accumulator
|
|
8007
|
21,00,00
|
LXI
|
H,0000
|
Initial
value in H-L pair is 00
|
|
800A
|
0E,08
|
MVI
|
C,08
|
Count =08.
|
|
800C
|
29
|
LOOP
|
DAD
|
H
|
Shift the
partial product left by one bit
|
800D
|
17
|
RAL
|
Rotate
multiplier left by one bit
|
||
800E
|
D2,12,80
|
JNC
|
FWD
|
Is Multiplier
bit =1? No go to label FWD
|
|
8011
|
19
|
DAD
|
D
|
Product
=Product +Multiplicand
|
|
8012
|
0D
|
FWD
|
DCR
|
C
|
COUNT=COUNT-1
|
8013
|
C2
|
JNZ
|
LOOP
|
||
8016
|
22,03,85
|
SHLD
|
8503
|
Store the
result in the locations 8503 & 8504
|
|
8019
|
76
|
HLT
|
Stop the
execution
|
INPUT:
·
8500 8AH – LSB of Multiplicand
·
8501 00 H – MSB of Multiplicand
·
8502 52 H - Multiplier
Result: 8503
34 H – LSB of Product & 8504 2C H – MSB of Product
Division
Programs
Example 7:
Division of a 16- bit number by a 8-bit number.
Explanation: The division of a 16/8-bit number by a
8-bit number follows the successive subtraction method. The divisor is
subtracted from the MSBs of the dividend .If a borrow occurs, the bit of the
quotient is set to 1 else 0.For correct subtraction process the dividend is
shifted left by one bit before each subtraction. The dividend and quotient are
in a pair of register H-L. The vacancy raised due to shifting is occupied by
the quotient .In the present example the dividend is a 16-bit number and the
divisor is an 8-bit number. The dividend is in locations 8500
&8501.Similarly the divisor is in the location 8502.The quotient is stored
at 8503 and the remainder is stored at 8504 locations.
ALGORTHM:
STEP1. :
Initialise H-L pair with address of dividend.
STEP2. : Get
the divisor from 8502 to register A & then to Reg. B
STEP3. : Make
count C=08
STEP4. : Shift
dividend and divisor left by one bit
STEP 5:
Subtract divisor from dividend.
STEP6. : If
carry = 1: go to step 8 else step7.
STEP7. :
Increment quotient register.
STEP8. :
Decrement count in C
STEP9. : If
count not equal to zero go to step 4
STEP10: Store
the quotient in 8503
STEP11: Store
the remainder in 8504
STEP12: Stop
execution.
PROGRAM:
Address of the memory location
|
Hex code
|
Label
|
Mnemonics
|
Comments
|
|
Op-code
|
Operand
|
||||
8000
|
21,00,85
|
LHLD
|
H, 8500
|
Initialize
the H-L pair for dividend
|
|
8003
|
3A,02,85
|
LDA
|
8502 H
|
Load the
divisor from location 8502 to accumulator
|
|
8006
|
47
|
MOV
|
B,A
|
Move Divisor
to Reg. B from A
|
|
8007
|
0E,08
|
MVI
|
C,08
|
Count =08
|
|
8009
|
29
|
BACK
|
DAD
|
H
|
Shift
dividend and quotient eft by one bit Ex: Input & Result
|
800A
|
7C
|
MOV
|
A,H
|
MSB of
dividend in to accumulator
|
|
800B
|
90
|
SUB
|
B
|
Subtract
divisor from MSB bits of divisor
|
|
800C
|
DA,11,80
|
JC
|
FWD
|
Is MSB part
of dividend > divisor? No, go to label FWD
|
|
800F
|
67
|
MOV
|
H,A
|
MSB of the
dividend in Reg. H
|
|
8010
|
2C
|
INR
|
L
|
Increment
quotient
|
|
8011
|
0D
|
FWD
|
DCR
|
C
|
Decrement
count
|
8012
|
C2,09,80
|
JNZ
|
BACK
|
If count is
not zero jump to8009 location
|
|
8015
|
22,03,85
|
SHLD
|
8503 H
|
Store
quotient in 8503 and remainder in 8504 locations
|
|
8018
|
76
|
HLT
|
Stop the
execution
|
Ex: Input & Result
·
8500 64 _ LSB of Dividend
·
8501 00 _ MSB of Dividend
·
8502 07 _ Divisor
·
8503 0E _ Quotient
·
8504 02 _ Remainder
Largest & Smallest numbers in an
Array
Example 8: To find the largest number in a data array
Explanation:
To find the largest number in a data array of N numbers (say)first the count is
placed in memory location (8500H) and the data are stored in consecutive
locations.(8501….onwards).The first number is copied to Accumulator and it is
compared with the second number in the memory location. The larger of the two
is stored in Accumulator. Now the third number in the memory location is again
compared with the accumulator. And the largest number is kept in the
accumulator. Using the count, this process is completed, until all the numbers
are compared .Finally the accumulator stores the smallest number and this
number is stored in the memory location.85XX.
ALGORTHM:
Step1: Store
the count in the Memory location pointed by H-L register.
Step2: Move
the I st number of the data array in to accumulator
Step3: Compare
this with the second number in Memory location.
Step4: The
larger in the two is placed in Accumulator
Step5: The
number in Accumulator is compared with the next number in memory .
Step 6: The
larger number is stored in Accumulator.
Step 7; The
process is repeated until the count is zero.
Step 8: Final
result is stored in memory location.
Step 9: Stop
the execution
PROGRAM
Address of the memory location
|
Hex code
|
Label
|
Mnemonics
|
Comments
|
|
Op-code
|
Operand
|
||||
8000
|
21,00,85
|
LXI
|
H, 8500
|
Initialise H-L
PAIR
|
|
8003
|
7E
|
MOV
|
C,M
|
Count in the
C register
|
|
8004
|
23
|
INX
|
H
|
First number
in H-L pair
|
|
8005
|
4E
|
MOV
|
A, M
|
Move first
number in to Accumulator
|
|
8006
|
0D
|
DCR
|
C
|
Decrement
the count
|
|
8007
|
91
|
LOOP1
|
INX
|
H
|
Get the next
number
|
8008
|
BE
|
CMP
|
M
|
Compare the
next number with previous number
|
|
8009
|
D2,0D,80
|
JNC
|
LOOP2
|
Is next
number > previous maximum? No, go to the loop2
|
|
800C
|
7E
|
MOV
|
A,M
|
If, yes move
the large number in to Accumulator
|
|
800D
|
OD
|
LOOP2
|
DCR
|
C
|
Decrement
the count
|
800E
|
C2,07,80
|
JNZ
|
LOOP1
|
If count not
equal to zero, repeat
|
|
8012
|
78
|
||||
8013
|
32,XX,85
|
STA
|
85XX
|
Store the
largest number in the location 85XX
|
|
8016
|
76
|
HLT
|
Stop the
execution
|
Ex: Input:
·
8500- N(Say N=7 )
·
8501-05
·
8502-0A
·
8503-08
·
8504-14
·
8505 -7F
·
8506-25
·
8507-2D
Result: 8508 -
7F
Example 9: To find the smallest number in a data
array.
Explanation:
To find the smallest number in a data array of N numbers (say)first the count
is placed in memory location (8500H) and the data are stored in consecutive
locations.(8501….onwards).The first number is copied to Accumulator and it is
compared with the second number in the memory location. The smaller of the two
is stored in Accumulator. Now the third number in the memory location is again
compared with the accumulator. and the smallest number is kept in the
accumulator. Using the count, this process is completed until all the numbers
are compared .Finally the accumulator stores the smallest number and this
number is stored in the memory location.85XX.
ALGORTHM:
Step1: Store
the count in the Memory location pointed by H-L register.
Step2: Move
the 1st number of the data array in to accumulator
Step3: Compare
this with the second number in Memory location.
Step4: The
smaller in the two is placed in Accumulator
Step5: The
number in Accumulator is compared with the next number in memory .
Step 6: The
smaller number is stored in Accumulator.
Step 7; The
process is repeated until the count is zero.
Step 8: Final
result is stored in memory location.
Step 9: Stop
the execution
PROGRAM
Address of the memory location
|
Hex code
|
Label
|
Mnemonics
|
Comments
|
|
Op-code
|
Operand
|
||||
8000
|
21,00,85
|
LXI
|
H, 8500
|
Initialise
the H-L pair.
|
|
8003
|
7E
|
MOV
|
C,M
|
Count in the
C register
|
|
8004
|
23
|
INX
|
H
|
First number
in H-L pair
|
|
8005
|
4E
|
MOV
|
A, M
|
Move first
number in to Accumulator
|
|
8006
|
0D
|
DCR
|
C
|
Decrement
the count
|
|
8007
|
91
|
LOOP1
|
INX
|
H
|
Get the next
number
|
8008
|
BE
|
CMP
|
M
|
Compare the
next number with previous number
|
|
8009
|
D2,0D,80
|
JC
|
LOOP2
|
Is next
number <previous smallest ?If yes go to the loop2
|
|
800C
|
7E
|
MOV
|
A,M
|
No, move the
smaller number in to Accumulator
|
|
800D
|
0D
|
LOOP2
|
DCR
|
C
|
Decrement
the count
|
800E
|
C2,07,80
|
JNZ
|
LOOP1
|
If count not
equal to zero, repeat
|
|
8012
|
78
|
||||
8013
|
32,XX,85
|
STA
|
85XX
|
Store the
smallest number in the location 85XX
|
|
8016
|
76
|
HLT
|
Stop the
execution
|
Ex: Input:
·
8500 - N((Say N=7)
·
8501-09
·
8502-0A
·
8503-08
·
8504-14
·
8505 -7F
·
8506-04
·
8507-2D
Result: 8508 –
04
REFERENCES
1. R. S. Gaonkar, Microprocessor
Architecture, Programming, and Applications with the 8085, Fifth Edition,
Penram International Publishing (India) Private Limited.
2. S Ghoshal, Microprocessor Based
System Design, Macmillan India Limited, 1996
3. M. Mano, Digital Logic and Computer
Design, Prentice – Hall India
4. B. Ram - Fundamentals of
Microprocessor and Microcontrollers
5. “Microprocessors: Principles and
Applications” by A Pal
6. “Microprocessors and
Microcontrollers : Architecture, Programming and Interfacing Using 8085, 8086
and 8051” by Soumitra Kumar Mandal
7. “Introduction to Microprocessors and
Microcontrollers” by Crisp John Crisp
8. “Microprocessors And
Microcontrollers” by A Nagoor Kani
9. “Microprocessors And
Microcontrollers : Architecture, Programming and System Design 8085, 8086,
8051, 8096” by KRISHNA KANT
10. “8 - Bit Microprocessor” by Vibhute
Comments
Post a Comment