R05 MP Lab Journal
R05 MP Lab Journal
R05 MP Lab Journal
ECE Dept.
CONTENTS
Page no. 1. List of Experiments (as per JNTU) 2. Microprocessor 8086 Programming 2.1 Introduction to MASM and TASM 2.2 Arithmetic operations a) Arithmetic Operations on 8 bit data b) c) d) e) Arithmetic Operations on 16 bit data 14 Multibyte addition and subtraction 20 Signed Operations on 8 bit data 26 ASCII Arithmetic Operations 31 2.3 Logic Operations BCD to ASCII Conversion ASCII to BCD Conversion No. of Positive nos & Negative nos. No. of Odd nos & Even nos. Packed BCD to Unpacked BCD Conversion 2.4 String Operations Transfer Block of Data Reversal of given String Sorting of N numbers Length of the given String Comparison of two Strings 2.5 DOS/BIOS Programming Reading Keyboard buffered with echo 88 5 8 -1, 2
37 41 45 51 57
62 66 72 78 82
MICROPROCESSORS LAB MANUAL Reading Keyboard buffered with out echo Display String by using DOS Commands 91 94
ECE Dept.
Page no. 3. Interfacing with 8086 3.1. Programmable Peripheral Interfacing (8255) a) Digital to Analog Converters 3.2. Keyboard Display Interfacing (8279) ADDITIONAL PROGRAMS Dual Slope Analog to Digital Converter Stepper Motor Interfacing Using 8255 PPI 143 150 97 110 130
ECE Dept.
LIST OF EXPERIMENTS
III Year B.Tech, ECE II semester. II Year B.Tech, CSE & IT II Semester
I MICROPROCESSOR 8086:
1. 2. 3. 4. 5. Introduction to MASM and TASM Arithmetic Operations Multi byte addition and subtraction, Multiplication and division-signed and unsigned Arithmetic operation, ASCII-arithmetic operation Logic operations-Shift and rotate-Converting packed BCD to unpacked BCD, BCD to ASCII conversion. By using string operation and Instruction prefix: Move Block, Reverse string, Sorting, Inserting. Deleting, length of the string, String comparison. DOS/BIOS programming: Reading keyboard (with Buffered and without echo)Display characters, Strings.
II. INTERFACING:
1. 2. 3. 4. 8259-Interrupt controller 8279-Keyboard Display 8255-PPI 8251-USART : Generate an interrupt using 8259 timer. : Write a small program to display a string of Characters. : Write an ALP to generate sinusoidal wave Using PPI : Write a program in ALP to establish communication between two processors
ECE Dept.
LIST OF EXPERIMENTS
IV YEAR B.TECH EEE I SEMESTER
I MICROPROCESSOR 8086:
1. 2. 3. 4. 5. Introduction to MASM and TASM Arithmetic Operations Multi byte addition and subtraction, Multiplication and division-signed and unsigned Arithmetic operation, ASCII-arithmetic operation Logic operations-Shift and rotate-Converting packed BCD to unpacked BCD, BCD to ASCII conversion. By using string operation and Instruction prefix: Move Block, Reverse string, Sorting, Inserting. Deleting, length of the string, String comparison. DOS/BIOS programming: Reading keyboard (with Buffered and without echo)Display characters, Strings.
II. INTERFACING:
1. 2. 3. 4. 8259-Interrupt controller 8279-Keyboard Display 8255-PPI 8251-USART : Generate an interrupt using 8259 timer. : Write a small program to display a string of Characters. : Write an ALP to generate sinusoidal wave Using PPI : Write a program in ALP to establish communication between two processors
ECE Dept.
INTRODUCITION TO MASM/TASM
ASSEMBLY LANGUAGE PROGRAMMING USING MASM SOFTWARE:
This software used to write a program (8086, Pentium processors etc.) The programs are written using assembly language in editor then compile it. The complier converts assembly language statements into machine language statements/checks for errors. Then execute the compiled program. Programs for different processor instructions (Pentium, 8086) programming manner differ for each model. There are different soft wares developed by different companies for assembly language programming are: MASM - Microsoft Company. TASM - Bore Land Company.
MERIT OF MASM: 1. produces binary code 2. Referring data items by their names rather than by their address. HOW TO ENTER INTO MASM EDITOR: Click Start on the desktop. Then select Run Then it Shows inbox
Then type Command (CMD) which enters You into DOS prompt Path setting Suppose it display path as C:\ DOCUME-\ADMIN> Then type CD\ i.e.; C:\DOCUME\\ADMIN>CD\ Then the path is C :\> Then type CD MASM Then the path is C: MASM> Then type edit i.e.; C: MASM>edit
MICROPROCESSORS LAB MANUAL Then you enter into MASM text editor. Then enter to file and select New. And name it and then write the ALP (Assembly Language Program) in this editor. After that save it as filenames Then exit from the editor and go to prompt. Then type MASM filename.ASM I.e. C: MASM>MASM filename.ASM or C: MASM filename.ASM, , ; Then link this file using C: MASM>LINK filename.OBJ or C: MASM>LINK filename.OBJ , , ; i.e link the program in assembly with DOS then to debug to create exe file
ECE Dept.
DEBUG COMMANDS:
ASSEMBLE COMPARE DUMP ENTER specific FILL GO HEX INPUT LOAD A [address] C range address D [range] E address [list] ; Assembly the instructions at a particular address ; Compare two memory ranges ; Display contents of memory ; Enter new or modifies memory contents beginning at Location F range list ; Fill in a range of memory
G [=address] [addresses] ; Execute a program in memory H value1 value2 I port L [address] [drive] [first sector] [number] ; Add and subtract two Hex values
MICROPROCESSORS LAB MANUAL MOVE M range address NAME OUTPUT PROCEED QUIT Q R [register] S range list T [=address] [value] N [pathname] [arg list] O port byte P [=address] [number]
ECE Dept.
UNASSEMBLE U [range] WRITE W [address] [drive] [first sector] [number] XA [#pages] XD [handle]
ALLOCATE expanded memory DEALLOCATE expanded memory MAP expanded memory pages
ECE Dept.
Step3: Copy the contents from memory location [0000] to AL Step4: Copy the contents from memory location [0001] to BL Step 5: Perform addition Step6: Move the result to the memory location [0002] Step7: Copy the contents from memory location [0000] to AL Step8: Perform subtraction Step9: Move the result to the memory location [0003] Step10: Copy the contents from memory location [0000] to AL Step11: Perform multiplication Step12: Move the result to the memory location [0004] Step13: Copy the contents from memory location [0000] to AL Step14: Perform division Step15: Move the result to the memory location [0006] Step16: stop.
ECE Dept.
Initialize
data segment
Perform addition
Perform subtraction
Perform multiplication
MICROPROCESSORS LAB MANUAL 1 Move the result to the memory location [0004]
ECE Dept.
Perform division
Stop
10
MICROPROCESSORS LAB MANUAL PROGRAM: ASSUME CS: CODE, DS: DATA DATA SEGMENT N1 EQU 04H N2 EQU 06H RESULT DB 04H DUP (00) DATA ENDS CODE SEGMENT START: MOV AX , DATA MOV MOV MOV ADD MOV MOV SUB MOV MOV MUL MOV MOV MOV MOV DIV MOV MOV MOV INT CODE ENDS END START DS AL BL, AL, , AX , N1 N2 BL
ECE Dept.
[RESULT], AL AL, N1 AL, BL [RESULT+1], AL AL, N1 BL [RESULT+2], AL [RESULT+3], AH AL, N1 AH, 00H BL [RESULT+4], AL [RESULT+5], AH AH, 4CH 21H
11
MICROPROCESSORS LAB MANUAL CODE TABLE: Physical address Segment Effective address address OD64 0000 0003 0005 0008 000C 000E 0011 0014 0016 0019 001C 001E 0021 0025 0028 002A 002C 002F 0033 0035 Label Hex code B8630D 8ED8 A00000 8A1E0100 02C3 A20200 A00000 2AC3 A20300 A00000 F6E3 A20400 88260500 A00000 B400 F6F3 A20600 88260700 B44C CD21 Mnemonics Opcode Operand MOV AX,0D63 MOV MOV MOV ADD MOV DS,AX AL,[0000] BL,[0001] AL,BL [0002],AL Comments
ECE Dept.
;Move the contents to AL ;Move the contents to BL ;Add BL contents with AL ;Move the contents to memory ;Move the contents to AL ;Subtract BL contents with AL ;Move the contents to memory ;Move the contents to AL ;Multiply the contents of BLwithAL ;Move the contents from AH ;Move the contents to AH ;Move the contents to AL ;Move 00 into AH register ;Division the contents of BL with AL ;Move the contents to AL ;Move the contents from AH ;Terminate the Program ;Stop
MOV AL,[0000] SUB MOV MOV MUL MOV MOV MOV MOV DIV MOV AL,BL [0003],AL AL,[0000] BL [0004],AL [0005],AH AL,[0000] AH,00 BL [0006],AL
RESULT:
D 0000 04 06 0A FE 18 00 00 04
12
ECE Dept.
VIVA-VOCE QUESTIONS
1. 2. 3. 4. 5. What is meant by microprocessor? What was the first company to bring out the microprocessor? What was the semiconductor technology used for fabrication of the 8086 P? What are the main blocks of the microprocessor? What is the word size of the 8086 P?
13
ECE Dept.
14
ECE Dept.
Initialize
data segment
Perform addition
Perform subtraction
15
ECE Dept.
Perform multiplication
Perform division
Stop
16
ECE Dept.
DATA SEGMENT N1 EQU 8888H N2 EQU 4444H DATA ENDS CODE SEGMENT AX, DATA DS, AX SI, 5000H AX, N1 BX, N2 AX, BX [SI], AX AX, N1 AX, BX [SI+2], AX AX, N1 BX [SI+4], AX [SI+6], DX AX, N1 DX, 0000 BX [SI+8], AX [SI+0AH], DX AH, 4CH 21H
START: MOV MOV MOV MOV MOV ADD MOV MOV SUB MOV MOV MUL MOV MOV MOV MOV DIV MOV MOV MOV INT CODE ENDS END START
CODE TABLE:
17
MICROPROCESSORS LAB MANUAL Physical address Label Hex code Segment Effective address address 0D64 0000 B8 63 0D 0003 0005 0008 000B 000F 0011 0013 0016 0018 001B 001E 0020 0023 0026 0029 002C 002E 0031 0034 0036 8E D8 BE 00 50 A1 00 00 8B 1E 02 00 03 C3 89 04
Mnemonic MOV MOV MOV MOV MOV ADD MOV MOV SUB MOV MOV MUL MOV MOV MOV MOV DIV MOV MOV MOV INT
Operand AX,0D63
;Initialize data segment DS,AX SI,5000 AX,[0000] BX,[0002] AX,BX [SI],AX AX,[0000] ;Initialize SI with 5000 ;copy the contents of 0000 ;Copy the contents of 0002 ;Add the contents of AX with BX ;Copy the result in [SI]
A1 00 00 2B C3
89 44 02 A1 00 00 F7 E3 89 44 04 89 54 06 A1 00 00 BA 00 00 F7 F3 89 44 08 89 54 0A B4 CD 4C 21
;copy the contents of 0000 AX,BX ;Subtract the contents of AX with BX [SI+02],AX ;Move the result into [SI+2] AX,[0000] ;Copy the contents of 0000 BX ;Multiply AX with BX [SI+04]AX ;Move the lower word of result into [SI+4] [SI+06],BX ;Move the higher word of result into [SI+6] AX,[0000] ;Copy the contents of 0000 DX,0000 ;Initialize DX with 0000 ;Perform division with BX [SI+08],AX ;Move the quotient into [SI+8] [SI+0AH],AX ;Move the remainder into [SI+0A] AH,4C ;Terminate the program 21h BX
RESULT:
D 5000:
CC CC
44 44
20 64 68 24
02 00 00 00
VIVA-VOCE QUESTIONS
ADITYA ENGINEERING COLLEGE 18
ECE Dept.
1. Which technique is used in Stacks? 2. Give the number of flags in 8086 P? 3. What are the different interrupts in 8086 P? 4. How many address lines are there in 8086 P? 5. What are the different addressing modes available in 8086 P?
19
ECE Dept.
20
ECE Dept.
Initialize
data segment
Load the BX register with no: of bytes Copy the contents from the memory location n1 [bx] to AL
Decrement BX
no
21
MICROPROCESSORS LAB MANUAL 1 Get count into CX register & Load BX register with no of bytes
ECE Dept.
Decrement BX
no
YES Stop
22
MICROPROCESSORS LAB MANUAL PROGRAM: ASSUME CS: CODE, DS: DATA DATA SEGMENT N1 DB 33H, 33H, 33H N2 DB 11H, 11H, 11H COUNT EQU 0003H SUM DB 03H DUP (00) DIFF DB 03H DUP (00) DATA ENDS CODE SEGMENT ORG 1000H START: MOV AX, DATA MOV DS, AX MOV CX, COUNT MOV BX, 0002H BACK: CLC MOV AL, N1 [BX] ADC AL, N2 [BX]
ECE Dept.
LOOP BACK MOV CX, COUNT MOV BX, 0002H BACK1: MOV AL, N1 [BX] SBB AL, N2 [BX]
LOOP BACK1 MOV AH, 4CH INT CODE ENDS END START 21H
23
MICROPROCESSORS LAB MANUAL CODE TABLE: Physical address Segment Effective address address 0D64 1000 1003 1005 1008 100B 100F 1013 1017 1018 101A 101D 1020 1024 1028 102C 102D 102F 1031 RESULT: D 0000: 33 33 33 11 11 11 44 44 44 22 22 22 L2 L1 Lab el Hex code Mnemonic Operand
ECE Dept.
comments
B8 63 0D 8E D8 B9 03 00 BB 02 00 8A 87 00 00 12 87 00 00 88 87 06 00 4B E2 F1 B9 03 00 BB 02 00 8A 87 00 00 1A 87 03 00 88 87 09 00 4B E2 F1 B4 4C CD 21
MOV MOV MOV MOV MOV ADC MOV DEC LOOP MOV MOV MOV SBB MOV DEC LOOP MOV INT
AX,0D63 DS,AX CX,0003 BX,0002 AL,[BX+0000] AL,[BX+0003] [BX+0006],AL BX L1 CX,0003 BX,0002 AL,[BX+0000] AL,[BX+0003] [BX+0009],AL BX 1020 AH,4C 21
;Initialize the count CX with 0003 ;Move the value 02 in BX register ;Copy the contents of BX+0000 ;Perform ADC with[BX+0000] ;Move the result in BX+0006 location ;Decrement the contents of BX ;Decrement the counter and go to L1 until CX is zero ;Initialize the counter CX with 0003 ;Move the number 02 in BX register ;Copy the contents of BX+0000 ;Perform SBB with [BX+0003] ;Move the result in BX+0009 location ;Decrement the contents of BX ;Decrement the counter and go to L2 until CX is zero ;Terminate the program
VIVA-VOCE QUESTIONS
ADITYA ENGINEERING COLLEGE 24
ECE Dept.
6. 7. 8. 9. 10.
What is the word length of 8086 P? Which signal is used to separate address and data bus? How many multiplexed lines are there in 8086 P? What is the maximum memory addressing and I/O addressing capability of 8086 P? From which the 8086 P starts execution after reset?
25
ECE Dept.
26
ECE Dept.
Initialize
data segment
27
Decreme nt CX, if MICROPROCESSORS LAB MANUAL CX not equal to 1 Zero jump to step12 Perform signed division
ECE Dept.
Stop
28
MICROPROCESSORS LAB MANUAL PROGRAM: ASSUME CS: CODE , DS: DATA DATA SEGMENT N1 DB 08H N2 DB 04H RESULT DW 02 DUP (00) DATA ENDS CODE SEGMENT START: MOV AX, DATA MOV DS, AX MOV AL, N1 NEG AL CBW MOV BL, N2 IMUL BL MOV [RESULT], AX MOV AL, N1 NEG CBW IDIV BL AL
ECE Dept.
MOV [RESULT+2], AX MOV AH, 4CH INT CODE ENDS END START 21H
29
MICROPROCESSORS LAB MANUAL CODE TABLE: Physical address Label Hex code Mnemonic Segment address 0D64 Effective address 0000 0003 0005 0008 000A 000B 000F 0011 0014 0017 0019 001A 001C 001F 0021
B8 63 0D 8E D8 A0 00 00 F6D8 98 8A 1E 01 00 F6 EB A3 02 00 A0 00 00 F6 D8 98 F6 FB A3 04 00 B4 4C CD 21
MOV MOV MOV NEG CBW MOV IMUL MOV MOV NEG CBW IDIV MOV MOV INT
AX,0D63 ;Initialize the data segment DS,AX AL,[0000] AL ;Copy the [0000] in AL ;Negate contents of AL ;Convert Byte to Word BL,[0001] BL [0002],AX AL,[0000] AL ;Get second number in BL ;Perform IMUL with BL ;Move the result into [0002] ;Get first number in AL ;Negate the contents of AL ;Convert Byte to Word BL [0004],AX AH,4C ;Terminate the program 21 ;Perform IDIV with BL ;Move the result into [0004]
RESULT: D 0000: 08 04 E0 FF FE 00 00 00
VIVA-VOCE QUESTIONS
11. 12. 13. 14. 15. How does the 8086 P differentiate between an opcode and instruction data? Which interrupt is having the highest priority? what do you mean by addressing modes? What is the addressing mode of an instruction communicated to the cpu? What are the assembler directives?
30
ECE Dept.
31
ECE Dept.
Perform addition
Perform subtraction
32
Decreme nt CX, if MICROPROCESSORS LAB MANUAL CX not equal to 1 Zero jump to step12 Perform ASCII adjustment after subtraction
ECE Dept.
Perform multiplication
Perform division
Stop
33
MICROPROCESSORS LAB MANUAL PROGRAM: ASSUME CS: CODE, DS: DATA DATA SEGMENT N1 DB 8 N2 DB 4 DATA ENDS CODE SEGMENT ORG 1000H START: MOV AX, DATA MOV DS, AX MOV SI, 1000H XOR AX, AX XOR BX, BX MOV AL, N1 MOV BL, N2 ADD AX, BX AAA MOV [SI], AX XOR AX, AX MOV AL, N1 SUB AL, BL AAS MOV [SI+2], AX MOV AL, 08H MOV BL, 04H MUL BL AAM MOV [SI+4], AX
ECE Dept.
34
MICROPROCESSORS LAB MANUAL AAD DIV BL MOV [SI+6], AX MOV AH, 4CH INT 21H CODE ENDS END START CODE TABLE: Physical address Segment address 0D64 Effective address 1000 1003 1005 1008 100A 100C 100F 1013 1015 1016 1018 101B 101D 101E Label Hex code Mnemonic Operand
ECE Dept.
comments
B8 63 0D 8E D8 BE 00 10 33 C0 33 DB A0 00 00 8A 1E 01 00 02 C3 37 89 04 A0 00 00 2A C3 3F 89 44 02
MOV MOV MOV XOR XOR MOV MOV ADD AAA MOV MOV SUB AAS MOV
;Initialize SI with 1000 ;Perform XOR operation on AX ;Perform XOR operation on BX ;Get first no. in AL ;Get second no. in BL ;Perform ADD AL , Bl ;Perform AAA
;Move the result in[SI] ;Get first no. in AL ;Perform SUB AL, BL ;Perform AAS
[SI+02],AX
35
MICROPROCESSORS LAB MANUAL 1021 B0 08 MOV 1023 1025 1027 1029 102C 102E 1031 1033 1035 B3 04 F6 E3 D4 0A 89 44 04 D5 0A F6 F3 89 44 06 B4 4C CD 21 MOV MUL AAM MOV AAD DIV MOV MOV INT
AL,08 BL,04 BL
ECE Dept. ;Load AL with 08h ;Load BL with 04h ;Perform MUL with BL ; Perform AAM
[SI+04],AX
BL [SI+06],AX AH,4C 21
;Perform division with BL ;Move the result in [SI+6] ;Terminate the program
RESULT: D 1000: 02 01 06 00 02 03 20 00
VIVA-VOCE QUESTIONS
16. 17. 18. 19. 20. What are the Programmable peripheral interfacing chips available? What is the memory capacity of 8086 P? How data can be transferred without using the microprocessor? How does the CPU identify between 8-bit and 16-bit operations? What are the different instruction types of 8086 P?
36
ECE Dept.
37
ECE Dept. :
MICROPROCESSORS LAB MANUAL PROGRAM: ASSUME CS: CODE, DATA SEGMENT BCD DB 17H ASCII DW? DATA ENDS CODE SEGMENT ORG 1000H START: MOV AX, DATA MOV DS, AX MOV AL, BCD MOV CL, 04 MOV AH, AL AND AL, 0FH AND AH, 0F0H ROR AH, CL OR AL, 30H OR AH, 30H MOV ASCII, AX MOV AH, 4CH INT 21H CODE ENDS END START DS: DATA
ECE Dept.
39
MICROPROCESSORS LAB MANUAL CODE TABLE: Physical address Segment address 0D64 Effective address 1000 1003 1005 1007 1009 100B 100D 1010 1012 1014 1017 101A 101C Label Hex code Mnemonic Operand
B8630D 8ED8 B017 B104 8AE0 240F 80E4F0 D2CC 0C30 80CC30 A30100 B44C CD21
MOV MOV MOV MOV MOV AND AND ROR OR OR MOV MOV INT
AX,0D63 DS,AX AL,17 CX,0004 AH,AL AL,0F AH,F0 AH,CL AL,30 AH,30 [0001],AX AH,4C 21
;Get a number in AL ;Initialize CX with 0004 ;Copy the contents of AL ;Perform AND ALwith 0F ;Perform AND AHwith F0 ;Rotate right AH, CL ;Perform OR AL with 30 ;Perform OR AH with 30 ;Move the result in [0001] ;Terminate the program
RESULT: D 0000: 17 37 31
VIVA-VOCE QUESTIONS
21. 22. 23. 24. 25. What is a linker? What are the DOS function calls? How a CALL instruction will be executed? What is the role of stack? What is an interrupt vector table of 8086 P?
40
ECE Dept.
41
ECE Dept.
Stop
42
ECE Dept.
DATA SEGMENT ASCII1 DB 1 ASCII2 DB 7 BCD DB ? DATA ENDS CODE SEGMENT ORG 1000H
START:
MOV AX, DATA MOV DS, AX MOV CL, 04H MOV AL, ASCII1 MOV BL, ASCII2 AND AL, 0FH AND BL, 0FH ROR AL, CL OR AL, BL MOV BCD, AL MOV AH, 4CH INT 21H
43
MICROPROCESSORS LAB MANUAL CODE TABLE: Physical address Segment address 0D64 Effective address 1000 1003 1005 1007 100A 100E 1010 1013 1015 1017 101A 101C Label Hex code Mnemonic Operand
B8 63 0D 8E D8 B1 04 A0 00 00 8A 1E 01 00 24 0F 80 E3 0F D2 C8 0A C3 A2 02 00 B4 4C CD 21
MOV MOV MOV MOV MOV AND AND ROR OR MOV MOV INT
AX,0D63 DS,AX CL,04 AL,[0000] BL.[0001] AL,0F BL,0F AL,CL AL,BL [0002],AL AH,4C 21
;Initialize count CX with 04 ;Get 1st no. in AL register ;Get 2nd no. in BL register ;Perform AND AL with 0Fh ; Perform AND BL with 0Fh ;Rotate right AL , CL ;Perform OR, AL with BL ;Move the result in [0002] ; Terminate the program
RESULT: D 0000:
31
37
17
VIVA-VOCE QUESTIONS
26. 27. 28. 29. 30. What is the difference between near and far procedure? What is the difference between macro and sub-routine? What is a nested macro? What is the difference between software and hardware interrupt? What are the various modes available in 8255?
44
ECE Dept.
45
ECE Dept.
FLOW CHART
Initialize data segment and Load SI with offset list & Get a count with CX register & Initialize DX with 0000
NO Oo
NO Oo
46
ECE Dept.
Increment SI
NO
Stop
47
ECE Dept.
DATA SEGMENT LIST DB 0FFH, 0DDH, 04H, 05H, 98H RESULT DW ? DATA ENDS CODE SEGMENT ORG 1000H START: MOV AX, DATA MOV DS, AX LEA SI, LIST MOV CX, 0005H MOV DX, 0000H BACK: MOV AL, [SI] ROL AL, 01H JC NEGATIVE INC DL INC SI LOOP BACK JMP EXIT NEGATIVE: INC DH INC SI LOOP BACK EXIT: MOV [RESULT], DX MOV AH, 4CH INT 21H CODE ENDS END START
48
MICROPROCESSORS LAB MANUAL CODE TABLE: Physical address Segmen t address 0D64 Effective address 1000 1003 1005 1009 100C 100E 1010 1012 1014 1015 1017 1019 101A 101C 101D 101F 1023 1025 L2 L1 Back B8630D 8ED8 MOV MOV AX,0D63 DS,AX SI,[0000] CX,0005 AL,[SI] AL,01 L1 DL SI Back L2 Label Hex code Mnemonic Operand
ECE Dept.
Comments
;Initialize the data segment ; ; Load Effective addr. SI With 0000 ;Initialize the count CX with 0005 ;Copy the number of [SI] in AL ;Rotate Left AL , 01 ;If Barrow jump L1 ; Increment value of DL ;Increment value of SI ;Decrement count and go to Back until CX = 0 ;Go to L2 without condition ;No Operation
8B360000 LEA B90500 8A04 D0C0 7208 FEC2 46 E2F5 EB06 90 FEC6 46 E2ED MOV MOV ROL JB INC INC LOOP JMP NOP INC INC LOOP
:Decrement value of DH ;Increment value of SI ;Decrement counter and go to Back until CX=0 ;Move the result in [0005] location ;Terminate the program
21
RESULT: D 0000: FF DD 04 05 98 02 03
49
ECE Dept.
VIVA-VOCE QUESTIONS
31. 32. 33. 34. 35. What are the different registers in 8255? What are the different registers in 8257? What are the different registers in 8259? What are the different registers in 8086? What are the various modes of operation available in 8255?
50
ECE Dept.
51
ECE Dept.
FLOW CHART
Initialize data segment and Load SI with offset list & Get a count with CX register & Initialize DX with 0000
NO Oo
NO Oo
52
ECE Dept.
Increment SI
NO
Start
53
ECE Dept.
DATA SEGMENT LIST DB 05H,01H,03H,04H,08H,02H COUNT DW 0006H RESULT DW? DATA ENDS CODE SEGMENT ORG 1000H START: MOV AX, DATA MOV DS, AX MOV CX, COUNT MOV DX, 0000H MOV SI, OFFSET LIST BACK: MOV AL, [SI] ROR AL, 01H JC ODD INC DL INC SI LOOP BACK JMP EXIT ODD: INC DH INC SI LOOP BACK EXIT: MOV [RESULT], DX MOV AH, 4CH INT 21H CODE ENDS END START
54
MICROPROCESSORS LAB MANUAL CODE TABLE: Physical address Segment address 0D64 Effective address 1000 1003 1005 1009 100C 100F 1011 1013 1015 1017 1018 101A 101C 101D 101F 1020 1022 1026 1028 L2 L1 Back Label Hex code Mnemonic Operand comments
ECE Dept.
B8 63 0D 8E D8
MOV MOV
8B 0E 06 00 MOV BA 00 00 BE 00 00 8A 04 D0 C8 F2 08 FE C2 46 E2 F5 EB 06 90 FE C6 46 E2 ED 89 16 08 00 B4 4C CD 21 MOV MOV MOV ROR JB INC INC LOOP JMP NOP
;Initialize counter with [0006] ;Initialize DX register with 0000 ;Initialize SI with 0000 ;Load the 1st no. in AL
AL,[SI] ;Rotate right AL,01 AL,01 ;If Barrow go to L1 L1 ;Increment the value of DL DL ;Increment the value of SI SI Back L2 ;Decrement counter and go to Back until CX=0 ;Go to L2 without unconditional ;No Operation ;Increment the value of DH
DH ;Increment the Value of SI SI Back [0008],DX AH,4C 21 ;Decrement counter and go to Back until CX=0 ;Move the result in register DX ;Terminate the program
55
ECE Dept.
03
VIVA-VOCE QUESTIONS
36. 37. 38. 39. 40. In how many modes does 8086 microprocessor works? What are the conditions required to make 8086 to work in maximum mode? What is the difference between maskable and non-maskable interrupts? What is the difference between jump and loop instruction? What is the difference between the respective shift and rotate instructions?
56
ECE Dept.
57
ECE Dept.
FLOW CHART
Start
58
ECE Dept.
Stop
59
ECE Dept.
DATA SEGMENT N EQU 29H RESULT DB 02H DUP (0) DATA ENDS CODE SEGMENT ORG 2000h START: MOV AX, DATA MOV DS, AX MOV AL, N MOV BL, N MOV CL, 04H AND AL, 0Fh AND BL, 0F0h ROR BL, CL MOV [RESULT], BL MOV [RESULT+1], AL MOV AH, 4Ch INT 21h CODE ENDS END START
60
MICROPROCESSORS LAB MANUAL CODE TABLE: Physical address Segment address 0B3C Effective address 2000 2003 2005 2007 2009 200B 200D 2010 2012 2016 2019 201B RESULT: D 0B42:0000 29 02 09 Label Hex code Mnemonic Op code B8 3B 0B 8E D8 B1 04 B8 29 B3 29 24 0F 80 E3 F0 D2 CB 88 1E 00 00 A2 01 00 8A 07 CD 21 MOV MOV MOV MOV MOV AND AND ROR MOV MOV MOV INT operands AX,0B3B DS, AX CL,04h
ECE Dept.
Comments
; Initialize the count with 04h AL, N ;Packed number in AL BL, N ;Packed number in BL AL,0Fh ;AND Operation AL with 0F BL, 0F0h ;AND Operation BL with F0 BL,CL ;Rotate right BL, Cl [0000],AL ; Move the result in [0000] [0001], BL ;Move the result in [0001] AH, 4Ch ;Terminate the program 21 ;Stop
VIVA-VOCE QUESTIONS
41. 42. 43. 44. 45. How will you enter the single step mode of 8086? What is LOCK prefix? What is its use? What is REP prefix? What is its use? What is the difference between conditional and unconditional control transfer instructions? What are different string instructions?
61
ECE Dept.
62
ECE Dept.
FLOW CHART
Repeat the process of moving string byte from SI to DI until count equals to zero
Stop
63
MICROPROCESSORS LAB MANUAL PROGRAM: ASSUME CS: CODE, DS: DATA, ES: DATA
ECE Dept.
DATA SEGMENT LIST DB ADITYA COUNT EQU 06H DATA ENDS CODE SEGMENT ORG 1000H START: MOV AX, DATA MOV DS, AX MOV ES, AX MOV CX, COUNT MOV DI, 5000H LEA SI, LIST REP MOVSB
64
MICROPROCESSORS LAB MANUAL CODE TABLE: Physical address Segment address 0D64 Effective address 1000 1003 1005 1007 100A 100D 1011 1013 1015 Label Hex code Mnemonic Operand
ECE Dept.
Comments
B8 63 0D 8E D8 BE C0 B9 06 00 BF 00 50 8D 36 00 00 F3 A4 B4 4C CD 21
AX,0D63 DS,AX
ES,AX ;Initialize counter with 06 CX,0006 ;Initialize DI with 5000 DI,5000 ;Load SI with effective adr SI,[0000] ;Move the contents of SI MOVSB into DI ;Terminate the program AH,4C ;Stop 21
VIVA-VOCE QUESTIONS
What is the difference between inter-segment call and intra-segment call? What is meant by maskable interrupts? What is meant by non-maskable interrupts? What is meant by Program Status Word (PSW)? Draw the flag register format?
65
ECE Dept.
66
ECE Dept.
FLOW CHART
Start
67
ECE Dept.
YES
NO Stop
MICROPROCESSORS LAB MANUAL ASSUME CS: CODE, DS: DATA DATA SEGMENT LIST DB MICRO PROCESSOR COUNT EQU ($-LIST) DATA ENDS CODE SEGMENT ORG 1000H START: MOV AX, DATA MOV DS, AX MOV ES, AX MOV CX, COUNT MOV AX, CX MOV SI, OFFSET LIST MOV DI, (COUNT-1) MOV BX, 02 DIV BXS MOV CX, AX BACK: MOV AL,[SI] XCHG AL,[DI] MOV [SI], AL INC SI DEC DI LOOP BACK MOV AH, 4CH INT 21H CODE ENDS END START
ECE Dept.
CODE TABLE:
69
MICROPROCESSORS LAB MANUAL Physical address Segment Effective address address 0D64 1000 1003 1005 1007 100A 100C 100F 1012 1015 1017 101A 101B 101D 101F 1020 1021 1023 1025 Back Label Hex code B8 63 0D 8E D8 8E C0 B9 0F 00 8B C1 BE 00 00 BF 0E 00 BB 02 00 F7 F3 8B C8 8A 04 86 05 88 04 46 4F E2 F6 B4 4C CD 21 Mnemonic MOV MOV MOV MOV MOV MOV MOV MOV DIV MOV MOV XCHG MOV INC DEC LOOP MOV INT Operand AX,0D63 DS,AX ES,AX CX,000F AX,CX SI,0000 DI,000E BX,0002 BX CX,AX AL,[SI] AL,[DI] [SI],AL SI DI Back AH,4C 21
;Initialize the extra segment ;Initialize the counter with 000F ;Load AX with CX value ;Initialize SI with 0000 ;Initialize DI with 000e ;Move the value 02 in BX ;Division operation with BX ;Move AX value in CX ;Load the 1st no. in AL ;Exchange AL,[DI] ;Move the no in AL into [SI] ;Increment the value of SI ;Decrement the value of DI ;Decrement the counter and go to Back until CX=0 ;Terminate the program ;Stop
RESULT: D 0000: 72 R
6F 73 O S
73 S
65 E
63 C
6F O
72 R
70 P
20
6F 72 O R
63 C
69 I
6D M
VIVA-VOCE QUESTIONS
70
MICROPROCESSORS LAB MANUAL 51. What are the general purpose registers in 8086? 52. 53. 54. 55. What is meant by stack pointer? Which instructions are used for stack operations? What is the length of physical address? Distinguish between segment registers and index registers?
ECE Dept.
71
MICROPROCESSORS LAB MANUAL ECE Dept. ABSTRACT: Assembly language program to do sorting of numbers in a given series PORT USED: None REGISTERS USED: CX, DX, AL, SI ALGORITHM: Step1: Start Step2: Initialize data segment Step3: Load CX register with count Step4: Copy the contents from CX to DX Step5: Load SI with offset list Step6: Copy the contents from DX to CX Step7: Move the contents from memory location SI to AL Step8: Increment SI Step9: Compare AL contents with [SI] Step10: Jump to step15 if carry Step11: Exchange the contents of AL with [SI] Step12: Decrement SI Step13: Move the contents from AL to memory location SI Step14: Increment SI Step15: Decrement CX and jump to step7 if no zero Step16: Decrement DX and jump to step5 if no zero Step17: Stop
72
ECE Dept.
FLOW CHART
Initialize data segment and Load SI with offset list & Get a count with CX register
Increment SI
YES
73
ECE Dept.
Increment SI
Decremen t CX If CX =0
NO
YES
NO
74
ECE Dept.
DATA SEGMENT LIST DB 56H, 12H, 72,32H COUNT EQU 0003H DATA ENDS CODE SEGMENT ORG 1000H START: MOV AX, DATA MOV DS, AX MOV CX, COUNT MOV DX, CX AGAIN: MOV SI, OFFSET LIST MOV CX, DX BACK: MOV AL, [SI] INC SI CMP AL, [SI] JC NEXT XCHG [SI], AL DEC SI MOV [SI], AL NEXT: INC SI LOOP BACK DEC DX JNZ AGAIN MOV AH, 4CH INT 21H CODE ENDS END START
75
MICROPROCESSORS LAB MANUAL CODE TABLE: Physical address Segment address 0D64 Effective address 1000 1003 1005 1008 100A 100D 100F 1011 1012 1014 1016 1018 1019 101B 101C 101E 101F 1021 1023 L1 Back L2 Label Hex code Mnemonic Operands
ECE Dept.
Comments
B8 63 0D 8E D8 B9 03 00 8B D1 BE 00 00 8B CA 8A 04 46 3A 04 72 06 86 04 4E 88 04 46 E2 F1 4A 75 E9 B4 4C CD 21
MOV MOV MOV MOV MOV MOV MOV INC CMP JB XCHG DEC MOV INC LOOP DEC JNZ MOV INT
AX,0D63 DS,AX CX,0003 DX,CX SI,0000 CX,DX AL,[SI] SI AL,[SI] L1 AL,[SI] SI [SI],AL SI Back DX L2 AH,4C 21
;Initialize counter with 0003 ;Load DX with Value of CX ;Initialize SI with 0000
;Get 1st no. in AL ;Increment value of SI ;Compare AL,[SI] ;If barrow go to L1 ;Exchange the values of AL , SI ;Decrement the value of SI ;Copy the AL reg into [SI] ;Increment the value of SI ;Decrement the counter and go to Back ;Decrement the DX ;Jump no zero go to L2 ;Terminate the program
RESULT:
D 0000
12
32
56
72
76
ECE Dept.
VIVA-VOCE QUESTIONS
56. 57. 58. 59. 60. How the physical address is calculated? What is the difference between overlapping and non-overlapping segmentation? What is the use of memory segmentation? What is the clock frequency of 8086 microprocessor? What is the function of overflow flag?
77
MICROPROCESSORS LAB MANUAL ABSTRACT: Assembly language program to find the Length of a string PORT USED: None REGISTERS USED: AX, BL ALGORITHM: Step1: Start Step2: Initialize data segment & extra segment Step3: Load AL with $ Step4: Load SI with offset list Step5: Initialize DX with 0000 Step6: Scan string byte from DI memory location until AL =ES: DI Step7: Jump to step10 if equal Step8: Increment DX Step9: Jump to step6 Step10: Move the result to the memory location Step11: Stop
ECE Dept.
78
ECE Dept.
FLOW CHART
yes If equal NO
Stop
79
MICROPROCESSORS LAB MANUAL PROGRAM: ASSUME CS: CODE, DS: DATA, ES: DATA DATA SEGMENT LIST DB ADITYA$ LEN DB ? DATA ENDS CODE SEGMENT ORG 1000H START: MOV AX, DATA MOV DS, AX MOV ES, AX MOV AL,$ LEA SI, LIST MOV DX, 0000H BACK: SCASB JE EXIT INC DX JMP BACK EXIT: MOV LEN, DX MOV AH, 4CH INT 21H CODE ENDS END START
ECE Dept.
80
MICROPROCESSORS LAB MANUAL CODE TABLE: Physical address Segment address 0D64 Effective address 1000 1003 1005 1007 1009 100D 1010 1011 1013 1014 1016 101A 101C L1 L2 Label Hex code Mnemonic Operands
ECE Dept.
Comments
MOV MOV MOV MOV LEA MOV SCASB JZ INC JMP MOV MOV INT
;Initialize the extra segment ;Move 24 into AL register ;Load SI Effective address00 ;Initialize the DX with 0000 ;Scan string byte with SI
L1 DX L2 [0007],DX AH,4C 21
;If equal to zero go to L1 ;Increment the value of DX ;Go to L2 with out condition ;Move the result into [0007] ;Terminate the program
RESULT: D 0000: 61 A 64 D 69 I 74 T 79 Y 61 A 24 $ 06
VIVA-VOCE QUESTIONS
61. 62. 63. 64. 65. What are the advantages of 8086 microprocessor over 8085 microprocessor? What is the default register used in string operations? What is the feature size of 8086 microprocessor? What is meant by volatile memory? What are the different non-volatile RAMs?
81
ECE Dept.
82
ECE Dept.
FLOW CHART
Compare AX with BX
NO If equal
83
ECE Dept.
NO If equal
YES
Stop
84
MICROPROCESSORS LAB MANUAL PROGRAMS: ASSUME LIST1 LEN1 LIST2 LEN2 RESULT DATA ENDS CODE SEGMENT ORG 1000H START: MOV MOV MOV MOV MOV CMP JNE MOV MOV MOV REP JNE MOV JMP EXIT: NEXT: CODE ENDS END START MOV MOV INT AX, DATA DS, AX ES, AX AX.LEN1 BX, LEN2 AX, BX EXIT CX, AX SI, OFFSET LIST1 DI, OFFSET LIST2 CMPSB EXIT RESULT, 5555H NEXT RESULT, 0FFFFH AH, 4CH 21H CS: CODE, DS: DATA, ES: DATA DB DB DW ? ADITYA ADITYA EQU ($-LIST1) EQU ($-LIST2)
ECE Dept.
85
MICROPROCESSORS LAB MANUAL CODE TABLE: Physical address Segmen t address 0D64 Effective address 1000 1003 1005 1007 100A 100D 100F 1011 1013 1016 1019 101B 101D 1023 1025 1026 102C 102E L1 L2 B8 63 0D 8E D8 8E C0 B8 06 00 BB 06 00 3B C3 75 15 8B C8 BE 00 00 BF 06 00 F3 A6 75 09 C7060C005555 EB07 90 C7060C00FFFF B44C CD21 MOV MOV MOV MOV MOV CMP JNZ MOV MOV MOV REPZ JNZ MOV JMP NOP MOV MOV INT PTR[000C],FFFF AH,4C 21 AX,0D63 DS,AX ES,AX AX,0006 BX,0006 AX,BX L1 CX,AX SI,0000 DI,0006 CMPSB L1 PTR[000C],5555 L2 Label Hex code Mnemonics Operands
;Initialize extra segment ;Load AX with 0006 ;Load BX with 0006 ;Compare AX with BX ;If no 0 go to L1 ;Copy the contents of AX into CX ;Initialize SI with 0000 ;Load DI with 0006 ;Compare with SI ;If no 0 go to L1 ;Get 5555 in 000C location ;Go to unconditional L2 ;No Operation ;Get FFFF into 000C location ; Terminate the program
RESULT:
86
ECE Dept.
VIVA-VOCE QUESTIONS
What is meant by SRAM? What does instruction-pipelining mean? What is the difference between SRAM and DRAM? What do ROM, EEPROM, and UVPROM mean? What does masked ROM mean? How data can be transferred in interrupt I/O?
87
ECE Dept.
88
ECE Dept.
PROGRAM: ASSUME CS: CODE, DS: DATA CODE SEGMENT ORG 1000h START: MOV AL, 13h MOV AH, 00 INT 10h BACK: MOV AH, 00h INT 16h CMP AL, q JE EXIT MOV BL, 0Fh MOV AH, 14h INT 10h JMP BACK EXIT: MOV AH, 4Ch INT 21h CODE ENDS END START
89
MICROPROCESSORS LAB MANUAL CODE TABLE: Segment base address 0B3D Effective address 1000 1002 1004 1006 1008 100A 100C 100E 1010 1012 1014 1016 1018 Label Hex code B0 13 B4 00 CD 10 B4 00 CD 16 3C 71 74 08 B3 0F B4 0F CD 10 EB F0 B4 4C CD 21 Mnemonics MOV MOV INT MOV INT CMP JZ MOV MOV INT JMP MOV INT Operands AL, 13 AH, 00 10 AH, 00 21 AL, 71 L1 BL, 0F AH, 0F 10 L2 AH, 4C 21
ECE Dept.
Comment ;Move the 13 into AL register ;Initialize the AH register with 00 ;Keyboard Interrupt ; Initialize the AH register with 00 ; Keyboard Interrupt ;Compare the data 71 with AL register ;If equal to zero go to L1 ;Move 0F into the BL register ;Move 0F into the AH register ;Keyboard Interrupt ;Jump to L2 ;Move 4C into AH register ;Go to DOS commands
RESULT:
90
ECE Dept.
PROGRAM:
91
MICROPROCESSORS LAB MANUAL ASSUME CS: CODE, DS: DATA DATA SEGMENT ORG 3000h RESULT DB 50h DUP (0) DATA ENDS CODE SEGMENT ORG 1000h START: BACK: MOV SI, OFFSET RESULT MOV AH, 00h INT 16h CMP AL, q MOV [SI], AL JE EXIT INC SI JMP BACK EXIT: MOV AH, 4Ch INT 21h CODE ENDS END START
ECE Dept.
CODE TABLE:
92
MICROPROCESSORS LAB MANUAL Segment base address 0E42 Effective address 1000 1003 1005 1007 1009 100B 100D 100E 1010 1012 L1 Label Hex code BE 00 30 L2 B4 00 CD 16 3C 71 88 04 74 03 46 EB F3 B4 4C CD 21 Mnemonics MOV MOV INT CMP MOV JZ INC JMP MOV INT Operands SI, 3000 AH, 00 16 AL, 71 [SI] , AL L1 SI L2 AH, 4Ch 21
ECE Dept. Comment ;Initialize the SI with 3000h ;Initialize the AH register with 00 ;Bios keyboard Interrupt ;Compare 71 with AL register ;Move the data in AL register into [SI] ;If zero go to L1 ;Increment the value of SI ;Go to L2 with out condition ;Terminate the program ;Stop
RESULT: D 3000 6D 69 63 72 6F 70 72 M I C R O P 6F 63 65 73 73 6F 72 73 20 6C 61 62 E S S O R S L A B
R O C
93
MICROPROCESSORS LAB MANUAL ABSTRACT: To display the string character by using DOS commands. REGISTER USED: AL, AH, SI. PORTS USED: None ALGORITHM: Step1: Start Step2: Set the screen in Graphic mode Step3: Initialize AH with 00h Step4: Set the keyboard display mode. Step5: Initialize SI with 0000h. Step6: Copy the contents SI into AL register. Step7: Compare AL register with null character ! Step8: If equal go to step 11. Step9: Move the number 14h into AH register. Step10: Move the number 05h into BL register. Step11: Set keyboard display mode. Step12: Go to step 6. Step 13: Terminate the program. Step14: Stop.
ECE Dept.
PROGRAM:
94
MICROPROCESSORS LAB MANUAL ASSUME CS: CODE, DS: DATA DATA SEGMENT TEXT DB ADITYA MICROPROCESSORS LAB!' DATA ENDS CODE SEGMENT ORG 1000H START: AX, DATA MOV DS, AX MOV AL, 13H; SET the screen in graphics mode MOV AH, 00 INT 10H MOV SI, 00H BACK: MOV AL, TEXT [SI] CMP AL,'!' JE EXIT MOV AH, 14 MOV BL, 05H INT 10H INC SI JMP BACK EXIT: MOV AH, 4CH INT 21H CODE ENDS END START CODE TABLE:
ECE Dept.
95
MICROPROCESSORS LAB MANUAL Segment Effective Label Hex code Mnemonics base address address 0B41 1000 B8 3F 0B MOV 1003 1005 1007 1009 100B 100E 1012 1014 1016 1018 101A 101C 101D 101F 1021 L1 L2 8E D8 B0 13 B4 00 CD 10 BE 00 00 8A 80 40 00 3C 21 74 09 B4 0E B3 05 CD 10 46 EB FF B4 4C CD 21 MOV MOV MOV INT MOV MOV CMP JZ MOV MOV INT INC JMP MOV INT
;Move the13 into AL register. AH, 00 ;Initialize the AH register with 0000 10 ;Set the keyboard display mode SI, 0000 ;Initialize SI with 0000 location AL, [SI+00] ;Copy the contents of SI into AL AL, 21 ;Compare the value 21 with AL register L1 ;If equal to zero go to L1 AH, 0E ;Load AH register with 0Eh BL, 05 ;Load BL register with 05h 10 ;Set the keyboard display mode SI ;Increment value of SI L2 ;Jump go to L2 with out condition AH, 4Ch ;Terminate the program 21 ;Dos command interrupt
RESULT:
MICROPROCESSORS LAB MANUAL AIM: To study the functioning of programmable peripheral interfacing 8255. With port A & port B as out put port With port A as input and port B as output. REGISTERS USED: AX, CX, DX. PORTS USED: port A and port B. CONNECTIONS: Study card; J1 of the study card adapter to I5 of ESA 8086/88.
ECE Dept.
DESCRIPTION: The 8255 is a general purpose programmable I/O device with 24 I/O lines. These I/O Lines are grouped as shown below: Group A . Port A (8 bits PA0 to PA7) and Port C (4 bits PC7 to PC4). 16 Group B . Port B (8 bits PB0 to PB7) and Port C (4 bits PC3 to PC0). These groups can be operated in 3 different modes: mode 0, mode 1, and mode 2. In Mode 0 the three ports, A, B, and C, may be programmed as input or output. In mode 1 Ports A and B may be programmed as input or output, but port C is used to generate Handshake and interrupt signals. In mode 2, port A becomes a bi-directional port and 5 I/O lines of port C are used for handshaking and interrupt signals. The pin-out of the 8255 is given on the picture shown below.
97
MICROPROCESSORS LAB MANUAL ECE Dept. Following is the description of the inputs and outputs used for interfacing to the 8255: CS A low on this input pin enables communication between the 8255 and the device Controlling it. 47 RD A low on this input pin enables the 8255 to send data or status information to the Device controlling the 8255. WR A low on this input pin enables the device controlling the 8255 to write data or Control words to the 8255. A0 and A1 These input address lines, in conjunction with the RD and WR signals, allow the selection of one of three ports or the control register, as defined by the table given below: A1 A0 Location 0 0 Port A 0 1 Port B 1 0 Port C 1 1 Control Register RESET A high on this input pin clears the control register and all ports are set to input Mode. To program the 8255 PPI, one must write a control word to the control register. This Control word will define how the 8255 is going to behave. The table shown below defines the value of each bit of the control word: Control word bit Function D0 1 = Port C (lower) is input, 0 = Port C (lower) is output D1 1 = Port A is input, 0 = Port A is output D2 1 = Port B mode 1, 0 = Port B mode 0 D3 1 = Port C (upper) is input, 0 = Port C (upper) is output D4 1 = Port A is input, 0 = Port A is output D5 D6 Port A 00 = Mode 0, 01 = Mode 1, 1X = Mode 2 D7 1 = Mode set flag active 48 Procedure Write a program to: 1. Reset and initialize the 8255 to mode 0 with ports A, B, and C defined as outputs.
98
MICROPROCESSORS LAB MANUAL ECE Dept. 2. Create a menu of options to allow for the selection of which port is going to biased to simulate a three bits up-counter, and to quit the program. 3. When a port is selected from the menu, the screen should be cleared and message indicating which port is in use should be displayed. The counting sequence should be displayed both on the screen and on the LED s associated with The selected port until a key is pressed on the keyboard, at which time you start back at step 2.
99
ECE Dept.
1.
ALGORITHM: Step 1: start Step 2: move the control word address 0FF46 to register DX Step 3: move 80 to AL register. Step 4: locate the contents in AL register to DX register using port out. Step 5: move 55 to AL register. Step 6: Initialize port A address. Step 7: locate the contents in AL register to DX register using port out. Step 8: Call subroutine program. Step 9: complement the contents of AL register. Step 10: initialize port B address. Step 11: locate the contents in AL register to DX register using port out. Step 12: Call subroutine program. Step 13: Go step 6. Step 14: Stop. ALGORITHM FOR SUBROUTINE:
100
MICROPROCESSORS LAB MANUAL Step1: Load CX register with 0000h. Step2: Decrement CX and go to step2 until the count CX equal to zero. Step3: Return to main program.
ECE Dept.
101
ECE Dept.
FLOW CHART
Start
Initialize the control word register Move the data 80h into AL register & Locate the contents in AL to DX register using port out
Move the value 00 into CX register, decrement CX register and jump to main program if CX is equal to zero
102
ECE Dept.
1 2
Locate the contents in AL register into DX register using port out Move the value 00 into CX register, decrement CX register and jump to main program if CX is equal to zero
Jum p
Stop
103
MICROPROCESSORS LAB MANUAL PROGRAM: MOV DX, 0FF46 MOV AX, 80 OUT DX, AL MOV AX, 55 RPT: MOB DX, 0FF40 OUT CALL NOT DX, AX DELAY AX
ECE Dept.
104
MICROPROCESSORS LAB MANUAL CODE TABLE: Physical address Segment address 0000 Effective address 5000 5003 5006 5007 500A 500D 500E 5011 5013 5016 5017 501A Rpt Label Hex code Mnemonic Op code BA 46 FF B8 80 00 EF B8 55 00 BA 40 FF EF E8 EE 1F FD D0 BA 42 FF EF E8 E9 1F EB F1 MOV FF46 MOV OUT MOV MOV 0FF40 OUT CALL NOT MOV 0FF42 OUT CALL JMP operands DX , AX, 0080 DX , AX
ECE Dept.
Comments
AX , 0055 Move 55 to AX register. DX , DX,AX 6000 AX DX , DX , AX 6000 RPT Move 0FF40 to DX register. Move AX content to DX Go to subroutine Complement the AX register Initialize the port B address. Move the contents of AX into DX. Go to 6000 location Go to 500A location.
RESULT:
105
MICROPROCESSORS LAB MANUAL 2. PORT A AS INPUT PORT AND PORT B AS OUT PUT PORT. ALGORITHM: Step 1: Start Step 2: Move the control word address 0FF40 to register DX Step 3: Move 90 to AL register. Step 4: Locate the contents in AL register to DX register using port out. Step 5: Move 55 to AL register. Step 6: Initialized port A address ie.,, 0FF40 to DX register. Step 7: Locate the contents in AL register to DX register using port IN. Step 8: Complement the contents of AL register. Step 9: Initialize port B address ie,,.0FF42 to DX register. Step 10: Locate the contents in AL register to DX register using port out. Step 11: Go step 5. Step 12: Stop.
ECE Dept.
106
ECE Dept.
FLOW CHART
Start
Initialize the control word register Move the data 90h into AL register & Locate the contents in AL to DX register using port out
107
ECE Dept.
Jum p
Stop
108
ECE Dept.
MOV DX, 0FF46 MOV AX, 90 OUT RPT: MOV MOV IN NOT MOV OUT JMP DX, AX AL, 55 DX, 0FF40 AX, DX AX DX, 0FF42 DX, AX RPT
109
MICROPROCESSORS LAB MANUAL CODE TABLE: Physical address Segment address 0000 Effective address 4000 5003 5006 5007 500A 500D 5011 5013 5016 501A Rpt Label Hex code Mnemonic Op code BA 46 FF B8 90 00 EF B8 55 00 BA 40 FF EF FD D0 BA 42 FF EF EB F1 MOV FF46 MOV OUT MOV MOV 0FF40 IN NOT MOV 0FF42 OUT JMP operands DX ,
ECE Dept.
Comments
Move FF46 to DX register AX, 0090 Load AX with 90 DX , AX Move AX content to DX AX , 0055 Move 55 to AX register. DX , Move 0FF40 to DX register. AX,DX Move DX content to AX AX Complement the AX register DX , Initialize the port B address. DX , AX Move the contents of AX into DX. RPT Go to 500A location.
RESULT:
VIVA-VOCE QUESTIONS
72. 73. 74. 75. 76. 77. 78. 79. 80. 81. How data can be transferred in programmed I/O? What is the difference between machine language and assembly language? Expand USART? What are the signals required for memory read operation? What are the signals required for memory write operation? Why 8086 uses hexadecimal number system? On which data stepper motor works? How the stepper motor can be interfaced to 8086 microprocessor? Write the syntax for 32-bit division operation? Give an example for relative based indexed addressing mode?
110
ECE Dept.
111
MICROPROCESSORS LAB MANUAL ALGORITHM: (FOR TRIANGULAR WAVE): Step 1: Start Step 2: Initialize the control word register Step 3: Move 80 to AL register. Step 4: Locate the contents in AL register to DX register using port out. Step 5: Move 00FF to CX register. Step 6: Move 00 to AL register. Step 7: Initialize the port A address. Step 8 : Locate the contents of AL to DX register. Step 9: Increment the value in AL by one. Step 10: Locate AL contents to DX register.
ECE Dept.
Step 11: Decrement the value of CX register by one and move to step 6 if CX not equal to zero. Step 11: Other wise move 00FF to CX register. Step 12: Decrement the value of AL by one. Step 13: Locate the contents in AL register to DX register. Step 14: Decrement the value of CX by one and move to step 11 if CX not equal to zero. Step 15: Otherwise move to step 5. Step 16: Stop.
112
ECE Dept.
FLOW CHART
Start
Initialize the control word register Copy the contents from AX to 80 & Locate the contents in AL to DX register using port out Move 0FF to CX register and
Move 00 to AL register
NO
Decremen t CX & CX =0
YES 2 1
113
ECE Dept. 2 1
NO
Jum p
Stop
114
ECE Dept.
PROGRAM (FOR TRIANGULAR WAVE): MOV DX, 0FFE6 MOV AL, 80 OUT DX, AL MOV DX, 0FFE0 MOV AX, 00 RPT: MOV CX, 0FF L1: OUT DX, AX INC AX LOOP L1 MOV CX, 0FF L2 : OUT DX,AX DEC AX LOOP L2 JMP RPT
115
MICROPROCESSORS LAB MANUAL CODE TABLE (FOR TRIANGULAR WAVE): Physical address Segment address 0000 Effective address 2000 2003 2006 2007 200A 200D 2010 2011 2012 2014 2017 2018 2019 201B L2 Rpt L1 Label Hex code Mnemonic Op code BA E6 FF MOV FFE6 B8 80 00 MOV EF OUT operands DX , AX, 0080 DX , AX DX , FFE0 AX , 0000 CX , 00FF DX , AX AX
ECE Dept.
Comments
Move FFE6 to DX register Load AX with 80 Move DX content to AX Move FFE0 to DX register Load AX with 0000 Move FF to CX register Move contents of AX to DX Increment the contents of AX Loop go to 2010 location Move 00FF to CX register Move the contents of AX into DX Decrement to AX register Loop go to 2017 location Jump to 200D location
RESULT:
116
ECE Dept.
ALGORITHM (FOR SAW TOOTH WAVE): Step 1: Start Step 2: Move the control word address 0FFE6 to register DX Step 3: Move 80 to AL register. Step 4: Locate the contents in AL register to DX register using port out. Step 5: Move 00 to AL register. Step 6: Move 00FF to CX register. Step 7: Locate or move 0FFE2 to DX register ie, port B address. Step 8: Locate AL contents to DX register. Step 9: Increment the value of AL register by one. Step 10: Decrement the value of CX register by one and move to step 8 if CX not equal to zero. Step 11: Otherwise move to step 5. Step 12 Stop.
117
ECE Dept.
FLOW CHART
Start
Initialize the control word register Copy the contents from AX to 80 & Locate the contents in AL to DX register using port out Move 00 to AX register
NO
Decremen t CX & CX =0
YES
Stop
118
ECE Dept.
PROGRAM (FOR SAW TOOTH WAVE): MOV DX, 0FFE6 MOV AL, 80 OUT DX,AL MOV DX, 0FFE0 MOV AX, 00 RPT: L1: MOV CX, 0FF OUT DX, AX INC AX LOOP L1 MOV AX, 00 OUT DX, AX JMP RPT
119
MICROPROCESSORS LAB MANUAL CODE TABLE (FOR SAW TOOTH WAVE): Physical address Segment address 0000 Effective address 3000 3003 3006 3007 300A 300D 3010 3011 3012 3014 3017 3018 Rpt L1 Label Hex code Mnemonic Op code BA E6 FF B8 80 00 EF BA E0 FF B8 00 00 B9 FF 00 EF 40 E2 FC B8 00 00 EF EB F3 MOV MOV OUT MOV MOV MOV OUT INC operands DX , FFE6 AX, 0080 DX , AX DX , FFE0 AX , 0000 CX , 00FF DX , AX AX
ECE Dept.
Comments
Move FFE6 to DX register Load AX with 80 Move DX content to AX Move FFE0 to DX register Load AX with 0000 Move FF to CX register Move contents of AX to DX Increment the contents of AX Loop go to 2010 location Move 0000 to AX register Move the contents of AX into DX Jump to 300D location
RESULT:
120
MICROPROCESSORS LAB MANUAL ALGORITHM (FOR SQUARE WAVE): Step 1: Start Step 2: Move the control word address 0FFE6 to register DX Step 3: Move 80 to AL register. Step 4: Locate the contents in AL register to DX register using port out. Step 5: Move FF to AL register. Step 6: Locate the contents in AL register to DX register using port out . Step 7: Move 91 into CX register. Step 8: Decrement the value CX by one and jump to step 8 if CX not equal to zero. Step 9: Other wise move 00 to AL register. Step 10: Locate the contents in AL register to DX register using port out . Step 11: Move 91 into CX register. Step 12: Decrement the value CX by one and jump to step 12 if CX not equal to zero. Step 13: Jump to location step 5. Step 14: Stop.
ECE Dept.
121
ECE Dept.
FLOW CHART
Start
Initialize the control word register Copy the contents from AX to 80 & Locate the contents in AL to DX register using port out
Decremen t CX & CX =0 NO
YES 1 2
122
ECE Dept. 2 1
Locate the contents in AL register to DX register Move the data 91h into CX register
Jum p
Stop
123
MICROPROCESSORS LAB MANUAL PROGRAM (FOR SQUARE WAVE): MOV DX, 0FFE6 MOV AL, 80 OUT DX, AL MOV DX, 0FFE0 RPT: MOV AX, 0FF OUT DX, AX CALL DELAY MOV AX, 00 OUT DX, AX CALL DELAY JMP RPT DELAY PROGRAM: MOV CX, 1E NOP NOP L1: LOOP L1 RET
ECE Dept.
124
MICROPROCESSORS LAB MANUAL CODE TABLE (FOR SQUARE WAVE): Physical address Segment address 0000 Effective address 5000 5003 5006 5007 500A 500D 500E 5011 5014 5015 5018 DELAY PROGRAM: LOCATION 0000:6000 Physical address Base adder offset adder 0000 6000 6003 6004 6005 C3 Label Hex codes B9 1E 00 Mnemonics Op code Operand MOV CX,001E NOP NOP RET Rpt Label Hex code Mnemonic Op code BA E6 FF B8 80 00 EF BA E0 FF B8 FF 00 EF E8 FF EF B8 00 00 EF E8 E8 FF E8 F0 MOV FFE6 MOV OUT MOV MOV OUT CALL MOV OUT CALL JMP operands
Move FFE6 to DX register AX, 0080 Load AX with 80 DX , AX Move AX content to DX DX , FFE0 Move FFE0 to DX register AX , 00FF Load AX with 00FF DX,AX Move AX content to DX 6000 AX , 0000 Load AX with 0000 DX , AX Move the contents of AX into DX 6000 RPT Jump to 500A location
DX ,
RESULT:
125
ECE Dept.
ALGORITHM (FOR SINE WAVE): Step 1: Start Step 2: Move the control word address 0FFE6 to register DX Step 3: Move 80 to AL register. Step 4: Locate the contents in AL register to DX register using port out. Step 5: Initialize the SI with 4000h location. Step 6: Move the number 46 into the counter CX register. Step 7: Initialize the Port A address ie. 0FFE0 Step 8: Move the contents SI into AL register. Step 9: Locate the contents in AL register to DX register using port out.. Step 10: Increment the value of SI. Step 11: Decrement the counter and go to Step 8 until CX =0 Step 12: Jump to location step 5. Step 13: Stop.
126
MICROPROCESSORS LAB MANUAL PROGRAM FOR SINE WAVE: MOV DX, 0FFE6 MOV AL, 80 OUT DX, AL RPT: MOV SI, 4000 MOV CL, 46 MOV DX, 0FFE0 L1: MOV AL, [SI] OUT DX, AL INC SI LOOP L1 JMP RPT
ECE Dept.
127
MICROPROCESSORS LAB MANUAL CODE TABLE: Base address 0000 Effective address 2000 2003 2006 2007 200A 200D 2010 2012 2013 2014 2016 L1 RPT Label Hex code BA E6 FF B8 80 00 EF BE 0040 8B 46 00 BA E0 FF B8 C6 EF 46 E2 F5 EB EA Mnemonics MOV MOV OUT MOV MOV MOV MOV OUT INC LOOP JMP Operands DX, 0FFE6 AL, 80 DX, AL SI, 4000 CX , 46 DX, 0FFE0 AL, [SI] DX, AL SI L1 RPT
ECE Dept.
Comments ;Initialize control word register ;Load AL with 80 ;Read the data from AL register using port out ;Initialize the SI with 4000 ie,LOOK-UP TABLE ;Initialize the counter with 46h Initialize port A ;move the number in [SI] into al register ;read the data from Al register using port out ;Increment the value of SI ;Decrement counter and go to L1 until CX=0 ;Jump go to rpt with out condition
128
MICROPROCESSORS LAB MANUAL LOOK UP TABLE: EFFECTIVE ADDRESS 4000 4004 AA 4008 D1 400C ED 4010 FC 4014 FC 4018 ED 401C D1 4020 AA 4024 7F 4028 53 402C 2D 4030 10 4034 01 4038 07 403C 1D 4040 3F 4044 69 RESULT: 74 49 53 5F 25 2D 36 0B 10 17 00 01 04 0B 07 04 25 1D 17 49 3F 36 74 69 5F A0 95 8A C8 BF B5 E7 E0 D9 FA F7 F2 FE FF FE F2 F7 FA D9 E0 E7 B5 BF C8 HEX CODES 7F 8A 95 A0
ECE Dept.
129
ECE Dept.
VIVA-VOCE QUESTIONS
82. 83. 84. 85. 86. 87. 88. 89. How does the 8086 microprocessor instruction set is classified? Which operation is performed by the Negate instruction? What is the difference between RET and IRET instruction? If AH=00, AL=0F then what is the content of AH and AL after AAA instruction? What is the function of SAHF instruction? What is the difference between IN and OUT instructions? Which flags are affected after CMP (compare) instruction? If AL=71, AH=81 then what is the content of AL after DAA instruction?
130
ECE Dept.
INTRODUCTION:
In many microprocessors-based systems, calculator keypad is used as an input device. A calculator keypad can be interfaced to a microprocessor using a dedicated peripheral controller like INTEL 8279Akeyboard/display controller. In this case, the controller can handle the interface problems like key debounce, 2-key lock-out, N-key roll-over etc,. Further such an alternative approach, the calculator keypad interface is passive and software is used for encoding the key positions and for handling problems like key debounce, roll-over etc. The present interface module provides a calculator style calculator keypad consisting of the key 0 to 9 , + ,- , ,= ,% , . , C, CE and two spare keys. These 20 keys are arranged in a 38 matrix (the third row has only four keys). The row lines can be driven through port C and the status of column lines can be read through port A. this interface allows the user to study a number of techniques generally used in calculator keypad interfacing. User can write programs for software debouncing of key closures, two key understanding of keyboard interface. Further , user can become familiar with the arithmetic group of processor instructions by implementing the calculator functions like addition, subtraction, multiplication , diversion, percentage etc..
131
ECE Dept.
THEORY:
A programmable keyboard and display interfacing chip. o Scans and encodes up to a 64-key keyboard. o Controls up to a 16-digit numerical display. Keyboard has a built-in FIFO 8 character buffer The display is controlled from an internal 16x8 RAM that stores the coded display information
A0: Selects data (0) or control/status (1) for reads and writes between micro and 8279. BD: Output that blanks the displays. CLK: Used internally for timing. Max is 3 MHz. CN/ST: Control/strobe, connected to the control key on the keyboard. CS: Chip select that enables programming, reading the keyboard, etc. DB7-DB0: Consists of bidirectional pins that connect to data bus on micro. IRQ: Interrupt request, becomes 1 when a key is pressed, data is available.
132
MICROPROCESSORS LAB MANUAL ECE Dept. OUT A3-A0/B3-B0: Outputs that sends data to the most significant/least significant nibble of display. RD (WR): Connects to micros IORC or RD signal, reads data/status registers. RESET: Connects to system RESET. RL7-RL0: Return lines are inputs used to sense key depression in the keyboard matrix. Shift: Shift connects to Shift key on keyboard. SL3-SL0: Scan line outputs scan both the keyboard and displays.
133
ECE Dept.
The keyboard matrix can be any size from 2x2 to 8x8. Pins SL2-SL0 sequentially scan each column through a counting operation. o The 74LS138 drives 0s on one line at a time. o The 8279 scans RL pins synchronously with the scan. o RL pins incorporate internal pull-ups, no need for external resistor pull-ups. Unlike the 82C55, the 8279 must be programmed first.
D7 D6 D5 Function 0 0 0 Mode set 0 0 1 Clock 0 1 0 Read FIFO 0 1 1 Read Display 1 0 0 Write Display
Purpose Selects the number of display positions, type of key scan Programs internal clk, sets scan and debounce times. Selects type of FIFO read and address of the read. Selects type of display read and address of the read. Selects type of write and the address of the write.
134
MICROPROCESSORS LAB MANUAL ECE Dept. 1 0 1 Display write inhibit Allows half-bytes to be blanked. 1 1 0 Clear Clears the display or FIFO 1 1 1 End interrupt Clears the IRQ signal to the microprocessor.
o
The first 3 bits of # sent to control port selects one of 8 control words.
First three bits given below select one of 8 control registers (opcode).
000DDMMM o Mode set: Opcode 000. DD sets displays mode. MMM sets keyboard mode.
DD field selects either: 8- or 16-digit display Whether new data are entered to the rightmost or leftmost display position.
o
DD Function 00 8-digit display with left entry 01 16-digit display with left entry 10 8-digit display with right entry 11 16-digit display with right entry
MMM field: DD Function 000 Encoded keyboard with 2-key lockout 001 Decoded keyboard with 2-key lockout 010 Encoded keyboard with N-key rollover 011 Decoded keyboard with N-key rollover 100 Encoded sensor matrix 101 Decoded sensor matrix
135
MICROPROCESSORS LAB MANUAL ECE Dept. 110 Strobed keyboard, encoded display scan 111 Strobed keyboard, decoded display scan o Encoded: SL outputs are active-high, follow binary bit pattern 0-7 or 0-15. o Decoded: SL outputs are active-low (only one low at any time). Pattern output: 1110, 1101, 1011, 0111. o Strobed: An active high pulse on the CN/ST input pin strobes data from the RL pins into an internal FIFO for reading by micro later.
2-key lockout/N-key rollover: Prevents 2 keys from being recognized if pressed simultaneously/Accepts all keys pressed from 1st to last.
INTERFACE OF 8279
001PPPPP o The clock command word programs the internal clock driver. o The code PPPPP divides the clock input pin (CLK) to achieve the desired operating frequency, e.g. 100KHz requires 01010 for a 1 MHz CLK input.
010Z0AAA o The read FIFO control word selects the address (AAA) of a keystroke from the FIFO buffer (000 to 111). o Z selects auto-increment for the address.
011ZAAAA o The display read control word selects the read address of one of the display RAM positions for reading through the data port.
100ZAAAA o Selects write address Z selects auto-increment so subsequent writes go to subsequent display positions.
INTERFACE OF 8279
1010WWBB o The display write inhibit control word inhibits writing to either the leftmost 4 bits of the display (left W) or rightmost 4 bits. o BB works similarly except that they blank (turn off) half of the output pins. 1100CCFA o The clear control word clears the display, FIFO or both o Bit F clears FIFO and the display RAM status, and sets address pointer to 000. If CC are 00 or 01, all display RAM locations become 00000000. If CC is 10, 00100000, if CC is 11, 11111111.
136
MICROPROCESSORS LAB MANUAL ECE Dept. 1110E000 o End of Interrupt control word is issued to clear IRQ pin in sensor matrix mode.
1) Clock must be programmed first. If 3.0 MHz drives CLK input, PPPPP is programmed to 30 or 11110.
INTERFACE OF 8279
2) Keyboard type is programmed next. o The previous example illustrates an encoded keyboard, external decoder used to drive matrix.
Once done, a procedure is needed to read data from the keyboard. o To determine if a character has been typed, the FIFO status register is checked. o When this control port is addressed by the IN instruction, the contents of the FIFO status word is copied into register AL:
INTERFACE OF 8279
Data returned from 8279 contains raw data that need to be translated to ASCII:
o o
Row and column number are given the rightmost 6 bits (scan/return). This can be converted to ASCII using the XLAT instruction with an ASCII code lookup table. The CT and SH indicate whether the control or shift keys were pressed. The Strobed Keyboard code is just the state of the RLx bits at the time a 1 was `strobed on the strobe input pin.
o o
137
MICROPROCESSORS LAB MANUAL ALGORITHM: Step1: Move the value 00 to BX register. Step2: Move the value 00 to AX register. Step3: Move the 0FF42 to DX & out AX to DX. Step4: Move the 90 to AL , and out value AL to DX. Step5: Initialize counters CX with the value 08h Step6: Move the 0ff40 to DX register and Load AL with 00 Step7: Write the value in AL register into DX register using port OUT. Step8: Go to step 6 until equal to zero. Step9: Move the address 2050 into SI register. Step10: Move the value 0FF42 to DX register. Step11: Read the value in DX register into AL register using port IN. Step12: Add the contents of AL register with the value 07h. Step 13: Go to step 8 if the result not equal to zero. Step14: Get the value 40 to AL register. Step15: Write the value in AL register into DX register using port OUT. Step 16: move the 0ff40 to DX register. Step 17: read the value in DX register into AL register using port IN. Step 18: Logical AND ed the contents of AL with 01F. Step19: Move the value of AL into BL register. Step 20: Add the contents of SI with BX register. Step21: Initialize data port and move the value 94 into AL register. Step22: Write the data in AL register into DX register using port OUT. Step 23: Initialize Command port and move the value F3 into AL register.
ECE Dept.
138
MICROPROCESSORS LAB MANUAL Step24: Write the value in AL register into DX register using port OUT. Step25: Initialize the data port and move the value 95 into AL register. Step 26: Write the value in AL register into DX register using port OUT. Step 27: Initialize the Command port. Step 28: Move the contents of SI into AL register. Step29: Write the value in AL register into DX register using port OUT. Step 30: Go to step 8. Step31: Stop.
ECE Dept.
PROGRAM: MOV MOV MOV OUT MOV OUT MOV MOV MOV RPT: OUT LOOP BACK: MOV MOV KEY: IN BX, 00H DX, 0FF42 AL, 00 DX, AL AL, 90 DX, AL CX, 08 AL, 00 DX, 0FF40 DX, AL RPT SI, 2050 DX, 0FF42 AL, DX
139
ECE Dept.
AL, DX
MOV DX, 0FF42 MOV AL, 94 OUT DX, AL MOV DX, 0FF40
MOV AL, 95 OUT DX, AL MOV DX, 0FF40 MOV AL, [SI] OUT DX, AL
JMP BACK CODE TABLE: Physical address Segment address 0000 Effective address 2000 Label Hex code Mnemonic Op code operands BB 00 00 MOV BX,00 Load 00 with BX register Comments
140
MICROPROCESSORS LAB MANUAL 2003 2006 2008 2009 200B 200C 200F 2011 2014 2015 2017 201A BAC K RPT BA 42 FF B0 00 EE B0 90 EE B9 08 00 B0 00 BA 40 FF EE E2 FD BE 50 20 BA 42 FF MOV MOV OUT MOV OUT MOV MOV MOV OUT LOOP MOV MOV DX,0FF42 AL,00 DX,AL AL, 90 DX,AL CX,08 AL,00 DX,0FF40 DX,AL RPT SI, 2050 DX,0FF42
ECE Dept. Initialize control port Load 00 with Al register Routine to clear All display LEDs
Set the count Load 00 with AL register Initialize data port Read the data from port Continuous loop Initialize SI with 2050 Read 8279 status to check if any character is available Write the data from port IN Logical AND between [AL] and 07h Jump if condition Load AL register with 40 Read the data from port Read FIFO RAM Mask SIFT AND AL with 1F Move the contents of AL into BL Add SI with BX
201D 201E 2020 2022 2024 2025 2028 2029 202B 202D
KEY
EC 24 07 74 FB B0 40 EE BA 40 FF EC 24 1F 8A D8 03 F3
AL,DX AL,07 KEY AL,40 DX,AL DX,0FF40 AL,DX AL,1F BL,AL SI,BX
141
MICROPROCESSORS LAB MANUAL 202F 2032 2034 2035 2038 203A 203B 203E 2040 2041 2044 2046 2047 BA 42 FF B0 94 EE BA 40 FF B0 F3 EE BA 42 FF B0 95 EE BA 40 FF 8A 04 EE E9 CD FF MOV MOV OUT MOV MOV OUT MOV MOV OUT MOV MOV OUT JMP DX,0FF42 AL,94 DX,AL DX,0FF40 AL,F3 DX,AL DX,0FF42 AL,95 DX,AL DX,0FF40 AL,[SI] DX,AL BACK
ECE Dept. Address to display 0 Load AL register with 94 Read the data from port Addressed control port Move the value 0F3 into AL register Read the data from port Addressed data port Set 95 into AL register Read the data from port Initialize control port Move the contents of SI into the AL register Read the data from port Unconditional jump
INPUT DATA: Segment address Offset address 2050 2054 2058 205C DATA INPUT F3 60 B5 F4 66 D6 D7 70 F7 76 77 C7 93 E5 97 17
RESULT:
VIVA-VOCE QUESTIONS
142
MICROPROCESSORS LAB MANUAL 90. What is the difference between opcode and operand? 91. 92. 93. 94. 95. What is the function of instruction pointer (IP) register? What does assembler mean? What is the difference between RCL and ROL instructions? Which signal is used to restart the 8086 microprocessor? What is the power supply required for 8086 microprocessor?
ECE Dept.
143
MICROPROCESSORS LAB MANUAL ECE Dept. TX = NX. TC where NX is number of counts. TX is counter period. By proper choice of the counter period TC scaling can be incorporated into the counter such that a software multiplication can be avoided. THEORY: Voltage,current,temperature,pressure,time,etc, are available in analog form.ot is difficult to process ,store or transmit the analog signal with out introducing considerable error because of the superimposition of noise as in the case of amplitude modulation. Therefore, for processing, transmission and storage purpose. It is often convenient to express these variables in digital form, it gives better accuracy system is based. The operation of any digital communication system is based upon analog to digital and digital to analog conversion. A/D converter requires sample and hold(S/H) circuit. The ADC output is a sequence of binary digit. D/A converter is to convert digital signal to analog signal and function of DAC is exactly opposite to that of ADC. The D/A converter is usually operated at the same frequency as the ADC.the output of D/A converter is commonly a stair case. This stair case like digital output is passed through a smoothing filter to reduce the effect of quantization noise. ADCs are classified broadly into two groups according to their conversion technique: 1. Direct type ADCs and 2. Integrating type ADCs. Direct type ADCs compare a given analog signal with the internally generated equivalent signal. This group includes: 1. Flash (comparator) type converter 2. Counter type converter. 3. Tracking or servo converter 4. Successive approximation type converter. Integral type ADCs perform conversion in an indirect manner by first changing the analog input signal to a linear function of time or frequency and then to a digital code .the two most widely used integrating type converters are: 1. Charge balancing ADC. 2. Dual slope ADC The flash (comparator) type is expensive for high of accuracy the integrated type converter is used in application such as digital meter, panel meter and so on. PARALLEL COMPARATOR (FLASH) A/D CONVERTER: It is simplest possible converter and the fastest and most expensive technique. 3-BIT A/D CONVERTER: Circuit consists of resistive divider network, 8 op-amp comparators and 8-5line encoder. At each node of the resistive divider, a comparison voltage is available .since all the resistors are of equal value, the voltage levels available at the nodes are equally divided between the reference voltage VR and the ground. The purpose of circuit is to compare the analog input voltage VA with each of the voltages.
144
MICROPROCESSORS LAB MANUAL ECE Dept. The circuit has the advantage of high speed as the conversion take place simultaneously rather than sequentially. Typical conversion time is loons or less. Conversion time is limited only by the speed of the comparator and of the priority encoder by using advanced micro devices AMA 686A comparator and a T1147 priority encoder ,conversion delays of the order of 20 nos can be obtained. This type of ADC has the disadvantage that the number of comparators required almost doubles for each added bit. A 2-bit ADC requires 3 comparators .in general, the number of comparators required are 2n-1 where n is the desired number of bits. Hence the number of comparators approximately doubles for each added bit. Also the larger the value of n the more complex is the priority encoder. INTEGRATING TYPE OF ADCS: the generating type of ADCs do not require a S/H circuit at the input. If the input changes during conversion, the ADCs output code will be proportional to the value of the input averaged over the integration period. DUAL SLOPE ADC: DUAL SLOPE OR DUAL RAMP CONVERTERS: The analog part of the circuit consists of a high input impedance buffer A1, precision integrator A2 and a voltage comparator. The converter fort integrates the analog input signal VA for a fixed duration of 2n clock periods. Then to integrate an internal reference voltage VR of opposite polarity until the integrator output is zero. The number N of clock cycles required to return the integrated period. Hence N represents the desired output code. Since VR and n are constant, the analog voltage VA is proportional to the count reading N and is independent of R,C and T. The dual-slope ADC integrates the input signal for a fixed time, hence to provides excellent noise rejection of ac signals whose periods are integral multiples of the integration time T1. The main disadvantage of the dual-slope ADC is the long conversion time. For instance, if 2n-T =1 / 50 is used to reject line pick-up , the conversion time will be 20 m sec. Dual-slope converters are particularly suitable for accurate measurement of slowly varying signal, such as thermo couples and weighing scales. Dual slope ADCs also form the basics of digital panel meters and millimeters. Dual slope converters are available in monolithic form and are available both in microprocessors compatible and in display oriented versions.
REGISTERS USED: AX, BX, CX, DX. PORTS USED: Port A and Port B. ALGORITHM: Step1: Initialize 8255 Control Word Register and Port A as O/P port and Port B as I/P port. Step2: Load the number 02 in AL register. Step3: Initialize Port A address and read the data from port out. Step4: Perform NOP five times.
145
MICROPROCESSORS LAB MANUAL Step5: Move the number 01h into AL register.
ECE Dept.
Step6: Read the data from port out. Step7: Load CX register with 1000h. Step8: Continue the loop if CX is not equal to zero. Step9: Load AL with 04 and read the data from port out. Step10: Initialized port A with 0FFE0 and initialized BX register with 0000h. Step11: Initialized port B with 0FFE2 and write the data from register AL using port IN.
Step12: Logical AND operation AL register with 01h value.
Step13: Jump the corresponding condition to specify in instruction. Step14: After the increment the BL register jump step 11. Step15: Move the contents of BL register into the AL register.
Step16: Initialize SI with 3000h and move the value in AL register into the SI location. Step 17: Load AL register with 02h Step 18: Initialize port A and read the data from port out. Step19: Get the value 03h into BX register. Step20: Initialize CX with 0FFFFh and continue the loop until CX is equal to zero. Step21: Decrement the value of BX register and jump step 20 if BX equal to zero. Step22: Jump step 2 Unconditional Step23: Stop.
PROGRAM: MOV DX, 0FFE6 MOV AL, 82 OUT DX, AL
146
MICROPROCESSORS LAB MANUAL START: MOV AL, 02H MOV DX, 0FFE0 OUT DX, AL NOP NOP NOP NOP NOP MOV AX, 01 OUT DX, AL
ECE Dept.
MOV CX, 1000H L2: LOOP L1 MOV AL, 04H OUT DX, AL MOV DX, 0FFE0 MOV BL, 00H L1: MOV DX, 0FFE2 IN AX, DX AND AL, 01 JE DISP INC BL JMP L1 DISP: MOV AL, BL
147
MICROPROCESSORS LAB MANUAL MOV SI, 3000H MOV [SI], AL MOV AL, 02H MOV DX, 0FFE0 OUT DX, AL MOV BX, 20 DELAY: MOV $: LOOP JNZ JMP CX, 0FFFF $ DELAY START
ECE Dept.
CODE TABLE: Physical address Segment address 0000 Effective address 4000 4003 4004 4006 4008 400B 400C 4011 4014 4015 4018 START Label Hex code Mnemonic Op code BA E6 FF B0 82 EE B0 02 BA E0 FF EE 90 90 90 90 90 MOV MOV OUT MOV MOV OUT NOP No operation NOP NOP NOP NOP operands DX,0FFE6 AL,82 DX,AL AL,02 DX,0FFE0 DX,AL Reset integrator Addressed port A ie initializes. Read the data from port out Initialize the Control word register Port A as output & port B as input Comments
148
MICROPROCESSORS LAB MANUAL 401A 401C 401D 4020 4022 4025 4026 4028 402A 402C 402E 4030 4033 4035 4037 403A 403B 403E 4041 4043 4044 4046 4049 DY L3 B0 02 BA E0 FF EE BB 20 00 B9 FF FF F2 EE DSP L2 L1 B8 01 00 EE B9 00 10 E2 FE B0 04 EE BA E0 FF B3 00 BA E2 FF EC 24 01 74 04 FE C3 EB F4 8A C3 B8 00 30 MOV OUT MOV LOOP MOV OUT MOV MOV MOV IN AND JE INC JMP MOV MOV MOV MOV MOV OUT MOV MOV LOOP AX,01 DX,AL CX, 1000H L1 AL,04H DX,AL DX,0FFE0 BL,00 DX,0FFE2 AL,DX AL, 01H DISP BL L2 AL,BL SI,3000 [SI],AL AL,02 DX,0FFE0 DX,AL BX,20 CX,0FFFH L3
ECE Dept. Load AX with 01h Read the data Set the count with 1000h Continuous loop Load AL with 04number Read the data Initialized port A addressed Clear BL register Initialize port B Write the data from port IN AND ed operation between AL and 01 Jump conditionally Increment value of BL Jump Unconditionally Move the contents from AL into BL Initialize SI with 3000h Move the value in AL register into contents of SI Load AL with the value 02h Initialize port A Read the data from port out Set the 20h in BX register Set the count with 0FFFFh value into CX register Continuous loop
149
4B 75 F8 EB AD
BX DY START
ECE Dept. Decrement the value of BX register Jump Conditionally Jump Unconditionally.
RESULT:
150
ECE Dept.
It consists of two stator windings A,B and a motor having two magnetic poles N and S. when a voltage +v is applied to stator winding A, a magnetic field Fa is generated. The rotor positions itself such that its poles lock with corresponding stator poles. With the winding A excited as before ,winding b is now to Fa. the resulting magnetic field F makes an angle of 450. the rotor consequently moves through 450 in anti clockwise direction,again to cause locking of rotor poles with corresponding stator poles. While winding B has voltage +V applied to it, winding A is switched off. The rotor then moves through a further 450 in anti-clockwise direction to aligne itself with stator field Fb. with voltage +V on winding B, a voltage V is applied to winding A. then the stator magnetic field has two components Fa , Fb and their resultant F makes an angle of 1350 position. In this way it can be seen that ,as the pattern of excitation of the state of winding is changed, the rotor moves successively through450 steps. And completes one full revolution in anti clock-wise direction. A practical PM stepper motor will have 1.80 step angle and 50 tooth on its rotor;there are 8 main poles on the stator, each having five tooth in the pole face. The step angle is given by A = 360 / (N * K) degrees Where N = number of rotor tooth. K = execution sequence factor. PM stepper motors have three modes of excitation i,e.. Single phase mode Two phase mode Hybrid mode
Single phase mode: in this mode only one of the motor winding is excited at a time. There are four steps in the sequence, the excitation sequence factor K=2 ,so that step angle is 900. Two phase mode: Here both stators phase are excited at a time. There are four steps in the excitation sequence, K = 2 and the step angle is 900. However, the rotor positions in the two phase mode are 450 way from those in single phase mode.
151
MICROPROCESSORS LAB MANUAL ECE Dept. Hybrid mode: this is a combination of single and two phase modes. There are 8 steps in excitation sequence=2 and step angle = 450. a voltage +V is applied to a stator winding during some steps, which voltage V is applied during certain other steps. This requires a bipolar regulated power supply capable of yielding +V,-V and zero outputs and a air of SPDT switches, which is quite cumbersome. Consequently each of the two stator windings is split into two sections A1-A2 , B1B2. these sections are wound differentially. These winding sections can now be excited from a univocal regulated power supply through switcher S1 to S4. this type of construction is called bipolar winding construction. Bipolar windingesults in reduced winding inductance and consequently improved torque stepping rate. Description: the stepper motor interfaces uses four transistor pairs (SL 100 and 2N 3055) in a Darlington pair configuration. Each Darlington pair is used to excite the particular winding of the motor connected to 4 pin connector on the interface. The inputs to these transistors are from the 8255 PPI I/O lines of the microprocessor kit or from digital I/O card plugged in the PC. port A lower nibble PA0 , PA1, PA2 , PA3 are the four lines brought out to the 26 pin FRC male connector(J1) on the interface module. The freewheeling diodes across each winding protect transistors from switching transients. Theory: A motor used for moving things in small increments is known as stepper motor. Stepper motor rotate from one fixed position to next position rather than continuous rotation as in case of other ac or dc motor stepper motors are used in printers to advance the paper from one position to advance the paper from one position to another in steps. They are also used to position the read/write head on the desired track of a floppy disk. To rotate the shaft the stepper motor a sequence of pulses are applied to the windings in a predefined sequence. The number of pulses required for one complete rotation per pulse is given by 3600/NT. where NT is the number of teeth on rotot. Generally the stepper motor is available with 10 to 300 rotation. They are available with two phase and four phase common field connections. Instead of rotating smoothly around and around as most motors, stepper motors rotate or step one fixed position to next. Common step size range from 0.90 to 300. it is stepped from one position to next by changing the currents through the fields in the motor. The two common field connections are referred to as two phase and four phase. The drive circuitry is simpler in 4 phase stepper. The figure shows a circuitry that can interface a small 4 stepper motor to four microcomputer port lines. The 7406 buffers are inverting , so. A high on ah output port pin turns on current to a winding. The purpose of clamp diodes across each winging is to save transistors from inductive kick. Resistors R1 and R2 are current limiting resistors. Typical parameters of stepper motor: 1. Operating voltage 12 volts 2. Current rating 1.2 Amp 3. Step angle 1.80 4. Step for revolution 200(No. of teeth on rotor) 5. Torque 3 kg/cm Working of stepper motor: Suppose that SW1 and SW2 are turned ON. Turning OFF SW2 and turning ON SW4 cause the motor to rotate one step of 1.80 clockwise. Changing to SW4 and SW3 ON will cause the motor to rotate 1.80 clockwise another. Changing SW3 and SW2 ON will cause another step. To step the motor in counter clock wise direction simply work through the switch sequence in the reverse direction. The switch pattern for changing from one step to another step in clockwise direction is simply rotated right one position. For counter clockwise direction rotated left one position. ALGORITHM:
152
MICROPROCESSORS LAB MANUAL Step 1: Start Step 2: move the control word address 0FFE6 to register DX Step 3: move 80 to AL register. Step 4: locate the contents in AL register to DX register using port out. Step 5: move port A address ie.,,0FFE0 to DX register. Step 6: move 11 to AL register. Step 7: locate the contents in AL register to DX register using port out. Step 8: move 300 to CX register. Step 9: repeat step 8 until the content in CX register becomes equal to zero. Step 10: Rotate carry left through bit. Step 11: jump to location / step 7. Step 12: stop.
ECE Dept.
153
ECE Dept.
FLOW CHART
Start
Initialize the control word register Copy the contents from AX to 80 & Locate the contents in AL to DX register using port out
Move the data 11h into AL register & Locate the contents in AL to DX register using port out
154
ECE Dept. 2
NO
YES
Jum p
Stop
155
MICROPROCESSORS LAB MANUAL PROGRAM: MOV MOV RPT: OUT MOV MOV RPT: OUT MOV L1: LOOP RCL JMP DX, 0FFE6 AX, 80 DX, AX DX, 0FFE0 AX, 0011 DX, AX CX, 0300 L1 AL, 01H RPT
ECE Dept.
156
MICROPROCESSORS LAB MANUAL CODE TABLE: Physical address Segment address 0000 Effective address 5000 5003 5006 5007 500A 500D 500E 5011 5014 5015 5018 Rpt Label Hex code Mnemonic Op code BA E6 FF B8 80 00 EF BA E0 FF B8 FF 00 EF E8 FF EF B8 00 00 EF E8 E8 FF E8 F0 Mov Mov Out Mov Mov Out Call Mov Out Call Jmp operands DX , FFE6 AX, 0080 DX , AX DX , FFE0 AX , 00FF DX,AX 6000 AX , 0000 DX , AX 6000 Rpt
ECE Dept.
Comments
Move FFE6 to DX register Load AX with 80 Move AX content to DX Move FFE0 to DX register Load AX with 00FF Move AX content to DX Load AX with 0000 Move the contents of AX into DX Jump to 500A location
RESULT:
157