Mpmc Lab Manual to Print

March 20, 2018 | Author: Kasthuri Selvam | Category: Assembly Language, Instruction Set, Central Processing Unit, Office Equipment, Arithmetic


Comments



Description

18085 MICROPROCESSOR PROGRAMMING 2 Ex. No: 01 AIM: To perform addition and subtraction of two 8-bit numbers using 8085 microprocessor. APPARATUS REQUIRED: • • 8085 Microprocessor Kit Power Chord 8-BIT ADDITION AND SUBTRACTION 8-BIT ADDITION: ALGORITHM: Step1: Start the program. Step2: Load the accumulator with the content of the memory location. Step3: Move the content of accumulator to register B. Step4: Load the accumulator with content of memory location. Step5: Add the content of A with register B. Step6: Store the content of accumulator in to memory location. Step7: Stop the program. MNEMONICS: MVI C,00H LXI H,4200H MOV A,M INX H MOV B,M ADD B JNC XX INR C 3 XX STA 4202H MOV A,C STA 4203H HLT TABLE 1: Memory Label 4100 4101 4102 4103 4104 4105 4106 MOV 4107 4108 4109 410A 410B 410C 410D 410E 410F 4110 XX MOV A,C 02 42 79 Move the content of c reg to accumulator INR STA C 4202H ADD JNC B,M B XX 80 D2 0D 41 0C 32 Increment value to reg c Store the content of accumulator in memory 4202 46 MOV INX A,M H 23 LXI H,4200H Mnemonics Instruction MVI Operand C,00H HEX CODE 0E 00 21 00 42 7E Move the content of memory to reg A Increment the memory location. Move the content of memory to reg B Add content of B reg to accumulator If there is no carry jump to XX Load the value in HL pair. Move the value 00 to reg C Description 4 4111 4112 4113 4114 HLT STA 4203H 32 03 42 76 Halt the execution Store the content of accumulator in memory 4203 OUTPUT (WITHOUT CARRY): INPUT DATA: 4200: 06 4201: 02 OUTPUT (WITH CARRY): INPUT DATA: 4200: FF 4201: FF OUTPUT DATA: 4202: FE 4203: 01 OUTPUT DATA: 4202: 08 4203: 00 . 4200H MOV A.M SUB B JNC XX INR C CMA INR A XX: STA 4202H MOV A.5 8-BIT SUBTRACTION: ALGORITHM: Step1: Load the accumulator with content of memory location Step2: Move the content of accumulator to B reg Step3: Load the accumulator with the content of memory location Step4: Subtract the content of A with reg B Step5: Store the content of accumulator into memory location Step6: Stop the program MNEMONICS: MVI C.C STA 4203H HLT .00 LXI H.M INX H MOV B. M B XX 7E 23 46 90 D2 0F 41 INR CMA INR XX STA A 4202H C 0C 2F 3C 32 02 42 MOV STA A.4200H HEX CODE 0E 00 21 00 42 MOV INX MOV SUB JNC A.M H B.C 4203H 79 32 03 Move the content of C reg to A Store the accumulator content in 4203H 4114 Increment the C reg Take 1’s complement for accumulator 410E 410F 4110 4111 4112 4113 Add 1’s complement with 1 Store the accumulator content in 4202H Move the content of memory to accumulator 4106 4107 4108 4109 410A 410B 410C 410D Increment the HL register pair Move the content memory to reg B Sub reg B from accumulator Jump to label XX if no carry Load the value in HL reg pair Move the value 00 to reg c Description Memory Label 4100 4101 4102 4103 4104 4105 .6 TABLE 2: Mnemonics Instruction Operand MVI LXI C.00 H. 7 4115 4116 HLT 42 76 Halt the execution OUTPUT (WITHOUT BORROW): INPUT DATA: 4200:05 4201:03 OUTPUT (WITH BORROW): INPUT DATA: 4200:14 4201:89 OUTPUT DATA: 4202:75 4203:01 OUTPUT DATA: 4202:02 4203:00 RESULT: Thus the addition and subtraction of two 8-bit numbers using 8085 microprocessor was performed successfully . Step8: Move data from ‘C’ register to accumulator. Step3: Exchange data from HL pair to DE pair. No: 02 AIM: To write an assembly language program to add and subtract two 16-bit numbers using 8085 microprocessor kit. . Step7: Store data in HL pair to specified memory.8 Ex. Step10: End. 16 BIT ADDITION AND SUBTRACTION APPARATUS REQUIRED: • 8085 Microprocessor Kit • Power Chord 16-BIT ADDITION: ALGORITHM: Step1: Start the program. Step5: Add HL pair and DE pair contents and store the result in HL pair. Step2: Load 16 bit data in HL pair and move data 00H to ‘C’ register. Step9: Store the accumulator data in specified memory. Step4: Load another 16 bit data in HL pair. Step6: If carry present Increment the content of CX register once else leave it as it is. C STA 5502 HLT TABLE: 1 Mnemonics Instruction Memory Label 4100 4101 4102 4103 4014 4105 4106 4107 4108 4109 410A 410B 410C HEX CODE Description Move 00H to C register Load 16 bit data to HL pair Operand MVI LHLD C. 00H 5300 0E 00 2A 00 53 XCHG LHLD 5302 EB 2A 02 53 Exchange HL pair data with DE pair Load another 16 bit data in HL pair DAD JNC D Loop1 19 D2 0E 41 Add HL pair and DE pair contents and store the result in HL pair If no carry move to specified address .MNEMONICS: MVI C. 00H LHLD 5300 XCHG LHLD 5302 DAD D JNC Loop1 INR C Loop1: SHLD 5500 MOV A. 410D 410E 410F 4110 4111 4112 4113 4114 4115 Loop1: INR SHLD C 5500 0C 22 00 55 Increment C register content once Store data in HL pair to specified memory Move ‘C’ register data to accumulator Store the accumulator data in specified memory Halt MOV STA A. C 5502 79 32 02 55 HLT 76 OUTPUT: INPUT DATA: 5300: 77 5301: 88 5302: 99 5303: 11 OUTPUT DATA: 5500: 10 5501: 9A 5502: 00 . Step14: Store the accumulator data in specified memory. Step9: Subtract with borrow content of D register from accumulator. Step15: End. Step10: Jump to Step 11 when no carry increment the content of C register once. Step12: Store data in HL pair to specified memory. Step11: Move data from accumulator to ‘H’ register. A MOV A. H SBB D JNC Loop1 . Step4: Load another 16 bit data in HL pair. Step2: Move immediately the data 00H to C register and accumulator. Step13: Move data from ‘C’ register to accumulator. L SUB E MOV L. 00H MVI A. Step8: Move data from ‘H’ register to accumulator. Step6: Subtract ‘E’ register content from accumulator. Step3: Load 16 bit data in HL pair and exchange data from HL pair to DE pair. Step7: Move data from accumulator to ‘L’ register. Step5: Move data from ‘L’ register to accumulator. MNEMONICS: MVI C. 00H LHLD 5600 XCHG LHLD 5602 MOV A.16-BIT SUBTRACTION: ALGORITHM: Step1: Start the program. 00H 0E 00 3E 00 2A 00 56 LHLD 5600 XCHG LHLD 5602 EB 2A 02 56 Exchange HL pair data with DE pair Load another 16 bit data in HL pair MOV SUB MOV MOV SBB JNC A. A Loop1: SHLD 5700 MOV A. Subtract with borrow content of D register from accumulator If no carry move to specified address . A A.INR C MOV H. L E L. C STA 5702 HLT TABLE: 2 Mnemonics Instruction Operand Memory Label 41FE 41FF 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 420A 420B 420C 420D 420E 420F MVI HEX CODE Description Move 00H to C register Move 00H to Accumulator Load 16 bit data to HL pair MVI C. 00H A. H D Loop1 7D 93 6F 7C 9A D2 12 Move ‘L’ register data to accumulator Subtract ‘E’ register content from accumulator Move accumulator data to ‘L’ register Move ‘H’ register data to Acc. data to ‘H’ register Store data in HL pair to specified memory OUTPUT: INPUT DATA: 5600: 11 5601: 21 5602: 77 5603: 99 OUTPUT DATA: 5700: 66 5701: 78 RESULT: Thus an assembly language program to add and subtract two 16-bit numbers was written and executed using 8085 microprocessor kit. A 5700 0C 67 22 00 57 A. .4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 421A HLT MOV 42 INR Loop1: MOV SHLD C H.C 5502 79 32 02 57 76 Halt Move ‘C’ register data to accumulator Store the accumulator data in specified memory STA Increment C register content once Move Acc. 2. MVI C. 4500 Initialize HL reg. is stored in a memory location. . M H A. Initialize memory pointer to data location. to 4500 MOV INX MVI B. ALGORITHM: LOGIC: Multiplication can be done by repeated addition. Add multiplicand to accumulator 6. Move multiplicand to a register. Location. Clear the accumulator. 00H Clear C reg for carry 4109 LOOP1 ADD M Add multiplicand multiplier times. No: 03 8 BIT DATA MULTIPLICATION AIM: To multiply two 8 bit numbers stored at consecutive memory locations and store the result in memory. Decrement multiplier 7. Repeat step 5 till multiplier comes to zero. Clear the acc. PROGRAM: ADDRES S OPCOD E LABEL MNEMONIC S OPERAND COMMENT 4100 4101 4102 4103 4104 4105 4106 4107 4108 LXI H. The result. B Increment HL reg. 5. which is in the accumulator. 1. to point next mem. 4. Move the multiplier to another register.Ex. 8. 00H Transfer first data to reg. 3. Increment HL reg. to memory.410A 410B 410C 410D 410E 410F 4110 4111 4112 4113 4114 4115 4116 LOOP2 JNC LOOP2 Jump to LOOP2 if there is no carry INR DCR JNZ C B LOOP1 Increment C reg Decrement B reg Jump to LOOP1 if B is not zero. C Increment HL reg. to memory. to point next mem. to point next mem. INX MOV INX MOV HLT H M. Location. A H M. INPUT 4500 4501 4502 4503 OUTPUT RESULT: Thus the 8-bit multiplication was done in 8085µp using repeated addition method .NO 1. Location. Stop the program OBSERVATION: S. Transfer the result from acc. Transfer the result from C reg. . Step7: Increment BC register pair content once. Step3: Load another 16 bit data in HL pair and move the data to DE pair. Step13: End. Step6: If carry present goto Step 8 else goto step 7. Step11: Store HL pair content in memory. Step8: Decrement DE register pair content once. Step4: Move data 0000H to BC and HL pair. Step5: Add 16 bit data present in Stack Pointer with HL pair. No: 04 AIM: 16 BIT MULTIPLICATION To write an assembly language program to multiply two 16-bit data’s using 8085 microprocessor kit. If A=0 goto Step 6 else goto Step 5. Step2: Load 16 bit data in HL pair and move data from HL pair to Stack Pointer. Step12: Move BC pair content to HL pair and then to memory. . Step9: Move D register content to accumulator and OR function it with E register content.Ex. APPARATUS REQUIRED: • • 8085 Microprocessor Kit Power Chord ALGORITHM: Step1: Start the program. Step10: Check whether A is zero or not. D ORA E JNZ Loop1 SHLD 4500 MOV H. 0000H B. B MOV L. C SHLD 4502 HLT TABLE: 1 Mnemonics Instruction Memory Label 4100 4101 4102 4103 4104 4105 4106 SPHL LHLD LHLD HEX CODE Description Load 16 bit data from memory to HL pair Move HL pair content to stack pointer Load another 16 bit data from memory to accumulator Operand 4200 2A 00 42 F9 4202 2A 02 42 .MNEMONICS: LHLD 4200 SPHL LHLD 4202 XCHG LXI LXI JNC INX H. 0000H Loop2 B Loop1: DAD SP Loop2: DCX D MOV A. 4107 4108 4109 410A 410B 410C 410D 410E 410F 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 411A 411B 411C 411D 411E 411F 4120 4121 Loop2: Loop1: XCHG LXI H. B MOV MOV SHLD L. 0000H 01 00 00 Move data 0000H to BC pair DAD JNC SP Loop2 39 D2 13 41 Add SP data with HL pair data If carry present jump to specified memory Increment BC pair content once Decrement DE pair content once Move D register content to Acc. 0000H EB 21 00 00 Move HL pair content to DE pair Move data 0000H to HL pair LXI B. D E Loop1 03 1B 7A B3 C2 4500 SHLD H. OR function Accumulator content with E register content Jump when no zero to specified memory Store HL pair content in specified memory Move B register content to H register Move C register content to L register Store HL pair content in specified memory Halt INX DCX MOV ORA JNZ B D A. C 4502 0E 41 22 00 45 60 69 22 02 45 HLT 76 . .OUTPUT: INPUT DATA: 4200: 22 4201: 22 4202: 33 4203: 33 OUTPUT DATA: 4500: C6 4501: 92 4502: D3 4503: 06 RESULT: Thus an assembly language program to multiply two 16-bit data’s and was written and executed using 8085 microprocessor kit. APPARATUS REQUIRED: • 8085 Microprocessor Kit • Power Chord ALGORITHM: Step1: Start the program. . If equal Zero Flag gets affected. Step10: Move data from ‘B’ register to accumulator. Step3: Move the accumulator content to C register. Step9: Store the accumulator data in specified memory.BIT DIVISION To write an assembly language program to divide two 8 bit data’s using 8085 microprocessor kit. No: 05 AIM: 8. Step6: If A<C then carry gets affected.Ex. Step4: Load another 8 bit data in HL pair. Step12: End. Step7: Increment B register content once and subtract C register content from accumulator. Step11: Store the accumulator data in specified memory. Step5: Compare accumulator content with C register content. Step8: Goto Step 5. Step2: Move immediately the data 00H to B register and load 8 bit data from memory to accumulator. A LDA 5100 Loop1: CMP C JC INR JMP Loop2 B Loop1 SUB C Loop2: STA 5300 MOV A. B STA HLT 5301 . 00H LDA 5100 MOV C.MNEMONICS: MVI B. A 5100 4F 3A 01 51 C Loop2 B9 DA 12 42 BC Loop1 04 91 C3 Jump to specified memory 5300 09 42 32 Store accumulator data in specified Memory Move data from ‘B’ register to accumulator Store accumulator data in specified 00 53 78 32 A. 00H 5100 06 00 3A 00 51 C. Compare accumulator content with C register content When carry set jump to specified memory Increment B register content once Subtract C register content from accumulator Operand B.TABLE: 1 Mnemonics Instruction Memory Label 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 420A 420B 420C 420D 420E 420F 4210 4211 4212 4213 4214 MOV 4215 STA 4216 Loop1: STA INR SUB JMP Loop2: CMP JC MOV LDA LDA MVI HEX CODE Description Move immediately the data 00H to B register Load 8 bit data from memory to accumulator Move accumulator content to C register Load another 8 bit data in HL pair from memory. B 5301 . 4217 4218 4219 HLT 01 53 76 memory Halt OUTPUT: INPUT DATA: 5100: 20 5101: 60 OUTPUT DATA: 5300: 00 5301: 03 RESULT: Thus an assembly language program to divide two 8 bit data’s was written and executed using 8085 microprocessor kit. . PROGRAM: Memory Label LHLD Mnemonics 4502 Opcode Description Load the first No. Initialize the register for quotient. 2. 3. E from that SUB E .Ex. Get the dividend and divisor. Repeatedly subtract divisor from dividend till dividend becomes less than divisor. No: 06 AIM: 16 BIT DIVISION To perform Multiplication of two 16 bit numbers and store the result in a memory location using 8085 microprocessor kit ALGORITHM: 1. 4. pair. pair XCHG LHLD 4500 Load the second No. L Move the content of reg. LXI B. in stack pointer through HL reg. L to Acc. Subtract reg. 0000H Clear BC reg. in HL reg. Store the result in memory. pair & Exchange with DE reg. LOOP MOV A. 5. pair. Count the number of subtraction which equals the quotient. Move the content of reg. B to Acc. Increment reg. pairs. Pair BC If there is no carry. MOV STA A. H Acc. in memory 4506 MOV STA A. Store the content of HL pair in 4504 & 4505.of Acc. HLT Stop the program execution. H SBB MOV INX JNC D H. OBSERVATION: . MOV L. C 4506 Move the content of reg. A B LOOP DCX DAD SHLD B D 4504 Decrement BC reg. in memory 4507. Add content of HL and DE reg. D from that of Acc. pair. go to the location labeled LOOP. MOV A. Move the content of Acc to H. Subtract reg. B 4507 Move the content of reg. Store the content of Acc. A Move the content of Acc to L. C to Acc. Store the content of Acc. .INPUT ADDRESS 4500 4501 4502 4503 DATA OUTPUT ADDRESS 4504 4505 4506 4507 DATA RESULT: Thus the 16-bit division was done in 8085µp using repeated subtraction method. No: 07 AIM: SMALLEST AND LARGEST AMONG N NUMBERS To find the smallest and largest among N numbers using 8085 microprocessor.Ex. APPARATUS REQUIRED: • • 8085 Microprocessor Kit Power Chord SMALLEST AMONG N NUMBERS: ALGORITHM: Step1: Start the program Step2: Get the first number in the accumulator and move it to B Step3: Get the second number in the memory and move it to the accumulator Step4: Increment the address of memory and compare the data with accumulator Step5: If there is carry the above process is continued until carry is not present Step6: If carry is present then continue to compare with increment memory Step7: If carry is absent move that data to accumulator and decrement the B register until it become zero Step8: Store the smallest number in the accumulator Step9: End the program . M H M XX 7E 23 BE DA 0E 23 Move data from M toA Increment the memory Compare M with A Jump if carry Move the data from A to B Move the second data to memory Move the first data to accumulator 4501 4502 4503 4504 4505 4506 4507 4508 4509 450A 450B Description Memory Label 4500 .M XX: INX H CMP M JC XX MOV A.A H.MNEMONICS: LDA 5000 MOV B.M XY: DCR B JNZ XY STA 6000 HLT TABLE 1: Mnemonics Instruction LDA Operand 5000 HEX CODE 3A 00 50 MOV LXI B.A LXI H.5001 MOV A.5001 47 21 01 50 MOV XX INX CMP JC A. 450C 450D 450E 450F 4510 4511 4512 4513 4514 4515 HLT STA 6000 XY MOV DCR JNZ A.M B XY 45 7E 05 C2 08 45 32 00 60 76 End of program Store the data in accumulator Move the data from M to A Decrement B register Jump if no zero OUTPUT: INPUT DATA: 5000: 15 5001:03 5002:95 5003:28 OUTPUT DATA: 6000:03 . 5001 MOV A.A LXI H.M XY: DCR B JNZ XY STA 6000 HLT .M XX: INX H CMP M JNC XX MOV A.LARGEST AMONG N NUMBERS: ALGORITHM: Step1: Start the program Step2: Get the first number in the accumulator and move it to B Step3: Get the second number in the memory H and move it to the accumulator Step4: Increment the address of memory and compare the data with accumulator Step5: If there is no carry the above process is continued until carry is present Step6: If carry is present move that data to accumulator and decrement the B register until It becomes zero Step7: Store the largest number in the accumulator Step8: End the program MNEMONICS: LDA 5000 MOV B. M B XY 7E 05 C2 08 45 STA 6000 32 00 60 HLT 76 End of program Store the data in accumulator Move the data from M to A Decrement B register Jump if no zero Move data from M toA Increment the memory Compare M with A Jump no carry Move the data from A to B Move the second data to memory Move the first data to accumulator 4501 4502 4503 4504 4505 4506 4507 4508 4509 450A 450B 450C 450D 450E 450F 4510 4511 4512 4513 4514 4515 Description Memory Label 4500 .5001 47 21 01 50 MOV XX INX CMP JNC A.M H M XX 7E 23 BE DA 0E 45 MOV XY DCR JNZ A.TABLE 2: Mnemonics Instruction LDA Operand 5000 HEX CODE 3A 00 50 MOV LXI B.A H. OUTPUT: INPUT DATA: 5000: 15 5001:03 5002:95 5003:28 OUTPUT DATA: 6000:95 RESULT: Thus the smallest and largest among n numbers was found using 8085 microprocessor and their output was verified . Step6: If the compared output contains no carry . Step5: If it is zero store the result in the accumulator. Step3: Increment memory and compare it with accumulator if carry is present increment memory by decrementing B register if it is not zero. Step7: stop the program. . APPARATUS REQUIRED: • 8085 Microprocessor Kit • Power Chord ASCENDING ORDER: ALGORITHM: Step1: Start the program Step2: Get the first number and store it in B register and get the second number in memory and move it to accumulator. move the value in memory to C register and accumulator to memory and increment the value in memory.Ex. zero is not obtained then get in the memory. No: 08 ASCENDING AND DECENDING ORDER OF N NUMBERS AIM: To determine the ascending and descending order of the given number using 8085 microprocessor. Step4: If B register become zero decrement D register which contain number first . JNZ LOOP2 DCR B JNZ LOOP3 HLT .M MOV B.MNEMONICS: LDA 5000 MOV B.A MOV E.M DCR B.M MOV M.E LOOP2 INX H CMP M JC LOOP1 MOV C.A LXI H.5001 MOV A.A DCX H MOV M.C INX H LOOP1 MOV A.A MOV D. A H.TABLE: 1 Mnemonics Instruction LDA Operand 5000 HEX CODE 3A 00 50 MOV MOV MOV LOOP 3 LXI B.A H M.5001 47 5F 57 21 01 50 MOV MOV LOOP 2 INX CMP JC A.E H M LOOP1 7E 43 25 BE DA 15 45 MOV MOV DCX MOV INX LOOP 1 MOV DCR JNZ C.M B LOOP 2 4E `77 2B 71 23 7E O5 C2 0B 45 DCR D 30 15 Decrement D Register Move M to C register Move A to Memory Decrement H Register Move the value from C to H Increment H Register Move the value from M to A Decrement B Register Jump is no zero to LOOP 2 Move M to Accumulator Move E to B register Increment H Register Compare A and M Jump if carry to loop1 Move the data from A to B Move the data from A to D Move the data from A to E Move second data to memory Get the first data to accumulator Description Memory Label 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 450A 450B 450C 450D 450E 450F 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 451A .A D.C H A.M B.M M.A E. 451B 451C 451D 451E JNZ LOOP 3 C2 06 45 Jump is no zero to LOOP 3 HLT 76 End of Program OUTPUT: INPUT DATA: 5000: 03 5001:05 5002:02 5003:06 OUTPUT DATA: 6000: 02 6001: 03 6002: 05 6003: 06 . DESCENDING ORDER: ALGORITHM: Step1: Start the program Step2: Get the first number and store it in B register and get the second number in memory and move it to accumulator. Step3: Increment memory and compare it with accumulator if carry is present increment memory by decrementing B register if it is not zero. Step4: If B register become zero decrement D register which contain number first , zero is not obtained then get in the memory. Step5: If it is zero store the result in the accumulator. Step6: If the compared output contains no carry , move the value in memory to C register and accumulator to memory and increment the value in memory. Step7: stop the program. MNEMONICS: LDA 5000 MOV B,A MOV D,A MOV E,A LXI H,5001 MOV A,M MOV B,E LOOP2 INX H CMP M JNC LOOP1 MOV C,M MOV M,A DCX H MOV M,C INX H LOOP1 MOV A,M DCR B; JNZ LOOP2 DCR B JNZ LOOP3 HLT TABLE: 2 Mnemonics Instruction LDA Operand 5000 HEX CODE 3A 00 50 MOV MOV MOV LOOP 3 LXI B,A D,A E,A H,5001 47 5F 57 21 01 50 MOV MOV LOOP 2 INX CMP JNC A,M B,E H M LOOP1 7E 43 25 BE DA 15 45 MOV MOV DCX MOV C,M M,A H M,C 4E `77 2B 71 Move M to C register Move A to Memory Decrement H Register Move the value from C to H Move M to Accumulator Move E to B register Increment H Register Compare A and M Jump if carry to loop1 Move the data from A to B Move the data from A to D Move the data from A to E Move second data to memory Get the first data to accumulator Description Memory Label 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 450A 450B 450C 450D 450E 450F 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 451A 451B 451C 451D 451E LOOP1 INX MOV DCR JNZ H A,M B LOOP 2 23 7E O5 C2 0B 45 Increment H Register Move the value from M to A Decrement B Register Jump is no zero to LOOP 2 DCR JNZ D LOOP 3 15 C2 06 45 Decrement D Register Jump is no zero to LOOP 3 HLT 76 End of Program OUTPUT: INPUT DATA: 5000: 03 5001:05 5002:02 5003:06 OUTPUT DATA: 6000: 06 6001: 05 6002: 03 6003: 02 RESULT: Thus the Ascending and Descending order of given N- numbers was performed and their output was verified. Step13: Move E register content to accumulator. Step15: Add C register content with accumulator content. Step9: Decrement the content of D register once and add data 64 with accumulator. APPARATUS REQUIRED: • 8085 Microprocessor Kit • Power Chord HEXADECIMAL TO DECIMAL CONVERSION: ALGORITHM: Step1: Start the program. Step3: Compare the accumulator data with the data 64. Step11: If carry=0 jump to Step 10 and Decrement E register content once. Step5: Jump to Step 10. Step16: Store data in accumulator pair to specified memory Step17: Move D register content to accumulator . No: 09 AIM: CODE CONVERSIONS To write an assembly language program to convert hexadecimal to decimal and hexadecimal to binary data’s using 8085-microprocessor kit. Step2: Load data from memory to accumulator and move the data 00 to D and E registers.Ex. Step6: Subtract accumulator data by 64. Step12: Add data 64 with accumulator and move it to C register. Step7: Increment the content of D register once. Step4: If carry=0 jump to Step 6 else jump to Step 5. Step8: If carry=0 jump to Step 6 else jump to Step 9. Step10: Subtract accumulator data by 0A and Increment E register content once. Step14: Rotate the accumulator content 4 tines by left. D . MNEMONICS: MVI E. E RLC RLC RLC RLC ADD C STA STA HLT 4500 4501 MOV A. A MOV A.Step18: Store data in accumulator pair to specified memory. 00 LDA 4200 CPI JNC JMP Loop1: SUI INR JNC ADI Loop2: SUI INR JNC ADI 64 Loop1 Loop2 64 D Loop1 64 0A E Loop2 0A DCR D DCR E MOV C. Step19: End. 00 MVI D. 00H 4200 1E 00 16 00 3A 00 42 LDA 64 410F FE 64 D2 0F 41 4118 C3 18 41 Jump to specified memory 64 D D6 64 14 D2 0F 41 Subtract accumulator data by 64 Increment D register content once If carry=0 jump to specified memory DCR ADI SUI INR JNC 410F D 64 0A E 4118 15 C6 64 D6 0A 1C D2 18 Decrement D register content once Add data 64 with accumulator Subtract accumulator data by 0A Increment E register content once If carry=0 jump to specified memory 37 . 00H D.TABLE: 1 Mnemonics Instruction Memory Label 4100 4101 4102 4103 4014 4105 4106 4107 4108 4109 410A 410B 410C 410D 410E 410F 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 411A 411B 411C Loop2 Loop1 SUI INR JNC JMP CPI JNC MVI MVI HEX CODE Description Move data 00 to E register Move data 00 to D register Load data from memory to accumulator Compare the accumulator data with the data 64 If carry=0 jump to specified memory Operand E. A A. D 4501 MOV MOV RLC RLC RLC RLC ADD STA C 4500 C. E DCR ADI E 0A 41 1D C6 0A 4F 7B 07 07 07 07 81 32 00 45 7A 32 01 45 76 Halt Move D register content to accumulator Store data in accumulator pair to specified memory Add C register content with accumulator content Store data in accumulator pair to specified memory Rotate the accumulator content 4 tines by left Move accumulator content to C register Move E register content to accumulator Decrement E register content once Add data 64 with accumulator OUTPUT: INPUT DATA: 4200: CE OUTPUT DATA: 4500: 06 4501: 02 .411D 411E 411F 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 412A 412B 412C 412D 412E 412F HLT MOV STA A. 4300 MOV A. D HLT . 02 Loop4: MVI D. Step4: Repeat Step 3 until quotient becomes 1. A DCR D MOV A. D CPI JZ JMP 01 Loop3 Loop4 Loop3: INX H MOV M. MNEMONICS: LXI H. 00 Loop1: SUB C INR JC JMP INX D Loop2 Loop1 H Loop2: ADD C MOV M. Step5: If quotient becomes 1 store it in next memory location. Step2: Load data from memory to accumulator Step3: Divide accumulator content by 2 and store the quotient in accumulator and reminder in next consecutive memory location. Step6: End.HEXADECIMAL TO BINARY CONVERSION: ALGORITHM: Step1: Start the program. M MVI C. TABLE: 2 Mnemonics Instruction Memory Label 4100 4101 4102 4103 4014 4105 4106 4107 4108 4109 410A 410B 410C 410D 410E 410F 4110 4111 4112 4113 4114 4115 4116 4117 4118 JZ Loop2: Loop4: Loop1: LXI HEX CODE Description Load memory to HL register pair Operand H. 00 CD Loop2 72 0E 02 16 00 91 14 DA 10 Move data from memory to accumulator Move data 02 to C register Initialize D register Subtract C register content from A Increment D register content once Jump when carry=1 to specified Memory Jump to specified Memory Loop1 JMP C ADD INX MOV DCR MOV CPI Loop3 D A. A 44 C3 08 41 81 23 77 15 7A FE 01 C4 1C Jump when ZF=1 to specified Memory Add C register content with A Increment HL pair content once Move data from accumulator to memory Decrement D register content once Move D register content to A Compare D register content with 01 .02 D.M C. D 01 H M.4300 21 00 43 MOV MVI MVI SUB INR JC A. 4119 411A 411B 411C 411D 411E 411F Loop3: INX MOV HLT H M. D JMP Loop4 41 C3 06 44 23 72 76 Increment HL pair memory once Move D register data to Memory Halt Jump to specified Memory OUTPUT: INPUT DATA: 4300: DE OUTPUT DATA: 4301: 00 4302: 01 4303: 01 4304: 01 4305: 01 4306: 00 4307: 01 4308: 01 RESULT: Thus an assembly language program to convert hexadecimal to decimal and hexadecimal to binary data’s was written and executed using 8085-microprocessor kit. . No: 10 AIM: FIBONACCI SERIES To write an assembly language program to generate Fibonacci series of ‘N’ number of data’s using 8085 microprocessor kit. Step2: Move data 0A to ‘B’ register. .Ex. Step7: Move the data from accumulator to specified memory and decrement ‘HL’ pair content once. APPARATUS REQUIRED: • 8085 Microprocessor Kit • Power Chord ALGORITHM: Step1: Start the program. Step3: Clear the accumulator content and load data of 4200 to HL pair. Step11: End. Step9: Increment ‘HL’ pair content once and Decrement ‘B’ content once. Step10: If no zero goto Step 11 else goto Step 6. Step5: Decrement ‘B’ content once and Increment accumulator content once. Step8: Move data in memory to ‘C’ register and add ‘C’ register content with Acc. Step4: Move the data from accumulator to specified memory. Step6: Increment ‘HL’ pair content once. 0A XRA A LXI H.MNEMONICS: MVI B. A DCR B INR A Loop1: INX H MOV M. 4200 MOV M. A DCX H ADD M INX JNZ HLT H Loop1 DCR B . 0A 06 0A XRA LXI A H.TABLE: 1 Mnemonics Instruction Memory Label 4100 4101 4102 4103 4014 4105 4106 4107 4108 4109 410A 410B 410C 410D 410E 410F 4110 4111 4112 HLT MVI HEX CODE Description Move data 0A to ‘B’ register content Clear the accumulator content Load data of 4200 to HL pair Operand B. 4200 AF 21 00 42 MOV M. A DCX ADD H M INX DCR JNZ H B Loop1 Halt . A 77 05 23 77 2B 86 23 05 CZ 09 41 76 Move data from accumulator to M Decrement ‘B’ content once Increment accumulator content once Increment H register content once Move data from accumulator to M Decrement ‘HL’ pair content once Add data from M with accumulator Increment ‘HL’ pair content once Decrement ‘B’ content once Jump to specified memory if no zero DCR INR B A Loop1 INX MOV H M. 45 .OUTPUT: INPUT DATA: 4101: 0A OUTPUT DATA: 4200: 00 4201: 01 4202: 01 4203: 02 4204: 03 4205: 05 4206: 08 4207: 13 4208: 1B 4209: 2E RESULT: Thus an assembly language program to generate Fibonacci series of ‘N’ number of data’s was written and executed using 8085 microprocessor kit. Step13: Jump to Step 9. Step3: Move E register content to B register. Step2: Load 16 bit data in HL pair and move data from HL pair to DE pair. Step12: If zero flag is set jump to Step 18. Step11: Decrement C register content once. Step10: Move C register content to B register. Step15: Store HL pair content in specified memory. Step5: Decrement B register pair content once and load 0000H HL pair. Step4: Decrement B register content once and move B register content to C register. Step6: Add DE pair content with HL pair content. Step7: Decrement B register content once. Step9: Move HL pair content to DE pair and load 0000H HL pair. Step14: Move HL pair content to DE pair. No: 11 AIM: FACTORIAL OF ‘N’ DATA’S To write an assembly language program to calculate factorial of N number of data’s using 8085 microprocessor kit. APPARATUS REQUIRED: • 8085 Microprocessor Kit • Power Chord ALGORITHM: Step1: Start the program. Step16: End. . Step8: If there is no zero flag jump to Step 6.Ex. 0000H Loop1: DAD D DCR B JNZ XCHG LXI H. B DCR C LXI H.MNEMONICS: LHLD 4200 XCHG MOV B. E DCR B MOV C. C DCR C JZ JMP Loop2 Loop1 Loop1 Loop2: XCHG SHLD 4300 HLT . 0000H MOV B. E B C. 0000H EB 42 05 48 0D 21 00 00 Exchange HL pair data with DE pair Move ‘E’ register data to ‘B’ register Decrement ‘B’ content once Move ‘B’ register data to ‘C’ register Decrement ‘C’ content once Load data of 0000 to HL pair DAD DCR JNZ D B 410B 19 05 C2 0B 41 Add HL pair and DE pair contents and store the result in HL pair Decrement ‘B’ content once Jump when no zero to specified address Exchange HL pair data with DE pair Load data of 0000 to HL pair XCHG LXI H. B C H. C C 411C 41 0D CA 1C 41 Move ‘C’ register data to ‘B’ register Decrement ‘C’ content once If zero flag set jump to specified address Jump to specified address JMP 410B C3 . 0000H 4B 21 00 00 MOV DCR JZ B.TABLE: 1 Mnemonics Instruction Memory Label 4100 4101 4102 4103 4014 4105 4106 4107 4108 4109 410A 410B 410C 410D 410E 410F 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 Loop1 HEX CODE Description Load 16 bit data to HL pair Operand LHLD 4200 2A 00 42 XCHG MOV DCR MOV DCR LXI B. .411A 411B 411C 411D 411E 411F 4120 HLT Loop2 XCHG SHLD 4300 0B 41 EB 22 00 43 76 Halt Exchange HL pair data with DE pair Store data in HL pair to specified memory OUTPUT: INPUT DATA: 4200: 05 OUTPUT DATA: 4300: 78 RESULT: Thus an assembly language program to calculate factorial of N number of data’s was written and executed using 8085 microprocessor kit. Step5: Rotate the accumulator content 4 times by left. Step12: If zero flag set jump to specified address. No: 12 AIM: PALINDROME To write an assembly language program to check whether the given number is palindrome or not (for 32-bit data) using 8085-microprocessor kit. Step3: Load another 16 bit data in HL pair. Step4: Move the data from H register to accumulator. Step2: Load16 bit data in HL pair and exchange data from HL pair to DE pair. Step13: Store data in accumulator pair to specified memory. Step14: End. . Step7: Move accumulator data to ‘B’ register. Step6: Perform XOR operation with accumulator and E register content. APPARATUS REQUIRED: • 8085 Microprocessor Kit • Power Chord ALGORITHM: Step1: Start the program.Ex. Step9: Rotate the accumulator content 4 times by left. Step11: Perform OR operation with accumulator and B register content. Step10: Perform XOR operation with accumulator and L register content. Step8: Move ‘D’ register content to accumulator. D RLC RLC RLC RLC XRA L ORA B JZ HLT Loop1 Loop1: STA 4300 51 . H RLC RLC RLC RLC XRA E MOV B.MNEMONICS: LHLD 4200 XCHG LHLD 4202 MOV A. A MOV A. H 7C 07 07 07 07 E B.TABLE: 1 Mnemonics Instruction Memory Label 4100 4101 4102 4103 4014 4105 4106 4107 4108 4109 410A 410B 410C 410D HEX CODE Description Load data to HL pair from memory Operand LHLD 4200 2A 00 42 XCHG LHLD 4202 EB 2A 02 42 Exchange HL pair data with DE pair Load another data to HL pair from memory Move data from H register to accumulator Rotate the accumulator content 4 times by left Perform XOR operation with MOV RLC RLC RLC RLC XAR MOV A. D L B accumulator and L register content accumulator and B register content B0 52 . A AB 47 7A 07 07 07 07 AD accumulator and E register content Move data from accumulator to B register Move data from D register to accumulator Rotate the accumulator content 4 tines by left Perform Perform XOR OR operation operation with with MOV 410E 410F 4110 4111 4112 4113 OAR 4114 RLC RLC RLC RLC XAR A. 4115 4116 4117 4118 4119 411A 411B 411C Loop2 JZ CA 19 41 If zero flag set jump to specified address Move data 01 to accumulator Store data in accumulator pair to specified memory Halt MVI STA A. . 01 4300 3E 32 00 43 HLT 76 OUTPUT: INPUT DATA: 4200: 45 4201: 54 4202: 45 4203: 54 OUTPUT DATA: 4300: 00 RESULT: Thus an assembly language program to check whether the given number is palindrome or not (for 32-bit data) was written and executed using 8085 microprocessor kit. Step13: End.Ex. increment ‘H’ content once and add it with accumulator. Step7: Increment ‘H’ content once and add it with accumulator. Step4: Initialize the ‘C’ register as 00H. Step2: Move the memory address to ‘H’ register. Step12: Store the result in specified memory. Step3: Move the data present in memory to ‘E’ register. No: 13 AIM: SUM OF SERIES To write an assembly language program to calculate sum of series of ‘N’ number of data’s with carry using 8085 microprocessor kit. . Step11: Repeat the above steps for ‘N’ number of data’s. Step10: If carry present Increment the content of CX register once and repeat Step 8. APPARATUS REQUIRED: • 8085 Microprocessor Kit • Power Chord ALGORITHM: Step1: Start the program. Step8: Decrement ‘E’ content once. Step9: If no carry. Check whether carry is present or not. Step6: Move the data from memory to accumulator. Step5: Clear the accumulator content and increment ‘H’ register pair. C 55 .MNEMONICS: LXI H. 5300 MOV E. 00H XRA A Loop1: INX H ADD M JNC INR JNZ STA STA HLT Loop 2 C Loop1 4600 4601 Loop2: DCR E MOV A. M MVI C. M C. 00H A 5E 0E 00 AF 23 86 D2 0D 41 INX ADD H M JNC Loop 2 CE Loop1 0C 1D C2 07 Increment C register content once Decrement ‘E’ content once Jump on no zero DCR JNZ 4600 STA A. 5300 21 00 53 MOV MVI XRA pair Move data from memory to E register Move data 00H to register ‘C’ OR function the accumulator content Increment H register content once Add data from M with accumulator Jump on no carry E. C MOV STA 4601 41 32 00 46 79 32 01 46 Move data form C register to Acc.TABLE: Mnemonics Instruction Memory Label 4100 4101 4102 4103 4014 4105 4106 4107 4108 4109 410A 410B 410C 410D 410E 410F 4110 4111 4112 4113 4114 4115 4116 4117 4118 Loop2: INR Loop1 LXI HEX CODE Description Load 16 bit address in HL register Operand H. Store data from accumulator to the specified memory Halt Store data from accumulator to the specified memory HLT 76 . OUTPUT: INPUT DATA: 5300: 0A 5301: 11 5302: 12 5303: 13 5304: 04 5305: 05 5306: 06 5307: 17 5308: 09 5309: 0A 530A: 01 OUTPUT DATA: 4600: 70 4601: 00 RESULT: Thus an assembly language program to calculate sum of series of ‘N’ number of data’s with carry was written and executed using 8085 microprocessor kit. . APPARATUS REQUIRED: • 8085 Microprocessor Kit • Power Chord ALGORITHM: Step1: Start the program. Step2: Load the data to accumulator and move it to the B register.00H LOOP1 SUB B JC LOOP2 INR C INR B INR B . Step3: Load another data in the accumulator. Step10:Stop the program.registers to accumulator.A LDA 5001 MVI C. MNEMONICS: LDA 5000 MOV B. Step5: Subtract the data and if there is no carry go to loop1 Step6: Increment C by 1 and increment B by 1 two times. Step8: Move the data C . Step7: If there is carry go to loop2.Ex No: 14 AIM: SQUARE ROOT To find the square root of a given 8 – bit number by using 8085 microprocessor. Step9: Store the result. Step4: Clear the accumulator. A 5001 47 3A 01 50 Move data to B register Load the another data in accumulator MVI LOOP1 SUB JC C.C STA 6000 HLT TABLE: Mnemonics Instruction Memory 4100 4101 4102 4103 4014 4105 4106 4107 4108 4109 410A 410B 410C 410D 410E 410F 4110 4111 4112 4113 4114 4115 Label HEX CODE Description Load the data in accumulator.C 6000 79 32 00 59 Move the data to A-reg Store the result . Subtract the data If carry=1 go to loop2 INR INR INR JMP C B B LOOP1 0C 04 04 C3 09 41 Increment C by 1 Increment B by 1 Increment B by 1 Jump to loop1 LOOP2 MOV STA A.00H B LOOP2 0E 00 90 DA 13 41 Clear the C-register. Operand 5000 LDA 3A 00 50 MOV LDA B.JMP LOOP1 LOOP2 MOV A. .4116 4117 HLT 60 76 Stop the program OUTPUT: OUTPUT DATA: 5000:01H 5001:10H 6000:04H RESULT: Thus the square root of the given 8.bit number was obtained by using 8085 microprocessor. 8086 MICROPROCESSOR PROGRAMMING . Step7: Add the content of the memory 3006 with the content of AX register. Step3: Copy the contents of the memory 3000 to AX register. Step9: Increment the content of CX register once. Step4: Add the content of the memory 3004 with the content of AX register. APPARATUS REQUIRED: • 8086 Microprocessor Kit • Power Chord • Key Board 32.Ex. Step11: Copy the content to CX register to two memories from 2004. Step10: Copy the content to AX register to two memories from 2002. Step8: Jump to specified memory location if there is no carry i. . Step2: Move immediately the number 0000H to CX register. Step12: End. Step6: Copy the contents of the memory 3002 to AX register. Step5: Copy the content to AX register to two memories from 2000. No: 15 AIM: 32 BIT ADDITION AND SUBTRACTON To write an assembly language program to add and subtract two 32-bit numbers using 8086 microprocessor kit.e. CF=0.BIT ADDITION: ALGORITHM: Step1: Start the program. [3006] loop1 CX [2002]. AX AX.MNEMONICS: MOV CX. CX HLT TABLE: 1 Memory Label 1000 1004 1008 100C 1010 1014 1018 101A 101B Loop1 Mnemonics Instruction Operand Description Move immediately 0000H to CX register MOV CX. [3000] AX. AX MOV AX.0000 MOV ADD MOV MOV ADC JNC INC MOV AX. AX Copy contents of 3000 to AX register Add content of memory 3004 with content of AX register Copy content to AX register to two memories from 2000 Copy contents of memory 3002 to AX register Add content of memory 3006 with content of AX register Jump to specified memory CF=0 Increment content of CX register once Copy content to AX register to two memories from 2002 . 0000 MOV AX. [3004] MOV [2000]. [3004] [2000]. [3002] ADC AX. [3002] AX. AX MOV [2004]. [3006] JNC INC loop1 CX Loop1 MOV [2002]. [3000] ADD AX. 101F 1023 MOV HLT [2004]. CX Copy content to CX register to two memories from 2004 Halt OUTPUT: INPUT DATA: 3000: 9999 3002: 9999 3004: 9999 3006: 9999 OUTPUT DATA: 2000: 3332 2002: 3333 2004: 1 . Step5: Copy the content to AX register to two memories from 2000.e. AX MOV AX. Step10: Copy the content to AX register to two memories from 2002. Step2: Move immediately the number 0000H to CX register. Step4: Add the content of the memory 3004 with the content of AX register. Step8: Jump to specified memory location if there is no carry i. CF=0. Step12: End. [3002] SBB JNC INC AX.BIT SUBTRACTION: ALGORITHM: Step1: Start the program.32. Step3: Copy the contents of the memory 3000 to AX register. 0000 MOV AX. Step6: Copy the contents of the memory 3002 to AX register. AX MOV [2004]. MNEMONICS: MOV CX. Step11: Copy the content to CX register to two memories from 2004. CX HLT . Step9: Increment the content of CX register once. Step7: Subtract the content of the memory 3006 from AX register. [3000] ADD AX. [3006] loop1 CX Loop1 MOV [2002]. [3004] MOV [2000]. [3004] [2000].TABLE: 2 Memory Label 1000 1004 1008 100C 1010 1014 1018 101A 101B 101F 1023 OUTPUT: INPUT DATA: 3000: 9999 3002: 9799 3004: 9999 3006: 9999 RESULT: Thus an assembly language program to add and subtract two 32-bit numbers was written and executed using 8086 microprocessor kit. OUTPUT DATA: 2000: 0000 2002: FE00 Mnemonics Instruction Operand Description Move immediately 0000H to CX register MOV CX. AX AX. [3002] AX. [3006] loop1 CX [2002].0000 MOV ADD MOV MOV SBB JNC INC MOV Loop1 MOV HLT AX. AX [2004]. [3000] AX. CX Copy contents of 3000 to AX register Add content of memory 3004 with content of AX register Copy content to AX register to two memories from 2000 Copy contents of memory 3002 to AX register Subtract content of memory 3006 from content of AX register Jump to specified memory CF=0 Increment content of CX register once Copy content to AX register to two memories from 2002 Copy content to CX register to two memories from 2004 Halt . [3002] MUL CX MOV [2000]. AX MOV [2002]. Step4: Multiply the content of the CX register with the content of accumulator. APPARATUS REQUIRED: • 8086 Microprocessor Kit • Power Chord • Key Board MULTIPLICATION: ALGORITHM: Step 1: Start the program.Ex. [3000] MOV CX. Step5: Copy the content to AX register to the memory 2000. No: 16 AIM: 16 BIT MULTIPLICATION AND DIVISION To write an assembly language program to multiply and divide two unsigned 16-bit numbers using 8086 microprocessor kit. Step3: Copy the contents of the memory 3002 to CX register. DX HLT . MNEMONICS: MOV AX. Step2: Copy the contents of the memory 3000 to AX register. Step7: End. Step6: Copy the contents of DX register to the memory 2002. AX [2004]. [3002] CX [2000]. [3000] CX. DX Copy content to AX register to the memory 2000 Copy content to DX register to the memory 2002 Halt OUTPUT: INPUT DATA: 3000: 1234 3002: 5678 OUTPUT DATA: 2000: 0060 2002: 0626 .TABLE: 1 Memory Label 1000 1004 1008 100A 100E 1012 Mnemonics Instruction Operand Description Copy contents of 3000 to AX register Copy contents of 3002 to CX register Multiply the content of the CX register with the content of accumulator MOV MOV MUL MOV MOV HLT AX. Step2: Copy the contents of the memory 3000 to AX register. [3000] CX. AX MOV [2002]. DX Copy content to AX register to the memory 2000 Copy content to DX register to the memory 2002 Halt . Step3: Copy the contents of the memory 3002 to CX register. [3000] MOV CX.DIVISION: ALGORITHM: Step 1: Start the program. AX [2004]. Step7: End. [3002] CX [2000]. Step5: Copy the content to AX register to the memory 2000. Step4: Divide the content of the CX register from the content of accumulator. Step6: Copy the contents of DX register to the memory 2002. [3002] DIV CX MOV [2000]. DX HLT TABLE: 2 Memory Label 1000 1004 1008 100A 100E 1012 Mnemonics Instruction Operand Description Copy contents of 3000 to AX register Copy contents of 3002 to CX register Divide the content of the CX register with the content of accumulator MOV MOV DIV MOV MOV HLT AX. MNEMONICS: MOV AX. OUTPUT: INPUT DATA: 3000: 1234 3002: 5678 OUTPUT DATA: 2000: 0000 2002: 4444 RESULT: Thus an assembly language program to multiply and divide two unsigned 16-bit numbers was written and executed using 8086 microprocessor kit. . d. Get the third number from the array and repeat the process until C1 is 0.EXPT NO:17 LARGEST& SMALLEST AIM: To write an Assembly Language Program (ALP) to find the largest and smallest number in a given array. Compare the numbers and exchange if the number is large. (ii) a. Find the largest and smallest number and store the result. d. b. c. Get the first two numbers. . APPARATUS REQUIRED: • 8086 Microprocessor Kit • Power Chord • Key Board PROBLEM STATEMENT: An array of length 10 is given from the location. Get the third number from the array and repeat the process until C 1 Finding smallest number: Load the array count in a register C1. c. ALGORITHM: (i) a. Finding largest number: Load the array count in a register C1. b. Get the first two numbers. is 0. Compare the numbers and exchange if the number is small. [SI] JNB L1 MOV AL.[SI] INC SI MOV AL.1200H MOV CL.[SI] L1 : DEC CL JNZ L2 MOV DI.1300H MOV [DI].LARGEST PROGRAM COMMENTS MOV SI.[SI] DEC CL L2 : INC SI CMP AL.AL HLT Initialize array size Initialize the count Go to next memory location Move the first data in AL Reduce the count Move the SI pointer to next data Compare two data’s If AL > [SI] then go to L1 ( no swap) Else move the large number to AL Decrement the count If count is not zero go to L2 Initialize DI with 1300H Else store the biggest number in 1300 location Stop . [SI] JB L1 MOV AL.[SI] L1 : DEC CL JNZ L2 MOV DI.[SI] INC SI MOV AL.AL HLT Initialize array size Initialize the count Go to next memory location Move the first data in AL Reduce the count Move the SI pointer to next data Compare two data’s If AL < [SI] then go to L1 ( no swap) Else move the large number to AL Decrement the count If count is not zero go to L2 Initialize DI with 1300H Else store the biggest number in 1300 location Stop .RESULT: INPUT MEMORY DATA OUTPUT MEMO RY DATA SMALLEST PROGRAM COMMENTS MOV SI.[SI] DEC CL L2 : INC SI CMP AL.1300H MOV [DI].1200H MOV CL. .RESULT: INPUT MEM ORY DAT A OUTPUT MEMO RY DAT A RESULT Thus largest and smallest number is found in a given array. APPARATUS REQUIRED: • 8086 Microprocessor Kit • Power Chord • Key Board ALGORITHM: Step 1: Start the program. Step7: Jump to specified memory location if there is no zero in CX register. No: 18 AIM: FACTORIAL To write an assembly language program to calculate factorial of n-numbers using 8086 microprocessor kit. Step10: End. . Step8: Copy the content to AX register to two memories from 2000. Step6: Decrement the content of CX register once. Step5: Multiply the content of the CX register with the content of accumulator.Ex. Step4: Move immediately the number 0001H to AX register. Step3: Copy the contents of the memory 3000 to CX register. Step2: Move immediately the number 0000H to AX register. [3000] MOV AX. 0001 1006 100A 100B 100C 100E 1012 loop1 MUL DEC JNZ MOV HLT [2000]. AX Memory Label 1000 1004 Description Move immediately the number MOV MOV AX. 0001 CX. 0001 Loop1 MUL CX DEC CX JNZ HLT TABLE: 1 Mnemonics Instruction Operand loop1 MOV [2000]. AX CX loop1 CX Decrement content of CX register once Jump to specified memory location if there is no zero in CX register Copy content to AX register to memory 2000 Halt . 0001 MOV CX. [3000] 0001H to AX register Copy the contents of memory 3000 to CX register Move immediately the number 0000H to AX register Multiply content of CX register with content of accumulator MOV AX.MNEMONICS: MOV AX. OUTPUT: INPUT DATA: 3000: 0008 OUTPUT DATA: 2000: 9d80 RESULT: Thus an assembly language program to calculate factorial of n-numbers was written and executed using 8086 microprocessor kit. . Step7: End. .Ex. No: 19 AIM: SORTING IN ASCENDING ORDER To write an assembly language program to sort n-numbers in ascending order using 8086 microprocessor kit. Step6: Display the sorted result from memory. Step4: Sort the ‘n’ given numbers in ascending order. Step3: Set the conditions to sort n-numbers in ascending order. Step5: Store the result in the memory. Step2: Load data’s into the memory. APPARATUS REQUIRED: • 8086 Microprocessor Kit • Power Chord • Key Board ALGORITHM: Step 1: Start the program. [BX] MOV [BX]. [BX] MOV DX. 2000 MOV CH. CL DEC CH JNZ HLT loop2 . [BX] CMP AX. [BX] MOV CH. DX INC INC Loop1 DEC DEC JNZ BX BX BX BX DEC CL loop2 MOV BX.MNEMONICS: MOV BX. 2000 MOV CX. AX DEC BX DEC BX MOV [BX]. CL Loop2 INC INC INC INC JC BX BX BX BX loop1 MOV AX. 2000 CX. [BX] loop1 Move data from CL to CH Increment BX register content once Increment BX register content once Move BX memory data to AX register Increment BX register content once Increment BX register content once Compare AX register content and BX memory Jump to specified memory location if carry is 1 Move BX memory data to DX register Move data from AX register to BX memory data Decrement BX register content once Decrement BX register content once Move data from DX register to BX memory data Increment BX register content once Increment BX register content once Decrement BX register content once Decrement BX register content once Decrement CL register content once Jump to specified memory location if there is no zero in CX register . DX BX BX BX BX CL loop2 Mnemonics Instruction Operand Description Move2000 to BX register Move BX memory data to CX register MOV MOV MOV Loop2 INC INC MOV INC INC CMP JC BX. CL BX BX AX. [BX] BX BX AX.TABLE: 1 Memory Label 1000 1004 1006 1008 1009 100A 100C 100D 100E 1011 MOV 1013 1015 1017 1018 1019 101B 101C 101D 101E 101F 1020 MOV DEC DEC MOV INC INC DEC DEC Loop1 DEC JNZ DX. AX BX BX [BX]. [BX] CH. [BX] [BX]. CL CH loop2 Move2000 to BX register Copy CL register data to CH register Decrement CH register content once Jump to specified memory location if there is no zero in CX register Halt OUTPUT: INPUT DATA: 2000: 0004 2002: 0003 2004: 0005 2006: 0004 2008: 0002 200A: 0001 OUTPUT DATA: 2002: 0001 2004: 0002 2006: 0003 2008: 0004 200A: 0005 RESULT: Thus an assembly language program to sort n-numbers in ascending order was written and executed using 8086 microprocessor kit. 2000 CH.1022 1026 1028 1029 102B MOV MOV DEC JNZ HLT BX. . Step5: Store the result in the memory. Step4: Solve the expression given below using the conditions assumed. Step2: Load data’s from memory to AX register. Step6: Display the sorted result from memory.Ex. Step7: End. APPARATUS REQUIRED: • 8086 Microprocessor Kit • Power Chord • Key Board ALGORITHM: Step 1: Start the program. . Step3: Set the conditions to solve an expression. No: 20 AIM: SOLVING AN EXPRESSION To write an assembly language program for solving an expression using 8086 microprocessor kit. AX HLT . AX MOV AX. [2000] MUL AX MOV BX. [3000] ADD AX. [2000] MOV BX. 0001 MOV [2006].MNEMONICS: MOV BX. [2004] MUL BX ADD AX. [2002] MUL BX MOV [3000]. [3000] AX. 0001 [2006].TABLE: 1 Mnemonics Instruction Operand Memory Label 1000 1004 1005 1009 100A 100E 1012 1016 1017 101B 101F 1023 Description Move data from memory 2000 to AX register Multiply content of AX register with content of AX register MOV MUL MOV MUL MOV MOV MOV MUL ADD ADD MOV HLT AX. [2002] BX [3000]. [2000] BX. AX Move data from memory 2002 to BX register Multiply content of BX register with content of AX register Copy content to AX register to memory 3000 Move data from memory 2000 to AX register Move data from memory 2004 to BX register Multiply content of BX register with content of AX register Add content of memory 3000 with content of AX register Add the number 0001 to AX register Copy content to AX register to memory 2006 Halt . AX AX. [2004] BX AX. [2000] AX BX. .OUTPUT: INPUT DATA: 2000: 0002 2002: 0004 2004: 0007 OUTPUT DATA: 2006: 1F RESULT: Thus an assembly language program for solving an expression was written and executed using 8086 microprocessor kit. Step4: Decrement the counter. Step8: If the counter value is not equal to zero then go to step6 Step9: Else store the result. Step10:Stop the program. APPARATUS REQUIRED: • • 8085 Microprocessor Kit Power Chord ALGORITHM: Step1: Start the program. Step5: Load the base address of an array in to BX Step6: By using the loop get the next number in to DX and add it with AX.Ex No: 21 SUM OF N NUMBERS IN AN ARRAY AIM: To write a program to find sum of n numbers in an array. Step2: Initialize the counter. Step3: Get the first number. . Step7: Increment the pointer and decrement the counter. MNEMONICS: MOV CL.[2000] AX.[2000] MOV AX. Move the memory content to AX Decrement the CL register.[BX+DI] AX. XOR.BX INC D1 INC D1 DEC CL JNZ LOOP1 MOV [3000].D1 registers Move the content of 2004 to BX Move the content of BX+D1 to DX Add AX with DX content.[2004] DX.BX DI DI CL LOOP 1 [3000].[2004] LOOP1 MOV DX.[2002] DEC CL XOR D1.D1 BX. Increment D1 Increment D1 Decrement CL If zero flag is reseted go to loop1 Move the content to memory location Halt .AX DESCRIPTION Move the memory content to CL.[BX+D1] ADD AX.[2002] CL D1.D1 LEA BX.AX HLT TABLE: LABEL OPCODE MOV MOV DEC XOR LEA MOV ADD INC INC DEC LOOP 1 JNZ MOV HLT OPERAND CL. .OUTPUT: INPUT DATA: 2000:0003 2002:0002 2004:0003 2006:0001 OUTPUT DATA: 3000:0006 RESULT: Thus the sum of n numbers in an array has been done using 8086 microprocessor and the output is verified. 8051 MICROCONTROLLER PROGRAMMING . ALGORITHM: 1. Clear Program Status Word. # 4500H . 5.bit data. 8 Bit Addition (Immediate Addressing) ADDRES S 4100 LABE L MNEMONI C CLR OPERAND C HEX CODE C3 COMMENTS Clear CY Flag 4101 MOV A.data Get the data1 in 1 Accumulator 24. APPARATUS REQUIERED • 8051 Microcontroller kit. # data 2 DPTR.0 0 Initialize the memory location 4103 4105 ADDC MOV A.# data1 74. 4. 3.data Add the data1 2 with data2 90.EXPT NO:22 8 BIT ADDITION AIM: To write a program to add two 8-bit numbers using 8051 microcontroller. 7.45. Load the register R 0 with the second 8. 2. Store the result. Load accumulator A with any desired 8-bit data. • Power chord. 6. Stop the program. Select Register bank by giving proper values to RS1 & RS0 of PSW. Add these two 8-bit numbers. .FE OUTPUT OUTPUT MEMORY LOCATION DATA 4500 RESULT: Thus the 8051 ALP for addition of two 8 bit numbers is executed.4108 MOVX @ DPTR. A F0 Store the result in memory location Stop the program 4109 L1 SJMP L1 80. Store the result in memory. data1 94. c. APPARATUS REQUIERED • 8051 Microcontroller kit. If a borrow results increment the carry register. PROGRAM LABEL MNEMONIC CLR OPERAND C HEX CODE C3 COMMENTS Clear CY flag 4101 MOV A. e. Subtract the second operand from the accumulator.data 2 90. # 4500 @ DPTR. # data1 74. f. # data2 4105 MOV DPTR. Get the first operand into the accumulator.0 0 F0 Store data1 in accumulator Subtract data2 from data1 Initialize memory location Store the difference in memory location 4103 SUBB A.45.EXPT NO:23 8 BIT SUBTRACTION AIM: To perform subtraction of two 8 bit data and store the result in memory. ADDRESS 4100 Clear the carry flag. A 4108 MOVX . d. Initialize the register for borrow. b. • Power chord. ALGORITHM: a. FE Stop OUTPUT OUTPUT MEMORY LOCATION 4500 DATA RESULT Thus the 8051 ALP for subtraction of two 8 bit numbers is executed.4109 L1 SJMP L1 80. . #data2 75. ALGORITHM: a. Multiply A with B.da ta2 COMMENTS Store data1 in accumulator Store data2 in B reg 4102 MOV . APPARATUS REQUIERED • 8051 Microcontroller kit. Get the multiplier in the accumulator.EXPT NO:24 8 BIT MULTIPLICATION AIM: To perform multiplication of two 8 bit data and store the result in memory.#data1 74. d. c. b. data1 B. Get the multiplicand in the B register. • Power chord. PROGRAM ADDRE SS 4100 LABE L MNEMON OPERAND HEX IC CODE MOV A . Store the product in memory. F0 Store higher order result 410D MOV @ DPTR.45 . A DPTR 90. # 4500H @ DPTR.B E5. A STOP F0 410E STOP SJMP 80.00 F0 Initialize memory location Store lower order result Go to next memory location 4109 MOVX 401A INC A3 410B MOV A.F0 Multiply both 4106 MOV DPTR.FE Stop OUTPUT INPUT MEMORY LOCATION 4500 DATA OUTPUT MEMORY LOCATION DATA 4502 4501 4503 .B F5.4104 MUL A. EXPT NO:25 8 BIT DIVISION AIM: To perform division of two 8 bit data and store the result in memory. 2.RESULT: Thus the 8051 ALP for multiplication of two 8 bit numbers is executed. Get the Divisor in the B register. # data2 HEX COMMENTS CODE 74. Divide A by B. Get the Dividend in the accumulator. APPARATUS REQUIERED • 8051 Microcontroller kit. 4. 3. • Power chord. ALGORITHM: 1.da Store data1 in ta1 accumulator 75.da Store data2 in ta2 B reg 4102 MOV . # data1 B. PROGRAM ADDRE LABE MNEMO SS L NIC 4100 MOV OPERAND A. Store the Quotient and Remainder in memory. # 4500H 90.45 Initialize . A F0 410D STO P SJMP STOP 80.00 memory location Store remainder Go to next memory location 4018 MOVX @ DPTR.B E5. A F0 4109 INC DPTR A3 410A MOV A.4104 DIV A.F0 Store quotient 410C MOV @ DPTR.B 84 Divide 4015 MOV DPTR.FE Stop RESULT: INPUT MEMORY LOCATION 4500 (dividend) 4501 (divisor) DATA OUTPUT MEMORY LOCATION 4502 (remainder) 4503 (quotient) DATA RESULT: . .Thus the 8051 ALP for division of two 8 bit numbers is executed. Step6: Add the two data’s with carry. • Power chord. ALGORITHM: Step1: Start the program. Step3: Add the two data’s. APPARATUS REQUIRED: • 8051 Microcontroller kit. No: 26 AIM: 16 BIT ADDITION To write an assembly language program to add the two 16 bit data’s using 8051 Micro controller. Step9: Stop the program. . Step2: Load the lower byte of the two data’s into accumulator and R0 register. increment R2 register content once. Step8: Store the accumulator data and R6 and R2 register data’s into the memory.Ex. Step7: If carry comes. Step5: Load the higher byte of the two data’s into accumulator and R1 register. Step4: Move the added data into R6 register and initialize the R2 register. #00 DPTR A.#4400 A.A DPTR A.A DPTR A.@DPTR A.A R2.@DPTR A.A DPTR A.@DPTR R1.A INC DPTR A.A LOOP2 .R0 R6.R6 @DPTR.@DPTR R0.R2 @DPTR.MNEMONICS: MOV MOVX MOV MOV INC MOVX MOV INC MOVX ADD MOV MOVX ADDC JNC INC LOOP1: INC MOVX INC MOV MOVX INC MOV MOVX LOOP2: SJMP DPTR.R1 LOOP1 R2 DPTR @DPTR. R1 JNC LOOP1 A3 E0 28 FE A3 E0 39 50 Add Accumulator data and R0 register data. Load the data from DPTR to Accumulator.#4400 Hex code 90 44 00 Description Move data 4400 to DPTR MOVX A.@DPTR ADD A. Increment DPTR content once.R0 MOV R6. Clear the R2 register. .#00 INC DPTR MOVX A.A INC DPTR MOVX A. Load the data from DPTR to Accumulator. Increment DPTR content once. INC DPTR 410A 410B 410C 410D 410E 410F 4110 4111 MOVX A. Move the data to R1 register from Accumulator.@DPTR ADDC A.TABLE: Memory 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 Label MNEMONICS MOV DPTR. Increment DPTR content once. Jump when carry=0 to loop1. Load the data from DPTR to Accumulator.@DPTR MOV R0. Move data from Accumulator to R0 register.A MOV R2.A E0 F8 7A 00 A3 E0 F9 Move data from DPTR to Accumulator. Add Accumulator data and R0 register data with carry. Move data from Accumulator to R6 register.@DPTR MOV R1. Increment DPTR content once.R2 MOVX @DPTR. Store the Accumulator data to DPTR. Jump to loop2. Increment DPTR content once.4112 4113 4114 4115 4116 4117 4118 4119 411A 411B 411C 411D 411E Loop2 Loop1 INC R2 INC DPTR MOVX @DPTR. Store the Accumulator data to DPTR.A SJMP LOOP2 01 0A A3 F0 A3 EE F0 A3 EA F0 80 41 1C Increment the content of R2 register once. OUTPUT: INPUT DATA: 4400: 23 4401: 32 4402: 47 4403: 74 RESULT: Thus an assembly language program to add two 16-bit data’s was written and executed using 8051 micro controller kit. Increment DPTR content once. Store the Accumulator data to DPTR.A INC DPTR MOV A.R6 MOVX @DPTR.A INC DPTR MOV A. Move the data from R6 register to Accumulator. OUTPUT DATA: 4404: A6 4405: 6A 4406: 00 . Move the data from R2 register to Accumulator. ALGORITHM: Step1: Start the program. Step7: If carry comes. Step2: Load the lower byte of the two data’s into accumulator and R0 register. Step4: Move the subtracted data into R6 register and initialize the R2 register. . Step5: Load the higher byte of the two data’s into accumulator and R1 register.Ex. Step8: Store the accumulator data and R6 and R2 register data’s into the memory. APPARATUS REQUIRED: • 8051 Microcontroller kit. Step 6: Subtract the two data’s with borrow. increments R2 register content once. Step3: Subtract the two data’s. Step9: Stop the program. • Power chord. No: 27 AIM: 16 BIT SUBTRACTION To write an assembly language program to subtract the two 16 bit data’s using 8051 Micro controller. @DPTR A.A LOOP2 .A DPTR A.A R2.R6 @DPTR.A DPTR A.MNEMONICS: MOV MOVX MOV MOV INC MOVX MOV INC MOVX SUBB MOV INC MOVX SUBB JNC INC LOOP1: INC MOVX INC MOV MOVX INC MOV MOVX LOOP2: SJMP DPTR.R0 R6.R2 @DPTR.#00 DPTR A.@DPTR R0.A DPTR A.A DPTR A.#4400 A.@DPTR R1.@DPTR A.R1 LOOP1 R2 DPTR @DPTR. @DPTR SUBB A. Increment DPTR content once. Subtract Accumulator data and R0 register data with carry. Jump when carry=0 to loop1.A MOV R2. Move data from Accumulator to R0 register.R0 MOV R6. .#4400 Hex code 90 44 00 Description Move data 4400 to DPTR MOVX A. Load the data from DPTR to Accumulator.R1 JNC LOOP1 A3 E0 98 FE A3 E0 99 50 Subtract Accumulator data and R0 register data. Move data from Accumulator to R6 register.@DPTR SUBB A. Increment DPTR content once. INC DPTR 410A 410B 410C 410D 410E 410F 4110 4111 MOVX A.A INC DPTR MOVX A.A E0 F8 7A 00 A3 E0 F9 Move data from DPTR to Accumulator. Move the data to R1 register from Accumulator. Load the data from DPTR to Accumulator. Clear the R2 register. Increment DPTR content once. Load the data from DPTR to Accumulator.#00 INC DPTR MOVX A.@DPTR MOV R1.@DPTR MOV R0.TABLE: Memory 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 Label Mnemonics MOV DPTR. 4112 4113 4114 4115 4116 4117 4118 4119 411A 411B 411C 411D 411E Loop2 Loop1 INC R2 INC DPTR MOVX @DPTR. Increment DPTR content once.R2 MOVX @DPTR. Move the data from R2 register to Accumulator. . Increment DPTR content once.R6 MOVX @DPTR.A INC DPTR MOV A. Jump to loop2. Store the Accumulator data to DPTR.A SJMP LOOP2 01 0A A3 F0 A3 EE F0 A3 EA F0 80 41 1C Increment the content of R2 register once. Store the Accumulator data to DPTR. Store the Accumulator data to DPTR. Move the data from R6 register to Accumulator. Increment DPTR content once. OUTPUT: INPUT DATA: 4500: BC 4501: 19 4502: 88 4503: 99 OUTPUT DATA: 4504: 80 4505: 34 4506: 01 RESULT: Thus an assembly language program to subtract two 16-bit data’s was written and executed using 8051 micro controller kit.A INC DPTR MOV A. A LOOP1 . No: 28 AIM: 16 BIT MULTIPLICATION To write an assembly language program to multiply two 16 bit data’s using 8051 Micro controller.0F0 @DPTR.#4400 A.@DPTR AB DPTR @DPTR. Step3: Multiply the two data’s. APPARATUS REQUIRED: • 8051 Microcontroller kit. • Power chord.@DPTR 0F0. ALGORITHM: Step1: Start the program.Ex. Step4: Store the result into the memory.A DPTR A. Step2: Load the two data’s into Accumulator and B register.A DPTR A. MNEMONICS: MOV MOVX MOV INC MOVX MUL INC MOVX INC MOV MOVX LOOP1: SJMP DPTR. Step5: Stop the program. Move data from Accumulator to B register. Increment DPTR content once. Increment DPTR content once.0F0 MOVX @DPTR.A INC DPTR MOV A. Move the data from B register to Accumulator.TABLE: 1 Memory 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 410A 410B 410C 410D 410E 410F 4110 4111 Label Mnemonics MOV DPTR. Store the Accumulator content to DPTR.@DPTR MUL AB INC DPTR MOVX @DPTR. Move data from DPTR to Accumulator. Store the Accumulator content to DPTR. Increment DPTR content once. Jump to loop1.#4400 Hex code 90 44 00 Description Move data 4400 to DPTR MOVX A. Multiply the Accumulator content and B register.A INC DPTR MOVX A.@DPTR MOV 0F0.A Loop2 SJMP LOOP1 E0 F5 F0 A3 E0 A4 A3 F0 A3 E5 F0 F0 80 41 1C Move data from DPTR to Accumulator. . .OUTPUT: INPUT DATA: 4400: 23 4401: 32 OUTPUT DATA: 4404: 6D 4405: 06 RESULT: Thus an assembly language program to multiply two data’s was written and executed using 8051 micro controller kit. • Power chord.A DPTR A. ALGORITHM: Step1: Start the program.A DPTR A.@DPTR 0F0. No: 29 AIM: 16 BIT DIVISION To write an assembly language program to divide two 16 bit data’s using 8051 Micro controller. APPARATUS REQUIRED: • 8051 Microcontroller kit. Step2: Load the two data’s into Accumulator and B register.@DPTR AB DPTR @DPTR. Step5: Stop the program. MNEMONICS: MOV MOVX MOV INC MOVX DIV INC MOVX INC MOV MOVX LOOP1: SJMP DPTR. Step3: Divide the two data’s. Step4: Store the result into the memory.#4400 A.A LOOP1 .0F0 @DPTR.Ex. .A INC DPTR MOVX A. Move data from Accumulator to B register. Store the Accumulator content to DPTR. Increment DPTR content once. Store the Accumulator content to DPTR.0F0 MOVX @DPTR.@DPTR DIV AB INC DPTR MOVX @DPTR. Divide the Accumulator content and B register. Move data from DPTR to Accumulator. Jump to loop1.A INC DPTR MOV A.@DPTR MOV 0F0.#4400 Hex code 90 44 00 Description Move data 4400 to DPTR MOVX A.A Loop2 SJMP LOOP1 E0 F5 F0 A3 E0 84 A3 F0 A3 E5 F0 F0 80 41 1C Move data from DPTR to Accumulator. Increment DPTR content once. Move the data from B register to Accumulator. Increment DPTR content once.TABLE: 1 Memory 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 410A 410B 410C 410D 410E 410F 4110 4111 Label Mnemonics MOV DPTR. OUTPUT: INPUT DATA: 4400: ED 4401: 23 OUTPUT DATA: 4404: 06 4405: 1B RESULT: Thus an assembly language program to divide two data’s was written and executed using 8051 microcontroller kit. . INTERFACING PROGRAMS . Ex. No: 30 AIM: STEPPER MOTOR INTERFACING To write a program fro inter facing stepper motor and to run the motor in different directions and in different speeds. ALGORITHM: Step1: Start the program. Step2: Load HL register pair with memory address at look up. Step3: Move the contents of HL pair to accumulator. Step4: Out the contents of accumulator to run the motor. Step5: Decrease b register. If register content is not zero then rotate the motor continuously. Step6: If zero then move to the Seginning of the program. Step7: Stop the process. THEORY: STEPPER MOTOR: A motor in which the rotor is able to assume only discrete stationary angular position is a Stepper Motor. The rotary motion in a stepper motor is a stepwise manner from one equilibrium position to another. CONSTRUCTIONAL FEATURES: A stepper motor could be either of the reluctance type or of the permanent magnet type (PM). A PM stepper consists of multiphase stator and two part permanent magnet rotor. The VR stepper motor has unmagnetised rotor. PM stepper motor is the most commonly used type. The basic two phase stepper motor consists of two pairs of stator poles. Each of the four poles has its own winding. The excitation of any winding generates a north pole (N), a south pole (S) gets induced at the diametrically opposite side. As shown in the figure the four pole structure is continuous with the stator frame and the magnetic field passes through the cylindrical stator annular ring. The rotor magnetic system has two end faces. The left face is permanently magnetized as South Pole and their right face as North Pole. The South Pole structure and the North Pole structure posses similar pole faces. The north pole structure is twisted with respect to the south pole structure by one pole pitch. Stepper Motor Cross-sectional View MP & MC – LAB MANUAL ECE Page | 102 In an arrangement where four stator poles and three poles of rotor poles, there exists 12 possible positions in which a south pole of the rotor can lock with a north pole of the stator. From this it can be rotated that the step size is 360 = Ns*Nr where, Ns is the number of stator pole pairs Nr is the number of pairs rotor pole Generally step size of the stepper motor depends upon NR. These stable positions can be attained by simply energizing the winding on any one of the stator poles with a DC. There are three different schemes available for ‘stepping’ a stepper motor. They are, a) Wave Scheme b) 2-Phase scheme c) Half stepping or mixed scheme 2-PHASE SCHEME: In this scheme any two adjacent stator windings are energized. There are two magnetic fields active in quadrature and none of the rotor pole faces can in direct alignment with the stator poles. A partial but symmetric alignment of the rotor poles is of course possible. o Typical equilibrium conditions of the rotor when the windings on two successive stator poles are excited are illustrated. In Step (a) A1 and B1 are energized. The pole-face S1 tries to align itself with the axis of A1 (N) and the poleface S2 with B1 (N). The North Pole N3 of the rotor finds itself in neutral zone between A1 (N) and B1 (N). S1 and S2 of the rotor position themselves symmetrically with respect to the two stator north pole. Next when B1 and A2 are energized S2 tends to align with B1 (N) and S3 with A2 (N) of course. Again under equilibrium conditions only partial alignment is possible and N1 finds itself in the neutral region midway between B1 (N) and A2 (N) [Step (b)]. In Step (c), A2(N) and B2(N), respectively, with N2 in the neutral zone. Step (d) illustrates the case when A1 and B2 are ON. The step angle is 30ْ as in the two phase’s scheme. However the rotor is offset by 15ْ in the two phase’s scheme with respect to the wave scheme. A total of 12 steps are required to move the rotor by 360ْ (mechanical) Two Phases drives produce more torque than the wave drives. MNEMONICS: START: REPT: LXI MVI H, LOOK UP B, 04 MOV A, M OUT 0C0H LXI D, 0303H DELAY: NOP DCX D MOV A, E ORA D JNZ INX JNZ JMP DELAY H REPT START 09 05 06 0A DCR B LOOK UP: DB Out the content of Accumulator to C0 port address Load the data 0303H to D register Perform No operation Decrement address of DE pair once Move E register content to Acc. Jump on no zero to the instruction at specified memory .TABLE: 1 LOOK UP TABLE Anticlockwise 1 2 3 4 TABLE: 2 Mnemonics Instruction Clockwise 1 0 0 1 0 1 1 0 1 1 0 0 0 0 1 1 Step A1 A2 B1 B2 A1 A2 B1 B2 1 0 0 1 0 1 1 0 0 0 1 1 1 1 0 0 Memory Label 4100 4101 4102 4103 4014 4105 4106 4107 4108 4109 410A 410B 410C 410D 410E 410F 4110 DELAY: START: LXI HEX CODE Description Load HL pair with memory address Operand H.E D 410B 03 00 1B 7B B2 C2 0B at Look Up Move immediate the given data to B register Move content of memory to Acc. 0303H 06 04 7E 03 C0 11 03 NOP DCX MOV ORA JNZ D A.04 A. Perform OR operation With Acc. AX D. LOOK UP 21 1A 41 MVI REPT: MOV MOV LXI B.M [2000]. 4111 4112 4113 4114 4115 4116 4117 4118 4119 411A LOOK UP INX H B 41 23 05 C2 05 41 JMP START Address Increment HL pair address once Decrement B register content once DCR JNZ Jump on no zero to the instruction at specified memory Address Jump to the instruction at specified memory Data will be stored in the location C3 00 41 09 05 06 04 RESULT: Thus the stepper motor is rotated by varying the speed using COUNT operation and its direction is also changed using program written and executed using 8085 micro processor kit. . It contains three 8 bit parts which can be configured by software means to provide any one of the three programmable data transfer available with 8255. PORT B One 8 bit data output latch/ buffer and one 8 bit data input latch. APPARATUS REQUIRED: • 8085 Microprocessor Kit • 8255 microprocessor programmable input/output • • Power Chord 8b call cable PRODUCTION: The 8255 has been displayed as general purpose programmable I/O device compatible with intel inputs. . Port B can function as input or output ports in two modes. PORT A One 8 bit data output latch/ buffer and one 8 bit data input latch. The details are given in the following section. No: 31 INTERFACING WITH PROGRAMMABLE INPUT OUTPUT – 8255 AIM: To initialize port A as input port and port B as output port in mode 0.To input the data at port A and set by the spot switches and to output the same data to port B to glow the LEDS accordingly.Ex. Port A can function as input or output ports in three modes. the mode definition format is shown.PORT C One 8 bit data output latch/ buffer and one 8 bit data input latch. Each of the control blocks accepts command to its associated ports. PROGRAMMING THE 8255: The control word can be programmed to configure the ports in a write variety of functional characteristics. mode 1 and mode 2 where as group B can be configured into two modes mode 0 and mode 1. . Data communication and configuration for direct data transfer can be done using the fal registers. Whether the port is input port or output port and modes of transfer through a port. CONFIGURATION 8255 WITH A MICROPROCESSOR: The 8255 has all the necessary hardware for direct interfacing with 8116 bit bus. Group A can be configured in these modes. In short command window decides. In addition the port C line can be used for the control signal outputs and the status signal outputs in conjunction with port A and port B. Group A contains port B and port C higher address lines. Port lines have been divided into two groups: Group A and Group B. The port registers are read / write register where as write registers is a control register. Group B contains port B and port C lower address lines. namely three ports A. GROUP A AND GROUP B CONTROLS: The three ports of 8255 have been divided into two groups group A and group B. register can be accessed with the help of A0 and A1 pin lines which are connected to the lower order bits A1 and A2 of the 8 bit microprocessor unit. “bit set” etc. mode 0. The ports are configured as input are output by command window contains information such as “mode”. Port C can function as simple input or output port. B and E and the control register available in the chip. Thus port can be divided into two four bit ports which intern can function as sample input or output port. 4 and 3 to set the modes of group A while Bit 2.The control word is 8 bit wide. The data set by SPOT switches setting is input to the accumulator and is outputted to port B and the data output at the LEDs is the same. Execute the program.1 and 0 are to set the modes of group B. Detailed operation will be discussed later. This input value from the accumulator is stored at 4500H. store the content of Accumulator in add 4500. Bit 7 decides whether the mode set of operation in bit set and reset operation is selected. . RESULT: Thus a program to initialise port A as input port and port B as output port in mode 0 in processor 8255 was performed and their output was verified. MNEMONICS: ORG 4100H MVI A. as that set by the SPOT switches settings.90 OUT 0C6H OUT C6H IN COH STA 4500H HLT OBSERVATION: Enter the program starting from the USER RAM address set a known data at the spot switches. PROCEDURE: Initialise the port A as input port and out to control read input from port A and out to the control port B. The Above program initialises port A as an input port and port B as an out port. With Bit 7=1 Bit 6.5. scanned sensor mode and stored input entry mode. • • • • • • R output mode such as 8 or 16 bit character multiplexed display right entry or left entry display format. The 8279 is designed specifically to connect to any CPU to do some other Work other than scanning the keyboard and refreshing the display. Clock puscalar Programmable scan timing 2 key increment facility for easy programming.Ex.8279 INTRODUCTION: The INTEL 8279 is responsible for debouncing of the keys. coding of the keyboard matrix and refreshing of the display elements in a microprocessor based development system. How to and from various internal registers and buffer as given in table. This CPU can program the operating modes for 8279. No: 32 INTERFACING WITH KEYBOARD DISPLAY CONTROLLER . A0. The correspondence between the data bus and output port bits 8279.Also the segment relationship with these given in table 1. RD and WR lines to control data. • Three input modes such as scanned keyboard mode . Its main features are • Simultaneous keyboard and display operation. Auto increment facility for easy programming.It uses the CS. SEGMENT DEFINITION: Segment definitions of the seven segment display are shown below. . right entry 11-16 8 bit character display-right entry Kkk-KEYBOARD MODE: 000-Encoded scan keyboard-2 KEY LOCK OUT 001-Encoded scan keyboard-2 KEY LOCK OUT 010-Encoded scan keyboard-N key roll over 011-Decoded scan sensor matrix 100.If AI=1.select any one of the 16 rows of DISPLAY RAM.left entry 10-8 8 bit character display.the row address selected will be incremented after the each following read or write to the DISPLAY RAM AAAA .Decoded scan keyboard –N key roll over 101.AI auto increment flag .D0 bit of the byte sent to the display RAM corresponds to B0 and D7 of the byte sent to the display corresponds AB. DISPLAY MODE SETUP: DD DISPLAY MODE: 00-8 8 bit character display-left entry 01-16 8 bit character display. . Encoded Display scans 111-Strobed input.Decoded scan sensor matrix 110-Strobed input. decoded display scan WRITE DISPLAY RAM: The write display RAM command word format is shown in table 1. Inorder to right up a segment the corresponding bit of data are written into the RAM should be a 0. The use of this flag is clear the display. DAT EQU 0C0H. the 8279 will automatically drive the data bus for subsequent read in the same sequence in which data first entered the FIFO.READ FIFO STATUS: The status word is read by the CPU when A0 is high and CS and RD are low.SIE bit is set in FIFO status word to indicate at least one sensor closure indication is contained in the sensor RAM. If AI=1. The FIFO status word also has been at bit to indicate that the display RAM is unavailable because a clear display or clear all comment has not completed is cleaning operation. FIFO status is used in the keyboard and strobed input modes to indicate whether an error has occurred.In scanned keyboard mode. The CPU sets the 8279 for a read of the FIFO1 sensor RAM by writing command word. Set 8279 for A and of read of FIFO RAM store the content of accumulator at the memory address 4200 CNT EQU 0C2H. In a sensor matrix SIE bit act as error flag and indicates whether a simultaneous multiple closure error has occurred. Under RUN across when the CPU tried to read an empty FIFO. X .Don’t care AI – auto increment flag irrelevant is scanned keyboard mode. . There are two types of errors possible over run and under run over run occur. READ A KEY: PROCEDURE: Set FIFO status check for a key and repeat the loop. READ FIFO/SENSOR RAM: READ FIFO/SENSOR RAM control. FIFO is attempted. For sensor matrix mode. AAA. word format is given in a table 2. then successive read will be from subsequent row of the sensor RAM. when the entry of another character in to a full. A time delay is given between successive digit to likely display. MNEMONICS: START LXI 412CH MVI D.10F OUT 0C2H MVI A.0CCH OUT 0C2H LOOP MOV A. RAM the auto increment flag is set. 40H OUT CNT IN HLT OBSERVATION: The key 0 is pressed and the data entered at FIFO RAM is W.MNEMONICS: ORG 4100H LOO IN JZ CNT LOOP ANI 07 MVI A.OFH MVI A. The data is fetched from address 412CH and displayed in the second digit of the display. Since in the command word for “write display”.M OUT 0C0H DAT STA 4200 . ROUTING DISPLAY: PROCEDURE: The initialization of 8279 to display the characters. .CALL DELAY INX H DCR D JNZ LOOP JMP START DELAY MVI B.0A0H LOOP1 MVI C.0FFH LOOP2 DCR C JNZ LOOP2 DCR C JNZ LOOP1 RET OBSERVATION: The rolling message ‘HELP US’ is displayed in the display when the input given is 412C FF 4130 FF 4134 98 4138 1C FF FF 68 29 FF FF 70 FF FF FF 08 FF RESULT: Thus a program to read akey and rolling display by interfacing 8085 with 8279 is executed and the output is verified.
Copyright © 2024 DOKUMEN.SITE Inc.