AARUPADAI VEEDU INSTITUTE OF TECHNOLOGY PAIYANOOR

LAB MANUAL
MICROPROCESSORS AND MICROCONTROLLER LABORATORY

DEPARTMENT OF ELECTRONICS AND COMMUNICATION ENGINEERING AARUPADAI VEEDU INSTITUTE OF TECHNOLOGY OLD MAHABALIPURAM ROAD

LIST OF EXPERIMENTS 1. 2. 3. 4. 5. 6. 7. Programming 8085. Programming 8086. Programming 8051. Pc based control systems. Stepper Motor Controller. PC interfacing. AC & DC Motor Speed Control.

LIST OF EXPERIMENTS A.8085 Programming 1. Study of 8085 Microprocessor 2. 16 bit Addition, Subtraction, Multiplication and Division. 3. BCD to HEX and HEX to BCD code conversion. 4. Largest and smallest of a given set of numbers. 5. Square Root of 8-bit number. B.8086 Programming 1. 2. 3. 4. Study of 8086 Microprocessor 32 bit Addition and Addition of 3*3Matrices. Ascending Order and Descending Order. Reversal of a String.

C. Interfacing Experiments 1. 2. 3. 4. 5. Keyboard and Display Interface ADC Interface. DAC Interface. Stepper Motor Interface. Traffic Signal Modeling.

D.8051 Programming Study of 8051. 1. 8 Bit Arithmetic Operations. Addition, Subtraction, Multiplication and Division 2. Addition of two sixteen bit numbers. 3. Transferring a Block of data from (i). Internal to External memory. (ii). External to External memory. (iii). External to Internal memory. 4. 8-bit Conversion (i).ASCII to its equivalent Hexa decimal and (ii). Hexa decimal to its equivalent ASCII 5. Arrange the given numbers in ascending and descending order. 6. Filling External and Internal Memory. E. Interfacing Experiments 1. DAC Interfacing. 2. Stepper Motor Interfacing.

Step 6: Stop the process.Experiment No: Date: ADDITION OF TWO 8-BIT NUMBERS AIM: Write a program to add two 8 bit numbers and store the result in memory location 4200 and 4201. Step 2: The addend is brought to the accumulator. Step 4: Perform the addition. . Step 5: Store the 8 bit and carry in two memory locations. ALGORITHM: Step 1: Initialize register C to account for carry. Step 3: Move the augend to any one of the register. APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard (ii) Power cable.

FLOWCHART Start Initialize C register to zero for carry Get first data in Accumulator Get second data in B register ADD two numbers Is carry Flag Set? NO YES Increment C register by one Store the Sum & Carry in the desired memory locations Stop .

4150H MOV A. pair to point 1st data. to store carry. Move 2nd data to B reg.C STA 4201H HLT OPCODE OPERAND LOOP 410CH 410DH 4110H 4111H 4114H COMMENTS Initialize C reg. Move 1st data to accumulator. Check whether Carry Flag is reset.00H LXI H. Increment HL reg.M INX H MOV B. Increment C register.M ADD B JNC LOOP INR C STA 4200H MOV A. Store carry to memory 4201. .PROGRAM: LABEL START ADDRESS 4100H 4102H 4105H 4106H 4107H 4108H 4109H MNEMONIC MVI C. Add two numbers in A & B. Store 8 bit sum to memory location 4200. Stop the process. pair to point 2nd data. RESULT: Thus the program for addition of two 8-bit numbers has been written and executed and the sum is verified. Initialize HL reg. Move carry to Accumulator.

3. What is Microprocessor ? What are the basic units of a microprocessor ? What is a bus? What is assembly language? Why data bus is bi-directional? .VOCE QUESTIONS 1. 4.OBSERVATION: ADDRESS INPUT OUTPUT DATA COMMENTS VIVA. 5. 2.

Step 4: Perform the subtraction. Step 7: Store the difference & borrow in memory location 4502 and 4503. Step 6: Take 2’s complement of the accumulator content and increment C register. . Step 8: Stop the process. Step 3: Move the subtrahend to anyone register.Experiment No: Date: SUBTRACTION OF TWO 8-BIT NUMBERS AIM: Write a program to subtract two 8 bit numbers and store the result in memory location 4502 and 4503. Step 2: The Minuend is brought to the accumulator. APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard (ii) Power cable ALGORITHM: Step 1: Initialize register C to account for Borrow. Step 5: If the carry flag is reset go to step 7. else proceed to the next step.

Store the Results in the desired memory locations Stop .FLOWCHART Start Initialize C register to zero for Borrow Get Minuend in Accumulator Get Subtrahend in any other register Subtract Subtrahend from Accumulator Is carry Flag Set? NO YES Take 2’s Complement of Accumulator& increment C Reg.

Initialize HL reg pair to point 1st data.M INX H MOV B.M SUB B JNC SKIP CMA ADI 01H INR C INX H MOV M.00H LXI H. If the Subtraction result in borrow take 2’s complement of the accumulator Increment register C Store the result in the desired memory location Store the carry flag to indicate whether the result is positive or negative Stop the process.PROGRAM : LABEL START ADDRESS 4300H 4302H 4305H 4306H 4307H 4308H 4309H 430CH 430DH MNEMONIC MVI C. go to skip. RESULT: Thus the subtraction program has been written & executed and the difference and borrow were verified.A INX H MOV M. If Carry Flag reset.C HLT OPCODE OPERAND SKIP 430FH 4310H 4311H 4312H 4313H 4314H COMMENTS Initialize C reg to store carry. Increment HL reg pair to point 2nd data. . Move 2nd to register B. Move 1st data to accumulator.4500H MOV A. Subtract the subtrahend from minuend.

What is the difference between CPU bus and system bus? . 4. What is the data and address size in 8086? 3.OBSERVATION: ADDRESS INPUT OUTPUT DATA COMMENTS VIVA-VOCE QUESTIONS 1. Define machine cycle. Define T-State 5. Why address bus is unidirectional? 2.

Step 8: If the content of B reg is not equal to zero go to step 5. Step 4: Move the Multiplicand to D register. Step 6: Check the carry flag if CY=0 go to step 7 otherwise increment the C register. APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard (ii) Power cable.Experiment No: Date: MULTIPLICATION OF TWO 8-BIT NUMBERS AIM: To write an Assembly Language Program for the multiplication of two 8-bit numbers. . otherwise go to next step. Step 2: Clear C register. Step 3: Get the multiplicand in accumulator and get the multiplier in B-reg. Step 9: Store the content of accumulator in Next memory location. Step 10: Store the higher order byte in next memory location. ALGORITHM: Step 1: Initialize the HL registers pair with the address 4200H. Stop the Process. Step 7: Decrement the B register. Step 11. Step 5: Add the content of A register with the content of D register.

content NO Is carry flag Set? YES Increment carry register by one Decrement Multiplier by one Is multiplier Zero YES NO Store the result in desired location Stop .FLOWCHART Start Initialize the HL register pair and get the multiplicand in A & D Get the multiplier in B-reg & decrement it by one ADD accumulator (multiplicand) to D reg.

Decrement B reg. Increment the HL reg pair.A INX H MOV M. Store the least significant byte of the product to the memory location pointed by HL pair. Move the Multiplicand to D reg. Increment C reg.A ADD D JNC LOOP1 INR C DCR B JNC LOOP2 OPCODE OPERAND 4106H 4107H 4108H 4109H LOOP2 410AH 410BH LOOP1 410EH 410FH 4110H 4113H 4114H 4115H 4116H 4117H INX H MOV M. Stop the Process RESULT: Thus the Assembly Language Program for the multiplication of two 8-bit data had been written and executed & the results were stored in desired memory locations.M INX H MOV B. If B is not equal to zero. Store the most significant byte of the product to the memory location pointed by HL pair. Increment the HL reg. If CY=0. Move the Multiplier to B reg.00H MOV A.PROGRAM : LABEL START ADDRESS 4100H 4103H 4105H MNEMONIC LXI H. program control jumps to label LOOP1. otherwise do next step Increment the HL reg.M DCR B MOV D. Decrement B reg. content.4200H MVI C. pair. Add the content of A reg with D reg.C HLT COMMENTS Load the HL reg pair with the address 4200H Clear C reg Move the Multiplicand to the accumulator. program control goes to LOOP2. .

Why EPROM is mapped at the beginning of memory space in 8085 system? 4. What is interrupt 1/0? 3. What does memory-mapping mean? 2. What is the need for system clock and how it is generated in 8085? 5. What is the need for Port? .OBSERVATION: ADDRESS INPUT OUTPUT DATA COMMENTS VIVA VOCE QUESTIONS 1.

go to step 8. Step 3: Get dividend in accumulator & get divisor in B register.Experiment No: Date: DIVISION OF TWO 8-BIT NUMBERS AIM: To write an Assembly Language Program for dividing two 8-bit numbers and store the result in memory locations 4502 and 4503. Step 5: If carry occurs. Step 6: Subtract divisor from dividend and increment C register. APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard (ii) Power cable. Step 2: Clear the C register. . Step 9: store the quotient in 4502H. Step 7: Go to step 4. Step 8: Store the remainder in 4503H. Step 4: Compare dividend and divisor. ALGORITHM: Step 1: Initialize the HL register pair with address 4500H. Otherwise go to next step. Step 10: Stop the Process.

FLOWCHART Start Get dividend & divisor. Initialize C reg. for Quotient Is Dividend > Divisor NO YES Subtract Divisor from Dividend Increment Quotient by one Store the Quotient and Store the dividend as remainder Stop .

Increment C reg. Subtract the divisor from dividend. Move the Quotient to Accumulator. If carry=1. Store the remainder. .M INX H MOV B. Move the Dividend to the accumulator. Increment the HL reg pair.4500H MVI C. Move the Divisor to B reg.M CMP B JC SKIP SUB B INR C JMP REPEAT STA 4503H MOV A. jump to label SKIP. Clear C reg.C STA 4502H HLT OPCODE OPERAND 4106H 4107H REPEAT 4108H 4109H 410CH 410DH 410EH SKIP COMMENTS Load the HL reg pair with the address 4500H. Stop the Process 4111H 4114H 4115H 4118H RESULT: Thus the Assembly Language Program for the Division of two 8-bit data had been written and executed & the results were stored in desired memory locations.00H MOV A. Jump to label REPEAT. Store the Quotient.PROGRAM : LABEL START ADDRESS 4100H 4103H 4105H MNEMONIC LXI H. Compare B reg.

What is the drawback in memory mapped I/0? 5. What is a port? 2. How DMA is initiated? .OBSERVATION: ADDRESS INPUT OUTPUT DATA COMMENTS VIVA VOCE QUESTIONS 1. Write a short note on INTEL 8255 4. Give some examples of port devices used in 8085 microprocessor based system? 3.

.Experiment No: LARGEST NUMBER IN GIVEN ARRAY Date: AIM: To write an Assembly Language Program to find the largest number in the given Array. If the CF is reset go to step 7 otherwise go to next step. Step 3: Get the count (i. APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard.e. Length of the array) in B register. (ii) Power cable. Step 7: Decrement the count (content of B register) Step 8: If the content of B register is not equal to zero. ALGORITHM: Step 1: Initialize the HL register pair with the address 4700H. otherwise go to next step. Step 10: Stop the Process. go to step 4. Step 9: Store the content of accumulator in the address 5000H. Step 6: Move the data from the memory address pointed by HL pair to the accumulator. Step 5: Check the Carry Flag. . Step 2: Get the first Data in accumulator. Step 4: Compare the next data from the memory address pointed by HL pair to the accumulator.

FLOWCHART Start Get the length of the array as the count Move the first data to Accumulator Increment the memory pointer Compare the second data with content of Accumulator Is A content Large? NO Move M to A YES Decrement B reg NO Is Count=0? YES Store the Content of accumulator as largest number Stop .

content If ZF is reset go to LOOP. If CF is reset. Decrement B reg.M DCR B JNZ LOOP STA 5000H HLT 410D 411E 4111 4114 Initialize the memory pointer with the address 4700H Get the length of the array in B reg. content by one Increment the HL reg.PROGRAM: LABEL START ADDRESS MNEMONICS OPCODE OPERAND COMMENTS 4100 LXI H.M DCR B INX H 4107 4108 CMP M 410B JNC SKIP 410C SKIP MOV A. 4700H 4103 4104 MOV B. Compare the data in accumulator with data in memory. Get the first data in Accumulator. Store the largest number in 5000H Stop the process RESULT: Thus the Assembly Language Program to find the largest of the given data had been written and executed & the result was stored in the desired memory location . pair to point the next memory location.M INX H 4105 4106 LOOP MOV A. Decrement B reg. pair to point the next memory location. Move the data from memory to accumulator. Increment the HL reg. the program control goes to label SKIP.

3. 4. 2. 5.OBSERVATION: ADDRESS DATA INPUT COMMENTS OUTPUT VIVA VOCE QUESTIONS 1. What is Instruction cycle? What is fetch and execute cycle? What is Block and Demand transfer mode DMA? What is the need for timing diagram? How many machine cycles constitute one instruction cycle in 8085? .

Step 3: Get the count (i. Step 10: Stop the Process.Experiment No: Date: SMALLEST NUMBER IN GIVEN ARRAY AIM: To write an Assembly Language Program to find the smallest number in the given Array. ALGORITHM: Step 1: Initialize the HL register pair with the address 4700H. Step 7: Decrement the count (content of B register) Step 8: If the content of B register is not equal to zero. Step 5: Check the Carry Flag. Step 9: Store the content of accumulator in the address 5000H.e. Step 2: Get the first Data in accumulator.. If the CF is set. Length of the array) in B register. go to step 4. APPARATUS REQUIRED: ((i) 8085 Microprocessor kit with keyboard. go to step 7 otherwise go to next step. (ii) Power cable. . otherwise go to next step. Step 6: Move the data from the memory address pointed by HL pair to the accumulator. Step 4: Compare the next data from the memory address pointed by HL pair to the accumulator.

NO Is Count=0? YES Store the Content of accumulator as smallest number Stop .FLOWCHART Start Get the length of the array as the count Move the first data to Accumulator Increment the memory pointer Compare the memory with content of Accumulator Is A content Small? NO Move M to A YES Decrement B reg.

Move the data from memory to accumulator. pair to point the next memory location. Get the first data in Accumulator.M DCR B JNZ LOOP STA 5000H HLT 410D 411E 4111 4114 Initialize the memory pointer with the address 4700H Get the length of the array in B reg.M INX H 4105 4106 LOOP MOV A. If ZF is reset go to LOOP. content. Decrement B reg.PROGRAM: LABEL START ADDRESS MNEMONICS OPCODE OPERAND COMMENTS 4100 LXI H.M DCR B INX H 4107 4108 CMP M 410B 410C SKIP JC SKIP MOV A. If CF is set the program control goes to SKIP. content by one Increment the HL reg. OBSERVATION: . Store the smallest number in 5000H Stop the process RESULT: Thus the Assembly Language Program to find the smallest of the given data had been written and executed & the result was stored in the desired memory location. Compare the data in accumulator with data in memory. Decrement B reg. Increment the HL reg. pair to point the next memory location. 4700H 4103 4104 MOV B.

Define opcode and operand. 2.ADDRESS DATA INPUT COMMENTS OUTPUT VIVA VOCE QUESTIONS 1. What operation is performed during first T -state of every machine cycle in 8085 ? 4. What is opcode fetch cycle? 3. Why status signals are provided in microprocessor? 5 . How the 8085 processor differentiates a memory access and I/0 Access? Experiment No: Date: .

Step 15: If the number of repetitions is not equal to zero. Step 2: Get the count 1. (ii) Power cable. Step 3: Get the count 2. APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard. If zero flag is set (accumulator content is equal to the other number). If carry flag is set (accumulator content is smaller than the other number). number of comparisons (length of array -1) in C register. ALGORITHM: Step 1: Initialize the HL register pair with the address 4700H. Step 4: Save the count 2 in E register.1) in B register. number of repetitions (length of array . Step 14: Decrement the number of repetitions (count 1). Step 6: Initialize the HL register pair with the address 4701H. Step 11: Store the smallest number to the previous memory location & greatest to the current memory location.8085-ASCENDING ORDER AIM: To write an Assembly Language Program to arrange the given data in Ascending Order. otherwise do the next step. Step 9: Check CF. Step 10: Check ZF. Step 13: If the number of comparison is not equal to zero. Step 7: Move the data from memory location pointed by HL pair to the Accumulator. Step 12: Decrement the number of comparisons (count 2). go to step 5. go to step 12 otherwise do next step. otherwise do next step. Step 16: Stop the Process. Step 8: Compare the data from next memory location with the content of Accumulator. go to step 7. Step 5: Move the content of E to C register. . go to step 12 otherwise do next step.

the length of series Initialize COUNT 1 for (N-1) repetitions Initialize COUNT 2 for (N-1) Comparisons Increment memory pointer and get the number from series IS pointer < NO (pointer+1)? YES Decrement COUNT 2 NO Is COUNT 2 = Zero? YES Decrement COUNT 1 NO Is COUNT 1 = zero? YES Stop Interchange Numbers .FLOWCHART Start Initialize memory pointer to get N.

pair with 4700H B = COUNT 1 for (N-1)repetitions C = COUNT 2 for (N-1)Comparisons LOOP 4108 REPEAT 410B 410C 410D 411E 4111 4114 4115 4116 4117 4118 4119 411A 411D 411E 4121 Compare consecutive numbers Interchange numbers if not in order SKIP Decrement count 2 Decrement count 1 Stop the Process RESULT: Thus the Assembly Language Program to arrange the given data in ascending order had been written and executed. .M MOV M.B MOV E.M INX H CMP M JC SKIP JZ SKIP MOV D.E LXI H. 4701H MOV A.A DCX H MOV M.PROGRAM : LABEL START ADDRESS MNEMONIC OPCODE OPERAND COMMENTS 4100 4103 4104 4105 4106 4107 LXI H.M DCR B MOV C.C MOV C. 4700H MOV B.D INX H DCR C JNZ REPEAT DCR B JNZ LOOP HLT Initialize HL reg.

3. 2. 4. When the 8085 processor checks for an interrupt? What is interrupt acknowledge cycle? How the interrupts are affected by system reset? What is Software interrupts? What is Hardware interrupt? . 5.OBSERVATION: ADDRESS DATA INPUT COMMENTS OUTPUT VIVA VOCE QUESTIONS 1.

Step 8: Compare the data from next memory location with the content of Accumulator. go to step 12 otherwise do next step. If zero flag is set (accumulator content is equal to the other number).1) in B register. Step 10: Check ZF. ALGORITHM: Step 1: Initialize the HL register pair with the address 4700H. number of comparisons (length of array -1) in C register. Step 2: Get the count 1. APPARATUS REQUIRED: (i) 8085 Microprocessor kit with Keyboard. otherwise do next step. Step 13: If the number of comparison is not equal to zero. number of repetitions (length of array . If carry flag is reset (accumulator content is larger than the other number). Step 15: If the number of repetitions is not equal to zero. Step 6: Initialize the HL register pair with the address 4701H. Step 5: Move the content of E to C register. Step 3: Get the count 2. (ii) Power cable. Step 9: Check CF. . Step 14: Decrement the number of repetitions (count 1). Step 11: Store the largest number to the previous memory location & smallest to the current memory location. go to step 5. Step 4: Save the count 2 in E register. go to step 12 otherwise do next step. otherwise do the next step. Step 7: Move the data from memory location pointed by HL pair to the Accumulator. go to step 7. Step 12: Decrement the number of comparisons (count 2).Experiment No: Date: 8085-DESCENDING ORDER AIM: To write an Assembly Language Program to arrange the given data in Descending Order. Step 16: Stop the Process.

the length of series Initialize COUNT 1 for (N-1) repetitions Initialize COUNT 2 for (N-1) Comparisons Increment memory pointer and get the number from series IS pointer > NO (pointer+1)? YES Decrement COUNT 2 NO Is COUNT 2 = zero? YES Decrement COUNT 2 NO Is COUNT 1 = zero? YES Stop Interchange Numbers .FLOWCHART Start Initialize memory pointer to get N.

B MOV E. 4700H MOV B.M MOV M. .D INX H DCR C JNZ REPEAT DCR B JNZ LOOP HLT B = COUNT 1 for (N-1)repetitions C = COUNT 2 for (N-1)Comparisons LOOP 4108 REPEAT 410B 410C 410D 411E 4111 4114 4115 4116 4117 4118 4119 411A 411D 411E 4121 Compare consecutive numbers Interchange numbers if not in order SKIP Decrement count 2 Decrement count 1 Stop the Process RESULT: Thus the Assembly Language Program to arrange the given data in ascending order had been written and executed. 4701H MOV A.M DCR B MOV C.PROGRAM : LABEL START ADDRESS MNEMONIC OPCODE OPERAND COMMENTS 4100 4103 4104 4105 4106 4107 LXI H.A DCX H MOV M.M INX H CMP M JNC SKIP JZ SKIP MOV D.C MOV C.E LXI H.

OBSERVATION: ADDRESS DATA INPUT COMMENTS OUTPUT VIVA VOCE QUESTIONS 1. 3. 5. 2. 4. What is the difference between Hardware and Software interrupt? What is Vectored and Non.Vectored interrupt? List the Software and Hardware interrupts of 8085? Whether HOLD has higher priority than TRAP or not? What is masking and why it is required? .

Step 7: Increment the destination block pointer. Step 8: Decrement the C register.Experiment No: BLOCK OF DATA TRANSFER Date: AIM: To write an Assembly Language Program to transfer the block of data starting from memory location 4700H to the memory location 4800H. . The total number of data (length of block) is stored at 46FFH. Step 6: Increment the source block pointer. Step 5: Store the first data to the destination address. Step 10: Stop the Process.otherwise go to next step. Step 3: Initialize the DE register pair with the address 4800H. ALGORITHM: Step 1: Initialize the HL register pair with the address 46FFH. Step 4: Get byte from source memory block. Step 2: Move the total number of data to the C register. go to step 4. Step 9: If ZF=0. APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard (ii) Power cord.

FLOWCHART Start Initialize HL reg. pair as a source Load the total number of input data In C reg. NO Is ZF=1? YES Stop . Get the Data from source Block to Accumulator Store data to destination block Increment the source & destination block pointer Decrement C reg.

Increment destination block pointer. program control jump to label REPEAT. Stop the Process RESULT: Thus the assembly language program to transfer the block of data from memory location 4700H to 4800H had been written and verified .PROGRAM: LABEL START ADDRESS 4100H 4103H 4104H 4105H MNEMONIC LXI H.M STAX D INX H INX D DCR C JNZ REPEAT HLT COMMENTS Initialize the source pointer with the address 4200H.M INX H LXI D. If ZF=0.46FFH MVI C. Point to first source block byte. Get count of total number of data bytes in C reg. Store the data byte to the destination block. Decrement C register. Increment source block pointer. Get the data byte from source block.4800H OPCODE OPERAND REPEAT 4108H 4109H 410AH 410BH 410CH 410DH 4110H MOV A. Initialize the destination pointer with the address 4200H.

OBSERVATION: ADDRESS DATA INPUT COMMENTS OUTPUT VIVA VOCE QUESTIONS 1. When the 8085 processor accept hardware interrupt? When the 8085 processor will disable the interrupt system? What is the function performed by Dl instruction? What is the function performed by El instruction? How the vector address is generated for the INTR interrupt of 8085? . 3. 2. 4. 5.

content to the A reg. and mask the upper nibble(units). (ii) Power cable. . If ZF=0 go to step 6. Content. Step 3: Rotate the upper nibble to the lower position. from E reg. I f ZF=1 go to next step. Step 5: Move the 0AH to C reg.Experiment No: Date: DECIMAL TO HEXADECIMAL CONVERSION AIM: To write an Assembly Language Program to convert a Decimal number to a Hexadecimal number. Step 7: Decrement the C reg.) to product (B reg. and save in E reg. Step 10: Add the units (A reg. The Decimal data is stored in 4200H and Hexadecimal data is store in 4250H.). Step 9: Get the decimal in A reg. Step 2: Mask the lower nibble of the decimal data in A reg. ALGORITHM: Step 1: Get the Decimal data in A reg. APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard. Step 6: Add B reg. Step 8: Save the product in B reg. Step 4: Clear the Accumulator. Step 11: Stop the Process.

Rotate the content of A reg. NO Check if ZF=1? YES Move the content of A reg. four times right & save it in B reg. to A reg. Decrement C reg. and save it in E reg. Move the decimal data from E reg. to B reg. to A reg.FLOWCHART: Start Get the Decimal data in A reg. and move 0AH to C reg. to A reg. to memory Stop . Mask the lower nibble of the Decimal data in A reg. and mask the upper nibble ADD the content of B reg. ADD the content of B reg. Clear A reg. Store the Hexadecimal value from A reg.

0AH ADD B DCR C JNZ REPEAT MOV B. Get the Decimal data in A reg.A XRA A MVI C.E ANI 0FH ADD B STA 4250H HLT Get the data in A reg. Mask the lower nibble Rotate the upper nibble to lower Nibble position save in B reg. Clear accumulator Get the product of units digit multiplied by 0AH in A reg.A MOVA. Store the Hexadecimal value in memory Stop the Process RESULT: Thus the Assembly Language Program for Decimal to Hexadecimal conversion had been written and executed & the results were stored in desired memory location.PROGRAM: LABEL START ADDRESS MNEMONIC OPCODE OPERAND COMMENTS 4100 4103 4104 4106 4107 4108 4109 410A 410B 410C REPEAT 410E 410F 4110 4113 4114 4115 4117 4118 411B LDA 4200H MOV E. Mask the upper nibble Get the sum of units digit and product in B reg. Save in E reg. OBSERVATION: . Save the product in B reg.A ANI F0H RLC RLC RLC RLC MOV B.

5.ADDRESS INPUT OUTPUT DATA COMMENTS VIVA VOCE QUESTIONS 1. internal clock? What happens to the 8085 processor when it is resetted? What are the operations performed by ALU of 8085? What is a flag? List the flags of 8085 . 4. 3. How clock signals are generated in 8085 and what is the frequency of the 2.

. Step 5: Stop the Process. ALGORITHM: Step 1: Get the first data in DE pair Step 2: Get the second data in HL pair Step 3: Add the data in DE & HL pair Step 4: Store the result in 4204. (ii) Power cable.Experiment No: Date: ADDITION OF TWO 16 BIT NUMBERS AIM: To write an Assembly Language Program to add two 16 bit numbers & store the result APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard.

FLOWCHART: Start Get the 1st data in DE register pair Get the 2nd data in HLregister pair Add DE & HL pair contents Store the result in 4204 &4205 Stop .

PROGRAM: LABEL ADDRESS MNEMONIC OPCODE OPERAND COMMENTS START 4100H LHLD 4200H Get first I6-bit number 4103H XCHG Save first I6-bit number in DE 4104H LHLD 4202H Get second I6-bit number in HL 4105H DAD D Add DE and HL 4106H SHLD 4204H Store I6-bit result in memory locations 4004H and 4005H. . 4109H HLT Stop the program RESULT: Thus the Assembly Language Program for 16 bit addition had been written and executed & the results were stored in desired memory location.

5. 3. Where is the READY signal used? What is HOLD and HLDA and how it is used? .OBSERVATION: ADDRESS INPUT DATA COMMENTS OUTPUT VIVA VOCE QUESTIONS 1. Which interrupt has highest priority in 8085? What is the priority of other 2. interrupts? What is an ALE? Explain the function of IO/M in 8085. 4.

Step6: Stop the process . ALGORITHM: Step 1: Get the first data in DE pair Step 2: Get the second data in HL pair Step 3: Subtract the lower order byte of the 1st & 2nd number Step 4: Subtract the higher order byte of the 1st & 2nd number Step 5: Store the result in . (ii) Power cable. in memory locations 4204H and 4205H.Experiment No: SUBTRACTION OF TWO 16 BIT NUMBERS AIM: Date: To write an Assembly Language Program to subtract two 16 bit numbers & store the result APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard.

FLOWCHART: Start Get the 1st & 2nd data in DE & HL register pair Subtract the lower order byte of the 1st & 2nd number Subtract the higher order byte of the 1st & 2nd number Store the result in 4204& 4205 Stop .

Get higher byte of the first number 410CH MOV A.D 410DH SBB H Subtract higher byte of second number with borrow 410EH MOV H. 410FH 4112H SHLD 4204H HLT Store l6-bit result in memory locations 4004H and 4005H Stop the Process RESULT: Thus the Assembly Language Program for 16 bit subtraction had been written and executed & the results were stored in desired memory location. pair Get second 16-bit number in HL 4107H MOV A. .A Store l6-bit result in memory locations 4204H and 4205H.E Get lower byte of the first number 4108H 410BH SUB L MOV L.PROGRAM: LABEL START ADDRESS MNEMONIC OPCODE OPERAND COMMENTS 4100H 4103H 4104H LHLD 4200H XCHG LHLD 4202H Get the 1st data in HL reg pair Save in DE reg.A Subtract lower byte of the second number Store the result in L register .

What is Polling? 2.OBSERVATION: ADDRESS INPUT DATA COMMENTS OUTPUT VIVA VOCE QUESTIONS 1. List some of the features of INTEL 8259 (Programmable Interrupt Controller 5. What is a programmable peripheral device ? . What are the different types of Polling? 3. What is the need for interrupt controller? 4.

goto step5 Step10: Move BC register pair content to HL pair Step11: Store the accumulator content Step12: Stop the process . goto step7. (ii) Power cable. else goto step8 Step7: Increment BC pair Step8: Decrement DE pair Step9: Move E-reg content to accumulator Step10: OR DE pair content with accumulator. If the result is not zero. ALGORITHM: Step 1: Get the first data in HL pair Step 2: Exchange the data with DE pair Step 3:Get the second data in HL pair Step 4: Copy the data in Stack Pointer(SP) Step 5: DAD with SP Step6: If there is carry.Experiment No: MULTIPLICATION OF TWO 16 BIT NUMBERS Date: AIM: To write an Assembly Language Program to multiply two 16 bit numbers & store the result APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard.

Exchange the data with DE pair Get the second data in HL pair. OR accumulator content With DE pair content NO Is the result zero? YES Store the result Stop . .FLOWCHART: Start Load the HL pair with 1st data. Exchange HL pair content with DE pair Perform double addition Is there carry? NO YES Increment BC-reg content by 1 Decrement DE register pair by one Move E-reg content to accumulator DE reg pair.

goto L1 Increment the content of BC reg pair by one Decrement the content of DE reg pair by one Move E-reg content to accumulator OR accumulator content with DE reg pair Jump to L2 if not zero Store HL pair content in 4504H Move C-reg content to accumulator Store HL pair content in 4506H Move B-reg content to accumulator Store accumulator content in 4507H Stop the process 4107H 4108H 410BH 410EH 410FH 4112H 4113H 4114H 4115H 4116H 4119H 411CH 411DH 4120H 4121H 4124H XCHG LXI H. 0000H DAD SP JNC L1 INX B DCX D MOV A.PROGRAM: LABEL START: ADDRESS MNEMONIC OPCODE OPERAND COMMENTS 4100H 4103H 4104H LHLD 4500H SPHL LHLD 4502 Load the HL pair with 1st data Exchange the data with DE pair Get the second data in HL pair Exchange HL pair content with DE pair Initialise HL pair & DE pair with00H Perform double addition If there is no carry. 0000H LXI B.B STA 4507H HLT L2: L1: RESULT: Thus the Assembly Language Program for 16 bit multiplication had been written and executed & the results were stored in desired memory location.C STA 4506H MOV A. .E ORA D JNZ L2 SHLD 4504H MOV A.

OBSERVATION: ADDRESS INPUT DATA COMMENTS OUTPUT VIVA VOCE QUESTIONS 1. .

Step6: Stop the process . (ii) Power cable. ALGORITHM: Step 1: Get the first data in DE pair Step 2: Get the second data in HL pair Step 3: Subtract the lower order byte of the 1st & 2nd number Step 4: Subtract the higher order byte of the 1st & 2nd number Step 5: Store the result in .Experiment No: DIVISION OF TWO 16 BIT NUMBERS AIM: Date: To write an Assembly Language Program to divide two 16 bit numbers & store the quotient & remainder APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard. in memory locations 4204H and 4205H.

Divisor NO Count = Count-1 NO Is count = 0? YES Store the quotient & remainder Stop . Quotient = Quotient*2 YES Is divisor <= dividend ? Dividend = Dividend. Count=8. Divisor(2300H). Quotient =0 Dividend = Dividend*2.FLOWCHART: Start Dividend (2200H) & (2201H) .

1 If count =0 repeat 411AH MOV A. E 410DH 410EH 410FH 4110H 4111H 4114H RLC MOV E. 08 Initialise Quotient = 0 Get dividend Get divisor Store divisor Initialise Count = 8 NEXT: 410BH DAD H Dividend = Dividend x 2 410CH MOV A. 00H LHLD 4200H LDA 4204H MOV B. go to Next step Subtract divisor 4115H INR E Quotient = Quotient + 1 SKIP: 4116H 4117H DCR C JNZ NEXT Count = Count .H STA 4303H HLT Store Quotient Store Remainder Stop the process RESULT: Thus the Assembly Language Program for 16 bit division had been written and executed & the results were stored in desired memory location. E 411BH 411EH 411FH 4122H STA 4301H MOV A. .A Quotient = Quotient x 2 Is most significant byte of Dividend > divisor No.A MOV A.H SUB B JC SKIP MOV H.PROGRAM: LABEL START: ADDRESS MNEMONIC OPCODE OPERAND COMMENTS 4100H 4102H 4105H 4108H 4109H MVI E. A MVI C.

2.OBSERVATION: ADDRESS INPUT DATA COMMENTS OUTPUT VIVA VOCE QUESTIONS 1. 3. 4. 5. What is synchronous data transfer scheme? What is asynchronous data transfer scheme? What are the operating modes of 8212? Explain the working of a handshake output port What are the internal devices of 8255 ? .

reg content to accumulator Step8: Store the accumulator value in 4201H Step9: Stop the process . (ii) Power cable. else goto step5 Step 5: Increment C-reg content by two Step6: Increment E-reg content by one & return to label Step7: Move E. ALGORITHM: Step 1: Move 01H to both C-reg & E-reg Step 2: Load the accumulator with the content of 4200H Step 3: Subtract accumulator content & C-reg content Step 4: If accumulator content is zero. goto step7.Experiment No: Date: SQUARE ROOT OF 8 BIT NUMBER AIM: To write an Assembly Language Program to find square root of a 8 bit number using 8085 APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard.

reg content to accumulator Store accumulator value in 4201H Stop . Load the accumulator with the content of 4200H : Subtract accumulator content & C-reg content Is Accumulator content zero? YES NO Increment C-reg content by two Increment E-reg content by one & return to label Move E.FLOWCHART: Start Move 01H to both C-reg & E-reg.

reg content to accumulator Store the accumulator value in 4201 Stop the process LABEL1: RESULT: Thus the Assembly Language Program for square root of a 8 bit number had been written and executed & the results were stored in desired memory location.reg Load the accumulator with the content of 4200 Subtract accumulator content & C-reg content If accumulator content is zero. .reg Move 01 to E.01 MVI E. goto label1 Increment C-reg content by two Increment E-reg content by one Return to label Move E.01 LDA 4200H SUB C JZ LABEL1 INR C INR C INR E JMP LABEL MOV A.E STA 4201H HLT LABEL: Move 01 to C.PROGRAM: LABEL START: ADDRESS MNEMONIC OPCODE OPERAND COMMENTS 4100H 4102H 4104H 4107H 4108H 410BH 410CH 410DH 410EH 4111H 4112H 4115H MVI C.

OBSERVATION: ADDRESS INPUT OUTPUT DATA COMMENTS VIVA VOCE QUESTIONS What is baud rate? What is USART? What are the control words of 8251A and what are its functions ? Give some examples of input devices to microprocessor-based system 5. 3. 2. What are the tasks involved in keyboard interface? 1. 4. .

ALGORITHM Step 1: Initialize memory pointer with 4300H Step 2 Get the MSB & multiply it by 10 using repeated addition Step 3: Add the LSB to the obtained result Step4: Store the hexadecimal value in 4201H Step5: Stop the process .Experiment No: BCD TO HEX CONVERSION AIM: Date: To write an Assembly Language Program to convert a BCD number to a hexadecimal number using 8085 APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard. (ii) Power cable.

FLOWCHART Start Initialize memory pointer with 4300H Get the MSB & multiply it by 10 using repeated addition Add the LSB to the obtained result Store the hexadecimal result in the memory location Stop .

had been written and executed & the results were stored in desired memory location.PROGRAM: LABEL START: ADDRESS MNEMONIC OPCODE OPERAND COMMENTS 4100H 4103H 4104H 4105H 4106H 4107H 4108H 4109H 410AH 410BH 410CH 410DH LXI H.A HLT Initialize memory pointer MSD *2 Store MSB *2 MSB *4 MSB *8 MSB *10 Point to LSB Add to form hex Store the result Stop the process RESULT: Thus the Assembly Language Program to convert BCD number to hexadecimal.A ADD A ADD A ADD B INX H ADD M INX H MOV M.4300H MOV A.M ADD A MOV B. .

5. 2. How a keyboard matrix is formed in keyboard interface using 8279? What is scanning in keyboard and what is scan time? What are the internal devices of a typical DAC? What is settling or conversion time in DAC? What are the different types of ADC? . 3. 4.OBSERVATION: ADDRESS INPUT OUTPUT DATA COMMENTS VIVA VOCE QUESTIONS 1.

(ii) Power cable. ALGORITHM Step 1: Initialize memory pointer with 4300H Step 2 Get the hexadecimal number in C-reg Step 3: Perform repeated addition for C number of times Step4: Adjust for BCD in each step Step5: Store the BCD number in the memory location Step6: Stop the process .Experiment No: Date: HEX TO BCD CONVERSION AIM: To write an Assembly Language Program to convert a hexadecimal number to BCD using 8085 APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard.

FLOWCHART Start Initialize memory pointer with 4300H Get the hexadecimal number in C-reg Adjust for BCD in each step & Perform repeated addition for C number of times Store the BCD number in the memory location Stop .

PROGRAM: LABEL START: ADDRESS MNEMONIC OPCODE OPERAND COMMENTS 4100H 4103H 4104H 4105H 4106H 4107H 4108H 4109H 410AH 410BH 410CH 410DH LXI H.A HLT Initialize memory pointer MSD *2 Store MSB *2 MSB *4 MSB *8 MSB *10 Point to LSB Add to form hex Store the result Stop the process RESULT: Thus the Assembly Language Program to convert hexadecimal number to BCD.A ADD A ADD A ADD B INX H ADD M INX H MOV M. had been written and executed & the results were stored in desired memory location.M ADD A MOV B. OBSERVATION: .4300H MOV A.

. 5. 3. 2. byte and word. 4. Define stack What is program counter? How is it useful in program execution? How the microprocessor is synchronized with peripherals? What is a minimum system and how it is formed in 8085? Define bit.ADDRESS INPUT OUTPUT DATA COMMENTS VIVA VOCE QUESTIONS 1.

goto step7. Decrement E-reg by 1 Step3: Move the multiplicand to accumulator Step 4: Get the multiplier in B reg& move to the multiplicand to D-reg.Experiment No: FACTORIAL OF A GIVEN NUMBER Date: AIM: To write an Assembly Language Program to find factorial of a given hexadecimal number APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard. else goto step5 Step7: Move accumulator contents to memory Step8: Decrement E reg & move E-reg contents to C-reg & : Decrement C reg Step9: If C-reg content is zero goto step10. ALGORITHM Step 1: Initialize memory pointer with 4200H Step2: Get the multiplicand in E-reg & move it to the next memory location. (ii) Power cable. Clear accumulator contents Step5: Add the contents of accumulator & D-reg. Step6: Decrement B-reg by 1& if B-reg content is zero. else goto step3 Step10: Stop the process .

Decrement B-reg by one NO Is B-reg Content zero? YES Move accumulator toMemory Decrement E reg & move E-reg contents To C-reg Decrement C-reg . Get the multiplier in Breg.reg =0 ? YES Stop NO . . Is C. Decrement E-reg by 1 Move the multiplicand to accumulator. Move to the multiplicand D-reg& clear accumulator contents Add the contents of accumulator & D-reg.FLOWCHART Start Initialise the HL pair with the address 4200H Get the multiplicand in E-reg & move it to the next memory location.

reg content is zero Stop the process LOOP2: 430BH 430CH 430DH 4310H 4311H 4312H ADD D DCR B JNZ LOOP2 MOV M.M MOV B.E DCR E MOV A.M INX H MOV M.4200H MOV E.E 4313H 4314H 4317H DCR C JNZ LOOP1 HLT RESULT: Thus the Assembly Language Program to convert to find factorial of a given hexadecimal number had been written and executed & the results were stored in desired memory location. Decrement B-reg by 1 Check whether B.reg content is zero Move accumulator contents to memory Decrement E-reg by 1 move E-reg contents to Creg Decrement C reg by 1 Check whether C. Decrement E-reg by 1 Move the multiplicand to accumulator Get the multiplier in B reg& move to the multiplicand to D-reg Clear accumulator contents Add the contents of accumulator & D-reg.E MOV D. .PROGRAM: LABEL START: ADDRESS MNEMONIC OPCODE OPERAND COMMENTS 4300H 4303H 4304H 4305H 4306H 4307H 4308H 4309H 430AH LXI H.A XRA A LOOP1: Initialize memory pointer with 4200H Get the multiplicand in E-reg & move it to the next memory location.A DCR E MOV C.

What is PSW? 2. What is the purpose of ALE? 3. What is the need for interrupt controller? 4. Give some examples of input devices to microprocessor-based system 5 Give some examples of port devices used in 8085 microprocessor based system? .OBSERVATION: ADDRESS INPUT OUTPUT DATA COMMENTS VIVA VOCE QUESTIONS 1.

(ii) Power Cable. Step 7: Move the sum to 1200H. Step 6: Increment BL reg. Step 4: Clear Carry Flag. with 00H to account for carry. Step 3: Move next data to CX reg. ALGORITHM: Step 1: Initialize the BL reg. Step 5: ADD the CX reg. Jump to step 7 if no carry occurs. content with the AX reg. Step 9: Stop the Process . Step 2: Move one of the data to AX reg. APPARATUS REQUIRED: (i) 8086 Microprocessor kit with keyboard. Step 8: Move the carry to 1202H.Experiment No: Date: 8086-ADDITION OF TWO 16-BIT NUMBERS AIM: To write an assembly language program to add two 16 bit numbers and store the sum in the memory location 1200H and carry in 1202H. Otherwise go to next step.

Clear Carry Flag Add CX and AX reg.FLOWCHART: Start Initialize BL reg. with 00H Move Data into AX and CX reg. Is Carry Set? ` YES NO Increment BL reg Store Sum and Carry to Memory Stop .

If no carry occurs. Add the content of CX to AX. Clear Carry Flag. Stop the Process.001FH CLC ADD AX. RESULT: Thus the Assembly Language Program for Addition of two 16-bit numbers had been written and executed & the results were stored in desired memory locations.00H MOV AX. to account for carry. Move the AX content (sum)to 1200H & 1201H. . Move the data FFFFH to AX reg.FFFFH MOV CX. Move the BL content to 1202H. CX JNC LOOP INC BL MOV[1200H]. Increment BL reg.AX MOV[1202H]. Move the data 001FH to CX reg.BL HLT OPCODE OPERAND LOOP 1010H 1012H 1016H 101AH COMMENTS Move 00H to BL reg.PROGRAM: LABEL START ADDRESS 1000H 1003H 1007H 100BH 100CH 100EH MNEMONICS MOV BL. jump to LOOP.

OBSERVATION: ADDRESS INPUT OUTPUT DATA COMMENTS VIVA VOCE QUESTIONS 1. 4. What is the name given to the register combination DX:AX? What are the modes in which 8086 can operate? What is the data and address size in 8086? Explain the function of M/IO in 8086. 5. 2. Write the flags of 8086 . 3.

(ii) Power Cable. APPARATUS REQUIRED: (i) 8086 Microprocessor kit with keyboard. Step 8: Move the borrow to 1202H. Step 6: Increment BL reg. Otherwise go to next step. Step 9: Stop the Process . content from the AX reg. Step 3: Move Subtrahend to CX reg. Step 5: Subtract the CX reg. Step 4: Clear Carry Flag.Experiment No: Date: 8086-SUBTRACTION OF TWO 16-BIT NUMBERS AIM: To write an assembly language program to Subtract two 16 bit numbers and store the difference in the memory location 1200H and borrow in 1202H. Step 2: Move Minuend to AX reg. ALGORITHM: Step 1: Initialize the BL reg with 00H to account for borrow. Jump to step 7 if no carry occurs. Step 7: Move the difference to 1200H.

Clear Carry Flag Subtract CX from AX reg. NO Is Carry Set? YES Increment BL reg Store Difference and Borrow in memory Stop .FLOWCHART: Start Initialize BL reg. with 00H Move Data into AX and CX reg.

Subtract the content of CX from AX.PROGRAM: LABEL START ADDRESS 1000H 1003H 1007H 100BH 100CH 100EH MNEMONICS MOV BL. Move the data FFFFH to AX reg. .BL HLT OPCODE OPERAND LOOP 1010H 1012H 1016H 101AH COMMENTS Move 00H to BL reg. If no carry occurs. Move the AX content (difference) to 1200H. CX JNC LOOP INC BL MOV[1200H].AX MOV[1202H]. RESULT: Thus the Assembly Language Program for Subtraction of two 16-bit numbers had been written and executed & the results were stored in desired memory locations. Stop the Process. jump to LOOP. Move the data 001FH to CX reg. Increment BL reg. Move the BL content to 1202H. Clear Carry Flag.OO1FH CLC SUB AX.00H MOV AX.FFFFH MOV CX. to account for carry.

4. 3. What is pipelined architecture? 1. 2.OBSERVATION: ADDRESS INPUT OUTPUT DATA COMMENTS VIVA VOCE QUESTIONS What are the interrupts of 8086? How clock signal is generated in 8086? What is the maximum internal clock frequency of 8086? Write the special functions carried by the general purpose registers of 8086 5. .

with 00H to account for carry. Step 6: Increment BL reg. Jump to step 7 if no carry occurs. (ii) Power Cable.Experiment No: Date: 8086-MULTIPLICATION OF TWO 16-BIT NUMBERS AIM: To write an assembly language program for Multiplication of two 16 bit numbers using 8086 instruction set. ALGORITHM: Step 1: Initialize the BL reg. Step 4: Clear Carry Flag. APPARATUS REQUIRED: (i) 8086 Microprocessor kit with keyboard. Step 5: Multiply the CX reg. Step 2: Move Multiplicand to AX reg. Step 3: Move Multiplier to CX reg. Step 7: Move the content of AX & BL to the specified memory locations. Otherwise go to next step. Step 9: Stop the Process . with the AX reg.

content Is Carry Set? YES NO Increment BL reg Store the result in memory location Stop . Clear Carry Flag Multiply CX and AX reg. with 00H Move Data into AX and CX reg.FLOWCHART: Start Initialize BL reg.

Move the DX content to 1202H & 1203H. Move the BL content to 1204H.BL HLT OPCODE OPERAND LOOP 100FH 1011H 1015H 1019H 101DH COMMENTS Move 00H to BL reg.00H MOV AX. Stop the Process.11A2H MOV CX. Move the AX content to 1200H & 1201H.11B3H MUL CX JNC LOOP INC BL MOV[1200H]. Increment BL reg.AX MOV[1202].PROGRAM: LABEL START ADDRESS 1000H 1003H 1007H 100BH 100DH MNEMONICS MOV BL. jump to LOOP. RESULT: Thus the Assembly Language Program for Multiplication of two 16-bit numbers had been written and executed & the results were stored in desired memory locations OBSERVATION: . to account for carry.DX MOV[1204H]. Multiply the content of CX to AX reg. Move the data 11A2H to AX reg. If no carry occurs. Move the data 11B3H to CX reg.

ADDRESS INPUT OUTPUT DATA COMMENTS VIVA VOCE QUESTIONS 1. LDS. and Place the result in CL? 4. List the segment registers of 8086 2. What instructions are needed to add AL. What is purpose served by CX register? 5. 3L and DL together. Which are pointers present in this 8086? . and LES instruction 3. Illustrate the use of LEA.

Step 3: Divide the content of AX&DX by CX reg. Step 5: Stop the Process. APPARATUS REQUIRED: (i) 8086 Microprocessor kit with keyboard. . ALGORITHM: Step 1: Move the lower order byte of dividend to AX reg. and higher order byte of dividend to DX reg. Step 4: Move the content of AX & DX in the specified memory locations. (ii) Power Cable.Experiment No: Date: 8086-DIVISION OF 32 BIT NUMBER BY 16-BIT NUMBER AIM: To write an assembly language program for Division of 32 bit number by 16 bit number using 8086 microprocessor kit. Step 2: Move Divisor to CX reg.

FLOWCHART: Start Move the Dividend into AX and DX reg Move the Divisor Value to CX reg Divide DX & AX by CX contents Store the Quotient value in desired memory Store the remainder in desired memory Stop .

FFFFH MOV DX.01A1H DIV CX MOV[1200H]. Move the DX content to 1202H. 0012H MOV CX. Stop the Process 1000H 1004H 1008H 100CH 100EH 1012H 1016H RESULT: Thus the Assembly Language Program for the Division of 32 –bit number by 16-bit number had been written and executed & the results were stored in desired memory location .AX MOV[1202H].DX HLT OPCODE OPERAND COMMENTS Move the data FFFFH to AX reg Move the data 0012H to DX reg Move the Divisor 01A1 to CX reg Divide the content of AX&DX BY CX Move the AX content to 1200H.PROGRAM: LABEL START ADDRESS MNEMONICS MOV AX.

OBSERVATION: ADDRESS DATA INPUT COMMENTS OUTPUT VIVA VOCE QUESTIONS 1. 2. How is register AL is used during execution of XLAT? What is the use of PUSH and POP instruction? What is the purpose of XCHG instruction? What do square brackets means when they appear in an operand? Write a routine to swap nibbles in AL. 4. 3. 5. .

Add SI with 04 Step 4: Move SI to AL Step 5: Decrement SI & Increment DI. Repeat this until an interrupt is raised Step 6: Stop the Process.Experiment No: Date: 8086 -REVERSAL OF A STRING AIM: To write an assembly language program to reverse a given string using 8086 microprocessor kit APPARATUS REQUIRED: (i) 8086 Microprocessor kit with keyboard. ALGORITHM: Step 1: AX is initialized with data & AX is moved into DS Step 2: Initialize CX to 5 Step 3: Load the effective address in SI & DI. (ii) Power Cable. . .

FLOWCHART: Start AX is initialized with data & AX is moved into DS CX is initialized to 5 Load the effective address in SI & DI. Add SI with 04 SI is moved to AL Decrement SI & Increment DI Repeat this until an interrupt is raised Stop .

PROGRAM: LABEL START: ADDRESS MNEMONICS MOV AX . 0004 OPCODE OPERAND COMMENTS AX is initialized with data AX is moved into DS CX is initialized to 5 Load the effective address in SI & DI Add SI content with 04 SI is moved to AL AL is moved into DI Decrement SI Increment DI AGAIN: MOV AL.@ DATA MOV DS.[SI] MOV [DI].AL DEC SI INC DI LOOP AGAIN INT 3 END Interrupt Stop the Process RESULT: Thus the Assembly Language Program for string reversal has been written and executed & the results were stored in desired memory location . 0005H LEA SI. AX MOV CX. A1 LEA DI. A2 ADD SI.

What is stack and Subroutine? Difference between Microprocessor & Microcontroller What is the maximum memory addressing and I/O addresing capabilities of 8086? . 2.OBSERVATION: ADDRESS DATA INPUT OUTPUT COMMENTS VIVA VOCE QUESTIONS 1. 3. 5. Mention the features of 8086? Explain how physical address is formed in 8086. 4.

. Add SI with 04 Step 4: Move SI to AL Step 5: Decrement SI & Increment DI. (ii) Power Cable. Repeat this until an interrupt is raised Step 6: Stop the Process. ALGORITHM: Step 1: AX is initialized with data & AX is moved into DS Step 2: Initialize CX to 5 Step 3: Load the effective address in SI & DI. .8086 –ADDITION OF TWO 32 BIT NUMBERS AIM: To write an assembly language program to add two 32 bit numbers using 8086 APPARATUS REQUIRED: (i) 8086 Microprocessor kit with keyboard.

FLOWCHART: Start AX is initialized with data & AX is moved to DS Data2 is moved to BX & added with Data4 Data3 is moved toCX &added with carry with data4 Data 4C is moved to AH & AL content is moved to DI Interrupt is raised Stop .

4CH MOV [DI]. Data3 MOV AH. AX OPCODE OPERAND COMMENTS AX is initialized with data AX is moved into DS Move data2 to BX Data4 is added with BX content Move data1 to CX Data3 is added with CX content Data 4C is moved to AH AL content is moved to DI Interrupt Stop the Process MOV BX.PROGRAM: LABEL START: ADDRESS MNEMONICS MOV AX .@ DATA MOV DS.Data1 ADC CX. Data4 MOV CX. Data2 ADD BX.AL INT 21H END RESULT: Thus the Assembly Language Program for 32 –bit addition has been written and executed & the results were stored in desired memory location .

MODEL SMALL: DATA: Data1 Data2 Data3 Data4 DW DW DW DW VIVA VOCE QUESTIONS 1. AX? Write a routine to swap nibbles in AL. 3. 4. 2. Which are pointers present in this 8086? What is meant by Maskable interrupts? . 0 and SUB AX. 5. What do square brackets means when they appear in an operand? What is the difference between MOV AX.

decrement the repitition count Step 6: Check ZF. otherwise do next step. Step 2: Get the count 2. Step 8: Stop the Process. APPARATUS REQUIRED: (i) 8086 Microprocessor kit with keyboard. Step 4: Compare the data from next memory location with the content of Accumulator. number of comparisons (length of array -1) in C register. (ii) Power Cable.1) in B register. ALGORITHM: Step 1: Get the count 1. Step5: Check CF. number of repetitions (length of array . . . If carry flag is set (accumulator content is smaller than the other number). decrement comparison count. Step 7: Store the smallest number to the previous memory location & greatest to the current memory location. If zero flag is set (accumulator content is equal to the other number).Experiment No: Date: 8086-ASCENDING ORDER AIM: To write an assembly language program to arrange the given data in ascending Order using 8086 microprocessor kit. Step 3: Move the data from memory location pointed to the Accumulator.

FLOWCHART: Start Initialize memory pointer to get N. the length of series Initialize COUNT 1 for (N-1) repetitions Initialize COUNT 2 for (N-1) Comparisons Increment memory pointer and get the number from series IS pointer < (pointer+1)? YES NO Interchange Numbers Decrement COUNT 2 NO Is COUNT 2 = Zero? YES Decrement COUNT 1 NO Is COUNT 1 = zero? YES Stop .

goto L1 Stop the process L1: L2: MOV A[BX].05H DEC CL MOV BX. AL L3: INC BX LOOP L2 MOV DL. exchange the data Move AL content to BX Increment BX by 1 Goto L2 Move CL content to DL Decrement DL content If the count is not zero. A[BX+1] OPCODE OPERAND COMMENTS Move 05 to CL Move 05 to DL Decrement CL register Move 00H to BX Move the 1st data to AL Compare the 1st & 2nd data If 1st data is lesser than 2nd.DATA SEGMENT: A DB 5 DUP(0) DATA ENDS CODE SEGMENT: ASSUME CS: CODE. A[BX+1] JB L3 XCHG AL.00H MOV AL. A[BX] CMP AL. goto L3 If 1st data is greater than 2nd.05H MOV DL.CL DEC DL LOOP L1 END RESULT: Thus the Assembly Language Program to arrange the given data in ascending Order had been written and executed & the results were stored in desired memory location . DS: DATA PROGRAM: LABEL START: ADDRESS MNEMONICS MOV CL.

From which address the 8086 starts execution after reset? What are the modes in which 8086 can operate? What is the data and address size in 8086? What is purpose served by CX register? Which are pointers present in this 8086 . 5. 3. 2. 4.OBSERVATION: ADDRESS DATA INPUT COMMENTS OUTPUT VIVA VOCE QUESTIONS 1.

. ALGORITHM: Step 1: Get the count 1.1) in B register. Step 4: Compare the data from next memory location with the content of Accumulator. Step 7: Store the smallest number to the previous memory location & greatest to the current memory location. decrement the repitition count Step 6: Check ZF. If zero flag is set (accumulator content is equal to the other number). decrement comparison count. .Experiment No: Date: 8086-DESCENDING ORDER AIM: To write an assembly language program to arrange the given data in descending Order using 8086 microprocessor kit. Step 3: Move the data from memory location pointed to the Accumulator. (ii) Power Cable. APPARATUS REQUIRED: (i) 8086 Microprocessor kit with keyboard. Step 2: Get the count 2. number of comparisons (length of array -1) in C register. Step 8: Stop the Process. number of repetitions (length of array . Step5: Check CF. otherwise do next step. If carry flag is set (accumulator content is smaller than the other number).

the length of series Initialize COUNT 1 for (N-1) repetitions Initialize COUNT 2 for (N-1) Comparisons Increment memory pointer and get the number from series IS pointer < (pointer+1)? YES NO Interchange Numbers Decrement COUNT 2 NO Is COUNT 2 = Zero? YES Decrement COUNT 1 NO Is COUNT 1 = zero? YES Stop .FLOWCHART: Start Initialize memory pointer to get N.

exchange the data Move AL content to BX Increment BX by 1 Goto L2 Move CL content to DL Decrement DL content If the count is not zero. goto L1 Stop the process L1: L2: MOV A[BX]. goto L3 If 1st data is greater than 2nd.DATA SEGMENT: A DB 5 DUP(0) DATA ENDS CODE SEGMENT: ASSUME CS: CODE.05H MOV DL. DS: DATA PROGRAM: LABEL START: ADDRESS MNEMONICS MOV CL.05H DEC CL MOV BX. A[BX+1] OPCODE OPERAND COMMENTS Move 05 to CL Move 05 to DL Decrement CL register Move 00H to BX Move the 1st data to AL Compare the 1st & 2nd data If 1st data is lesser than 2nd.CL DEC DL LOOP L1 END RESULT: Thus the Assembly Language Program to arrange the given data in desscending Order had been written and executed & the results were stored in desired memory location . A[BX+1] JA L3 XCHG AL.00H MOV AL. AL L3: INC BX LOOP L2 MOV DL. A[BX] CMP AL.

Determine the memory address accessed by each of the following instruction. What is the instruction needed to count the number of 1’s found in AL? 5. SS=2000h. What conditional jump instruction should be used after CMP AL. MOV AL.OBSERVATION: ADDRESS DATA INPUT COMMENTS OUTPUT VIVA VOCE QUESTIONS 1. [BP + DI] 2. Form a jump instruction that jumps to the address pointed by the BX register? 3. Suppose that DS=1000h. What is the difference between JUMP and LOOP instructions? 4. BP=1000h and DI=0100h. 30H to jump when AL equals 30H? .

Step 6: Increment the register Ro. Step 8: Make the data pointer to point the next address by increment the DPTR. . Step 10: Stop the process. otherwise do next step. Step 9: Store the carry to that address. Step 7: Store the sum (content of accumulator)to the address pointed by the data pointer. APPARATUS REQUIRED: (i) 8051 Microprocessor. go to step 7.Experiment No: Date: 8051-ADDITION OF TWO 8-BIT NUMBERS AIM: To perform the addition of two 8 bit numbers using immediate addressing and store the result in memory. (ii) Power Cable. Step 4: Make the data pointer to point the address 4500H. Step 3: Add the second data with the first data. If no carry occur. ALGORITHM: Step 1: Clear register Ro Step 2: Get the data in accumulator. Step 5: Check the carry flag.

FLOWCHART: Start Get first data in accumulator & clear Ro reg Make DP to point 4500H ADD second data with accumulator Is Carry Set YES Increment Ro reg NO Store Sum and Carry in memory using DP Stop .

If no carry occurs go to address 410C.#data1 ADD A. A 4110H NOP Move the data 00H to reg Ro. . #4500H JNC LOOP INC Ro MOV X@DPTR.PROGRAM: LABEL START ADDRESS 4100H 4102H 4104H MNEMONICS MOV Ro. Increment the DPTR. Move the data from accumulator to the address denoted by DPTR No operation. RESULT: Thus the addition of two 8-bit data using immediate addressing is performed and executed.A 410CH 410DH 410EH INC DPTR MOV A.#00H MOV A. Move the data from accumulator to the address pointed by DPTR Increment the DPTR Move the content from reg Ro to the accumulator. Move the address 4500H to DPTR. Move the first data in accumulator Add the second data with the accumulator. Ro 410FH MOV @ DPTR.#data2 OPCODE OPERAND COMMENTS 4106H 4109H 410BH LOOP MOV DPTR.

OBSERVATION:

ADDRESS INPUT OUTPUT

DATA

COMMENTS

VIVA VOCE QUESTIONS

1. What is called microcontroller? 2. What is the difference between microprocessor and microcontroller? 3. How many flags are there in 8051 4. How many addressing modes are in 8051 5. What is called Datapointer?

Experiment No:

Date:

8051-SUBTRACTION OF TWO 8-BIT NUMBERS

AIM: To perform the subtraction of two 8 bit numbers using immediate addressing and store the result in memory.

APPARATUS REQUIRED: (i) 8051 Microprocessor. (ii) Power Cable. ALGORITHM: Step 1: Clear register Ro Step 2: Get the data in accumulator. Step 3: Subtract the second data with the first data. Step 4: Make the data pointer to point the address 4500H. Step 5: Check the carry flag. If no carry occur, go to step 7, otherwise do next step. Step 6: Increment the register Ro. Step 7: Store the difference (content of accumulator)to the address pointed by the data pointer. Step 8: Make the data pointer to point the next address by increment the DPTR. Step 9: Store the borrow to that address. Step 10: Stop the process.

FLOWCHART:

Start

Get first data in accumulator & clear Ro reg

Make DP to point 4500H

Subtract second data with accumulator

Is Borrow Obtained YES Increment Ro reg

NO

Store Difference and Borrow in memory using DP

Stop

A 4310H NOP Move the data 00H to reg Ro.#data2 OPCODE OPERAND COMMENTS 4306H 4309H 430BH LOOP MOV DPTR. Increment the DPTR. Move the first data in accumulator Subtract the second data with the accumulator. If no carry occurs go to address 410C. #4500H JNC LOOP INC Ro MOV X@DPTR. Move the address 4500H to DPTR. Move the data from accumulator to the address pointed by DPTR Increment the DPTR Move the content from reg Ro to the accumulator.PROGRAM: LABEL START ADDRESS 4300H 4302H 4304H MNEMONICS MOV Ro.#data1 SUB A.A 430CH 430DH 430EH INC DPTR MOV A. Ro 430FH MOV @ DPTR. Move the data from accumulator to the address denoted by DPTR No operation. RESULT: Thus the subtraction of two 8-bit data using immediate addressing is performed and executed.#00H MOV A. .

#4500H instruction . What is called Immediate addressing mode? 3. What is called Indirect addressing mode? 4. How many bytes is used for the instruction MOV DPTR.OBSERVATION: ADDRESS INPUT OUTPUT DATA COMMENTS VIVA VOCE QUESTIONS 1 . How many flags are affected in SUB instructions 5. How many registers are in 8051 2.

Experiment No: Date: 8051-MULTIPICATION OF TWO 8-BIT NUMBERS AIM: To write an 8051 assembly language program to multiply two 8-bit numbers and store the result in memory. ALGORITHM: Step 1: Get the first data in accumulator. (ii) Power Cable. Step 5: Store the LSB of the result from the accumulator to the address pointed by DPTR. Step 8: Stop the process. Step 6: Increment the data pointer. APPARATUS REQUIRED: (i) 8051 Microprocessor. Step 7: Store the MSB of the result in the address pointed by DPTR. Step 3: Multiply two 8-bit data. Step 2: Get the second data in reg B. . Step 4: Get the data pointer to point the address 4500H.

FLOWCHART: Start

Clear carry flag

Get multiplicand in accumulator

Get multiplier in B reg

Multiply accumulator with B

Store the result in memory

Stop

PROGRAM:

LABEL START

ADDRESS

4300H 4302H 4305H 4306H 4309H

MNEMONICS MOV A,#data1 MOV F0,#data2 MUL B MOV DPTR, #4500H MOV X@DPTR,A

OPCODE

OPERAND

COMMENTS

430AH 430BH

INC DPTR MOV A,B

430DH

MOV X@DPTR,A

430EH

NOP

Move the data 1 to accumulator. Move the data 2 the reg B. Multiply A & B. Move the address 4500H to DPTR. Move the data from accumulator to the address pointed by DPTR Increment the DPTR. Move the content of B reg to the accumulator. Move the data from accumulator to the address denoted by DPTR. No operation.

RESULT: Thus the Assembly Language Program for the multiplication of two 8-bit data has been written and executed & the results are stored in desired memory location.

OBSERVATION:

ADDRESS INPUT OUTPUT

DATA

COMMENTS

VIVA VOCE QUESTIONS

1. What is F0 in this instruction MOV F0,#data? 2. What is called Stack pointer? 3. Define Flag register 4. What is the use of this instruction MOVX@ DPTR, A? 5. What type of addressing mode is used for the instruction MUL AB?

Step 7: Store the remainder of the result in the address pointed by DPTR. Step 6: Increment the data pointer. Step 8: Stop the process. Step 5: Store the Quotient of the result from the accumulator to the address pointed by DPTR. Step 2: Get the second data in reg B. Step 4: Get the data pointer to point the address 4500H. Step 3: Divide two 8-bit data. APPARATUS REQUIRED: (i) 8051 Microprocessor. ALGORITHM: Step 1: Get the first data in accumulator. .Experiment No: Date: 8051-DIVISION OF TWO 8-BIT NUMBERS AIM: To write an 8051 assembly language program to divide two 8-bit numbers and store the result in memory. (ii) Power Cable.

FLOWCHART: Start Clear carry flag Get dividend in accumulator Get divisor in B reg Divide accumulator with B Store the result in memory Stop .

Move the data from accumulator to the address pointed by DPTR Increment the DPTR.PROGRAM: LABEL START ADDRESS 4300H 4302H 4305H 4306H 4309H MNEMONICS MOV A. Move the address 4500H to DPTR. #4500H MOV X@DPTR.A 430EH NOP Move the data 1 to accumulator. Divide A by B.A OPCODE OPERAND COMMENTS 430AH 430BH INC DPTR MOV A.#data1 MOV F0. Move the data 2 the reg B. RESULT: Thus the Assembly Language Program for the division of two 8-bit data has been written and executed & the results are stored in desired memory location . Move the data from accumulator to the address denoted by DPTR.#data2 DIV B MOV DPTR.B 430DH MOV X@DPTR. No operation. Move the content of B reg to the accumulator.

What is the use of POP instruction? . The mnemonics used in writing a program is called _______________________ 2. What is called Implied addressing mode? 5. What is called Direct addressing mode? 4. What is called Fetch Cycle? 3.OBSERVATION: ADDRESS INPUT OUTPUT DATA COMMENTS VIVA VOCE QUESTIONS 1.

Step 6 :Check the carry flag. Step 4: Increment the datapointer and add the LB of 1st data with LB of 2nd data and store in R1 register. Step 10: Store the carry to that address. APPARATUS REQUIRED: (i) 8051 Microprocessor. ALGORITHM: Step 1: Clear register Ro Step 2: Make the datapointer to point the address 4500 and move first data LB to R1 register. Step 3: Increment the datapointer and move the firtdata HB to R2 register. Step 7: Increment the register Ro. . Step 11: Stop the process. If no carry occur. Step 8: Store the sum (content of accumulator)to the address pointed by the data pointer. Step 5: Increment the datapointer and add with carry HB of 2nd data with HB of 1st data. otherwise do next step.Experiment No: Date: 8051-ADDITION OF TWO 16-BIT NUMBERS AIM: To perform the addition of two 16 bit numbers using immediate addressing and store the result in memory. Step 9: Make the data pointer to point the next address by increment the DPTR. (ii) Power Cable. go to step8 .

Increment DPTR Add LB of 1st and 2nd data Increment DPTR ADD with carry HB of2nd data with 1st Is Carry Set YES Increment Ro reg NO Store Sum and Carry in memory using DP Stop .FLOWCHART: Start Clear R0 reg. Make DP to point 4500H Move 1st data LB to R1 reg .Increment DPTR move 1st data HB to R2 reg.

PROGRAM: LABEL START ADDRESS 4100H 4102 4105 MNEMONICS MOV Ro.A 4107 4108 INC DPTR MOV X A.A . #4500H MOV X A.@DPTR 410C ADD A.@DPTR 4109 MOV R2.A 410A 410B INC DPTR MOV X A. Move the address 4500H to DPTR Move the data from address pointed by DPTR to the accumulator Move the content of LB of 1st data from accumulator to reg R1 Increment Data pointer Move the data from address pointed by DPTR to the accumulator Move the content of LB of 1st data from accumulator to reg R2 Increment Data pointer Move the data from address pointed by DPTR to the accumulator Add the content of LB of 2nd data from reg R1with accumulator Move the content of accumulator to reg R1 Increment Data pointer Move the data from address pointed by DPTR to the accumulator Add with carry the content of HB of 2nd data from reg R2 with accumulator Move the content of 4110 ADDC A.RI 410D MOV R1.@DPTR Move the data 00H to reg Ro.#00H MOV DPTR.@DPTR OPCODE OPERAND COMMENTS 4106 MOV R1.A 410E 410F INC DPTR MOV X A.R2 4111 MOV R2.

R2 4119 411A INC DPTR MOVX @ DPTR. . Move the data from accumulator to the address pointed by DPTR Move the content of reg R2 to accumulator Increment the DPTR Move the data from accumulator to the address pointed by DPTR Move the content of reg R0 to accumulator Increment the DPTR Move the data from accumulator to the address pointed by DPTR No operation. A 411B MOV A. If no carry occurs go to address 4115 Increment reg R0 Move the content of reg R1 to accumulator .R1 LOOP 4116 4117 INC DPTR MOV X@DPTR. A 411E NOP accumulator to the reg R2.R0 411C 411D INC DPTR MOVX @ DPTR.A 4118 MOV A.Increment the DPTR.4112 4114 4115 JNC LOOP INC Ro MOV A. RESULT: Thus the addition of two 8-bit data using immediate addressing is performed and executed.

OBSERVATION: ADDRESS INPUT OUTPUT DATA COMMENTS

VIVA VOCE QUESTIONS

1. 2. 3. 4. 5.

What is the use of POP instruction? What is called Vector Location? Define Interrupt? What is the length of Stack pointer? What is the length of Instruction Register?

Experiment No:

Date:

TRANSFERING A BLOCK OF DATA FROM INTERNAL TO EXTERNAL MEMORY

AIM: To write an Assembly Language Program to transfer the block of data starting from Internal memory location 31 to the memory location 4401H. The total number of data is stored at 4400H. APPARATUS REQUIRED: (i) 8051 Microprocessor. (ii) Power Cable. ALGORITHM: Step 1: Make the data pointer to point the address 4400H. Step 2: Move the total number of data to the R0 register. Step 3: Move the internal RAM Memory location 31 to the register R1. Step 4: Increment the destination block pointer. Step 5: Move the indirect Ram to the accumulator. Step 6: Store the first data to the destination address. Step 7: Increment the source block pointer. Step 8: Decrement the R0 register. Step 9: If ZF=0, go to step 4.otherwise go to next step. Step 10: Stop the Process.

FLOWCHART: Start

Move DPTR to point to 4400

Load the total number of input data In R0 reg

Move direct byte 31 to R1 reg.

Store data byte to destination block

Increment the source & destination block pointer

Decrement R0 reg

NO If ZF=1 YES Stop

#31 INC DPTR MOV A. #4400H MOV X A.A 4205 LOOP MOV R1. . Move immediate data to the reg R1 Increment datapointer Movev indirect RAM to accumulator Move the data from accumulator to the address pointed by DPTR Increment the register R1 Decrement the register R0 If ZF=0.program control jump to label.A 4207 4208 4209 420A 420B 420C INC R1 DEC R0 JNZ LOOP 420E NOP Move the address 4400H to DPTR Move the data from address pointed by DPTR to the accumulator Get count of total number of data bytes in R0 reg. No operation RESULT: Thus the assembly language program to transfer the block of data from Internal memory location 31 to 4401H has been written and verified.@R1 MOV X @DPTR.PROGRAM: LABEL START ADDRESS 4200H 4203 MNEMONICS MOV DPTR.@DPTR OPCODE OPERAND COMMENTS 4204 MOV R0.

3. 2. 5. 4. What is the length of Memory Address Register? What is the length of Data buffer Register? What is the length of Program Counter? What is the length of Temporary Register? What is the length of Accumulator? .OBSERVATION: ADDRESS DATA INPUT COMMENTS OUTPUT VIVA VOCE QUESTIONS 1.

otherwise go to next step. Step 9: If ZF=0. . ALGORITHM: Step 1: Make the data pointer to point the address 4500H. Step 7: Store the first data to the destination address. Step 10: Stop the Process. Step 6: Increment the destination block pointer. The total number of data is stored at 4500H.Experiment No: Date: TRANSFERING A BLOCK OF DATA FROM EXTERNAL TO EXTERNAL MEMORY AIM: To write an Assembly Language Program to transfer the block of data starting from memory location 4501H to 4800H. Step 8: Decrement the R0 register. APPARATUS REQUIRED: (i) 8051 Microprocessor. go to step 5. Step 3: Move the Higher order byte of source to R1 register Step 4: Move the Higher order byte of destination to R2 register Step 5: Move the content of register R1 to datapointer. (ii) Power Cable. Step 2: Move the total number of data to the R0 register.

FLOWCHART: Start Move DPTR to point 4500 Move 45 to R1 and 48 to R2 reg Move count to R0 and R1 reg content to DPH Store data byte to destination block Increment the source & destination block pointer Decrement R0 reg NO If ZF=1 YES Stop .

Move the content of the reg R1 to higher order byte of thev Datapointer. Increment datapointer Move the data from address pointed by DPTR to the accumulator Move the content of the register R2 to the destination Move the data from accumulator to the address pointed by DPTR Decrement the register R0 If ZF=0.A 4310 4311 DEC R0 JNZ LOOP 4313 NOP Move the address 4300H to DPTR Move the higher order byte of Data pointer to R1 register. #4500H MOV R1.@DPTR 430D MOV DPH.program control jump to label. Move the data from address pointed by DPTR to the accumulator Get count of total number of data bytes in R0 reg.#48H MOV X A.@DPTR 4308H MOV R0.#45H OPCODE OPERAND COMMENTS 4305H 4307H MOV R2.R2 430F MOV X @DPTR.A LOOP 4309H MOV DPH.PROGRAM: LABEL START ADDRESS 4300H 4303H MNEMONICS MOV DPTR.R1 430B 430C INC DPTR MOV X A. Move the direct data to R2 register. . No operation RESULT: Thus the assembly language program to transfer the block of data from memory location 4501H to 4800H has been written and verified.

5. 2.OBSERVATION: ADDRESS DATA INPUT COMMENTS OUTPUT VIVA VOCE QUESTIONS 1. How many I/O ports can be accessed in Direct Method? How many lines are there in address bus What is called Program Counter? What is called Instruction Register ? What is the direction of databus? . 3. 4.

Step 4: Subtract with borrow the content of the register R1 with the accumulator. . The ASCII data is stored in 4600H and Hexadecimal data is store in 4601H. APPARATUS REQUIRED: (i) 8051 Microprocessor. Step 6: Store the equivalent hexa decimal number to the datapointer. Step 3: Move the direct byte 30 to the register R1. ALGORITHM: Step 1: Make the data pointer to point the address 4600H. (ii) Power Cable. Step 7: Stop the Process.Experiment No: Date: ASCII TO ITS EQUIVALENT HEXADECIMAL CONVERSION AIM: To write an Assembly Language Program to convert a ASCII number to Hexadecimal number. Step 2: Move the ASCIIl number to accumulator. Step 5:Increment the Data pointer.

FLOWCHART: START Move DPTR to point 4600 Move Hexadecimal num to Acc Mov 30 to R1 reg and Sub with Acc Increment DPTR Move the result to DPTR STOP .

#4600H MOV X A. .#30 SUBB A.@DPTR OPCODE OPERAND COMMENTS 4304 4306 MOV R1.R1 4307 4308 INC DPTR MOV X @DPTR.A 4309 NOP Move the address 4600H to DPTR Move the data from address pointed by DPTR to the accumulator Move the direct byte to the register R1 Subtract with borrow the content of register R1 with accumulator Increment datapointer Move the data from accumulator to the address pointed by DPTR No operation RESULT: Thus the assembly language program to convert a ASCII number to equivalent Hexadecimal number has been written and verified.PROGRAM: LABEL START ADDRESS 4300H 4303 MNEMONICS MOV DPTR.

2. Which byte of an instruction is loaded into IR register What is the length of Stackpointer? What is the length of Status word? How many interrupts are there in 8051 What is PSW? . 3.OBSERVATION: ADDRESS DATA INPUT OUTPUT COMMENTS VIVA VOCE QUESTIONS 1. 4. 5.

APPARATUS REQUIRED: (i) 8051 Microprocessor. ALGORITHM: Step 1: Make the data pointer to point the address 4600H. Step 3: Move the direct byte 30 to the register R1. Step 2: Move the content of datapointer to accumulator. . Step 7: Stop the Process. Step 5:Increment the Data pointer. Step 6: Store the equivalent ASCII number to the datapointer.Experiment No: Date: HEXADECIMAL TO ITS EQUIVALENT ASCII CONVERSION AIM: To write an Assembly Language Program to convert a Hexadecimal number to its equivalent ASCII number The Hexadecimal data is stored in 4600H and ASCII data is stored in 4601H. Step 4: Add the content of the register R1 with the accumulator. (ii) Power Cable.

FLOWCHART: START Move DPTR to point 4600 Move Hexadecimal num to Acc Mov 30 to R1 reg and add with Acc Increment DPTR Move the result to DPTR STOP .

#30 ADD A.PROGRAM: LABEL START ADDRESS 4300H 4303H MNEMONICS MOV DPTR. #4600H MOV X A.@DPTR OPCODE OPERAND COMMENTS 4304H 4306H MOV R1.A 4309H NOP Move the address 4600H to DPTR Move the data from address pointed by DPTR to the accumulator Move the direct byte to the register R1 Add the content of register R1 with accumulator Increment datapointer Move the data from accumulator to the address pointed by DPTR No operation RESULT: Thus the assembly language program to convert a ASCII number to equivalent Hexadecimal number has been written and verified .R1 4307H 4308H INC DPTR MOV X @DPTR.

5. 2.OBSERVATION: ADDRESS DATA INPUT OUTPUT COMMENTS VIVA VOCE QUESTIONS 1. 3. 4. . How many I/o ports can be accessed by direct method How many I/o ports can be accessed by Memory mapped method What is called Vectored Interrupt? What is called Maskable interrupt? When interrupt service request is serviced .

Step 4: Save the count 2 in R1 register. Step 3: Get the count 2. If carry flag is not set (accumulator content is smaller than the other number). go to step 13 otherwise do next step. Step 5: Move the datapointer to point to 4501H Step 6: Move DPL to R2 Step 7: Move the 1st data to B register and increment DPTR and move the 2nd data to the accumulator. go to step 6.Experiment No: Date: 8085-ASCENDING ORDER AIM: To write an Assembly Language Program to arrange the given data in Ascending Order.e. Step 15: Decrement the number of repetitions (count 1). Step 13: Decrement the number of comparisons (count 2). number of repetitions (i. . Step 16: If the number of repetitions is not completed go to step 3. APPARATUS REQUIRED: (i) 8051 Microprocessor. ALGORITHM: Step 1: Move the datapointer to point to 4500H Step 2: Get the count 1. Step 10: Check ZF. Step 17: Stop the Process. otherwise do next step.e. total number of data-1) in A register. number of comparisons (i. Step 14: If the number of comparison is not equal to zero. Step 9: Compare and jump if not equal goto step11 else do next step.. Step 12: Store the smallest number to the previous memory location & greatest to the current memory location. total number of data-1) in R0 register. Step 8: Compare the data from next memory location with the content of accumulator. If zero flag is set goto step else do next step Step 11: check CF. otherwise do the next step.. (ii) Power Cable.

FLOWCHART 8051-ASCENDING ORDER Start Initialize Datapointer to get N the length of series Initialize COUNT 1 for (N-1) repetitions Initialize COUNT 2 for (N-1) Comparisons Increment memory pointer and get the number from series IS pointer < (pointer+1)? YES NO Interchange Numbers Decrement COUNT 2 NO Is COUNT 2 Zero? YES Decrement COUNT 1 NO Is COUNT 1 zero? YES Store sum as result Stop .

.#4500 MOVX A.@DPTR DEC A MOV R0.A INC DPTR MOVX A.@DPTR MOV B.R2 MOVX @DPTR.BACK DJNZ R0.B Interchange numbers if not in order Decrement count2 Decrement count 1 Stop the Process SKIP 411F 4120 4122 4124 MOVX @DPTR.@DPTR CJNE A.#4501 MOV R2.A BACK 4108 410B 410D 410E 4110 4111 4112 MOV DPTR.R0 MOV R1.DPL MOVX A.A DJNZ R1.AGAIN NOP RESULT: Thus the Assembly Language Program to arrange the given data in ascending order has been written and executed & the results are stored in desired memory location.A R0 = COUNT 1 for (N1)repetitions R1= COUNT 2 for (N1)Comparisons AGAIN 4106 4107 MOV A.PROGRAM FOR SORTING A SERIES IN ASCENDING ORDER LABEL START ADDRESS MNEMONIC OPCODE OPERAND COMMENTS 4100 4103 4104 4105 MOV DPTR.A INC DPTR MOV A.B LOOP1 Compare consecutive numbers LOOP1 4115 4117 4119 411B 411C 411D JZ SKIP JNC SKIP MOV DPL.

OBSERVATION: ADDRESS DATA INPUT COMMENTS OUTPUT VIVA VOCE QUESTIONS 1. 3. 4. 5. Which interrupt remains enabled even after a reset operation What instruction is used to enable the interrupt? What instruction is used to enable the TRAP interrupt? What is the use of RIM instruction? What is the purpose of READY signal? . 2.

number of comparisons (i. (ii) Power Cable. Step 9: Compare and jump if not equal goto step11 else do next step. APPARATUS REQUIRED: (i) 8051 Microprocessor. otherwise do next step.Experiment No: 8051-DESCENDING ORDER Date: AIM: To write an Assembly Language Program to arrange the given data in Descending Order. total number of data-1) in A register. otherwise do the next step. Step 13: Decrement the number of comparisons (count 2). Step 3: Get the count 2.. Step 12: Store the smallest number to the previous memory location & greatest to the current memory location. go to step 13 otherwise do next step.. If zero flag is set goto step else do next step Step 11: check CF. ALGORITHM: Step 1: Move the datapointer to point to 4500H Step 2: Get the count 1. If carry flag is set (accumulator content is smaller than the other number). Step 8: Compare the data from next memory location with the content of accumulator.e. total number of data-1) in R0 register. number of repetitions (i. go to step 6. Step 15: Decrement the number of repetitions (count 1). Step 4: Save the count 2 in R1 register. Step 10: Check ZF. Step 16: If the number of repetitions is not completed go to step 3.e. Step 14: If the number of comparison is not equal to zero. Step 17: Stop the Process. Step 5: Move the datapointer to point to 4501H Step 6: Move DPL to R2 Step 7: Move the 1st data to B register and increment DPTR and move the 2nd data to the accumulator. .

FLOWCHART 8051-DESCENDING ORDER Start Initialize Data pointer to get N the length of series Initialize COUNT 1 for (N-1) repetitions Initialize COUNT 2 for (N-1) Comparisons Increment memory pointer and get the number from series IS pointer < (pointer+1)? YES NO Interchange Numbers Decrement COUNT 2 NO Is COUNT 2 zero? YES Decrement COUNT 2 NO Is COUNT 1 zero? YES Store sum as result Stop .

A INC DPTR MOVX A.#4500 MOVX A.A BACK 4108 410B 410D 410E 4110 4111 4112 MOV DPTR.R0 MOV R1.AGAIN NOP RESULT: Thus the Assembly Language Program to arrange the given data in descending order has been written and executed & the results are stored in desired memory location.B LOOP1 Compare consecutive numbers LOOP1 4115 4117 4119 411B 411C 411D JZ SKIP JC SKIP MOV DPL.R2 MOVX @DPTR.#4501 MOV R2.@DPTR MOV B.BACK DJNZ R0.@DPTR CJNE A.A INC DPTR MOV A.B Interchange numbers if not in order Decrement count2 Decrement count 1 Stop the Process SKIP 411F 4120 4122 4124 MOVX @DPTR.A DJNZ R1.@DPTR DEC A MOV R0. .PROGRAM FOR SORTING A SERIES IN DESCENDING ORDER LABEL START ADDRESS MNEMONIC OPCODE OPERAND COMMENTS 4100 4103 4104 4105 MOV DPTR.A R0 = COUNT 1 for (N1)repetitions R1= COUNT 2 for (N1)Comparisons AGAIN 4106 4107 MOV A.DPL MOVX A.

5.@R1? . A? What addressing mode is used in the instruction ADD A.R1? What addressing mode is used in the instruction MOV A. 4. 3.#data1? What addressing mode is used in the instruction MOVX @DPTR.OBSERVATION: ADDRESS DATA INPUT COMMENTS OUTPUT VIVA VOCE QUESTIONS 1. 2. What is the purpose of ALE signal? What addressing mode is used in the instruction MOV A.

Experiment No: FILLING EXTERNAL MEMORY Date: AIM: To write an Assembly Language Program to fill the data starting from memory location 4200H to 4300H. Step 4: Move the first data to Accumulator Step 5: Make the data pointer to point the address 4200H.otherwise go to next step. ALGORITHM: Step 1: Make the data pointer to point the address 4500H. Step 9: If ZF=0. The total number of data is stored at 4500H APPARATUS REQUIRED: (i) 8051 Microprocessor. Step 3: Increment datapointer. Step 6: Store the first data to the destination address . . Step 2: Move the total number of data to the R0 register. Step 10: Stop the Process. (ii) Power Cable. go to step 6. Step 7: Increment the destination block pointer.Decrement the R0 register. Step 8:.

FLOWCHART: Start Move DPTR to point 4500 Move count to R0 reg Increment DPTR move 1st data to Accmulator Move DPTR to point 4200 Store the data in the deastination address Increment Data pointer` II Decrement R0 reg NO If ZF=1 YES Stop .

@DPTR OPCODE OPERAND COMMENTS 4104H MOV R0. . Increment datapointer Move the data from address pointed by DPTR to the accumulator Move the address 4200H to DPTR Move the data from accumulator to the address pointed by DPTR Increment datapointer Decrement the register R0 If ZF=0.A 4105H 4106H INC DPTR MOV X A.A 410AH 410BH 410CH 410DH INC DPTR DEC R0 JNZ LOOP1 Move the address 4500H to DPTR Move the data from address pointed by DPTR to the accumulator Move the content of accumulator to R0 register.@DPTR 4107H LOOP1 MOV DPTR. No operation 410FH NOP RESULT: Thus the assembly language program to fill the data starting from memory location 4200H to 4300H and internal memory 30 to 40 has been written and verified.PROGRAM: LABEL START ADDRESS 4100H 4103H MNEMONICS MOV DPTR. #4200H MOV X @DPTR. #4500H MOV X A.program control jump to label.

“Pushing the stack” refers to___________ operation in a LIFO memory. What is the use of JUMP instruction? 2.OBSERVATION: ADDRESS DATA INPUT OUTPUT COMMENTS OUTPUT VIVA VOCE QUESTIONS 1. . What is the use of RST pin? 5. The crystal oscillator is connected to pins__________ &________________ 4. How many ports are used in 8051 3.

Step 4: Send the data from accumulator to port address of stepper motor interface. 8KB RAM. The software for the system is developed in 8085 assembly language. Step 5: Initialize DE register pair with data 030H. Keyboard and display controller 8279. The stepper motor interface consists of driver transistors for stepper motor windings and address decoding circuit. Step 7: Check the value of DE reg pair. Step 6: Decrement DE register pair. Step 2: Initialize register B with total number of data for rotation. (iii)Stepper Motor Interface. Step 3: Get the data for rotation in accumulator. The microprocessor output the binary sequence through data bus. If it is not equal to zero go to step 3. Otherwise go to step 1.Experiment No: STEPPER MOTOR INTERFACE AIM: To run a stepper motor at different speed in two directions. The motherboard consists of 8085 MPU. . 21-key Hex-keypad and six numbers of seven segment LEDs and Bus Expansion connector. (ii) Power Cable. Date: APPARATUS REQUIRED: (i) 8085 Microprocessor. 8KB EPROM. ALGORITHM: Step 1: Initialize HL register pair with address 4150H. THEORY: The hardware setup consists of a microprocessor motherboard and stepper motor interface board. which are converted to current pulses by the driver transistors and used to drive stepper motor.

FLOWCHART: Start Initialize HL reg with 411AH & Initialize B reg with 04H Get data for rotation in accumulator Send data to port address Initialize DE reg pair with 0303H Décrément DE reg Is NO DE=00 YES Increment HL reg pair Decrement B reg Is B=0 YES NO .

41 Initialize HL reg with 411AH.411AH 21 MVI B. If B#0. go to REPEAT. No operation. Move data from E to A.41 04 REPEAT C0 03.41 05.41 00. Increment HL reg pair.PROGRAM: LABEL START ADDRESS MNEMONICS OPCODE OPERAND COMMENTS 4100H 4103H 4105H 4106H 4108H LXI H. Initialize DE reg pair with 0303H. . go to DELAY.M OUT C0H LXI D.04H MOV A.0303H NOP DCX D MOV A. Go to start. Unipolar steeping scheme: Step 1 2 3 4 clock A1 1 0 0 0 wise A2 0 0 1 0 B1 0 0 0 1 B2 0 1 0 0 A1 1 0 0 0 Anticlock A2 0 0 1 0 wise B1 0 1 0 0 B2 0 0 0 1 Two Phase Steeping Scheme: Step 1 2 3 4 clock A1 1 0 0 1 wise A2 0 1 1 0 B1 0 0 1 1 B2 1 1 0 0 A1 1 0 0 1 Anticlock A2 0 1 1 0 wise B1 1 1 0 0 B2 0 0 1 1 RESULT: Thus the program has been written and the stepper motor is rotated in two directions. Send data to output port. The stepper motor is also rotated at different speed.03 DELAY 410BH 410CH 410DH 410EH 410FH 4112H 4113H 4114H 4117H 0B. Send data to accumulator. If DE#0. Load data 04H to B reg. Decrement B reg. Decrement DE reg pair.E ORA D JNZ DELAY INX H DCR B JNZ REPEAT JMP START 06 7E D3 11 00 1B 7B B2 C2 23 05 C2 C3 1A. OR the accumulator content with D reg.

OBSERVATION: ADDRESS 411AH 411BH 411CH 411DH Stepper motor DATA 0A 09 06 05 05 06 09 0A Rotated in forward COMMENTS Data to rotate in forward direction INPUT OUTPUT Direction VIVA VOCE QUESTIONS 1. What is the difference between unipolar and two phase steeping scheme? 4. microprocessor 8085 is the enhanced version of ____________ with essentially the same construction set . What is the use of JUMP instruction? 2. How many machine cycles needed for the execution of ORA? 3. A state during which nothing happens is known as ________________ 5.

ALGORITHM: Step 1: Load data 10 to accumulator.The ADC0808 is also same as ADC0809 except the error.Experiment No: Date: ADC INTERFACING AIM: To write a program to initiate ADC and to store the digital data in memory APPARATUS REQUIRED:   8085 Trainer Kit ADC Interface board THEORY: The ADC0809 is an 8-bit successive approximation type ADC with inbuilt 8-channel multiplexer. The ADC0809 is suitable for interface with 8086 microprocessor. Step 4: Load data 10 to accumulator Step 5: Send the data from accumulator to output port address of ADC interface Step 6: Send the data from accumulator to input port address of ADC interface Step 7: AND the contents 01 with accumulator and compare with it. The ADC0809 is available as a 28 pin IC in DIP (Dual Inline Package).otherwise do the next step Step 9: Send the data from accumulator to input port address of ADC interface Step10:store the result and stop the operation . The ADC0809 has a total unadjusted error of ±1 LSD (Least Significant Digit). The total unadjusted error in ADC0808 is ± 1/2 LSD. Step 2: Send the data from accumulator to output port address of ADC interface Step 3: clear accumulator. Step 8:check for zero flag if not set go to step 6.

FLOWCHART: START TT Initialize HL reg with 411AH & Initialize B reg with 04H Get data for rotation in accumulator Send data to port address Initialize DE reg pair with 0303H Decrement b-reg Is NO DE=00 YES Increment HL reg pair Decrement B reg Is B=0 YES NO .

00 Load 00 to A-reg 410A OUT D0 Send data to output port 410B LOOP IN D8 Send data to input port 410C ANI 01 And 01 with accumulator 410D CPI 01 Compare 01 with accumulator 410E JNZ LOOP If zero flag is not set.PROGRAM: ADDRESS LABEL MNEMONICS OPCODE OPERAND COMMENTS 4100 START: MVI A.10 Load 10 to A-reg 4103 OUT C8 Send data to output port 4104 MVI A.go to specified label 4111 IN C0 Send data to input port 4112 STA 4150 Store accumulator 4115 HLT Stop operation RESULT: Thus the ADC was initiated and the digital data was stored at desired location .10 Load 10 to A-reg 4105 OUT D0 Send data to output port 4106 XRA A Clear accumulator 4107 XRA A Clear accumulator 4108 XRA A Clear accumulator 4109 MVI A.10 Load 10 to A-reg 4101 OUT C8 Send data to output port 4102 MVI A.

4. 2.4100 and LHLD 4100? What are the application of microprocessor? What is called LIFO? How many interrupts are there in 8085? Which group of ports of 8255 PPI can be operated in 2modes . 5. What is the difference between LXI H.OBSERVATION: Compare the data displayed at the LEDs with that stored at location 4150 VIVA VOCE QUESTIONS 1. 3.

92 4. SQUARE WAVE GENERATION: (i) Load the initial value (00) to accumulator and move it to DAC (ii) Call the delay program (iii) Load the final value (FF) to accumulator and move it to DAC (iv) Call the delay program (v) Repeat steps 2 to 5 . with FFH as input . ALGORITHM: 1. The digital data input and the corresponding output voltages are presented in the table. with 00H as input to DAC.results in different waveforms namely square. Similarly.04(appx). the port address of DAC is 08H.saw tooth and rectangular wave.96 -4.00 Referring to Table. the output voltage varied in steps of 10/256=0. APPARATUS REQUIRED:   8085 Trainer Kit DAC Interface board THEORY: DAC 0800 is an 8-bit DAC and the output voltage variation is between -5V and + 5V.Experiment No: DAC INTERFACING Date AIM: To interface DAC with 8085 to demonstrate the generation of square.00 … 4.1.triangular etc.00 -4..The output is +5v.92 … 0. Outputting digital data 00 and FF at regular intervals to DAC.96 5.the analog output is -5v.1 Input Data in HEX 00 01 02 … 7F … FD FE FF Output Voltage -5.

Else go to step 3 Load value (FF) to accumulator Move the accumulator content to DAC Decrement the accumulator content by 1 If accumulator content is zero go to step2. SAW TOOTH WAVE GENERATION: (i) Load the initial value 00 to accumulator (ii) Move the accumulator content to DAC (iii) Increment the accumulator content by 1 (iv) Repeat steps 3 and 4.2. Else go to step 7. 3. . TRIANGULAR WAVE GENERATION: (i) (ii) (iii) (iv) (v) (vi) (vii) (viii) Load the initial value (00) to accumulator Move the accumulator content to DAC Increment the accumulator content by1 If accumulator content is zero proceed to next step.

FLOWCHART: SQUARE WAVEFORM Start Move data to 00H to A Call Delay subroutine Move data FFH to A Call Delay subroutine Jump DELAY: Start Move data FFH to C reg & 05 to B reg Decrement C reg YES Is C#0 NO Decrement B reg Is B#0 NO Return YES .

FLOWCHART: SAWTOOTH WAVEFORM Start Move data to 00H to A Increment A YES If There is No zero NO YES Jump NO Stop .

TRIANGULAR WAVEFORM Start Move data 00H to L reg Move L reg to Accumulator Increment the reg L YES If There is No zero NO Move data to FFH to L reg Move L reg to Accumulator Decrement the reg L YES If There is No zero NO YES Jump NO Stop .

00 Load 00 to accumulator OUT C8 Load 00 to accumulator INR A Increment A-reg JNZ L1 Jump to the label specified if zero flag is not set JMP START Jump to the label specified 4104 .05 L1: MVI C.PROGRAM: Square Wave Generation: ADDRESS LABEL 4100 START: 4101 4102 4103 4104 4105 4106 4107 4108 4109 MNEMONICS MVI A.FF L2: DCR C JNZ L2 OPCODE OPERAND COMMENTS Load 00 to accumulator Send data to output port Call operation Load 00 to accumulator Call operation Jump tothe label specified Load 05 to B-reg Load FF to C-reg Dec C-reg Jump to the label specified if zero flag is not set Decrement B-reg Jump to the label specified if zero flag is not set Return to the mainprogram 410A 410B DCR B JNZ L1 410C RET Saw tooth Wave Generation: ADDRESS LABEL 4100 START: 4101 4102 4103 L1 MNEMONICS OPCODE OPERAND COMMENTS MVI A.00 OUT C8 CALL DELAY OUT C8 CALL DELAY JMP START DELAY: MVI B.

00 MOV A.Triangular Wave Generation: ADDRESS LABEL 4100 START: 4101 4102 4103 4104 L1: MNEMONICS OPCODE MVI L.FF MOV A.L OUT C8 INR L JNZ L1 OPERAND COMMENTS Load 00 to Lreg Load 00 to accumulator Send data to output port incrementLreg Jump to the label specified if zero flag is not set Load FF to Lreg Load FF to accumulator Send data to output port Decrement Lreg Jump to the label specified if zero flag is not set Jump to the label specified 4107 4108 4109 410A 410B L2: MVI L..L OUT C8 DCR L JNZ L2 410E JMP START RESULT: Thus the square.triangular and saw tooth waveform were generated by interfacing DAC with 8085 trainer kit. .

Write the two ways to initialize stack pointer at FFFFH? Define instruction set? is it possible to check AC flag status of 8085.VIVA VOCE QUESTIONS 1. 5.how?? What is difference between PUSH and POP instruction? How many flags are affected for the HALT? . 3. 4. 2.

APPARATUS REQUIRED: (i) 8085 Microprocessor. The traffic light interface board is connected to Main board using 26 core flat cables to 26-pin Port connector. The LED’s can be switched ON/OFF in the specified sequence by the Microprocessor. Programmable as Peripheral Interface 8255. which consist of 36 LED’s in which 20 LED’s are used for vehicle traffic and they are connected to 20 port lines of 8255 through Buffer. The hardware of the system consists of two parts. 26 pin parallel port connector. THEORY: The traffic lights are interfaced to Microprocessor system through buffer and ports of programmable peripheral Interface 8255. Microprocessor as CPU and the peripheral devices like EPROM. (iii)Traffic Light Interfacing. . RAM. (ii) Power Cable.Experiment No: TRAFFIC LIGHT CONTROLLER AIM: Date: To control the traffic light system with an 8085 microcontroller program. 21 keys Hexa key pad and six number of seven segment LED’s. (iii)Lights for traffic signaling.So the traffic lights can be automatically switched ON/OFF in desired sequence. The first part is Microprocessor based system with 8085. Keyboard & Display Controller 8279. The Interface board has been designed to work with parallel port of Microprocessor system. Remaining LED’s are used for pedestrian traffic. The second part is the traffic light controller interface board.

Step 5: Decrement C reg. Step 6: if C=0 go to step 1.ALGORITHM: Step 1: Initialize HL pair with 4500H and C reg with 02H. Step 3: Send data to port A & B. otherwise go to step 3. Step 2: Send control word to CNT register. . Step 4: Call delay and increment HL pair.

FLOWCHART: Start Initialize HL pair with 4500H & C reg with 02H Send control word to CNT reg Send data to port A & B Call Delay Increment HL pair Decrement C register If C=0 YES NO .

DELAY: PUSH BC reg pair to stack Move 05H to C reg Load the DE with FFFFH Décrément DE reg pair Is DE=0 NO YES Décrément C reg NO Is C=0 YES POP stack to BC rerg Return .

PROGRAM:
LABEL START ` ADDRESS MNEMONICS OPCODE OPERAND COMMENTS

4100H 4103H 4105H 4106H 4108H 4109H 410AH 410CH 410DH 410EH 4110H 4113H 4114H 4115H 4118H 411BH 411DH 4120H 4121H 4122H 4123H 4126H 4127H 412AH

LXI H,4500H MVI C,02H MOV A,M OUT CNT INX H MOV A,M OUT APRT INX H MOV A,M OUT BPRT CALL DELAY INX H DCR C JNZ LOOP1

21 0E 7E D3 232 7E D3 23 7E D3 CD 23 0D C2

00,45 02

0F

LOOP1

0C

0D 1B,41

Initialize HL pair with 4500H Move data 02H to C reg. Get data from memory to accumulator. Send data to control reg. Increment HL pair reg. Get data from memory to accumulator. Send data to port A. Increment HL pair reg. Get data from memory to accumulator. Send data to port B. Call delay routine. Increment HL pair reg. Decrement HL pair. If C reg value is non-zero go to loop1. Go to start. Move 05H to B reg. Initialize DE reg pair with FFFFH. Decrement DE reg pair. Move data from D to A reg. OR reg with E reg. Go to loop2. Decrement B reg. Go to loop3. Return.

09,41 00,41 05 FF,FF

DELAY LOOP3 LOOP2

JMP START C3 MVI B.05H 06 LXI D,FFFFH 11 DCX D MOV A,D ORA E JNZ LOOP2 DCR B JNZ LOOP3 RET 1B 7A B3 C2 05 C2 09

20,41 1D,41

RESULT: Thus the Assembly Language Program to control the traffic light system has been written and output is verified.

OBSERVATION: ADDRESS 4500H 4501H 4502H 4503H 4504H DATA 80 1A A1 81 5A COMMENTS Control Word First Step Data First Step Data Second Step Data Second Step Data

VIVA VOCE QUESTIONS

6. What is the use of latch? 7. What is the use of IN/OUT instruction? 8. What addressing mode is used for the instruction MOV A,M? 9. What is called buffer? 10. How many modes are there in 8255

Experiment No: KEYBOARD / DISPLAY CONTROLLLER

Date

AIM: To interface 8279 Programmable Keyboard Display Controller to 8085 Microprocessor. APPARATUS REQUIRED:     8085 Microprocessor toolkit 8279 Interface Board VXT Parallel bus Regulated D.C Power supply

THEORY:

& 310
A programmable keyboard and display interfacing chip. It Scans and encodes up to a 64-ey keyboard and it controls up to a 16-digit numerical display. The keyboard section has a builtin FIFO 8 character buffer. The display is controlled from an internal 16x8 RAM has stores the coded display information.

0FH MVI A.PROGRAM: ADDRESS LABEL 4100 START: 4101 4102 4103 4104 4107 4108 4109 410A LOOP: MNEMONICS OPCODE LXI H.10H OUT C2H MVI A.90H OUT C2H MOV A.CCH OUT C2H MVI A. .FFH LOOP1 DCR C JNZ LOOP1 4131 4132 DCR B JNZ LOOP2 4135 RET RESULT: Thus 8279 controller was interfaced with 8085 and program for rolling display was executed successfully.4130H MVI D.M OPERAND COMMENTS Initialize HL pair with 4130H Load 0F to D-reg Load 10 to A-reg Send data to outport port Load CC to A-reg Send data to outport port Load 90 to A-reg Send data to outport port Move content of memory to accumulator Send data to outport port Call delay Increment HL pair Decrement D-reg Jump to the label specified if zero flag is not set Jump to the label specified Load A0 to B-reg Load FF to C-reg Decrement C-reg Jump to the label specified if zero flag is not set Decrement B-reg Jump to the label specified if zero flag is not set Return to the main program 410B 410E 4121 4122 4123 OUT C0H CALL DELAY INX H DCR D JNZ LOOP 4126 4129 412B 412D 412E JMP START DELAY: MVI B.A0H LOOP2 MVI C.

4130H . How many machine cycles are used for the instruction LXI H. 4130 -FF 4131 -FF 4132 –FF 4133 -FF 4134 -FF 4135 -FF 4136 -FF 4137 -FF 4138 -FF 4139 -FF 413A -FF 413B–FF 413C -FF 413D-FF 413E-FF 413F-FF VIVA VOCE QUESTIONS 11. What addressing mode is used for the instruction MVI C.OBSERVATION: Pointer equal to 4130 FF repeated eight times. What is the Jump range? 15. What is the use of CALL instruction? 12. What is the use of RETURN instruction? 13.FF? 14.

Experiment No: RAM ADDRESING Date AIM: To exhibit the RAM direct addressing and bit addressing schemes of 8051 microcontroller. select Bank 1 of RAM by setting 3rd bit of PSW Using Register 0 of Bank 1 and accumulator perform addition For direct addressing provide the address directly(30 in this case) Use the address and Accumulator to perform addition Verify the results. . APPARATUS REQUIRED:   8051 Interfacing board power supply ALGORITHM: For Bit addressing.

PROGRAM: Bit Addressing: SETB PSW.A SJMP HERE HERE: Direct Addressing: MOV 30. .30 MOV DPTR.#4500 MOVX @DPTR.#data1 MOV A.3 MOV R0.R0 MOV DPTR.#4500 MOVX @DPTR.#data2 ADD A.A SJMP HERE HERE: OBSERVATION: Bit Addressing: INPUT : 54 25 OUTPUT: 79(4500) Direct Addressing: INPUT : 54 25 OUTPUT: 79(4500) RESULT: Thus the program to exhibit different RAM addressing schemes of 8051 was executed.#data2 ADD A.#data1 MOV A.

Sign up to vote on this title
UsefulNot useful