0% found this document useful (0 votes)
12 views52 pages

MP Record

The document describes an experiment to perform arithmetic operations on 16-bit numbers using an 8086 microprocessor. It includes programs to add, subtract, multiply and divide two 16-bit numbers by moving the operands and results to/from memory locations. Sample inputs and outputs are provided showing the programs successfully perform the arithmetic operations between the numbers stored in memory.

Uploaded by

bvarssha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views52 pages

MP Record

The document describes an experiment to perform arithmetic operations on 16-bit numbers using an 8086 microprocessor. It includes programs to add, subtract, multiply and divide two 16-bit numbers by moving the operands and results to/from memory locations. Sample inputs and outputs are provided showing the programs successfully perform the arithmetic operations between the numbers stored in memory.

Uploaded by

bvarssha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 52

CS18313 – MICROPROCESSOR LABORATORY

Ex no : 1
Date :8.12.21
ADDITION OF TWO 16 BIT NUMBERS USING 8086

AIM:
To perform addition of two 16 bit numbers using 8086.
PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


2000 MOV CX,0000 B9 00 00 Move value 0 to CX register
Move value in address 2100 to AX
2003 MOV AX,@2100 8B 06 00 21
register
Move value in address 2102 to BX
2007 MOV BX,@2102 8B 1E 02 21
register
Add values in AX and BX register
200B ADD AX,BX 03 C3
and store value in AX register
200D JNC L1 73 01 Jump if no carry to L1
200F INC CX 41 Increment value in CX register by 1
Move value in AX register to the
2010 L1 MOV @2104,AX A3 04 21
address location 2104
Move value in CX register to
2013 MOV @2106,CX 89 0E 06 21
address location 2106
2017 HLT F4 Stop

SAMPLE INPUT AND OUTPUT:


ADDRESS DATA ADDRESS DATA
ADDRESS DATA
2100 1234 2100 AB03 2100 0001

2102 0001 2102 10FF 2102 0101


2104 1235 2104 BC02 2104 0102
2106 0000 2106 0000 2106 0000

RESULT:
Thus, addition of two 16 bit numbers has been performed and output has been generated
successfully.

REGISTER NO: Page no:01


CS18313 – MICROPROCESSOR LABORATORY
Ex no : 2
Date :8.12.21
SUBTRACTION OF TWO 16 BIT NUMBERS USING 8086

AIM:
To perform subtraction of two 16 bit numbers using 8086.
PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


2000 MOV CX,0000 B9 00 00 Move value 0 to CX register
Move value in address 2100 to AX
2003 MOV AX,@2100 8B 06 00 21
register
Move value in address 2102 to BX
2007 MOV BX,@2102 8B 1E 02 21
register
Subtract values in AX and BX
200B SUB AX,BX 03 C3 register and store value in AX
register
200D JNC L1 73 01 Jump if no carry to L1
200F INC CX 41 Increment value in CX register by 1
2010 NEG AX 41 Negate value in AX register
Move value in AX register to the
2012 L1 MOV @2104,AX A3 04 21
address location 2104
Move value in CX register to
2015 MOV @2106,CX 89 0E 06 21
address location 2106
2019 HLT F4 Stop

SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA ADDRESS DATA


2100 0008 2100 000A 2100 002D
2102 0006 2102 000E 2102 00FE
2104 0002 2104 0004 2104 00AD
2106 0000 2106 0001 2106 00BC

RESULT:
Thus, subtraction of two 16-bit numbers has been performed and output has been generated
successfully.

Page no:02
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 3
Date :8.12.21
MULTIPLICATION OF TWO 16 BIT NUMBERS USING 8086

AIM:
To perform multiplication of two 16 bit numbers using 8086.

PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


Move value in address 2100 to AX
2000 MOV AX,@2100 8B 06 00 21
register
Move value in address 2102 to BX
2004 MOV BX,@2102 8B 1E 02 21
register
Multiply the value in BX register
2008 MUL BX F7 E3
with value in AX register
Move value in DX register to the
200A MOV @2104,DX 09 16 04 21
address location 2104
Move value in AX register to
200E MOV @2106,CX A3 06 21
address location 2106
2011 HLT F4 Stop

SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA ADDRESS DATA


2100 0002 2100 2002 2100 00AD
2102 0002 2102 6002 2102 00BC
2106 0004 2106 0004 2106 002D
2104 0000 2104 0001 2104 00FE

RESULT:
Thus, multiplication of two 16 bit numbers has been performed and output has been generated
successfully.

Page no:0
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 4
Date :10.12.21
DIVISION OF TWO 16 BIT NUMBERS USING 8086

AIM:
To perform division of two 16 bit numbers using 8086.

PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


Move value in address 2100 to AX
2000 MOV AX,@2100 8B 06 00 21
register
Move value in address 2102 to BX
2004 MOV BX,@2102 8B 1E 02 21
register
Multiply the value in BX register
2008 DIV BX F7 E3
with value in AX register
Move value in DX register to the
200A MOV @2104,DX 09 16 04 21
address location 2104
Move value in AX register to
200E MOV @2106,CX A3 06 21
address location 2106
2011 HLT F4 Stop

SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA ADDRESS DATA

2100 0003 2100 0005 2100 0007

2102 0002 2102 0003 2102 0007

2106 0001 2106 0001 2106 0001

2104 0001 2104 0002 2104 0000

RESULT:
Thus, division of two 16 bit numbers has been performed and output has been generated
successfully.

Page no:0
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 5
Date :10.12.21
AND OPF TWO 16 BIT NUMBERS USING 8086

AIM:
To perform and operation of two 16-bit numbers using 8086.

PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


Move value in address 2100 to AX
2000 MOV AX, @2100 8B 06 00 21
register.
Move value in address 2102 to BX
2004 MOV BX, @2102 8B 1E 02 21
register
Performs And operation of value in
2008 AND AX, BX 23 C3
AX register with BX register
Move value in AX register to
200A MOV @2200, AX A3 00 22
address location 2200
200D HLT F4 Stop

SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA ADDRESS DATA

2100 0005 2100 0A11 2100 0010

2102 0004 2102 0C10 2102 0011

2200 0004 2200 0810 2200 0010

RESULT:
Thus, AND operation of two 16-bit numbers has been performed and output has been
generated successfully.

Page no:0
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 6
Date :12.12.21
OR OF TWO 16 BIT NUMBERS USING 8086

AIM:
To perform OR of two 16-bit numbers using 8086.

PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


Move value in address 2100 to AX
2000 MOV AX, @2100 8B 06 00 21
register.
Move value in address 2102 to BX
2004 MOV BX, @2102 8B 1E 02 21
register.
Performs OR between values in AX
2008 OR AX, BX 0B C3
register with value in BX register.
Move the value in AX register to
200A MOV @2200, AX A3 00 22
address 2200.
200D HLT F4 Stop

SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA ADDRESS DATA

2100 0FF0 2100 0010 2100 0010

2102 F00F 2102 5F01 2102 0011

2200 FFFF 2200 5F11 2200 0011

RESULT:
Thus, OR operation of two 16 bit numbers has been performed and output has been
generated successfully.

Page no:0
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 7
Date :12.12.21
XOR OF TWO 16 BIT NUMBERS USING 8086

AIM:
To perform XOR of two 16 bit numbers using 8086.

PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


Move value in address 2100 to AX
2000 MOV AX, @2100 8B 06 00 21
register
Move value in address 2102 to BX
2004 MOV BX, @2102 8B 1E 02 21
register
Performs XOR of values in AX
2008 XOR AX, BX 33 C3
register with value in BX register
Move the value in AX register to
200A MOV @2200, AX A3 00 22
address 2200
200D HLT F4 Stop

SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA ADDRESS DATA

2100 0110 2100 A00C 2100 0110

2102 1001 2102 2A1B 2102 0111

2200 1111 2200 8A17 2200 0001

RESULT:
Thus, XOR operation of two numbers has been performed and output has been executed
successfully.

Page no:0
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 8
Date :12.12.21
NOT OF A 16 BIT NUMBERS USING 8086

AIM:
To perform a NOT operation of A 16-bit number.

PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


Move value in address in 2100 to
2000 MOV AX, @2100 8B 06 00 21
AX register
Performs NOT operation for the
2004 NOT AX F7 00
value in AX register
Move value in AX register to
2006 MOV @2200, AX A3 00 22
address 2200
2009 HLT F4 Stop

SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA ADDRESS DATA

2100 000A 2100 ABCA 2100 0011

2200 FFF5 2200 5435 2200 FFEE

RESULT:
Thus, NOT operation of a 16-bit number has been performed and output is executed
successfully.

Page no:0
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 9
Date : 14.12.2021
SHIFT LEFT BY 1-BIT OF A 16-BIT NUMBER USING 8086

AIM:
To perform left shift by 1-bit of a 16-bit number using 8086.

PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


Move value in address 2100 to AX
2000 MOV AX, @2100 8B 06 00 21
register
Left shift the value in AX register
2004 SHL AX, 1 D1 E0
by 1 bit
2006 MOV @2200, AX A3 00 22 Move value in AX to address 2200
2009 HLT F4 Stop

SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA ADDRESS DATA

2100 0007 2100 AB07 2100 8001

2200 000E 2200 560E 2200 0002

RESULT:
Thus, left shift of a 16-bit number by 1-bit has been performed and the output has been
generated.

Page no:0
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 10
Date : 14.12.2021
SHIFT RIGHT BY 1-BIT OF A 16-BIT NUMBER USING 8086

AIM:
To perform right shift by 1-bit of a 16-bit number using 8086.

PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


Move value in address 2100 to AX
2000 MOV AX, @2100 8B 06 00 21
register
Right shift the value in AX register
2004 SHR AX, 1 D1 E0
by 1 bit
2006 MOV @2200, AX A3 00 22 Move value in AX to address 2200
2009 HLT F4 Stop

SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA ADDRESS DATA

2100 0005 2100 7AB1 2100 8001

2200 0002 2200 3058 2200 8000

RESULT:
Thus, right shift of a 16-bit number by 1-bit has been performed and the output has been
generated.

Page no:0
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 11
Date : 14.12.2021
AVERAGE OF GIVEN WORD VALUES STORED IN MEMORY USING 8086

AIM:
To find the average of given word values using 8086.

PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


2000 MOV AX, 0000 B8 00 00 Move value 0 to AX register
2003 MOV SI, 2020 BE 20 20 Move the address 2020 to SI
2006 MOV CS, AX BE C8 Move value in AX register to CS
2008 MOV CX, 05 B9 05 00 Move value 5 to CX register
Add the value in AX register with
200B BAK ADD AX, [SI] 03 C6
the content of SI
200D INC SI 46 Increment value in SI by 1
200E INC SI 46 Increment value in SI by 1
Loop to label BAK until the value
200F LOOP BAK E2 FA
in CX register becomes 0
2011 MOV CX, 05 B9 05 00 Move value 5 to CX register
Divide value in AX register with
2014 DIV CX F7 F1
value in CX register
2016 MOV SI, 2030 BE 30 20 Move value 2030 to SI
Move value in AX register to
2019 MOV [SI], AX 8B F0
content of SI
201B INT 03 CC Stop

Page no:0
SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA ADDRESS DATA


2020 1000 2020 3000 2020 1000
2022 2000 2022 5000 2022 5000
2024 3000 2024 2000 2024 2000
2026 4000 2026 6000 2026 6000

2028 5000 2028 4000 2028 4000

2030 3000 2030 4000 2030 3000

RESULT:
Thus, average of given word values using 8086 has been performed and output has been
generated successfully.

Page no:0
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 12
Date : 14.12.2021
BLOCK TRANSFER USING 8086

AIM:
To transfer data in blocks using 8086.

PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


Move value in address 6100 to AX
2000 MOV CX, @6100 8B 0E 00 61
register
2004 MOV SI, 6200 BE 00 62 Move value 6200 to SI
2007 MOV DI, 6300 BF 00 63 Move value 6300 to DI
Move the content of SI to AX
200A L1 MOV AX, [SI] 8B C6
Register
Move the value in AX register to
200C MOV [DI], AX 8B F8
content of D1
200E INC SI 46 Increment value in SI by 1
200F INC SI 46 Increment value in SI by 1
2010 INC DI 47 Increment value in DI by 1
2011 INC DI 47 Increment value in DI by 1
2012 DEC CX 49 Decrement value in CX by 1
2013 JNZ L1 75 F5 Jump if Non Zero to L1
2015 HLT F4 Stop

Page no:0
SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA ADDRESS DATA


6100 04 6100 04 6100 05
6200 01 6200 08 6200 01
6202 02 6202 04 6202 03
6204 03 6204 03 6204 05
6206 04 6206 12 6206 07
6300 01 6300 08 6208 09
6301 02 6301 04 6300 01
6302 03 6302 03 6301 03
6303 04 6303 12 6302 05
6303 07
6304 09

RESULT:
The block transfer using 8086 has been performed and output has been generated successfully.

Page no:0
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 13
Date : 16.12.2021
CONVERSION OF HEXADECIMAL BYTE VALUE TO ITS ASCII VALUE USING 8086

AIM:
To convert a hexadecimal byte to ASCII value using 8086
PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


2000 MOV DI,2012 BF 12 20 Move value 2012 to DI
The effective address of DI is
2003 LEA BX,[DI] 8D 1D
loaded in BX register
Performs XOR for value in AH
2005 XOR AH,AH 32 E4
register with value in AH Register
2007 MOV CL,04 81 04 Move value 04 to CL Register
Performs right shift for value in AX
2009 ROR AX,CL D3 C0
register by value inn CL Register
Performs right shift for value in AH
200B ROR AX,CL D2 CC
register by value inn CL Register
Translate the value in AL register
200D XLAT D7
by using look up table
Exchange value in AL Register with
200E XCHAG AH,AL 86 E0
value in AH Register and vice versa
Translate the value in AL register
2010 XLAT D7
by using look up table
2011 HLT F4 Stop

LOOK UP TABLE:

2012 DB 30,31 Define byte 30,31


2014 DB 32,33 Define byte 32,33
2016 DB 34,35 Define byte 34,35
2018 DB 36,37 Define byte 36,37
201A DB 36,37 Define byte 38,39
201C DB 41,42 Define byte 41,42
202E DB 43,44 Define byte 43,44
2020 DB 45,46 Define byte 45,46

Page no:0
SAMPLE INPUT AND OUTPUT:

INITIAL 0003H
AH AL 0000 0000 0000 0011
AX 0011 0000 0011 0111

INITIAL 0007H
AH AL 0000 0000 0000 0111
AX 0011 0000 0011 0111

INITIAL 0008H
AH AL 0000 0000 0000 1000
AX 0011 0000 0011 1000

RESULT:
Thus, the conversion of Hexadecimal by byte to its ASCII value has been performed and
output has been generated successfully.

Page no:0
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 14
Date : 16.12.2021
TO FIND FACTORIAL OF A GIVEN NUMBER USING 8086

AIM:
To find factorial of a given number using 8086

PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


2000 MOV AX, 0000 B8 00 00 Move value 0 to AX register
2003 MOV CS, AX 8E C8 Move value in AX register with CS
2005 MOV DS, AX 8E D8 Move value in AX register with DS
2007 MOV SI, 3000 BE 00 30 Move value 3000 to SI
Move content of SI with AL
200A MOV AL, [SI] 8A 04
register
Move content of SI with BL
200C NXT MOV BL, [SI] 8A 1C
Register
Decrement value in BL register by
200E DEC BL FE CB
1
2010 JZ OVR 74 06 Jump if zero to OVR
Move value in BL register to
2012 MOV [SI], BL 8A 1C
content of SI
Multiply value of AX register with
2014 MULW [SI] F7 E6
content of SI
2016 JMP NXT EB F4 Jump to NXT
2018 OVR MOV DI, 3100 BF 00 31 Move value 3100 to DI
Move value in AX register to
201B MOV [DI], AX 89 04
content of DI
201D INT 03 CC Stop

Page no:0
SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA ADDRESS DATA

3000 0005 3000 0004 3000 0003

3100 0078 3100 0018 3100 0006

RESULT:
Thus, factorial of a given number has been performed and output has been generated.

Page no:0
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 15
Date : 16.12.2021
TO FIND LARGEST VALUE IN A STRING OF DATA BYTES USING 8086

AIM:
To find the largest value in a string of data bytes using 8086.

PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


2000 MOV AX, 0000 B8 00 00 Move 0000 to AX register
Move the value in AX register to
2003 MOV CS, AX BE C8
Code Segment (CS)
2005 MOV SI, 2100 BE 00 21 Move the value 2100 to SI register
Move the value 0A register to BH
2008 MOV BH, 0A B7 0A
register
Move content of SI register to AL
200A MOV AL, [SI] 8A 04
register
200C NXT INC SI 46 Increment value in SI register by 1
Decrement value in BH register by
200D DEC BH FE CF
1
200F JZ OVR 74 0A Jump if zero to OVR
Move the content of SI register to
2011 MOV BL, [SI] 8A 1C
BL register
Compare the value in BL register
2013 CMP AL, BL 3A C3
with the value in AL register
Jump if carry flag is set and zero
2015 JNBE NXT 77 F5
flag is 0 to NXT
Move the value in BL register to AL
2017 MOV AL, BL 8A C3
register
2019 JMP NXT EB F1 Jump to next
201B OVR INT03 CC Stop

Page no:0
SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA ADDRESS DATA


2100 03 2100 11 2100 11
2101 05 2101 12 2101 22
2102 0A 2102 13 2102 33
2103 1B 2103 06 2103 44
2104 01 2104 08 2104 55
2105 00 2105 00 2105 66
2106 02 2106 02 2106 77
2107 FF 2107 04 2107 88
2108 06 2108 03 2108 99
2109 07 2109 15 2109 01
OUTPUT OUTPUT: OUTPUT
AL FF AL 15 AL 99

RESULT:
Thus, finding largest number in a string of data bytes has been performed and output has
been generated successfully.

Page no:0
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 16
Date : 16.12.2021
TO FIND SMALLEST VALUE IN A STRING OF DATA BYTES USING 8086

AIM:
To find the smallest value in a string of data bytes using 8086.
PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


Move the value in the address
2000 MOV CL, @6100 8A 0E 00 61
6100 to CL register
2004 MOV SI, 6200 BE 00 62 Move the value 6200 to SI register
Move the content of SI register to
2007 MOV AX, [SI] 8B 04
AX register
2009 L1 INC SI 46 Increment value in SI register by 1
200A MOV BX,[SI] 8b 1C Move the content of SI to BX
Compare the value in BX register
200A CMP AX, BX 3B 3C
with the value in AX register
200E JBE L2 72 02 Jump if below or equal to L2
Move the content of SI register to
2010 MOV AX, [SI] 8B 04
AX register
Decrement value in CL register by
2012 L2 DEC CL FE C9
1
2014 JNZ L1 75 F3 Jump if not zero to L1
Move the value in AX register to
2016 MOV @6300, AX A3 00 63
the address location 6300
2019 HLT F4 Stop

SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA ADDRESS DATA


6100 04 6100 05 6100 05
6200 03 6200 FF 6200 01
6201 02 6201 10 6201 10
6202 04 6202 11 6202 11
6203 05 6203 04 6203 04
OUTPUT 02 OUTPUT 04 OUTPUT 01

Page no:0
RESULT:
Thus, the smallest value in a string of data bytes using 8086 has been performed and output
has been generated successfully.

Page no:0
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 17
Date : 17.12.2021
EXCHANGING TWO BLOCKS OF DATA STORED IN MEMORY USING 8086

AIM:
To exchange two blocks of data stored in memory using 8086.
PROGRAM:
ADDRESS LABEL MNEMONICS OPCODE COMMENTS

2000 MOV BX,3000 BB 00 30 Move 3000 to BX register

2003 MOV DX,3200 BA 00 32 Move 3200 to DX register

2006 MOV AX,3500 B8 00 35 Move 3500 to AX register

2009 MOV SI,BX 8B F3 Move value in BX register to SI


register

200B MOV DI,AX 8B F8 Move value in AX register to DI


register

200D MOV CX,20 B9 20 00 Move 20 to CX register

2010 CLD FC Clear direction flag

2011 REP F3 Repeat until value of CX register is 0

2012 MOVSB A4 Move string byte

2013 MOV SI,DX 8B F2 Move value in DX register to SI


register

2015 MOV DI,BX 8B F3 Move value in BX register to DI


register

2017 MOV CX,20 B9 20 00 Move 20 to CX register

201A CLD FC Clear direction flag

201B REP F3 Repeat until value of CX register is 0

201C MOVSB A4 Move string byte

201D MOV SI,AX 8B F0 Move value in AX register to SI


register

201F MOV DI,DX 8B FA Move value in DX register to DI


register

2021 MOV CX,20 B9 20 00 Move 20 to CX register

2024 CLD FC Clear direction flag

Page no:0
2025 REP A3 Repeat until value of CX register is 0

2026 MOVSB A4 00 Move string byte

2027 INT 03 CC Stop

SAMPLE INPUT AND OUTPUT:


ADDRESS DATA ADDRESS DATA

3000 00 3000 00

3001 01 3001 02

3002 02 3002 04

3003 03 3003 06

3004 04 3004 08

3200 13 3200 01

3201 12 3201 03

3202 11 3202 05

3203 10 3203 07

3204 0F 3204 09

AFTER EXCHANGING: AFTER EXCHANGING:


ADDRESS DATA ADDRESS DATA

3000 13 3000 01

3001 12 3001 03

3002 11 3002 05

3003 10 3003 07

3004 0F 3004 09

3200 00 3200 00

3201 01 3201 02

3202 02 3202 04

3203 03 3203 06

3204 04 3204 08

RESULT:Thus two blocks of data stored in memory have been exchanged successfully.

Page no:0
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 18
Date : 18.12.2021
PACKED BCD TO ASCII USING 8086

AIM:
To convert BCD to ASCII using 8086.
PROGRAM:
ADDRESS LABEL MNEMONICS OPCODE COMMENTS

2000 MOV AL,@4100 8A 06 00 41 Move content in 4100 to AL register

2004 MOV AH,AL 8A B0 Move content in AL register to AH


register

2006 AND AX,(0) F00F 25 0F F0 And value of AX register and F00F

2009 MOV CL,04 B1 04 Move value 04 to CL register

200B SHR AH,CL D2 EC Perform shift right by CL register in


AH register

200D OR AX,3030 OD 30 30 OR value of AX register and 3030

200E MOV @4102,AX A3 02 41 Move content of AX register to 4102

2012 HLT F4 Stop

SAMPLE INPUT AND OUTPUT:


ADDRESS DATA

4100 04

4102 3034

Initial 04

AH AL 0000 0010 0000 0010

After

AH AL 0011 0000 0011 1000

Page no:
ADDRESS DATA

4100 08

4102 3038

Initial 08

AH AL 0000 1000 0000 1000

After

AH AL 0011 0000 0011 1000

ADDRESS DATA

4100 05

4102 3035

Initial 05

AH AL 0000 0000 0000 0101

After

AH AL 0011 0000 0011 0101

RESULT:
Thus, conversion of packed BCD to ASCII has been performed and output has been generated
successfully

Page no:
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 19
Date : 18.12.2021
ASCII TO PACKED BCD USING 8086

AIM:
To convert ASCII value to packed BCD using 8086.
PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


8A 06 00 41 Move value in address 6100 to AX
2000 MOV AX, @6100
register
8A B0 Perform AND operation for value
2004 AND AX, 0F0F
in AX register with the value 0F0F
25 0F F0 Exchanges values in AH register
2007 XCHG AH, AL
with AL register
2009 MOV CL, 04 B1 04 Move value 04 to CL register
D2 EC Shift left value in AH register by
200B SHL AH, CL
value in CL register times
0A Z4 Perform OR operation for value in
200D OR AL, AH AL register with value in AH
register
A2 02 61 Move value in AL register to
200F MOV @6102, AL
address 6102
2012 HLT F4 Stop

SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA


6100 37 6100 31
6101 35 6101 32
6102 57 6102 12

ADDRESS DATA
6100 32
6101 34
6102 24

RESULT:
Thus, ASCII to Packed BCD is conversion has been performed and output has been generated
successfully.

Page no:
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 20
Date : 18.12.2021
DECIMAL ADJUST AFTER ADDITION USING 8086

AIM:
To perform decimal adjust after addition using 8086.
PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


2000 MOV CL, 00 B1 00 Move value 00 to CL register
Move value in address 4100 to AL
2002 MOV AL, @4100 8A 06 00 41
register
Move value in address 4102 to BL
2006 MOV BL, @4102 8A 1E 02 41
register
Add the value in BL register with
200A ADD AL, BL 02 C3
value in AL register
Performs decimal adjust after
200C DAA 27
addition for value in AL register
200D JNC L1 73 02 Jump if no carry to L1
200F INC CL FE C1 Increment value in CL register by 1
Move value in AL register to
2011 L1 MOV @4200, AL A2 00 42
address 4200
Move value in CL register to
2014 MOV @4202, CL 88 0E 02 42
address 4202
2018 HLT F4 Stop

SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA


4100 15 4100 18
4102 15 4102 42
4200 30 4200 60
4202 00 4202 00

ADDRESS DATA
4100 20
4102 20
4200 40
4202 00

Page no:
RESULT:
Thus decimal adjust after addition has been performed and output has been generated
successfully.

Page no:
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 21
Date : 21.12.2021
DECIMAL ADJUST AFTER SUBTRACTION USING 8086

AIM:
To perform decimal adjust after subtraction using 8086.
PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


2000 MOV CL, 00 B1 00 Move value 0 to CL register
Move value in address 2100 to AL
2002 MOV AL, @2100 8A 06 00 41
register
Move value in address 2102 to BL
2006 MOV BL, @2102 8A 1E 02 41
register
Perform subtraction for value in BL
200A SUB AL, BL 02 C3
register with value in AL register
Perform decimal adjust after
200C DAS 2F
subtraction for value in AL register
200D JNC L1 73 02 Jump if no carry to L1
200F INC CL FE C1 Increment value in CL register by 1
Move value in AL register to
2011 L1 MOV @2200, AL A2 00 42
address 2200
Move value in CL register to
2014 MOV @2201, CL 88 0E 04 22
address 2101
2018 HLT F4 Stop

SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA ADDRESS DATA


2100 57 2100 54 2100 2F
2102 10 2102 10 2102 03
2200 47 2200 44 2200 32
2201 00 2201 00 2201 00

RESULT:
Thus, decimal adjust after subtraction has been performed and output has been generated
successfully.

Page no:
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 22
Date : 21.12.2021
TO PERFORM MATRIX ADDITION USING 8086

AIM:
To perform matrix addition using 8086.
PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


2000 MOV SI, 2100 BE 00 21 Move value 2100 to SI register
2003 MOV DI, 2200 BF 00 22 Move value 2200 to DI register
2006 MOV BX , 2300 BB 00 23 Move value 2300 to BX register
2009 MOV CX , 0004 B9 04 00 Move value of 4 to CX register
200C L2 MOV AX , 0000 B8 00 00 Move value 0000 to AX register
200F MOV AL , [SI] 8A 04 Move content of SI to AL register
Add the content of DI with AL
2011 ADD AL , [DI] 02 05
register
2013 JNC L1 17 02 Jump if no carry to L1
Increment value in AH register by
2015 INC AH FE 04
1
Move the value in AX register to
2017 L1 MOV [BX] , AX 89 07
the address in BX register
2019 INC SI 46 Increment value in SI register by 1
201A INC DI 47 Increment value in DI register by 1
201B INC BX 43 Increment value in BX register by 1
201C INC BX 43 Increment value in BX register by 1
Decrement value in CL register by
201D DEC CL FE C9
1
201E JNZ L2 73 EB Jump if not zero to L2
2020 HLT F4 Stop

Page no:
SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA


2100 05 2100 01
2101 06 2101 02
2102 07 2102 03
2103 08 2103 04
2200 01 2200 01
2201 02 2201 02
2202 03 2202 03
2203 04 2203 04
2300 0006 2300 0002
2302 0008 2302 0004
2304 000A 2304 0006
2306 000C 2306 0008

ADDRESS DATA
2100 0F
2101 02
2102 0B
2103 04
2200 05
2201 06
2202 07
2203 08
2300 0014
2302 0008
2304 0012
2306 000C

RESULT:
Thus matrix addition has been performed and output has been generated successfully.

Page no:
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 23
Date : 21.12.2021
TO PERFORM MATRIX SUBRACTION USING 8086

AIM:
To perform matrix subtraction using 8086.
PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


2000 MOV SI, 2100 BE 00 21 Move value 2100 to SI register
2003 MOV DI, 2200 BF 00 22 Move value 2200 to DI register
2006 MOV BX , 2300 BB 00 23 Move value 2300 to BX register
2009 MOV CX , 0004 B9 04 00 Move value of 4 to CX register
200C L2 MOV AX , 0000 B8 00 00 Move value 0000 to AX register
200F MOV AL , [SI] 8A 04 Move content of SI to AL register
Perform subtraction for value in DI
2011 SUB AL , [DI] 2A 05
register with value in AL register
2013 JNC L1 17 02 Jump if no carry to L1
Increment value in AH register by
2015 INC AH FE 04
1
Move the value in AX register to
2017 L1 MOV [BX] , AX 89 07
the address in BX register
2019 INC SI 46 Increment value in SI register by 1
201A INC DI 47 Increment value in DI register by 1
201B INC BX 43 Increment value in BX register by 1
201C INC BX 43 Increment value in BX register by 1
Decrement value in CL register by
201D DEC CL FE C9
1
201E JNZ L2 73 EB Jump if not zero to L2
2020 HLT F4 Stop

Page no:
SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA


2100 02 2100 04
2101 04 2101 04
2102 06 2102 04
2103 08 2103 04
2200 01 2200 02
2201 03 2201 02
2202 05 2202 02
2203 07 2203 02
2300 01 2300 02
2302 01 2302 02
2304 01 2304 02
2306 01 2306 02

ADDRESS DATA
2100 0F
2101 0B
2102 1B
2103 0C
2200 07
2201 02
2202 05
2203 01
2300 08
2302 09
2304 16
2306 0B

RESULT:
Thus, matrix subtraction has been performed and output has been generated successfully.

Page no:
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 24
Date : 24.12.2021
SORTING AN ARRAY IN ASCENDING ORDER USING 8086

AIM:
To sort an array in ascending order using 8086.
PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


2000 MOV SI, 5100 BE 00 51 Move value 5100 to SI register
2003 MOV CH, [SI] 8A 2C Move content of SI to CH register
2005 L2 MOV SI, 5100 BE 00 51 Move value 5100 to SI register
2008 MOV CL, [SI] 8A 0C Move content of SI to CH register
decrement value in CL register by
200A DEC CL F1 C9
1
200C INC SI 46 Increment value in SI register by 1
200D INC SI 46 Increment value in SI register by 1
201E L3 MOV AX, [SI] 8E 04 Move content of SI to AX register
2010 INC SI 46 Increment value in SI register by 1
2011 INC SI 46 Increment value in SI register by 1
Move content of SI register to BX
2012 MOV BX, [SI] 8B 1C
register
Compare value in BX register with
2014 CMP AX, BX 3B C3
value in AX register
2016 JC L1 72 09 Jump if carry to L1
Move value in BX register to
2018 MOV DX, BX 8B D3
content of DX register
Move value in AX register to
201A MOV [SI], AX 89 04
content of SI register
201C DEC SI 4E Decrement value in SI register by 1
201D DEC SI 4E Decrement value in SI register by 1
Move value in DX register to SI
201E MOV [SI] , DX 89 14
register
2020 INC SI 46 Increment value in SI register by 1
2021 INC SI 46 Increment value in SI register by 1
Decrement value in CL register by
2022 L1 DEC CL FE C9
1
2024 JNZ L3 75 E8 Jump if not zero to L3

Page no:
Decrement value in CH register by
2026 DEC CH FE CD
1
2028 JNZ L2 75 BB Jump if not zero to L2
202A HLT F4 Stop

SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA


5100 0004 5100 0004
5102 0003 5102 0004
5104 0002 5104 0006
5106 0007 5106 0001
5108 0005 5108 0003
5100 0004 5100 0004
5102 0002 5102 0001
5104 0003 5104 0003
5106 0005 5106 0004
5108 0007 5108 0006

ADDRESS DATA
5100 0004
5102 0009
5104 0008
5106 0001
5108 0003
5100 0004
5102 0001
5104 0003
5106 0008
5108 0009

RESULT:
Thus, sorting an array in ascending order has been performed and output has been generated
successfully.

Page no:
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 25
Date : 24.12.2021
SORTING AN ARRAY IN DESCENDING ORDER USING 8086

AIM:
To sort an array in descending order using 8086.
PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


2000 MOV SI, 5100 BE 00 51 Move value 5100 to SI register
2003 MOV CH, [SI] 8A 2C Move content of SI to CH register
2005 L2 MOV SI, 5100 BE 00 57 Move value 5100 to SI register
2008 MOV CL, [SI] 8A 0C Move content of SI to CH register
decrement value in CL register by
200A DEC CL FE C9
1
200C INC SI 46 Increment value in SI register by 1
200D INC SI 46 Increment value in SI register by 1
200E L3 MOV AX, [SI] 8B 04 Move content of SI to AX register
2010 INC SI 46 Increment value in SI register by 1
2011 INC SI 46 Increment value in SI register by 1
Move content of SI register to BX
2012 MOV BX, [SI] 8B 1C
register
Compare value in BX register with
2014 CMP AX, BX 3B C3
value in AX register
2016 JNC L1 72 09 Jump if carry to L1
Move value in BX register to
2018 MOV DX, BX 8B D3
content of DX register
Move value in AX register to
201A MOV [SI], AX 89 04
content of SI register
201C DEC SI 4E Increment value in SI register by 1
201D DEC SI 4E Increment value in SI register by 1
Decrement value in CL register by
2020 L1 MOV [SI],DX 89 14
1
2021 INC SI 46 Jump if not zero to L3
Decrement value in CH register by
2022 INC SI 46
1

Page no:
2024 DEC CL FE C9 Jump if not zero to L2
2026 JNZ L3 75 E8 Stop
2028 JNZ L2 FE CD
202A HLT F4

SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA


5100 0004 5100 0004
5102 0001 5102 0001
5104 0002 5104 0006
5106 0003 5106 0004
5108 0004 5108 0005
5100 0004 5100 0004
5102 0004 5102 0006
5104 0003 5104 0005
5106 0002 5106 0004
5108 0001 5108 0001

ADDRESS DATA
5100 0004
5102 0001
5104 0007
5106 0002
5108 0006
5100 0004
5102 0007
5104 0006
5106 0002
5108 0001

RESULT:
Thus, sorting an array in descending order has been performed and output has been
generated successfully.

Page no:
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 26
Date : 24.12.2021
ADDITION USING 8051

AIM:
To Perform addition of two 8 bit numbers using 8051
PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


8000 MOV DPTR, #8100 90 81 00 Move value 8100 to DPTR register
Move value at address stored in
8003 MOVX A, @DPTR E0
DPTR to A register
Move value in A register to B
8004 MOV B, A F5 0B
register
8006 INC DPTR A3 Increment value in DPTR by 1
Move values at address stored in
8007 MOVX A, @DPTR E0
DPTR to A register
8008 MOV RO, #00 78 00 Move value 00 to RO register

Add value in B register with A


800A ADD A, B 25 0B
register

800C JNC L1 50 01 Jump if not zero to L1

Increment value in RO register by


800E INC RO 08
1
Increment value in DPTR register
800F L1 INC DPTR A3
by 1
Move value in A register to
8010 MOVX @DPTR, A F0
address stored in DPTR register
Move value in RO register to A
8011 MOV A, RO E8
register

8012 INC DPTR A3 Increment value in DPTR by 1

Move value in A register to


8013 MOVX @DPTR, A F0
address stored in DPTR register

8014 L2 SJMP L2 80 FE Stop

Page no:
SAMPLE INPUT AND OUTPUT:

ADDRESS DATA
8100 04
8101 03
8102 07
8103 00

ADDRESS DATA
8100 05
8101 05
8102 0A
8103 00

ADDRESS DATA
8100 05
8101 03
8102 08
8103 00

RESULT:
Thus, addition of two 8 bit numbers using 8051 has been performed and output has been
generated successfully.

Page no:
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 27
Date : 24.12.2021
SUBTRACTION USING 8051

AIM:
To Perform subtraction of two 8 bit numbers using 8051
PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


8000 MOV DPTR, #8100 90 81 00 Move value 8100 to DPTR register
Move value at address stored in
8003 MOVX A, @DPTR E0
DPTR to A register
Move value in A register to B
8004 MOV B, A F5 0B
register
8006 INC DPTR A3 Increment value in DPTR by 1
Move values at address stored in
8007 MOVX A, @DPTR E0
DPTR to A register
8008 MOV RO, #00 78 00 Move value 00 to RO register
Subtract value in B register with A
800A SUBB A, B 25 0B
register

800C JNC L1 50 01 Jump if not carry to L1

800E CPL A 08 Complement value in A register

800F INC A A3 Increment value in A register by 1

8010 INC RO 08 Increment value in RO by 1

8011 L1 INC DPTR A3 Increment value in DPTR by 1

Move value in A register to


8012 MOVX @DPTR, A F0
address stored in DPTR register
Move value in RO register to A
8013 MOV A, RO E8
register

8014 INC DPTR A3 Increment value in DPTR by 1

Move value in A register to


8015 MOVX @DPTR, A F0
address stored in DPTR register

8016 L2 SJMP L2 80 FE Stop

Page no:
SAMPLE INPUT AND OUTPUT:

ADDRESS DATA
8101 09
8102 05
8103 04
8104 00

ADDRESS DATA
8101 0F
8102 0E
8103 01
8104 00

ADDRESS DATA
8101 0A
8102 03
8103 07
8104 00

RESULT:
Thus, Subtraction of two 8 bit numbers using 8051 has been performed and output has been
generated successfully.

Page no:
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 28
Date : 27.12.2021
MULTIPLICATION USING 8051

AIM:
To Perform multiplication of two numbers using 8051
PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


8000 MOV DPTR, #8300 90 81 00 Move value 8300 to DPTR register
Move value at address stored in
8003 MOVX A, @DPTR E0
DPTR to A register
Move value in A register to B
8004 MOV B, A 85 E0 F0
register
8007 INC DPTR A3 Increment value in DPTR by 1
Move values at address stored in
8008 MOVX A, @DPTR E0
DPTR to A register
Multiply value in B register with
8009 MUL AB A4
value in A register
Subtract value in B register with A
800A INC DPTR A3
register
Move values in A register to
800B MOVX @DPTR, A F0
Address stored in DPTR
Move values in B register to A
800C MOV A, B 85 F0 E0
register
Increment value in OPTR register
800F INC OPTR A3
by 1
Move value in A register to
8010 MOVX @DPTR, A F0
address in DPTR register

8011 L1 SJMP L1 80 FE Stop

Page no:
SAMPLE INPUT AND OUTPUT:

ADDRESS DATA
8300 02
8301 04
8302 08
8303 00

ADDRESS DATA
8300 03
8301 03
8302 09
8303 00

ADDRESS DATA
8300 03
8301 02
8302 06
8303 00

RESULT:
Thus Multiplication of two 8 bit numbers using 8051 has been performed and output has
been generated successfully.

Page no:
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 29
Date : 27.12.2021
DIVISION USING 8051

AIM:
To Perform division of two numbers using 8051
PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


8000 MOV DPTR, #8100 90 81 00 Move value 8100 to DPTR register
Move value at address stored in
8003 MOVX A, @DPTR E0
DPTR to A register
Move value in A register to B
8004 MOV B, A 85 E0 F0
register
8007 INC DPTR A3 Increment value in DPTR by 1
Move values at address stored in
8008 MOVX A, @DPTR E0
DPTR to A register
Divide value in B register with
8009 DIV AB 84
value in A register
Subtract value in B register with A
800A INC DPTR A3
register
Move values in A register to
800B MOVX @DPTR, A F0
Address stored in DPTR
Move values in B register to A
800C MOV A, B 85 F0 E0
register
Increment value in OPTR register
800F INC OPTR A3
by 1
Move value in A register to
8010 MOVX @DPTR, A F0
address in DPTR register

8011 L1 SJMP L1 80 FE Stop

Page no:
SAMPLE INPUT AND OUTPUT:

ADDRESS DATA
8101 02
8102 07
8103 03
8104 01

ADDRESS DATA
8100 02
8101 04
8102 02
8103 00

ADDRESS DATA
8100 02
8101 02
8102 01
8103 00

RESULT:
Thus, division of two 8 bit numbers using 8051 has been performed and output has been
generated successfully.

Page no:
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 30
Date : 27.12.2021
AND OPERATION USING 8051

AIM:
To perform and operation using 8051.
PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


8000 MOV DPTR, #8100 90 81 00 Move value 8100 to DPTR register
Move the value in address stored
8003 MOVX A, @DPTR E0
in DPTR register to A register
Move the value to A register to B
8004 MOV B, A F5 0B
register
Increment value in DPTR register
8006 INC DPTR A3
by 1
Move the value in address stored
8007 MOVX A, @DPTR E0
in DPTR register to A register
Perform AND operation for value
8008 ANL A, B 55 0B in A register with value in B
register
Increment value in DPTR register
800A INC DPTR A3
by 1
Move value in A register to
800B MOVX @DPTR, A F0
address stored in DPTR
800C L1 SJMP L1 80 FE Stop.

SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA


8100 22 8100 13
8101 FF 8101 00
8102 22 8102 00

RESULT:
Thus, AND operation of two numbers using the 8051 has been performed and output has
been generated successfully.

Page no:
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 31
Date : 27.12.2021
OR OPERATIION USING 8051

AIM:
To perform or operation of two numbers using 8051.
PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS

8000 MOV DPTR, #8100 90 81 00 Move value 8100 to DPTR register.


Move the value stored in address
8003 MOV A, @DPTR E0
of DPTR to A register.
Move value in A register with B
8004 MOV B,A F5 0B
register.
8006 INC DPTR A3 Increment value in DPTR by 1.
Move value stored in address of
8007 MOV A, @DPTR E0
DPTR to A register.
Performs or operation for value in
8008 ORL A, B 45 0B
A register and B register.
800A INC DPTR A3 Increment value in DPTR by 1.
Move value in A register to address
800B MOV X @DPTR, A F0
in DPTR.
800C L1 SJMP l1 80 FE Stop.

SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA ADDRESS DATA


8100 22 8100 F0 8100 23
8101 FF 8101 0F 8101 34

8102 FF 8102 FF 8102 37

RESULT:
Thus, OR operation of two numbers using 8051 has been performed and output has been
generated successfully.

Page no:
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 32
Date : 29.12.2021
XOR OPERTION USING 8051

AIM:
To perform XOR operation using 8051
PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


8000 MOV DPTR, #8100 90 81 00 Move value 8100 to DPTR register
Move value in address stored in
8003 MOV A, @DPTR E0
DPTR to A register
Move value in A register to B
8004 MOV B, A F5 0B
register
8006 INC DPTR A3 Increment value in DPTR by 1
Move value in address stored in
8007 MOV A, @DPTR E0
the DPTR to A register
Perform XOR operation for value
8008 XRL A, B 65 0B
in A register by value in B register
Increment value in DPTR register
800A INC DPTR A3
by 1
Move value in A register to
800B MOV @DPTR, A F0 register
To address stored in DPTR
800C L1 SJMP L1 80 FE Jump to L1

SAMPLE INPUT AND OUTPUT:

ADDRESS DATA ADDRESS DATA


8100 22 810D 0F
8101 FF 8101 F0
8102 DD 8102 FF

RESULT:
Thus, XOR operation using 8051 has been performed and output has been generated
successfully.

Page no:
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 33
Date : 29.12.2021
NOT OPERATION USING 8051

AIM:
To perform not operation using 8051.
PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


2000 MOV DPTR, #8100 90 81 00 Move value 8100 to DPTR register.
Move value in address stored by DPTR
2003 MOV A, @DPTR E0
to A register.
2004 CPL A F4 Complement value in A register.
2005 INC DPTR A3 Increment value in DPTR by 1.
2006 MOVX @DPTR, A F0 Move value in A register to address
2007 SJMP L1 80 FE Jump to L1

SAMPLE INPUT AND OUTPUT:

ADDRESS DATA
8100 DE
8101 21

ADDRESS DATA
8100 A0
8101 5F

RESULT:
Thus, NOT operation using 8051 has been performed and output has been generated
successfully.

Page no:
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 34
Date : 29.12.2021
SQUARE OF A NUMBER USING 8051

AIM:
To find square of a number using 8051.
PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


2000 MOV DPTR, #8100 90 81 00 Move value 8100 to DPTR
Move value in address stored by
2003 MOVX A, @DPTR E0
DPTR to A register
Move value in A register to B
2006 MOV B, A 85 E0 F0
register
Multiply value in A register with
2007 MUL A, B A4
value in B register
2009 INC DPTR A3 Increment value in DPTR by 1
Move value in A register to
200A MOVX @DPTR, A F0
address stored in DPTR
200C L1 SJMP L1 80 FE Jump to L1

SAMPLE INPUT AND OUTPUT:

ADDRESS DATA
8100 0002
8101 0004

ADDRESS DATA
8100 0003
8101 0009

RESULT:
Thus, square of a number using 8051 has been performed and output has been generated
successfully.

Page no:
CS18313 – MICROPROCESSOR LABORATORY
Ex no : 35
Date : 29.12.2021
CUBE OF A NUMBER USING 8051

AIM:
To find cube of a number using 8051.
PROGRAM:

ADDRESS LABEL MNEMONICS OPCODE COMMENTS


2000 MOV DPTR, #8100 90 81 00 Move value 8100 to DPTR
Move value in address stored by
2003 MOVX A, @DPTR E0
DPTR to A register
Move value in A register to RO
2006 MOV R0, A A8 E0
register
Move value in A register to B
2007 MOV B, A 85 E0 F0
register
Multiply value in A register with
2008 MUL A, B A4
value in B register
Move value in RO register to B
200A MOV B, R0 88 F0
register
Multiply value in A register with
200B MUL A, B A4
value in B register
200D INC DPTR A3 Increment value in DPTR by 1
Move value in A register to
200E MOVX @DPTR, A F0
address stored in DPTR
2010 L1 SJMP L1 80 FE Jump to L1

SAMPLE INPUT AND OUTPUT:

ADDRESS DATA
8100 0002
8101 0008

ADDRESS DATA
8100 0003
8101 001B

RESULT:
Thus, cube of a number using 8051 has been performed and output is displayed successfully.

Page no:

You might also like