Cs6412 Microprocessor and Microcontroller Laboratory (Autosaved)

Embed Size (px)

DESCRIPTION

2013 MPMC LAB MANNUEL

Citation preview

S.NoExperimentPage no

Programs for 16 bit arithmetic operations (using 8086)

Addition of two 16-bit numbers

Subtraction of two 16-bit numbers

Multiplication of two 16-bit numbers

Division of two 16-bit numbers

Double precision addition

Double precision subtraction

16 bit logical operations using 8086

Ones complement of a 16-bit numbers

Masking off bits selectively in 16-bit number

Setting off bits selectively in 16-bit number

Programs for string manipulation operations (using 8086)

Program for string primitive (using 8086)

String manipulation using 8086

Calculating the length of string

Code conversion

Programs for bcd number to binary number

Programs for binary number to bcd number

Programs for 8-bit binary number to gray code

Arithmetic operations using masm software

Programs for matrix addtion (3*3 matrix) using masm software

Programs for matrix multiplication (3*3 matrix) using masm software

String manipulation

Descending order of an array

Ascending order of an array

Largest number in an array

Smallest number in an array

Search a number in an array

Counters and delay program

Program for setting system date

Traffic light controller using 8086

Interfacing and programming of stepper motor

To run stepper motor at different speeds

To run stepper motor in both directions

Programs for digital clock and stop watch

Clock display

Stop watch display

Interfacing and programming of 8279 using 8086

Read a key

Rolling display (display message is cse- a)

Interfacing and programming of printer interface using 8086

Serial communication between two mp kits using 8251

Interfacing 8255 with 8086

Programs for interfacing ADC and DAC

Analog to digital converter

Digital to analog converter

Generation of saw tooth wave

Generation of square wave

Generation of triangular wave

Programming of 8051 microcontroller

Programming using arithmetic, logical and bit manipulation

Addition of two 8-bit numbers using 8051

Subtraction of two 8-bit numbers using 8051

Multiplication of two 8-bit numbers using 8051

Division of two 8-bit numbers using 8051

Ones and twos complement using 8051

Setting bits in an 8 bit numbers using 8051

Masking bits in an 8 bit numbers using 8051

Programs for sorting and searching (using 8051)

Arrange the given number in ascending order

Arrange the given number in descending order

Largest element in an array

Programming using arithmetic, logical and bit manipulation

Unmasked bcd number to ascii code using 8051

Square of a 8-bit number using 8051

Cube of a 8-bit number using 8051

EXPT NO: 16 BIT ARITHMETIC OPERATIONS DATE: (USING 8086)

AIM:To write an Assembly Language Program (ALP) for 16 bit Arithmetic operations using 8086.

APPARATUS REQUIRED:SL.NOITEMSPECIFICATIONQUANTITY

1.Microprocessor kit8086 kit1

2.Keyboard1

3Power chord1

ALGORITHM:

(i)16-bit addition:a) Start the program. b) Load the augend to the accumulator. c) Load the addend to any other general purpose register. d) Add these two register contents. e) Store the result in required memory location. f) Stop the program.

(ii) 16-bit subtraction:a) Start the program.b) Load the minuend to the accumulator.c) Load the subtrahend to any other general purpose register.d) Subtract these two register contents.e) Store the result in required memory locations.f) Stop the program.

(iii)Multiplication of 16-bit numbers:a) Start the program.b) Load the multiplicand to the accumulator.c) Load the multiplier to any other general purpose register.d) Add the multiplicand, multiplier times.e) Store the result in required memory location.f) Stop the program.(iv)Division of 16-bit numbers:a) Start the program.b) Load the dividend to the accumulator.c) Load the divisor to any other general purpose register.d) Subtract the dividend, divisor times.e) Store the result in required memory location.f) Stop the program.(v)Double precision Addition: a) Start the program. b) Load the 16 bit augend to the accumulator. c) Load the 16 bit addend to any other general purpose register. d) Add these two register contents with carry. e) Store the result in required memory location. f) Stop the program

(vi)Double precision subtraction:a) Start the program.b) Load the 16 bit minuend to the accumulator.c) Load the 16 bit subtrahend to any other general purpose register.d) Subtract these two register contents with borrow.e) Store the result in required memory locations.f) Stop the program.

. PROGRAMS FOR 16 BIT ARITHMETIC OPERATIONS (USING 8086)

A-ADDITION OF TWO 16-BIT NUMBERS

ADDRESSMNEMONICSOP-CODECOMMANDS

1000MOV AX,[1100]A1,00,11MOVE THE DATA TOACCUMULATOR

1003ADD AX,[1102]03,06,02,11ADD MEMORYCONTENTWITH ACCUMULATOR

1007MOV [1200],AXA3,00,12MOVEACCUMULATORCONTENT TOMEMORY

100AHLTF4STOP

OUT PUT:

IN PUTADDRESSDATA

OUT PUTDATA

ADDRESS

1. PROGRAMS FOR 16 BIT ARITHMETIC OPERATIONS (USING 8086)

B-SUBTRACTION OF TWO 16-BIT NUMBERS

ADDRESSMNEMONICSOP-CODECOMMANDS

1000MOV AX[1100]A1,00,11MOVE THE DATA TO

ACCUMULATOR

1003SUB AX[1102]2B,06,02,11SUBTRACT

MEMORY CONTENT

WITH

ACCUMULATOR

1007MOV [1200],AXA3,00,12MOVE

ACCUMULATOR

CONTENT TO

MEMORY

100AHLTF4STOP

OUT PUT:

IN PUTDATA

OUT PUTDATA

ADDRESS

ADDRESS

1. PROGRAMS FOR 16 BIT ARITHMETIC OPERATIONS (USING 8086)

C-MULTIPLICATION OF TWO 16-BIT NUMBERS

ADDRESSMNEMONICSOP-CODECOMMANDS

1000MOV AX[1100]A1,00,11MOVE THE DATA TO

ACCUMULATOR

1003MUL[1102]F7,26,02,11MULTIPLY MEMORY

CONTENT

WITH

ACCUMULATOR

1007MOV [1200],DX87,16,00,12MOVE

ACCUMULATOR

CONTENT TO AX

REGISTER

100BMOV[1202],AXA3,02,12MOVE

ACCUMULATOR

CONTENT TO DX

REGISTER

100EHLTF4STOP

OUT PUT:

IN PUTDATA

OUT PUTDATA

ADDRESS

ADDRESS

1. PROGRAMS FOR 16 BIT ARITHMETIC OPERATIONS (USING 8086)

D-DIVISION OF TWO 16-BIT NUMBERS

ADDRESSMNEMONICSOP-CODECOMMANDS

1000MOV AX[1100]A1,00,11MOVE THE DATA

TO

ACCUMULATOR

1003DIV[1102]

F7,36,02,11DIVIDE MEMORY

CONTENT

WITH

ACCUMULATOR

1007MOV [1200],DX87,16,00,12MOVE

ACCUMULATOR

CONTENT TO DX

REGISTER

100B

MOV[1200],AXA3,00,12MOVE CONTENT

OF AX

REGISTER TO

MEMORY

100EHLTF4STOP

OUT PUT:

IN PUTDATA

OUT PUTDATA

ADDRESS

ADDRESS

1. PROGRAMS FOR 16 BIT ARITHMETIC OPERATIONS (USING 8086)

E-DOUBLE PRECISION ADDITION

ADDRESSMNEMONICSOP-CODECOMMANDS

1000MOV AX,[1100]A1,00,11MOVE THE DATATOACCUMULATOR

1003ADD AX,[1104]03,06,04,11ADD MEMORYCONTENT WITH ACCUMULATOR

1007MOV [1200],AXA3,00,12MOVE DATA INMEMORYTO ACCUMULATOR

100AMOV AX,[1102]A1,02,11MOVEACCUMULATOR VALUE TO MEMORY

100DADC AX,[1106]13,06,06,11ADD ACCUMULATOR VALUE WITH CARRY

1011MOV[1202],AHA3,02,12MOVE ACCUMULATOR VALUE TO MEMORY

1014LAHF9FMOVE HIGHER VALUE TO MEMORY

1015MOV[1204],AH88,2,04,12MOVE ACCUMULATOR VALUE TO MEMORY

1019HLTF4STOP

OUT PUT:

IN PUTDATA

OUT PUTDATA

ADDRESS

ADDRESS

1. PROGRAMS FOR 16 BIT ARITHMETIC OPERATIONS (USING 8086)

F-DOUBLE PRECISION SUBTRACTION

ADDRESSMNEMONICSOP-CODECOMMANDS

1000MOV AX,[1100]A1,00,11 MOVE THE DATA TO

ACCUMULATOR

1003SUB AX,[1104]2B,06,04,11SUBTRACT

MEMORY

CONTENT WITH

WITH

ACCUMULATOR

1007MOV [1200],AXA3,00,12MOVE DATA IN

MEMORY TO

ACCUMULATOR

100AMOV AX,[1102]A1,02,11MOVE

ACCUMULATOR

VALUE TO MEMORY

100DSBB AX,[1106]2B,06,06,11SUBTRACT MEMORY

CONTENT WITH

ACCUMULATOR

1011MOV[1202],AXA3,02,12MOVE ACCUMULATOR

VALUE TO MEMORY

1014HLTF4STOP

OUT PUT:

IN PUTDATA

OUT PUTDATA

ADDRESS

ADDRESS

Result:

Thus, the programs for Arithmetic operations have been executed using 8086 MicroprocessorEXPT NO: 16 BIT LOGICAL OPERATIONSDATE: (USING 8086)

AIM:To write an Assembly Language Program (ALP) for 16 bit logical operations using 8086

APPARATUS REQUIRED:SL.NOITEMSPECIFICATIONQUANTITY

1.Microprocessor kit8086 kit1

2.Keyboard1

3Power chord1

ALGORITHM:

(i) ONES COMPLEMENT OF A 16 BIT NUMBERS:a) Start the program.b) Load the input data to the Accumulator.c) Perform negation on Accumulator.d) Store the result in required memory location.e) Stop the program.

(ii) MASKING OFF BITS SELECTIVELY IN 16-BIT NUMBER:a) Start the program.b) Load the first input data to the Accumulator.c) Perform AND operation with AX and second datad) Store the result in required memory location.e) Stop the program.(iii) SETTING OF BITS SELECTIVELY:a) Start the program.b) Load the first input data to the Accumulator.c) Perform OR operation with AX and second datad) Store the result in required memory location.e) Stop the program.

PROGRAMS FOR 16 BIT LOGICAL OPERATIONS (USING 8086)

A-ONES COMPLEMENT OF A 16-BIT NUMBERS

ADDRESSMNEMONICSOP-CODECOMMANDS

1000MOV AX 1234B8,34,12MOVE THE DATA

TO

ACCUMULATOR

1003NOT AXF7,D0NOT OPERATION

WITH

ACCUMULATOR

1007MOV [1400],AXA3,00,14MOVE DATA IN

MEMORY

TO

ACCUMULATOR

1009HLTF4STOP

OUT PUT:

IN PUT:

DATA:OUT PUTDATA

ADDRESS

2. PROGRAMS FOR 16 BIT LOGICAL OPERATIONS (USING 8086)

B-MASKING OFF BITS SELECTIVELY IN 16-BIT NUMBER

ADDRESSMNEMONICSOP-CODECOMMANDS

1000MOV AX, [1200]A1,00,12MOVE THE DATA

TO

ACCUMULATOR

1003AND AX, 0F0F25,0F,0FAND OPERATION

WITH

ACCUMULATOR

1007MOV [1400],AXA3,00,14MOVE DATA IN

MEMORY

TO

ACCUMULATOR

1009HLTF4STOP

OUT PUT:

IN PUT:

IN PUTDATAOUT PUTDATA

ADDRESSADDRESS

2. PROGRAMS FOR 16 BIT LOGICAL OPERATIONS (USING 8086)

C- SETTING OFF BITS SELECTIVELY IN 16-BIT NUMBER

ADDRESSMNEMONICSOP-CODECOMMANDS

1000MOV AX ,0000B8,00,00CLEAR

ACCUMULATOR

1003OR AX, 0F0F0D,0F,0FOR OPERATION

WITH

ACCUMULATOR

1007MOV [1400],AXA3,00,14MOVE DATA IN

MEMORY

TO

ACCUMULATOR

1009HLTF4STOP

OUT PUT:

IN PUT:

IN PUTDATAOUT PUTDATA

ADDRESSADDRESS

Result:

Thus, the programs for Logical operations have been executed using

8086 MicroprocessorEXPT NO: SORTING AND SEARCHING DATE: (USING 8086)AIM:To write an Assembly Language Program (ALP) for sorting and searching operations using 8086. APPARATUS REQUIRED:SL.NOITEMSPECIFICATIONQUANTITY

1.Microprocessor kit8086 kit1

2.Keyboard1

3Power chord1

ALGORITHM:

(i) PROGRAM FOR STRING PRIMITIVE:a) Start the program.b) Get the number of count to be made.c) Load the output address in the destination index.d) Load the input value to the accumulator.e) Store the result in required memory locations using STO.f) Stop the program.(ii) STRING MANIPULATION:a) Start the program.b) Load the input address in the source index.c) Load the output address in the destination index.d) Get the number of count to be made.e) Store the result in required memory location.f) Stop the program.(iii) CALCULATING THE LENGTH OF THE STRING:a) Start the program.b) Load the input address to the source index.c) Load the data to any other general purpose register.d) Load the data to accumulator.e) Compare the accumulator higher and lower bit.f) Store the result in required memory location.g) Stop the program.

3. PROGRAMS FOR STRING MANIPULATION OPERATIONS (USING 8086)

A-PROGRAM FOR STRING PRIMITIVE (USING 8086)

ADDRESSLOOPMNEMONICSOPCODECOMMENTS

1000MOV CX, 0010B9 10 00Count the value of

array

1003MOV DI,[1100]BF 00 11Declare destination

index

1006MOV AX, 0034B8 34 00Move the data to

accumulator

1009CLDFCClear direction

100AL1STO SBAAStore byte till

assigned address

100BLOOP L1E2 FDMove to loop L1

100DHLTF4Stop

3. PROGRAMS FOR SORTING AND SEARCHING (USING 8086)

B-STRING MANIPULATION USING 8086

ADDRESSLABELMNEMONICSOP-CODECOMMAND

1000MOV SI [1100]BE 00 11MOVE ADDRESS

OFFSETTO SOURCE

S_ARRAYINDEX

1003MOV DI [1200]BF 00 12MOVE ADDRESS

OFFSETTO DESTINATION

D_ARRAYINDEX

1006MOV CX 0005B9 05 00DECLARE THE

SIZE OF ARRAY

ELEMENT

1009CLDFCCLEAR

DIRECTION

100AL1MOVE SBA4MOVE DATA

100BLOOP L1E2 FDMOVE TO LOOP

L1

100DHLTF4STOP THE

PROGRAM

OUT PUT:

IN PUT:

IN PUTDATAOUT PUTDATA

ADDRESSADDRESS

3. PROGRAMS FOR SORTING AND SEARCHING (USING 8086)

C-CALCULATING THE LENGTH OF STRING

ADDRESSLABELMNEMONICSOP-CODECOMMAND

1000MOV SI [1100]BE 00 11MOVE ADDRESS

TO SOURCE

INDEX

1003MOV DXBA FF FFMOVE DATA TO

FFFFREGISTER

1006MOV AH FFB4 FFMOVE DATA TO

ACCUMULATOR

HIGHER BIT

1008L1INC DX42INCREMENT ON

DX

1009MOV [AL] SI8A 04MOVE SOURCE

INDEX TO ACC.

LOWER

100BINC SI48INCREMENT ON

SI

100CCMP AH AL38 C4COMPARE ACC.

HIGHER AND

LOWER

100EJNZ L175 F8JUMP NO ZERO

MOVE TO L1

1010MOV [1200]89 16 00 12MOVE

DXREGISTER TO

1200

1014HLTF4STOP THE

PROGRAM

OUT PUT:

IN PUT:

IN PUTDATAOUT PUTDATA

ADDRESSADDRESS

Result:

Thus, the programs for Sorting and searching operations have been executed using 8086 Microprocessor4. EXPT NO: CODE CONVERSION DATE: (USING 8086)PROGRAMS FOR BCD NUMBER TO BINARY NUMBER

AIM:To write an assembly language program (alp) for BCD number to binary number using 8086. APPARATUS REQUIRED:SL.NOITEM

1.PC

2.Keyboard

3MASM SOFTWARE

PROGRAM

ASSUME CS: CODE, DS: DATADATA SEGMENTBCD_NUM EQU 4576HBIN_NUM DW (?)DATA ENDSCODE SEGMENTSTART: MOV AX,DATAMOV DS,AXMOV BX, BCD_NUMMOV CX,0CONT: CMP BX,0JZ EPRGMOV AL,BLSUB AL,01DASMOV AL,BHSBB AL,00DASMOV BH,ALINC CXJMP CONTEPRG: MOV BIN_NUM,CXMOV AH.4CHINT 21HCODE ENDSEND START

Result:

Thus, the programs for BCD NUMBER TO BINARY NUMBERhave been executed using 8086 Microprocessor

PROGRAMS FOR BINARY NUMBER TO BCD NUMBERAIM:To write an assembly language program (alp) for binary number to BCD number using 8086. APPARATUS REQUIRED:SL.NOITEM

1.PC

2.Keyboard

3MASM SOFTWARE

PROGRAM

ASSUME CS: CODE, DS: DATADATA SEGMENTBIN EQU 4576HRES DW (?)DATA ENDSCODE SEGMENTSTART: MOV AX,DATAMOV DS,AXMOV BX, BINMOV AX,0MOV CX,0CONT: CMP BX,0JZ EPRGDEC BXMOV AL,CLADD AL,01DAAMOV CL,ALMOV AL,CHADC AL,00DAAMOV CH,ALJMP CONTEPRG: MOV RES,CXMOV AH.4CHINT 21HCODE ENDSEND START

Result:

Thus, the programs for BINARY NUMBER TO BCD NUMBER have been executed using 8086 Microprocessor

PROGRAMS FOR 8-BIT BINARY NUMBER TO GRAY CODEAIM:To write an assembly language program (ALP) for binary number to gray code using 8086. APPARATUS REQUIRED:SL.NOITEM

1.PC

2.Keyboard

3MASM SOFTWARE

PROGRAMASSUME CS: CODE, DS: DATADATA SEGMENTNUM EQU 45HRES DB (?)DATA ENDSCODE SEGMENTSTART: MOV AX,DATAMOV DS,AXMOV AL, NUMMOV BL,ALCLCRCR AL,1XOR BL,ALMOV RES,BLMOV AH.4CHINT 21HCODE ENDSEND START

Result:

Thus, the programs for BCD NUMBER TO ASCII NUMBER have been executed using 8086 Microprocessor

ARITHMETIC OPERATIONS USING MASM SOFTWARE AIM: To perform arithmetic operations such as addition,subtraction, multiplication division operations using MASM software.

SL.NOITEM

1.PC

2.Keyboard

3MASM SOFTWARE

ALGORITHM:

1. Initialize the data segment and the message to be displayed.2. Set function value for display.3. Point to the message and run the interrupt to display the message in the CRT.

PROGRAM: ASSUME CS:CODE,DS:DATADATA SEGMENT0PR1 EQU 98H0PR2 EQU 49HSUM DW 01 DUP(00)SUBT DW 01 DUP(00)PROD DW 01 DUP(00)DWS DW 01 DUP(00)DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV BL,0PR2XOR AL,ALMOV AL,0PR1ADD AL,BLDAAMOV BYTE PTR SUM,ALJNC MSB0INC [SUM+1]MSB0:XOR AL,ALMOV AL,0PR1SUB AL,BLDASMOV BYTE PTR SUBT,ALJNB MSB1INC [SUBT+1]MSB1:XOR AL,ALMOV AL,0PR1MUL BLMOV WORD PTR PROD,AXXOR AH,AHMOV AL,0PR1DIV BLMOV WORD PTR DWS,AXMOV AH,4CHINT 21HCODE ENDSEND START

Result:

Thus, the programs for decimal arithmetic operations have been executed using MASM

PROGRAMS FOR MATRIX ADDTION (3*3 MATRIX) USING MASM SOFTWARE AIM: To perform matrix addition (3*3 matrix) using MASM software.

SL.NOITEM

1.PC

2.Keyboard

3MASM SOFTWARE

PROGRAM

ASSUME CS: CODE, DS: DATADATA SEGMENTDIM EQU 09HMAT1 DB 01, 01, 01, 01, 01, 01, 01, 01, 01MAT2 DB 01, 01, 01, 01, 01, 01, 01, 01, 01MAT3 DW 09H DUP (?)DATA ENDSCODE SEGMENTSTART: MOV AX,DATAMOV DS,AXMOV CX,DIMMOV SI,OFFSET MAT1MOV DI,OFFSET MAT2MOV BX, OFFSET MAT3NEXT: XOR AX,AXMOV AL,[SI]ADD AL,[DI]MOV WORD PTR [BX],AXINC SIINC DIADD BX,02LOOP NEXTMOV AH.4CHINT 21HCODE ENDSEND START

Result:

Thus, the programs for matrix addition have been executed using MASM

PROGRAMS FOR MATRIX MULTIPLICATION (3*3 MATRIX) USING MASM SOFTWARE

AIM: To perform matrix addition (3*3 matrix) using MASM software.

SL.NOITEM

1.PC

2.Keyboard

3MASM SOFTWARE

PROGRAM

ASSUME CS: CODE, DS: DATADATA SEGMENTROCOL EQU 03HMAT1 DB 01, 01, 01, 01, 01, 01, 01, 01, 01MAT2 DB 01, 01, 01, 01, 01, 01, 01, 01, 01MAT3 DW 09H DUP (?)DATA ENDSCODE SEGMENTSTART: MOV AX,DATAMOV DS,AXMOV CH,ROCOLMOV SI,OFFSET MAT1MOV BX, OFFSET MAT3NEXTROW: MOV DI,OFFSET MAT2MOV CL,ROCOLNEXTCOL: MOV DL,ROCOLMOV BP,0000HMOV AX,0000HSAHFNEXT_ELE:MOV AL,[SI]MUL BYTE PTR [DI]ADD BP,AXINC SIADD DI,03DEC DLJNZ NEXT_ELESUB DI,08SUB SI,03MOV [BX],BPADD BX,02DEC CLJNZ NEXTCOLADD SI, 03DEC CHJNZ NEXTROWMOV AH.4CHINT 21HCODE ENDSEND START

RESULT:

Thus, the programs for matrix addition have been executed using MASM

EXPT NO: STRING MANIPULATION DATE: (USING 8086)AIM:To write an Assembly Language Program (ALP) for string manipulation operations using 8086. APPARATUS REQUIRED:SL.NOITEMSPECIFICATIONQUANTITY

1.Microprocessor kit8086 kit1

2.Keyboard1

3Power chord1

ALGORITHM:(i) DESCENDING ORDER OF AN ARRAY:a) Start the program.b) Store the total number of elements in c register.c) Store the data in accumulator.d) Compare the first element with the second element, which is placed after two bytes.e) If second elements are lesser, continue comparison with next data else exchange both the elements.f) Decrement the count value.g) Continue until count value becomes zero.h) Store the contents in memory location.i) Stop the program.

(ii) ASCENDING ORDER OF AN ARRAY:a) Start the program.b) Get the numbers to be stored from the memory locations.c) Compare the first two numbers and if the first number is larger than second then interchange the number.d) If the first number is smaller, go to step d.e) Repeat steps b and c until the numbers are in required order. f) Stop the program.

(iii) LARGEST NUMBER IN AN ARRAY:a) Start the program.b) Place all the elements of an array in the consecutive memory locations.c) Fetch the first element from the memory location and load it in the accumulator.d) Initialize a counter (register) with the total number of elements in an array.e) Decrement the counter by 1.f) Increment the memory pointer to point to the next element.g) Compare the accumulator content with the memory content (next element).h) If the accumulator content is larger, then move the memory content (largest element) to the accumulator. Else continue.i) Decrement the counter by 1.j) Repeat steps e to h until the counter reaches zero.k) Store the result (accumulator content) in the specified memory location.l) Stop the program.

(iv) SMALLEST NUMBER IN AN ARRAY:a) Start the program.b) Place all the elements of an array in the consecutive memory locations.c) Fetch the first element from the memory location and load it in the accumulator.d) Initialize a counter (register) with the total number of elements in an array.e) Decrement the counter by 1.f) Increment the memory pointer to point to the next element.g) Compare the accumulator content with the memory content (next element).h) If the accumulator content is smaller, then move the memory content (largest element) to the accumulator. Else continue.i) Decrement the counter by 1.j) Repeat steps e to h until the counter reaches zero.k) Store the result (accumulator content) in the specified memory location.l) Stop the program.

(v) SEARCH A NUMBER IN AN ARRAY:a) Start the program.b) Load the input address in the source index.c) Load the output address in the destination index.d) Store the count value.e) Increment source index.f) Load the source index to the accumulator.g) Increment source index.h) Compare the present value stored in the accumulator and next value stored in the source index.i) If zero, then end else repeat from step e to g.j) Store the result in the specified memory location.k) Stop the program.

PROGRAM:DESCENDING ORDER OF AN ARRAYADDRESSLABELMNEMONICSOP-CODECOMMAND

1000STARTMOV BL,00B3 00COUNT THE VALUE OF ARRAY

1002MOV SI,1200BE 00 12MOVE THE DATA TO SOURCE INDEX

1005MOV CL,[SI]8A 0CMOVE THE MEMORY CONTENT TO COUNT REGISTER

1007DEC CLFE C9DECREMENT COUNT REGISTER

1009INC SI46INCREMENT SOURCE INDEX

100AMOV AL,[SI]8A 04MOVE THE MEMORY CONTENT SOURCE INDEX TO ACCUMULATOR

100CINC SI46INCREMENT SOUREC INDEX

100DCMP AL,[SI]3A 04COMPARE THE MEMORY CONTENT OF SOURCE INDEX WITH ACCUMULATOR

100FJC LOOP L172 0AJUMP ON CARRY

1011MOV DL,[SI]8A 14MOVE THE MEMORY CONTENT OF SOURCE INDEX TO DATA REGISTER

1013MOV [SI],AL88 04MOVE THE CONTENT OF ACCUMULATOR TO ADDRESS OF SOURCE INDEX

1015DEC SI4EDECREMENT SOURCE INDEX

1016MOV [SI],DL88 14MOVE THE CONTENT OF DATA REGISTER TO ADDRESS OF SOURCE INDEX

1018INC SI46INCREMENT SOURCE INDEX

1019MOV BL,01B3 01MOVE THE DATA TO BASE REGISTER

101BL1DEC CLFE C9DECREMENT COUNT REGISTER

101DJNZ LOOP75 EBJUMP ON NO ZERO

101FDEC BLFE CBDECREMENT BASE REGISTER

1021JZ START74 DDJUMP ON ZERO

1023HLTF4STOP

ASCENDING ORDER OF AN ARRAYADDRESSLABELMNEMONICSOP-CODECOMMAND

1000STARTMOV BL,00B3 00COUNT THE VALUE OF ARRAY

1002MOV SI,1200BE 00 12MOVE THE DATA TO SOURCE INDEX

1005MOV CL,[SI]8A 0CMOVE THE MEMORY CONTENT TO COUNT REGISTER

1007DEC CLFE C9DECREMENT COUNT REGISTER

1009INC SI46INCREMENT SOURCE INDEX

100AMOV AL,[SI]8A 04MOVE THE MEMORY CONTENT SOURCE INDEX TO ACCUMULATOR

100CINC SI46INCREMENT SOUREC INDEX

100DCMP AL,[SI]3A 04COMPARE THE MEMORY CONTENT OF SOURCE INDEX WITH ACCUMULATOR

100FJNC LOOP L172 0AJUMP ON NO CARRY

1011MOV DL,[SI]8A 14MOVE THE MEMORY CONTENT OF SOURCE INDEX TO DATA REGISTER

1013MOV [SI],AL88 04MOVE THE CONTENT OF ACCUMULATOR TO ADDRESS OF SOURCE INDEX

1015DEC SI4EDECREMENT SOURCE INDEX

1016MOV [SI],DL88 14MOVE THE CONTENT OF DATA REGISTER TO ADDRESS OF SOURCE INDEX

1018INC SI46INCREMENT SOURCE INDEX

1019MOV BL,01B3 01MOVE THE DATA TO BASE REGISTER

101BL1DEC CLFE C9DECREMENT COUNT REGISTER

101DJNZ LOOP75 EBJUMP ON NO ZERO

101FDEC BLFE CBDECREMENT BASE REGISTER

1021JZ START74 DDJUMP ON ZERO

1023HLTF4STOP

LARGEST NUMBER IN AN ARRAYADDRESSLABEL MNEMONICSOP-CODECOMMANDS

1000MOV BX,0005BB 05 00COUNT THE VALUE OF ARRAY

1003DEC BX4BDECREMENT BX REGISTER

1004L1MOV CX,BX8B CBMOVE THE CONTENT OF BX TO CX REGISTER

1006MOV SI,1100BE 00 11MOVE THE DATA TO SI

1009L2MOV AL,[SI]8A 04MOVE THE MEMORY CONTENT OF SI TO AL

100BINC SI46

100CCMP AL,[SI]3A 04COMPARE AL AND MEMORY CONTENT OF SI

100EJNC L373 05JUMP NO CARRY TO LOOP L3

1010XCHG AL,[SI]86 04EXCHANGE AL WITH MEMORY CONTENT OF SI

1012MOV[SI-1],AL88 44 FFMOVE THE CONTENT OF AL TO SI

1015L3LOOP L2E2 F2MOVE TO LOOP L2

1017DEC BX4BDECREMENT BX REGISTER

1018JNZ L175 EAJUMP ON NO ZERO TO LOOP L1

101AMOV[1200],ALA2 00 12MOVE THE CONTENT OF AL TO OUTPUT MEMORY

101DHLTF4STOP THE PROGRAM

SMALLEST NUMBER IN AN ARRAYADDRESSLABEL MNEMONICSOP-CODECOMMANDS

1000MOV BX,0005BB 05 00COUNT THE VALUE OF ARRAY

1003DEC BX4BDECREMENT BX REGISTER

1004L1MOV CX,BX8B CBMOVE THE CONTENT OF BX TO CX REGISTER

1006MOV SI,1100BE 00 11MOVE THE DATA TO SI

1009L2MOV AL,[SI]8A 04MOVE THE MEMORY CONTENT OF SI TO AL

100BINC SI46

100CCMP AL,[SI]3A 04COMPARE AL AND MEMORY CONTENT OF SI

100EJC L373 05JUMP ON CARRY TO LOOP L3

1010XCHG AL,[SI]86 04EXCHANGE AL WITH MEMORY CONTENT OF SI

1012MOV[SI-1],AL88 44 FFMOVE THE CONTENT OF AL TO SI

1015L3LOOP L2E2 F2MOVE TO LOOP L2

1017DEC BX4BDECREMENT BX REGISTER

1018JNZ L175 EAJUMP ON NO ZERO TO LOOP L1

101AMOV[1200],ALA2 00 12MOVE THE CONTENT OF AL TO OUTPUT MEMORY

101DHLTF4STOP THE PROGRAM

SEARCH A NUMBER IN AN ARRAYADDRESSLABEL MNEMONICSOP-CODECOMMAND

1000MOV SI,1200BE 00 12MOVE THE DATA TO SI

1003MOV DI,1500BF 00 15MOVE THE DATA TO DI

1006MOV CL,[SI]8A 0CMOVE THE MEMORY CONTENTS OF SI TO CL

1008INC SI46INCREMENT SI

1009MOV AL,[SI]8A 04MOVE THE MEMORY CONTENTS OF SI TO AL

100BINC SI46INCREMENT SI

100CLOOPCMP AL,[SI]3A 04COMPARE THE MEMORY CONTENT OF SI WITH AL

100EJZ END74 09IF JUMP ON ZERO THEN END

1010INC SI46INCREMENT SI

1011DEC CLFE C9DECREMENT CL

1013JNZ LOOP75 F7JUMP ON NO ZERO

1015MOV AL,0FFHB0 FFMOVE THE DATA TO AL

1017MOV [SI],AL88 04MOVE THE CONTENT OF AL TO SI

1019ENDMOV BL,[SI] 8A 1CMOVE THE MEMORY CONTENT OF SI TO BL

101BMOV [DI],BL88 1DMOVE THE CONTENT OF BL TO DI

101DINT 02HCD 02IN

101FHLTF4STOP

Result:

Thus, the programs for sorting and searching have been executed using 8086 Microprocessor

EXPT NO: COUNTERS AND DELAY PROGRAMDATE: (USING 8086)AIM:To write an Assembly Language Program (ALP) for string manipulation operations using 8086. APPARATUS REQUIRED:SL.NOITEMSPECIFICATIONQUANTITY

1.Microprocessor kit8086 kit1

2.Keyboard1

3Power chord1

Write a program for delay of 8.96 ms if frequency of mp is 10 M HzMov bx, 64hRepe:Mov cx,32hBack: Dec cxJnz backDec bxJnz repeResult:

Thus, the programs for delay program have been executed using 8086 Microprocessor

EXPT NO: SYSTEM DATE

DATE: (USING 8086)Program for Setting System Date

AIM:To write an assembly language program (alp) Setting System Date using MASM software. APPARATUS REQUIRED:SL.NOITEM

1.PC

2.Keyboard

3MASM SOFTWARE

PROGRAM.model small .stack 100 .data MES DB 10,13,ENTER THE DATE WITH FORMAT: DD: MM :YY $MES 1 DB 10,13,DATE :$BUFF DB 10DB 0DB 10 DUP(0)YY DB ?MM DB ?D DB ?.CODE START: MOV AX, @DATAMOV DX,AXCALL P_DATA MOV AH,4CH INT 21H P_DATE PROC NEARMOV AH, 09HLEA DX,MES INT 21HMOV AH, 09HLEA DX,MES1 INT 21HMOV AH, 0AHLEA DX,BUFF INT 21HMOV CL,4MOV DL,00HLEA SI,BUFFADD SI,2BACK; MOV AL,[SI]CMP AL,:JZ TERROL DL.CLSUB AL,30HADD DL,ALINC SI JMP BACKTER: MOV DH,DLAND DL,-F0HROR DL,CLMOV AL,10MUL DL AND DH,-0FHADD AL,DHMOV D,AL MOV DL,0INC SIBACK1: MOV AL,[SI] CMP AL,: JZ TER1 ROL DL,CLSUB AL,30HADD DL, AL INC SI JMP BACK1TER1: MOV DH,DL AND DL,0F0H ROR DL,CLMOV AL,10MUL DL AND DH,0FHADD AL,DHMOV MM,ALMOV DL,0INC SIBACK2 MOV AL,[SI]CMP AL,13JZ TER2 ROD DL,CLSUB AL,30HADD DL,ALINC SI JMP BACK2TER2:MOV DH,DLAND DL,PFPHROR DL,CLSUB AL,30HADD DL,ALINC SI JMP BACK2SKIP2: MOV AH,2BH MOV CL,YY MOV CH,00ADD CX,2000MOV DH,MMMOV DL,DINT 21HRETP_DATE ENDPEND

RESULT:

Thus, the programs for setting the system time have been executed using MASM

TRAFFIC LIGHT CONTROLLER USING 8086AIMTo write an assembly language program to interface traffic light controller with 8086 using 8255.APPARATUS REQUIRED8086 Microprocessor kit, Power chord, Traffic light interface board26 channel busALGORITHM1. Find the control word for 8255 and data corresponding to the given conditions and load this data in to the memory location.2. Get the number of conditions in the C-register.3. Move the control word to accumulator and place in 8255.4. Move the first data to accumulator and place in port-A.5. Move the next data to accumulator and place in port-B.6. Move the next data to accumulator and place in port-C.7. Call the delay routine.8. Decrement the C-register. If C=0 then go to next step else go to step 3.9. Go to step 1 and Stop

PROGRAM

MEMORY ADDRESSLABELMNEMONICSOP CODE

1000START:MOV BX,1100HBB 00 11

1003MOV CX,000CHB9 00 0C

1006MOV AL,[BX]8A 07

1008OUT CONTRL,ALE6 0F

100A INC BX43

100B NEXT:MOV AL,[BX]8A 07

100D OUT PORTA,ALE6 0C

100F INC BX43

1010MOV AL,[BX]8A 07

1012OUT PORTB,ALE6 OD

1014INC BX43

1017MOV AL,[BX]8A 07

1019OUT PORTC,ALE6 0E

101BCALL DELAYE8 07 00

101EINC BX43

1021LOOP NEXT:E2 ED

1023JMP STARTEB DF

1024 DELAY:PUSH CX51

1025MOV CX,0005HB9 00 05

1028REPEAT:MOV DX,0FFFFHBA FF FF

103BLOOP2:DEC DX4A

103CJNZ LOOP275 FD

103ELOOP REPEATE2 F8

103FPOP CX59

1040RET C3

INPUT DATA

110080, 84, 2E, 4C

110484, 9D, 90, 93

11072B, 10, 64, 27, 12

PORT A [ {D0 - D20}0 - OFF & 1 ON ]

D8D7D6D5D4D3D2D1

POSITION 11000010084H

POSITION 21000010084H

POSITION 31001001193H

POSITION 40110010064H

PORT B [ {DL1 - DL8}0 - GREEN & 1 RED ]

D20D19D18D17DL78DL56DL34DL12

POSITION 1001011102EH

POSITION 2100111019DH

POSITION 3001010112BH

POSITION 40010011127H

PORT C [ {D0 - D20}0 - OFF & 1 ON ]

D16D15D14D13D12D11D10D9

POSITION 1010011004CH

POSITION 21001000090H

POSITION 30001000010H

POSITION 40001001012H

RESULTThus the assembly language program to interface traffic light controller with 8086 using 8255 was written and executed successfully.

EXPT NO: INTERFACING AND PROGRAMMING OF STEPPER DATE: MOTORSTEPPER MOTOR INTERFACINGAIM:

To write an assembly language program to interface stepper motor with 8086.

APPARATUS REQUIRED:

SL.NOITEMSPECIFICATIONQUANTITY

1.Microprocessor kit8086 kit1

2.Keyboard1

3.Power chord1

4.Stepper motor1

5.Interface boardStepper motor1

6.50 Channel Bus

THEORY:

A motor in which the rotor is able to assume only discrete stationary angular position is a stepper motor. The rotary motion occurs in a step-wise manner from one equilibrium position to the next. Stepper Motors are used very wisely in position control systems like printers, disk drives, process control machine tools, etc.

The basic two-phase stepper motor consists of two pairs of stator poles. Each of the four poles has its own winding. The excitation of any one winding generates a North Pole. A South Pole gets induced at the diametrically opposite side. The rotor magnetic system has two end faces. It is a permanent magnet with one face as South Pole and the other as North Pole.

The Stepper Motor windings A1, A2, B1, B2 are cyclically excited with a DC current to run the motor in clockwise direction. By reversing the phase sequence as A1, B2, A2, B1, anticlockwise stepping can be obtained.

2-PHASE SWITCHING SCHEME

In this scheme, any two adjacent stator windings are energized. The switching scheme is shown in the table given below. This scheme produces more torque.

ANTICLOCKWISECLOCKWISE

STEAA2BB2DATASTEAABB2DATA

P11P121

110019h11010Ah

201015h201106h

301106h301015h

41010Ah410019h

ADDRESS DECODING LOGIC

The 74138 chip is used for generating the address decoding logic to generate the device select pulses, CS1 & CS2 for selecting the IC 74175.The 74175 latches the data bus to the stepper motor driving circuitry.

Stepper Motor requires logic signals of relatively high power. Therefore, the interface circuitry that generates the driving pulses uses silicon Darlington pair transistors. The inputs for the interface circuit are TTL pulses generated under software control using the Microcontroller Kit. The TTL levels of pulse sequence from the data bus are translated to high voltage output pulses using a buffer 7407 with open collector.

PROGRAM:TO RUN STEPPER MOTOR AT DIFFERENT SPEEDS

ADDRESSLABELMNEMONICSOPCODE

1000START: MOV BL,20HB3 20

1002FORWD: MOV DI,OFFSET FORWBF 37 10

1005CALL ROTATEE8 1800

1008DEC BLFE CB

100A JNZ FORWD75 F6

100C CALL DELAYE8 21 00

100FMOV BL,20H B3 20

1011REVER: MOV DI,OFFSET REVBF 3B 10

1014CALL ROTATEE8 09 00

1017DEC BLFE CB

1019JNZ REVER75 F6

101B CALL DELAYE8 12 00

101E JMP STARTEB E0

1020 ROTATE: MOV CL,04B1 04

1022REPT: MOV AL,[DI]8A 05

1024OUT PORT1,ALE6 C0

1026MOV DX,1010H BA 1010

1029LOOP1: DEC DX4A

102A JNZ LOOP175 FD

102C INC DI47

102DLOOP REPT E2 F3

102F RETC3

1030MOV DX,0FFFFHBA FFFF

1033DELAY: DEC DX4A

103475 FD JNZ DELAY

1036RETC3

1037FORW: 9,5,6,0AH 09 05 06 0A

103B REV:0AH,6,5,90A 06 05 09

A-TO RUN STEPPER MOTOR AT DIFFERENT SPEED

MEMORYLABELMNEMONICSOPCODE

ADDRESS

1000STARTMOV D1 offsetBF,14,10

table (1014)

1003MOV CL, 04B1,04

1005LOOP1MOV AL,[D1]8A,05

1007OUTE6,C0

PORT1,AL

1009MOV DX,1010BA,10,10

100CDELAYDEC DX4A

100DJNZ DELAY75,FD

100FINC D147

1010LOOP LOOP1E2,F3

1012JMP STARTEB,EC

1014TABLEDB09,05,06,0A

EXPT NO: PROGRAMS FOR DIGITAL CLOCK AND STOP WATCH DATE: (USING 8086)

AIM:To write an Assembly Language Program (ALP) to display the Computers real-time clock on the screen as in digital clock.

APPARATUS REQUIRED:SL.NOITEMSPECIFICATIONQUANTITY

1.Macro assemblersoftware1

2.PC1

THEORY:CLOCK DISPLAY:Every PC is equipped with a real-time clock operated by a small battery. Even when the computer is switched off, this clock continues to function to maintain the clock in its CMOS registers. When the PC is on, the Operating System software reads this clock and stores the value in memory. User programs can access this data. The OS software provides facilities for the programmer to read this clock value using Software Interrupts. The IBM PC system BIOS also provides interrupt services to access this real time clock. The BIOS services provide the hours, minutes and seconds in CPU registers as BCD data. Hence they can be converted easily into ASCII value for displaying on screen.STOP WATCH DISPLAY:Every PC is equipped with BIOS that contains software to initialize the built in Timer IC to produce ticks with a periodicity of 18.2 ticks per every second. This does not rely on the real-time clock usually incorporated in the PC. The BIOS maintains the number of ticks elapsed since midnight or power-on of the machine. BIOS Interrupt 1Ah service provides the number of ticks elapsed at any time. One can use this service repeatedly to check for completion of 18 ticks, which would mean an approximate 1-second time gap. This can be used to update a memory variable to count seconds. After 60 seconds counting, the minute variable can be updated. Thus a stopwatch can be made to operate at the press of a key.

ALGORITHM:1. CLOCK DISPLAY PROGRAM:a) Initialize data segment to hold the clock data as hours, minutes and seconds.b) Display a message on screen for the user.c) Call the procedure to get the time from PCs real-time clock using BIOS interrupt.d) Call the procedure to convert the clock data into ASCII and display it on the screen.e) Check for user key press using BIOS interrupt service.f) If no key is pressed continue updating the clock on screen.g) If a key is pressed terminate the program.Procedure Get Time:a) Use Function 02 in Interrupt 1Ah service to read the PCs real-time clock. This function returns hours in CH, minutes in CL and seconds in DH registers.b) Divide each of these registers by 10h to separate the BCD digits.c) Convert each separated digit into ASCII by adding 30h with it.d) Store each digit in the appropriate location in the memory.e) Return from the procedure.Procedure ShowTime:a) Use BIOS interrupt 10h function 02h to set video cursor at desired location on the screen.b) Use DOS interrupt 21h function 09h to display the stored clock data from Data segment memory as a string terminated by $.c) Call a procedure to delay for few milliseconds doing nothing.d) Return from the procedure.Procedure Delay:a) Load a value in CX register.b) Do nothing.c) Decrement CX register by one.d) Loop until CX register is zero.e) Return from the procedure.

2. STOP WATCH DISPLAY:a) Initialize Data Segment Registerb) Display a friendly message using DOS Int 21h function 09hc) Call the procedure to show the watch with zero valuesd) Check for user key press using BIOS Int 16h function 01he) If no key is pressed go to step 4f) On key press, call the procedure to start the watch.g) On return from the procedure terminate the programProcedure Show watch:a) Position the video cursor at the desired location on screen using BIOS Int 10h function 02hb) Display the watch data in memory using DOS Int 21h function 09hc) Return from the procedureProcedure Start Watch:a) Get the current tick value using BIOS Int 1Ah function 00hb) Store the last two digits of the returned value in DL into BL. This becomes the old valuec) Get the current tick value using BIOS Int 1Ah function 00hd) Subtract the old value from the new valuee) Check whether it is 18 (which means 1 second)f) If it is less than 18, goto step 3g) If it is equal to 18, then increment LSD of seconds.h) If LSD is greater than 9, proceed to increment MSD of seconds and make LSD of seconds equal to 0i) Upon incrementing MSD of seconds if it is equal to 6, then make MSD equal to 0 and proceed to update minutes.j) Increment LSD of minutes.k) If LSD of minutes is greater than 9, increment MSD of minutes and make LSD equal to 0l) If MSD of minutes is equal to 6, then make minutes and seconds equal to 0.m) Call the procedure to Show the Watch.n) Check for User key press using BIOS Int 16h function 01h.o) If there is no key press proceed to step 1p) If there is a key pressed, check whether that key is q.q) If the key pressed is q, then return from the procedure.r) Otherwise, go to step 1

PROGRAM:CLOCK DISPLAY PROGRAM

.MODEL SMALL.STACK.DATAMESSAGE DB 0AH,0DHMESSAGE1 DB 0AH,0DHPROMPT DB TIMER::HOURS1 DB 0HOURS2 DB 0SEPERATOR1 DB :MINUTES1 DB 0MINUTES2 DB 0SEPERATOR2 DB :SECONDS1 DB 0SECONDS2 DB 0LAST DB $DIVISOR DB 10H.CODEMOV AX,@DATAMOV DS,AXMOV AH,09HLEA DX,MESSAGEINT 21HAGAIN:CALL GETTIMECALL SHOWTIMEMOV AH,01HINT 16HJZ AGAINMOV AH,04CHINT 21HGET TIME PROCMOV AH,02HINT 1AHMOV AL,CHDIV DIVISORADD AL,30HADD AH,30HMOV HOURS1,ALMOV HOURS2,AHXOR AX,AXMOV AL,CLDIV DIVISORADD AL,30HADD AH,30HMOV MINUTES1,ALMOV MINUTES2,AHXOR AX,AXMOV AL,DHDIV DIVISORADD AL,30HADD AH,30HMOV SECONDS1,ALMOV SECONDS2,AHRETGET TIME ENDPSHOW TIME PROCMOV AH,02HMOV BH,0MOV DH,20DMOV DL,10DINT 10HMOV AH,09HLEA DX,PROMPTINT 21HCALL DELAY RETSHOW TIME ENDPDELAY PROCPUSH CXMOV CX,0FFFHIDLE:NOPNOPNOPNOPLOOP IDLE OUTPOP CXRETDELAY ENP ENDSTOP WATCH DISPLAY.MODEL SMALL.STACK.DATAMESSAGE DB 0AH,0DHMESSAGE1 DB 0AH,0DHPROMPT DB TIMER::MINUTES1 DB 0MINUTES2 DB 0SEPARATOR1 DB :SECONDS1 DB 0SECONDS2 DB 0SEPERATOR2 DB .LAST DB $DIVISOR DB 10H.CODEMOV AX,@DATAMOV DS,AXMOV AH,09HLEA DX,MESSAGEINT 21HCALL SHOW WATCHAGAIN: MOV AH,01HINT 16HJZ AGAINCALL START WATCHMOV AH,04CHINT 21HSTART WATCH PROCDOITAGAIN:MOV AH,00HINT 1AHMOV BL,DLCHECKAGAIN:MOV AH,00HINT 1AHSUB DL,BLCMP DL,18JB CHECKAGAINMOV AL,SECONDS2INC ALCMP AL,39HJBE UPDATE_SECONDS2MOV AL,30HMOV SECONDS2,ALMOV AL,SECONDS1INC ALCMP AL,36HJB UPDATE_SECONDS1MOV AL,30HMOV MINUTES2,ALMOV AL,MINUTES2INC ALCMP AL,39HJBE UPDATE_MINUTES2MOV AL,30HMOV MINUTES2,ALMOV AL,MINUTES1INC ALCMP AL,36HJB UPDATE_MINUTES1MOV AL,0UPDATE_MINUTES1:MOV MINUTES1,ALJMP DONEUPDATE_MINUTES2:MOV MINUTES2,ALJMP DONEUPDATE_SECONDS1:MOV SECONDS1,ALJMP DONEUPDATE_SECONDS2:MOV SECONDS2,ALDONE:CALL SHOW_ WATCHMOV AH,01HINT 16HJNZ CHECK_KEYJMP DOITAGAINCHECK_KEY:MOV AH,00HINT 16HCMP AL,qJNZ DOITAGAINRETSTART_WATCH ENDPSHOW_WATCH PROCMOV DH,10DMOV DL,10DMOV AH,02HMOV BH,0INT 10HMOV AH,09HLEA DX,PROMPTINT 21HRETSHOW_WATCH ENDPEND

EXPT NO: INTERFACING AND PROGRAMMING OF 8279 USING 8086DATE:

AIM:

To perform interfacing and programming using 8279, 8259 and 8253 using 8086.

APPARATUS REQUIRED:SL.NOITEMSPECIFICATIONQUANTITY

1.Microprocessor kit8086 kit1

2.Keyboard1

3.Power chord1

4.50 channel bus3

5.8279 kit1

ALGORITHM:ROLLING DIAPLAYa) Start the program.b) Set 8279 for 8-bit character display right entry and a key lock out.c) Clear the display.d) Load the data to control register to write to the display.e) Set the counter value.f) Initialize the HL register pair and memory pointer.g) Call the subroutine for delay procedure.h) Increment H and decrement B register.i) Repeat the steps e and hj) Stop the program.READ A KEY:ADDRESSLABELMNEMONICSOPCODE

1000MOV BX,1100 BB 00 11

1003LOOP: IN AL,C2 E4 C2

1005TEST AL,07 A8 07

1007JZ LOOP 74 FA

1009MOV AL,40 B0 40

100B OUT C2,AL E6 C2

100D IN AL,C0 E4 C0

100F MOV [BX],AL 88 07

1011HLT F4

ROLLING DISPLAY (DISPLAY MESSAGE IS CSE- A)

ADDRESSLOOPMNEMONICSOP-CODECOMMANDS

1000STARTMOV SI,1200BE 00 12SET MODE COUNT AND DISPLAY

1003MOV CX,000FB9 0F 00MOVE 000F DATA IN CX

1006MOV AL,10B0 10SET ACC DATA

1008OUT C2,ALE6 C2CLEAR DISPLAY

100AMOV AL,CCB0 CCMOVE CC DATA IN AL

100COUT C2,ALE6 C2SET PORT DATA

100EMOV AL,90B0 90WRITE DISPLAY

1010OUT C2,ALE6,C2CLEAR DISPLAY IN RAM

1012NEXTMOV AL,[SI]8A 04LOP FOR THE PRESSING OF KEY

1014OUT CO,ALE6 C0SET TO READ FIFO RAM

1016CALL DELAYE8 E7 04CALL DISPLAY DATA

1019INC SI46GET THE CORRESPONDING CODE FORM LOOKUP TABLE

101ALOOP NEXTE2 F6GO TO NEXT

101CJMP STARTEB E2JUMP START

SUB PROGARM:ADDRESS

LOOPMNEMONICSOP-CODECOMMANDS

1500 DELAYMOV DX,A0FFBA FF A0MOVE THE VALUE TODX REGISTER

1503DEC DX4ADECREMENT DX

1504JNZ LOOP175 FDJUMP NO ZERO

1506RETC3RETURN

LOOK-UP TABLEADDRESSDATA

1200FF,FF,FF,FF

1204FF,FF,FF,FF

120868,6C,68,FF

120CFF,38,FF,FF

EXPT NO: INTERFACING AND PROGRAMMING OF PRINTER INTERFACEUSING 8086DATE: AIM:To perform interfacing and programming Printer interface using 8086.

APPARATUS REQUIRED:SL.NOITEMSPECIFICATIONQUANTITY

1.Microprocessor kit8086 kit1

2.Keyboard1

3.Power chord1

4.50 channel bus3

5.Printer interface1

6.dot matrix Printer 1

PROGRAMADDRESSLABELMNEMONICSOPCODE

1000MOV AL,05HB0 05

1002OUT CONTL,ALE6 D0

1004IN AL,STUSE4 C0

1006AND AL,20H24 20

1008CMP AL,20H3C 20

100A JNZ ERR75 44

100C MOV AL,41H B0 41

100E CALL PRINT E8 06 00

1011MOV AL,0AHB0 0A

1013CALL PRINTE8 01 00

1016HLTF4

1017PRINT: MOV BL,AL8A D8

1019CALL CHECKE8 10 00

101C STAS: MOV AL,BL8A C3

101E OUT DATA,ALE6 C8

1020MOV AL,01HB0 01

1022OUT CONTL,ALE6 D0

1024NOP90

1025NOP90

1026NOP90

1027MOV AL,05HB0 05

1029OUT CONTL,ALE6 D0

102B RETC3

102C CHECK:IN AL,STUSE4 C0

102E AND AL,20H24 20

1030JZ CHECK74 FA

1032IN AL,STUSE4 C0

1034AND AL,80H24 80

1036CMP AL,80H3C 80

1038JNZ STAS 75 E2

103A JMP CHECKEB F0

103C HLTF4

1050ERR:INT 2CD 02

1052END

EXPT NO: SERIAL COMMUNICATION BETWEEN TWO MP KITS DATE: USING 8251AIM:To perform serial communication between two microprocessor kits using 8251.APPARATUS REQUIRED:

SL.NOITEMSPECIFICATIONQUANTITY

1.Microprocessor kit8086 kit1

2.Keyboard1

3.Power chord1

4.VXT parallel bus1

5.Interface board82511

6.Serial connection cableRS232

ALGORITHM:a) Connect the two serial ports with RS232 cable.b) First make the receiver end ready and then execute the program at transmitter end.c) The transmitter transmits the data serially.d) The receiver data is stored in the memory location given in the program.

TRANSMITTER PROGRAMADDRESSMNEMONICSOP-CODECOMMANDS

1000MOV AL,36BO 36MOVE THE VALUE TO ACCUMULATOR

1002OUT CE,ALE6 CESEND DATA TO OUTPUT PORT

1004MOV AL,10B0 10MOVE THE VALUE TO ACCUMULATOR

1006OUT C8,ALE6 C8SEND DATA TO OUTPUT PORT

1008MOV AL,00B0 00MOVE THE VALUE TO ACCUMULATOR

100AOUT C8,ALE6 C8 SEND DATA TO OUTPUT PORT

100CMOV AL,4EB0 4EMOVE THE VALUE TO ACCUMULATOR

100EOUT C2,ALE6 C2SEND DATA TO OUTPUT PORT

1010MOV AL,37B0 37MOVE THE VALUE TO ACCUMULATOR

1012OUT C2,ALE6 C2SEND DATA TO OUTPUT PORT

1014MOV AL,AABO AAMOVE THE VALUE TO ACCUMULATOR

1016OUT CO,ALE6 COSEND DATA TO OUTPUT PORT

1018INT 02CD 02INTERUPT

RECEIVER PROGRAMADDRESSMNEMONICSOP-CODECOMMANDS

1200IN AL,C0E4 C0INTERUPT

1202MOV BX[1250]BB 50 12MOVE THE VALUE TO ADDRESS

1205MOV BX,AL88 07MOVE ACCUMULATORDATA TO BX

1207INT 02CD 02INTERUPT

INTERFACING 8255 WITH 8086AIM:To interface programmable peripheral interface 8255 with 8086 and study its characteristics in mode0APPARATUS REQUIRED:1. 8086 p kit2. 8255 Interface board3. DC regulated power supply 4. VXT parallel bus I/O MODES:Control Word:

MODE 0 SIMPLE I/O MODE:This mode provides simple I/O operations for each of the three ports and is suitable for synchronous data transfer. In this mode, all the ports can be configured either as input or output port.Let us initialize port A as input port PROGRAM:ADDRESSLABELMNEMONICSOPCODES

1000MOV SI , 1500BE 00 15

1003MOV AL,90B0 90

1005OUT C6,ALE6 C6

1007IN AL,C0E4 C0

1009MOV [SI], AL88 04

100BHLTF4

MODE 0 STROBED I/O MODE:Let us initialize port A as input port and port B as output portPROGRAM:ADDRESSLABELMNEMONICSOPCODES

1000MOV AL,90B0 90

1002OUT C6,ALE6 C6

1004IN AL,C0E4 C0

1006OUT C2 ALE6 C2

1008HLTF4

RESULT:Thus 8255 are interfaced and their characteristic in mode0 was studied.

EXPT NO: PROGRAMS FOR INTERFACING ADC AND DACDATE: (USING 8086)

AIM:To write an Assembly Language Program (ALP) to interface ADC and DAC using 8086 microprocessor.

APPARATUS REQUIRED:SL.NOITEMSPECIFICATIONQUANTITY

1.Microprocessor kit8086 kit1

2.Keyboard1

3Power chord1

4.ADC kit1

5.Multimeter1

6.DAC kit1

7.50 channel Bus2

8.CRO1

9.CRO probe1

THEORY:ANALOG TO DIGITAL CONVERTER:ADC-0809 A/D card is an 8bit analog to digital converter with 8 channel multiplexer and microprocessor compatible control logic. The heart of the car is ADC-0809 monolithic C-MOS device. Its conversion time is 100 micro sec. it eliminates the need for external zero and full scale adjustment. The card selects one of the eight unipolar inputs by using the address decoder. ADC-0809 uses successive approximation as conversion techniques. Input is latched to the decoder on the low to high transition of the address latch enable signal. The conversion starts on the falling edge of the start of conversion signal. During the process end of conversion signal goes low otherwise it remains high. Digital output can be read from ADC making output enable signal high.Circuit description:The data line of ADC-0809 d0 to d7 is connected to port-A as input port. SOC is connected to PC0 as output port; EOC is connected to PC4 as input port & ALE is connected to PC1 as output port. All eight inputs of 0-5 volts ADC-0809 analog with external clock, external EOC, external SOC signals are brought to 26 pin connector. A clock input of a specified frequency is required for the operation of ADC-0809. A counter 74LS93 has been used for this purpose.Hardware installation: Connect ADC-0809 interfacing module to 8255-I of 8086 trainer kit through 26 pin FRC cable. Be sure about the direction of the cable i.e. pin NO.1 of module should be connected to pin NO.1 of 8255 connector. Connect +5v, GND from the trainer kit (+5v & GND signals are available in the 25 & 26 pin of FRC 8255-I connector)DIGITAL TO ANALOG CONVERTER:A digital number can be converted to an analog voltage by selectively adding voltage which is proportional to the weight of each binary digit. The module finds a great use in feedback system, like output of a channel is fed to a control circuit to contain output in the form of signal is observed at an oscilloscope or for a hard copy fed to an X-Y Recorder/X-T Recorder. Different wave forms can be generated by using this DAC-0800 module.Circuit description:Port A & port B are connected to channel 1 and channel 2 respectively. A reference voltage of 8V is generated using 723 and is given to verify points of the DAC 0800. The standard output voltage will be 7.98V when FF is outputted and will be 0v when 00 is outputted. The output of DAC-0800 is fed to the operational amplifier to get the final output as X out and Y out. Several interesting waveforms can be generated and observed on oscilloscope.Hardware installation: Connect DAC-0800 interfacing module to 8255-I of 8085/8051/80865 trainer kit through 26 pin FRC cable. Be sure about the direction of the cable i.e. pin No.1 of module should be connected to pin No.1 of 8255 connector. Connect +12V, -12V & GND from the trainer kit.ALGORITHM:ANALOG TO DIGITAL CONVERTER:a) Start the program.b) Enter the control word.c) Clear the register.d) Move the register at AL=0.e) Read EOC from Accumulator.f) Read 16 bit ADC data.g) Clear CALL display.h) CALL display routine.i) Load CX register as 0F0H.j) Jump till CX=0.k) Jump to start.l) Stop the program.DIGITAL TO ANALOG CONVERTER:1) GENERATION OF SAWTOOTH WAVEa) Start the programb) Load the input value to the accumulator.c) Move to C0.d) Increment AL.e) If jump on no carry then execute loop L1.f) Jump on START.g) Return.h) Store the output in the required memory location.i) Stop the program.

2) GENERATION OF SQUARE WAVEa) Start the programb) Load the input value to the accumulator.c) Call the delay.d) Jump on start.e) Go to loop L1.f) Return.g) Store the output in the required memory location.h) Stop the program.3) GENERATION OF TRAINGULAR WAVEa) Start the program.b) Load the value in the accumulator.c) Increment the BL register.d) Jump on no zero.e) Decrement the BL register.f) Jump on no carry.g) Return.h) Store the output in the required memory location.i) Stop the program.

PROGRAM:ANALOG TO DIGITAL CONVERTERADDRESSLABELMNEMONICS OP-CODECOMMANDS

1000MOV AL,03B0,03MOVE DATA TO ACCUMULATOR

1002OUT C8,ALE6,C8MOVE THE CONTENT OF AL TO OUTPUT PORT

1004MOV AL,23B0,23MOVE DATA TO ACCUMULATOR

1006OUT C8,ALE6,C8MOVE THE CONTENT OF AL TO OUTPUT PORT

1008MOV AL,03B0,03MOVE DATA TO ACCUMULATOR

100AOUT C8,ALE6,C8MOVE THE CONTENT OF AL TO OUTPUT PORT

100CMOV AL,01B0,01MOVE DATA TO ACCUMULATOR

100EOUT D0,ALE6,D0MOVE THE CONTENT OF AL TO OUTPUT PORT

1010MOV AL,00B0,00MOVE DATA TO ACCUMULATOR

1012OUT D0,ALE6,D0MOVE THE CONTENT OF AL TO OUTPUT PORT

1014LOOPIN AL,E0E4,E0MOVE THE CONTENT OF INPUT PORT TO AL

1016AND AL,0124,01PERFORM AND OPERATION WITH AL AND DATA

1018CMP AL,013C,01COMPARE THE VALUE OF AL WITH DATA

101AJNZ LOOP75,F8JUMP ON NO ZERO

101CIN AL,C0E4,C0MOVE THE CONTENT OF INPUT PORT TO AL

101EMOV BX,1100BB,00,11MOVE THE DATA TO BX

1021MOV[BX],AL88,07MOVE THE CONTENT OF AL TO BX

1023HLTF4STOP

DIGITAL TO ANALOG CONVERTER1. GENERATION OF SAWTOOTH WAVEADDRESSLABELMNEMONICSOP-CODECOMMANDS

1000STARTMOV AL,00B0,00MOVE THE DATA TO AL REGISTER

1002L1OUT C0,ALE6,C0MOVE THE CONTENT OF AL TO OUTPUT PORT C0

1004INC ALFE,C0INCREMENT AL REGISTER

1006JNZ L175,FAJUMP ON NO ZERO

1008JMP STARTEB,F6JUMP TO START

100ARETC3RETURN

2. GENERATION OF SQUARE WAVEADDRESSLABELMNEMONICSOPCODECOMMANDS

1000STARTMOV AL,00B0,00MOVE THE DATA TO AL REGISTER

1002OUT C0,ALE6,C0MOVE THE CONTENT OF AL TO OUTPUT PORT C8

1004CALL DELAYE8,09,00CALL THE DELAY PROGRAM

1007MOV AL,FFB0,FFMOVE THE DATA TO AL REGISTER

1009OUT C0,ALE6,C0MOVE THE CONTENT OF AL TO OUTPUT PORT C8

100BCALL DELAYE8,02,00CALL THE DELAY PROGRAM

100EJMP STARTEB,F0JUMP TO START

1010DELAYMOV CX,05,FFB9,FF,05DECLARE THE COUNT VALUE

1013L1LOOP L1E2,FEGO TO LOOP L1

1015RETC3RETURN

3. GENERATION OF TRAINGULAR WAVE

ADDRESSLABELMNEMONICSOP-CODECOMMANDS

1000STARTMOV BL,00B3,00MOVE THE DATA TO BASE REGISTER

1002L1MOV AL,BL88,D8MOVE THE CONTENT BL TO AL REGISTER

1004OUT C0,ALE6,C0MOVE THE CONTENT OF AL TO OUTPUT PORT C8

1006INC BLFE,C3INCREMENT THE VALUE OF BL REGISTER

1008JNZ L175,F8JUMP ON NO ZERO

100AMOV BL,FFB3,FFMOVE THE DATA TO BL REGISTER

100CL2MOV AL,BL88,D8MOVE THE CONTENT BL TO AL REGISTER

100EOUT C0,ALE6,C0MOVE THE CONTENT OF AL TO OUTPUT PORT C8

1010DEC BLFE,CBDECREMENT THE VALUE OF BL REGISTER

1012JNC L275,F8JUMP ON NO CARRY

1014JMP STARTEB,EAJUMP ON START

1016RETC3RETURN

PROGRAMMING USING ARITHMETIC, LOGICAL AND BIT MANIPULATION INSTRUCTIONS OF 8051 MICROCONTROLLEREX NO: aDATE:ADDITION OF TWO 8-BIT NUMBERS USING 8051

AIMTo write an assembly language program to add the two 8-bit numbers using microcontroller instruction set.

APPARATUS REQUIRED1. 8051 Microcontroller kit2. Power chord.ALGORITHM1. Clear C-register for carry.2. Move the first data to Accumulator.3. Add the second data with Accumulator.4. Store the sum in memory pointed by DPTR.PROGRAMMEMORY ADDRESSLABELMNEMONICSOP CODE

6100CLR CC3

6101MOV A,#data174, 3F

6103ADD A, #data224, 29

6105MOV DPTR, #6500H90, 65, 00

6108MOVX @DPTR, AF0

6109LOOPSJMP LOOP80, FE

OBSERVATIONINPUTOUTPUT

AddressDataAddressData

3F650068

29

RESULTThus, the assembly language program to add the two 8-bit numbers using 8051 instruction set was written and executed successfully.

1. PROGRAMMING USING ARITHMETIC, LOGICAL AND BIT MANIPULATION INSTRUCTIONS OF 8051 MICROCONTROLLEREX NO: bDATE:SUBTRACTION OF TWO 8-BIT NUMBERS USING 8051

AIMTo write an assembly language program to subtract the two 8-bit numbers using microcontroller instruction set.APPARATUS REQUIRED1. 8051 microcontroller kit2. Power chord.ALGORITHM1. Clear C-register for carry.2. Move the first data to Accumulator.3. Subtract the second data with Accumulator.4. Store the sum in memory pointed by DPTR.PROGRAMMEMORY ADDRESSLABELMNEMONICSOP CODECOMMENTS

6100CLR CC3

6101MOV A,#data174, 59

6103SUBB A, #data294, 28

6105MOV DPTR, #6500H90, 65, 00

6108MOVX @DPTR, AF0

6109LOOPSJMP LOOP80, FE

OBSERVATIONINPUTOUTPUT

AddressDataAddressData

59650031

28

RESULTThus, the assembly language program to subtract the two 8-bit numbers was written and executed successfully.

PROGRAMMING USING ARITHMETIC, LOGICAL AND BIT MANIPULATION INSTRUCTIONS OF 8051 MICROCONTROLLEREX NO: cDATE:MULTIPLICATION OF TWO 8-BIT NUMBERS USING 8051

AIMTo write an assembly language program to multiply the two 8-bit numbers using microcontroller instruction set.APPARATUS REQUIRED1. 8051 Microcontroller kit2. Power chord.ALGORITHM1. Clear C-register for carry.2. Move the first data to Accumulator.3. Move the second data to B-register.4. Multiply the second data with Accumulator.5. The higher order of the result is in B-register.6. The lower order of the result is in Accumulator.7. Store the sum in memory pointed by DPTR.

PROGRAMMEMORY ADDRESSLABELMNEMONICSOP CODE

6100CLR CC3

6101MOV A,#data174, 04

6103MOV B,#data275, F0, 02

6106MUL ABA4

6107MOV DPTR, #6500H90, 65, 00

610AMOVX @DPTR, AF0

610BINC DPTRA3

610CMOV A, BE5, F0

610EMOVX @DPTR, AF0

610FLOOPSJMP LOOP80, FE

OBSERVATION

INPUTOUTPUT

AddressDataAddressData

06650018

04650100

RESULTThus, the assembly language program to multiply the two 8-bit numbers using 8051 instruction set was written and executed

PROGRAMMING USING ARITHMETIC, LOGICAL AND BIT MANIPULATION INSTRUCTIONS OF 8051 MICROCONTROLLEREX NO: dDATE:DIVISION OF TWO 8-BIT NUMBERS USING 8051AIMTo write an assembly language program to divide the two 8-bit numbers using microcontroller instruction set.APPARATUS REQUIRED1. 8051 Microcontroller kit2. Power chord.ALGORITHM1. Clear C-register for carry.2. Move the first data to Accumulator.3. Move the second data to B-register.4. Multiply the second data with Accumulator.5. The remainder of the result is in B-register.6. The quotient of the result is in Accumulator.7. Store the sum in memory pointed by DPTR.

PROGRAMMEMORY ADDRESSLABELMNEMONICSOP CODE

6100CLR CC3

6101MOV A,#data174, 08

6103MOV B,#data275, F0, 02

6106DIV AB84

6107MOV DPTR, #6500H90, 65, 00

610AMOVX @DPTR, AF0

610BINC DPTRA3

610CMOV A, BE5, F0

610EMOVX @DPTR, AF0

610FLOOPSJMP LOOP80, FE

OBSERVATIONINPUTOUTPUT

AddressDataAddressData

3F650002 (QU)

1E650103(RE)

RESULTThus, the assembly language program to divide the two 8-bit numbers using 8051 instruction set was written and executed successfully. PROGRAMMING USING ARITHMETIC, LOGICAL AND BIT MANIPULATION INSTRUCTIONS OF 8051 MICROCONTROLLEREX NO: eDATE:ONES AND TWOS COMPLEMENT USING 8051AIMTo write an assembly language program to find the 1s and 2s complement of an 8-bit number using microcontroller instruction set.APPARATUS REQUIRED1. 8051 Microcontroller kit2. Power chord.ALGORITHM1. Move the data to Accumulator.2. Complement the accumulator.3. Move the ones complement output to the memory 6500H. 4. Add 01H with accumulator.5. Move the twos complement output to the memory 6501H. PROGRAMMEMORY ADDRESSLABELMNEMONICSOP CODE

6100MOV A, #data74, CC

6101CPL AF4

6103MOV DPTR, #6500H90, 65, 00

6106MOVX @DPTR, AF0

6107INC A04

610AINC DPTRA3

610BMOVX @DPTR, AF0

610CLOOPSJMP LOOP80, FE

OBSERVATIONINPUTOUTPUT

AddressDataAddressData

CC650033

650134

RESULTThus the assembly language program to find the 1s and 2s complement of an 8-bit number using 8051 instruction set was written and executed successfully. PROGRAMMING USING ARITHMETIC, LOGICAL AND BIT MANIPULATION INSTRUCTIONS OF 8051 MICROCONTROLLEREX NO: fDATE:SETTING BITS IN AN 8 BIT NUMBERS USING 8051AIMTo write an assembly language program to find the Setting bits an 8-bit number using microcontroller instruction set.APPARATUS REQUIRED1. 8051 Microcontroller kit2. Power chord.ALGORITHM1. Move the data to Accumulator.2. Perform OR operation with accumulator.3. Move the accumulator output to the memory 6500H. PROGRAMMEMORY ADDRESSLABELMNEMONICSOP CODE

6100MOV A, #data174, 2F

6102ORL A, #data244, 7E

6104MOV DPTR, #6500H90, 65, 00

6107MOVX @DPTR, AF0

6108LOOPSJMP LOOP80, FE

OBSERVATION

INPUTOUTPUT

AddressDataAddressData

2F65007F

7E

RESULTThus the assembly language program to Setting bits an 8-bit number using microcontroller instruction set was written and executed successfully. PROGRAMMING USING ARITHMETIC, LOGICAL AND BIT MANIPULATION INSTRUCTIONS OF 8051 MICROCONTROLLEREX NO: gDATE:MASKING BITS IN AN 8 BIT NUMBERS USING 8051AIMTo write an assembly language program to find the Masking bits an 8-bit number using microcontroller instruction set.APPARATUS REQUIRED1. 8051 Microcontroller kit2. Power chord.ALGORITHM1. Move the data to Accumulator.2. Perform AND operation with accumulator.3. Move the accumulator output to the memory 6500H. PROGRAMMEMORY ADDRESSLABELMNEMONICSOP CODE

6100MOV A, #data174, 2F

6102ANL A, #data254, 7E

6104MOV DPTR, #6500H90, 65, 00

6107MOVX @DPTR, AF0

6108LOOPSJMP LOOP80, FE

OBSERVATION

INPUTOUTPUT

AddressDataAddressData

6500

RESULTThus the assembly language program to masking bits an 8-bit number using microcontroller instruction set was written and executed successfully.

PROGRAMS FOR SORTING AND SEARCHING (USING 8051)EX NO: aDATE:ARRANGE THE GIVEN NUMBER IN ASCENDING ORDER AIMTo write an assembly language program to sort an array of data in ascending order using 8051 simulator tool.APPARATUS REQUIRED8051 Microcontroller KitALGORITHM1. Load the count value from memory to A-register and store it in B-register.2. Decrement B-register (B is a count for (N-1) repetitions). 3. Set HL pair as data address pointer.4. Set C-register as counter for (N-1) comparisons.5. Load a data of the array in accumulator using the data address pointer.6. Increment the HL pair (data address pointer).7. Compare the data pointed by HL with accumulator.8. If carry flag is set (if the content of accumulator is smaller than memory) then go to step 10, otherwise, go to next step.9. Exchange the content of memory pointed by HL and the accumulator.10. Decrement C-register. If zero flag is reset go to step 6, otherwise, go to next step.11. Decrement B-register. If zero flag is reset go to step 3, otherwise, go to next step.

PROGRAMMEMORY ADDRESSLABELMNEMONICSOP CODE

6100MOV R3, #04H7B, 04

6102MOV R4, #04H7C, 04

6104MOV DPTR, #6500H90, 65, 00

6107LOOP1MOV R5, DPLAD, 82,

6109MOV R6, DPHAE, 83

610BMOVX A, @DPTRE0

610CMOV B,AF5, F0

610ELOOPINC DPTRA3

610FMOVX A, @DPTRE0

6110MOV R0, AF8

6111CLR CC3

6112SUBB A, B95, F0

6114JNC LOOP250,13

6116EXCHPUSH DPLC0, 82

6118PUSH DPHC0, 83

611AMOV DPL, R58D, 82

611CMOV DPH, R68E, 83

611EMOV A, R0E8

611FMOVX @DPTR,AF0

6120POP DPHD0, 83

6122POP DPLD0, 82

6124MOV A, BE5, F0

6126MOVX @DPTR, AF0

6127MOV B, R088, FO

6129LOOP2DJNZ R3, REPTDB, E3

612BDEC R41C

612CMOV A, R4EC

612DMOV R3, AFB

612EINC R40C

612FMOV DPL, R58D, 82

6131MOV DPH, R68E, 83

6133INC DPTRA3

6134DJNZ R4, LOOP1DC, D1

6136HLTSJMP HLT80, FE

OBSERVATIONINPUT(Before sorting)OUTPUT(After sorting)

AddressDataAddressData

650005H650005H

65010AH650103H

650206H650206H

650303H650308H

650408H65040AH

RESULTThus, the assembly language program to sort an array of data in ascending order using 8051 simulator tools was written and executed successfully.PROGRAMS FOR SORTING AND SEARCHING (USING 8051)EX NO: bDATE:ARRANGE THE GIVEN NUMBER IN DESCENDING ORDER AIMTo write an assembly language program to sort an array of data in descending order using 8051 simulator tool.APPARATUS REQUIRED8051 Microcontroller KitALGORITHM1. Load the count value from memory to A-register and store it in B-register.2. Decrement B-register (B is a count for (N-1) repetitions). 3. Set HL pair as data address pointer.4. Set C-register as counter for (N-1) comparisons.5. Load a data of the array in accumulator using the data address pointer.6. Increment the HL pair (data address pointer).7. Compare the data pointed by HL with accumulator.8. If carry flag is set (if the content of accumulator is smaller than memory) then go to step 10, otherwise, go to next step.9. Exchange the content of memory pointed by HL and the accumulator.10. Decrement C-register. If zero flag is reset go to step 6, otherwise, go to next step.11. Decrement B-register. If zero flag is reset go to step 3, otherwise, go to next step.

PROGRAMMEMORY ADDRESSLABELMNEMONICSOP CODE

6100MOV R3, #04H7B, 04

6102MOV R4, #04H7C, 04

6104MOV DPTR, #6500H90, 65, 00

6107LOOP1MOV R5, DPLAD, 82,

6109MOV R6, DPHAE, 83

610BMOVX A, @DPTRE0

610CMOV B,AF5, F0

610ELOOPINC DPTRA3

610FMOVX A, @DPTRE0

6110MOV R0, AF8

6111CLR CC3

6112SUBB A, B95, F0

6114JNC LOOP240,13

6116EXCHPUSH DPLC0, 82

6118PUSH DPHC0, 83

611AMOV DPL, R58D, 82

611CMOV DPH, R68E, 83

611EMOV A, R0E8

611FMOVX @DPTR,AF0

6120POP DPHD0, 83

6122POP DPLD0, 82

6124MOV A, BE5, F0

6126MOVX @DPTR, AF0

6127MOV B, R088, F0

6129LOOP2DJNZ R3, REPTDB, E3

612BDEC R41C

612CMOV A, R4EC

612DMOV R3, AFB

612EINC R40C

612FMOV DPL, R58D, 82

6131MOV DPH, R68E, 83

6133INC DPTRA3

6134DJNZ R4, LOOP1DC, D1

6136HLTSJMP HLT80, FE

OBSERVATIONINPUT(Before sorting)OUTPUT(After sorting)

AddressDataAddressData

650005H650005H

65010AH65010CH

65020CH65020AH

650306H650308H

650408H650406H

RESULT Thus the assembly language program to sort an array of data in descending order using 8051 simulator tools was written and executed successfully.PROGRAMS FOR SORTING AND SEARCHING (USING 8051)EX NO: cDATE:LARGEST ELEMENT IN AN ARRAYAIMTo write an assembly language program to find the largest number in an array using 8051 simulator tools.APPARATUS REQUIRED8051 Microcontroller kit, Power chordALGORITHM1. Clear C-register for carry.2. Move the first data from memory to accumulator and move it to B-register.3. Move the second data from memory to accumulator.4. Add the content of B-register with Accumulator.5. Check for carry. If carry=1 then go to step 6 else go to step 7.6. Increment the C-register7. Store the sum in memory.8. Move the carry to accumulator and store in memory.

PROGRAMMEMORY ADDRESSLABELMNEMONICSOP CODE

6100MOV DPTR,#650090, 65, 00

6103MOV 40,#0075, 40, 00

6106MOV R5,#057D, 05

6108LOOP2MOVX A,@DPTRE0

6109CJNE A,40H,LOOP1B5, 40, 08

610CLOOP3INC DPTRA3

610DDJNZ R5, LOOP2DD, F9

610FMOV A, 40HE5, 40

6111MOVX @DPTR,AF0

6112HLTSJMP HLT80, FE

6114LOOP1JC LOOP340, F6

6116MOV 40H,AF5, 40

6118SJMP LOOP380, F2

OBSERVATION

INPUTOUTPUT

AddressDataAddressData

650004H65000AH

650108H

650202H

65030AH

650406H

RESULTThus the assembly language program to find the largest number in an array using 8051 simulator tools was written and executed successfullyPROGRAMMING USING ARITHMETIC, LOGICAL AND BIT MANIPULATION INSTRUCTIONS OF 8051 MICROCONTROLLEREX NO: gDATE:UNMASKED BCD NUMBER TO ASCII CODE USING 8051AIMTo write an assembly language program to find the Masking bits an 8-bit number using microcontroller instruction set.APPARATUS REQUIRED1. 8051 Microcontroller kit2. Power chord.ALGORITHM1. Move the data to Accumulator.2. Perform OR operation with accumulator.3. Move the accumulator output to the memory 6500H. PROGRAMMEMORY ADDRESSLABELMNEMONICSOP CODE

6100MOV A, #data174, 02

6102ORL A, #3044, 30

6104MOV DPTR, #6500H90, 65, 00

6107MOVX @DPTR, AF0

6108LOOPSJMP LOOP80, FE

OBSERVATION

INPUTOUTPUT

AddressDataAddressData

6500

RESULTThus the assembly language program to masking bits an 8-bit number using microcontroller instruction set was written and executed successfully.PROGRAMMING USING ARITHMETIC, LOGICAL AND BIT MANIPULATION INSTRUCTIONS OF 8051 MICROCONTROLLEREX NO: cDATE:SQUARE OF A 8-BIT NUMBER USING 8051

AIMTo write an assembly language program to multiply the two 8-bit numbers using microcontroller instruction set.APPARATUS REQUIRED1. 8051 Microcontroller kit2. Power chord.ALGORITHM1. Clear C-register for carry.2. Move the first data to Accumulator.3. Move the first data to B-register.4. Multiply the B-register with Accumulator.5. The higher order of the result is in B-register.6. The lower order of the result is in Accumulator.7. Store the sum in memory pointed by DPTR.

PROGRAMMEMORY ADDRESSLABELMNEMONICSOP CODE

6100CLR CC3

6101MOV A,#data174, 04

6103MOV B,AF5, F0

6105MUL ABA4

6106MOV DPTR, #6500H90, 65, 00

6109MOVX @DPTR, AF0

610AINC DPTRA3

610BMOV A, BE5, F0

610DMOVX @DPTR, AF0

610ELOOPSJMP LOOP80, FE

OBSERVATION

INPUTOUTPUT

AddressDataAddressData

06650024

650100

RESULTThus, the assembly language program to multiply the two 8-bit numbers using 8051 instruction set was written and executed

PROGRAMMING USING ARITHMETIC, LOGICAL AND BIT MANIPULATION INSTRUCTIONS OF 8051 MICROCONTROLLEREX NO: cDATE:CUBE OF A 8-BIT NUMBER USING 8051

AIMTo write an assembly language program to multiply the two 8-bit numbers using microcontroller instruction set.APPARATUS REQUIRED1. 8051 Microcontroller kit2. Power chord.ALGORITHM1. Clear C-register for carry.2. Move the first data to Accumulator.3. Move the first data to B-register.4. Multiply the B-register with Accumulator.5. The higher order of the result is in B-register.6. The lower order of the result is in Accumulator.7. Store the sum in memory pointed by DPTR.

PROGRAMMEMORY ADDRESSLABELMNEMONICSOP CODE

6100CLR CC3

6101MOV A,#data174, 04

6103MOV B,AF5, F0

6105MOV R0, AF8

6106MUL ABA4

6107MOV F0,R0A8, F0

6109MUL ABA4

610AMOV DPTR, #6500H90, 65, 00

610DMOVX @DPTR, AF0

610EINC DPTRA3

6110MOV A, BE5, F0

6112MOVX @DPTR, AF0

6113LOOPSJMP LOOP80, FE

OBSERVATIONINPUTOUTPUT

AddressDataAddressData

0F65002F

65010D

RESULTThus, the assembly language program to multiply the two 8-bit numbers using 8051 instruction set was written and executed