MPMC
MPMC
This is to certify that this book is the bonafied record of jobs done by
Mr./Miss of Roll No:
B. Tech 3rd Year Electrical & Electronic Engineering Course, studying this
college during the academic year 2023-24.
It is also certified that all the jobs mentioned in this record are completed
by the candidate him/herself in the MICRO PROCESSOR AND MICRO
CONTROLLER lab of the J.N.T.U.H. College of Engineering, Rajanna
Sircilla
26 Serial Communication 74
from / to 8051 to / from I/O
devices.
31 Triangular Wave 82
Generator through DAC
interfaces to 8051.
Predefined Symbols: Unlike most MASM reserved words, predefined symbols are case
sensitive.
@CatStr* @Environ* @Model*
@Code @fardata @SizeStr*
@CodeSize @fardata? @stack*
@Cpu @FileCur* @SubStr*
@CurSeg @FileName @Time*
@data @InStr* @Version
@DataSize @Interface* @WordSize
@Date @Line @Model*
Registers:
AL CX EAX SP
AX DH EBP SS
BH DI EBX ST
BL DL ECX TR3*
BP DR0 EDI TR4*
BX DR1 EDX TR5*
CH DR2 ES TR6
CL DR3 ESI TR7
Identifiers:
An identifier is a name that you invert and attach to a definition. Identifiers can be symbols
representing variables, constants, procedure names, code labels, segment names and user
defined data types such as structures, unions, records and types defined with TYPEDEF.
Identifiers longer than 247 characters generate an error.
A “data type” describes a set of values. For example: BYTE, SBYTE, WORD,
SWORD, DWORD, SDWORD, FWORD, QWORD and TBYTE.
Registers:
The 8086 family of processors have a set of 16-bit registers. They are AX, BX, CX, DX
(General purpose registers). Segment registers like SS, CS, DS, ES and Pointer registers like
SP and BP and Index register like DI and SI etc.
Statements:
Statements are the line by line components of source files. Each MASM statement specifies
an instruction or directive for the assembler. Statements have up to four fields[[name:]]
[[operation]] [[operands]][[;comment]]
Assembly Language Development Tools:
To develop an assembly language program, we need certain program development tools. The
various development tools required for 8086 programming are explained below.
1. Editor: An editor is a program which allows us to create a file containing the assembly
language statements for the program. Examples of some editors are PC Write, Word-
Star. As we the program the editor stores the ASCII codes for the letters and numbers
in successive RAM locations. If any typing mistake is done editor will alert us to correct
it. If we leave out a program statement an editor will let you move everything down and
insert a file. After typing all the program, we have to save the program for a hard disk.
This we call it as source file. The next step is to process the source file with an
assembler. While using TASM or MASM we should give a filename and extension as
.ASM forexample: Sample.asm
2. Assembler: An assembler is used to translate the assembly language mnemonics to
machine level language (i.e., binary codes). When you run the assembler, it reads the
source file of your program from where you have saved it. The assembler generates
two files. The first file is the Object file with .OBJ extension. The Object file consists of
the binary codes for the instructions and information about the addresses of the
instructions. After further processing, the contents of the file will be loaded in to
memory and run. The second file is the assembler list file with the. LST extension.
3. Linker: A linker is a program used to connect several object files into one large object
file. While writing large programs it is better to divide the large programs into smaller
modules. Each module can be individually written, tested and debugged. Then all the
object modules can also be kept in library file and linked into other programs as
needed. A linker produces a link file which contains the binary codes for all the
combined modules. The linker also produces a link map file which contains the address
information about the linked files. The linkers which comes with TASM or MASM
assemblers produce link files with the .EXE extension
4. Locator: A locator is a program used to assign the specific address of where the
segments of object code are to be loaded into memory. A locator program called
EXE2BIN comes with the IBMPC Disk Operating System (DOS). EXE2BIN converts a
EXE file to a .BIN file which has a physical address.
5. Debugger: A debugger is a program which allows to load your object code program
into system memory, execute the program and troubleshoot or debug it. The debugger
allows to look into the contents of registers and memory locations after the program
runs. We can also change the contents of registers and memory locations and rerun
the program. Some debuggers allow to stop the program after each instruction so that
you can check or alter the memory and register contents. This is called Single Step
Debug. A debugger also allows to set a breakpoint, the debugger will run the program
up to the instruction where the breakpoint is put and then stop the execution.
6. Emulator: An emulator is a mixture of hardware and software. It is usually used to test
and debug the hardware and software of an external system such as the prototype of
a microprocessor-based instrument.
Assembler Directives:
Assembler Directives are the directions to the assembler which indicate how an operand
or section of the program is to be processed. These are also called pseudo operations
which are not executable by the microprocessor. The various directives are explained
below.
1. ASSUME: The ASSUME directive is used to inform the assembler the name of the
logical segment it should use for a specified segment. Ex:
ASSUME DS:DATA tells the assembler that for any program instruction which
refers to the data segment it should use the logical statement called DATA.
2. DB: Define Byte. It is used to declare a byte variable or set aside one or more
storage locations of type byte in memory. For
example, CURRENT_VALUE DB 36H tells the assembler to reserve one byte of
memory for a variable named CURRENT_VALUE and put the value 36H in that
memory location when the program is loaded into RAM.
3. DW: Define Word. It tells the assembler to define a variable of type word or to
reserve storage locations of type word in memory.
4. DD: Define Double Word. This directive is used to declare a variable of type double
word or restore memory locations which can be accessed as type double word
5. DQ: Define Quadword. This directive is used to tell the assembler to declare a
variable word in length or to reserve four words of storage in memory.
6. DT: Define Ten bytes. It is to inform the assembler to define a variable which is 10
bytes in length or to reserve 10 bytes of storage in memory.
7. EQU: Equate. It is used to give a name to some value or symbol. Every time the
assembler finds the given name in the program, it will replace the name with the
value or symbol we have equated with that name.
8. ORG: Originate. The ORG statement changes the starting offset address of the
data. It allows to set the location counter to a desired value at any point in the
program. For example, the statement ORG 3000H tells the assembler to set the
location counter to 3000H.
9. PROC: Procedures. It is used to identify the start of a procedure or subroutine.
10. END: End program. This directive indicates the assembler that is the end of the
program module. The assembler ignores any statements after the END directive.
11. ENDP: End Procedure. It indicates the end of the procedure (subroutine) to the
assembler.
12. ENDS: End Segment. This directive is used with the name of the segment to
indicate the end of the logical statement. Ex
: CODE SEGMENT : Start of logical significant containing code. CODE
ENDS: End of the segment named code.
Experiment no. 1
PROGRAM FOR 16-BIT ARITHMETIC OPERATIONS FOR 8086(USING VARIOUS
ADDRESSING MODES)
ADDITION:
a) Code:
assume cs:code
code segment
mov ax,0ABCDH
mov bx,0ABCDH
add ax,bx
int 03H
code ends
end
Result:
b) Code:
data segment
num1 dW 1111H
num2 dW 2222H
res dW ?
data ends
assume cs:code,ds:data
code segment
movax,data
movds,ax
mov ax,num1
mov bx,num2
add ax,bx
movres,ax
int 03H
code ends
end
Result:
Subtraction:
Code:
assume cs:code
code segment
mov ax,2222H
mov bx,1111H
sub ax,bx
int 03H
code ends
end
Result:
Multiplication:
Code:
assume cs:code
code segment
mov ax,2222H
mov bx,1111H
mulbx
int 03H
code ends
end
Result:
Division:
Code:
assume cs:code
code segment
mov ax,2222H
mov bx,1111H
div bx
int 03H
code ends
end
Result:
EXPERIMENT NO.2
ALP TO ADD, SUBTRACT, MULTIPLY TWO 16-BIT UNSIGNED NUMBERSAND STORE THE RESULT IN
EXTRA SEGMENT
ASSUME CS:CODE,ES:EXTRA
CODE SEGMENT
MOV AX,EXTRA
MOV ES,AX
MOV DI,OFFSET SUM
XOR AX,AX
MOV AX,2222H
MOV CX,AX
MOV BX,1111H
ADD AX,BX
CLD
STOSW
XOR AX,AX
XOR DX,DX
MOV AX,CX
SUB AX,BX
STOSW
XOR AX,AX
MOV AX,C
MUL BX
STOSW
MOV BP,AX
MOV AX,DX
STOSW
INT 03H
CODE ENDS
EXTRA SEGMENT
SUM DW 01H DUP(?)
DIF DW 01H DUP(?)
EXTRA ENDS
END
EXPERIMENT NO.3
ALP TO DIVIDE A 32-BIT UNSIGNED NUM BY A 16-BIT UNSIGNED NUM AND STORE THE RESULT IN
STACK SEGMENT
ASSUME CS:CODE,SS:STACK
CODE SEGMENT
MOV AX,STACK
MOV SS,AX
MOV BP,OFFSET QUOTIENT
MOV SP,BP
XOR AX,AX
MOV AX,2000H /* TAKE THE DIVISOR VALUE IN BX THAT DOESN'T
LEAD TO DIVIDE OVERFLOW */
MOV DX,4000H
MOV BX,8000H
DIV BX
PUSH AX
PUSH DX
INT 03H
CODE ENDS
STACK SEGMENT
ORG 2000H
QUOTIENT DW 01H DUP(?)
REMAINDER DW 01H DUP(?)
STACK ENDS
END
EXPERIMENT NO.4
CODE ENDS
DATA SEGMENT
LIST DD 0000CD34H,0000AB12H,002344AAH,00549120H
DATA ENDS
END
EXPERIMENT NO.5
DATA ENDS
END
OBSERVE THE RESULT IN DATA SEGMENT
ALP TO PICK THE MEDIAN FROM THE GIVEN ARRAY OF NUMBERS WITH MACHINE
CODE AND ADDRESSES
EXPERIMENT NO.6
ALP TO FIND THE LENGTH OF A GIVEN STRING WHICH TERMINATES WITH A SPECIAL CHARACTER ($)
ASSUME CS:CODE,ES:EXTRA
CODE SEGMENT
MOV AX,EXTRA
MOV ES,AX
XOR AX,AX
LEA DI,STRING
MOV AL,KEY
CLD
L1: SCASB
JNE L1
MOV AX,DI
DEC AX
INT 03H
CODE ENDS
EXTRA SEGMENT
STRING DB "MICROPROCESSORS","$"
KEY EQU "$"
EXTRA ENDS
END
EXPERIMENT NO.7
END
ALP TO REVERSE THE STRING AND VERIFY FOR PALINDROMEWITH MACHINE CODE
AND ADDRESSES
EXPERIMENT NO.8
ALP TO INSERT A CHARACTER TO THE GIVEN STRING WITH MACHINE CODE AND
ADDRESSES
EXPERIMENT NO.9
ALP TO DELETE A CHARACTER FROM THE GIVEN STRING
ASSUME CS:CODE,DS:DATA
CODE SEGMENT
MOV AX,DATA
MOV DS,AX
MOV ES,AX
XOR AX,AX
LEA SI,SOURCE
LEA DI,DEST
MOV CX,COUNT1
CLD
REP MOVSB
INC SI
MOV CX,COUNT2
REP MOVSB
INT 03H
CODE ENDS
DATA SEGMENT
SOURCE DB "TOM&JERRY"
ORG 2000H
DEST DB 0FH DUP(?)
COUNT1 EQU 0003H
COUNT2 EQU 0005H
DATA ENDS
END
ALP TO DELETE A CHARACTER FROM THE GIVEN STRINGWITH MACHINE CODE AND
ADDRESSES
EXPERIMENT NO.10
LOGICAL OPERATIONS OF 16-BIT DATA (SOFTWARE)
AIM:TO WRITE A ASSEMBLY LANGUAGE PROGRAM FOR LOGICAL OPERATIONS OF
16-BIT DATA USING IMMEDIATE ADDRESSING MODE.
COMPONENTS: MASM SOFTWARE, DOS BOX
PROGRAM:
A.AND GATE:
ASSUME CS: CODE
CODE SEGMENT
START: MOV AX, 3214H
MOV BX, 6839H
AND AX, BX
INT O3H
CODE ENDS
END START
ASSUME CS: CODE
CODE SEGMENT
START: MOV AX 5472H
MOV BX, 9283H
OR AX, BX
INT 03H
CODE ENDS
END START
C.NOT GATE:
ASSUME CS: CODE
CODE SEGMENT
START: MOV AX, 4286H
NOT AX
INT O3H
CODE ENDS
END START
D.EX-OR GATE:
ASSUME CS: CODE
CODE SEGMENT
START: MOV AX, 1750H
MOV BX, 6573H
XOR AX, BX
INT O3H
CODE ENDS
END START
E.NOR GATE:
ASSUME CS: CODE
CODE SEGMENT
START: MOV AX, 9784H
MOV BX, 4653H
OR AX, BX
NOT AX
INT O3H
CODE ENDS
END START
F.NAND GATE:
ASSUME CS: CODE
CODE SEGMENT
START: MOV AX, 2330H
MOV BX, 3728H
AND AX, BX
NOT AX
INT O3H
CODE ENDS
END START
G.EX-NOR GATE:
ASSUME CS: CODE
CODE SEGMENT
START: MOV AX, 3928H
MOV BX, 4287H
XOR AX, BX
NOT AX
INT O3H
CODE ENDS
END START
RESULT:
AND GATE:
INPUT1:3214H
INPUT2: 6879H
OUTPUT: 2010H
OR GATE:
INPUT1: 5472H
INPUT2: 6839H
OUTPUT: D673H
NOT GATE:
INPUT: 4286H
OUTPUT: BD79H
EX-OR GATE:
INPUT1: 1750H
INPUT2: 6573H
OUTPUT: 7223H
NOR GATE:
INPUT1: 9784H
INPUT2: 4653H
OUTPUT: 2828H
NAND GATE:
INPUT1: 2330H
INPUT2: 3728H
OUTPUT: DCDFH
EX-NOR GATE:
INPUT1: 3928H
INPUT2: 4287H
OUTPUT: 8450H
EXPERIMENT NO:11
16-BIT ARTHIMATIC OPERATIONS ON INDIRECT ADDRESSING
MODE
AIM: WRITE AN ALP TO PERFORM AN ARITHMETIC OPERATIONS FOR 16-BIT
DATA
COMPONENTS:
1.PERSONAL COMPUTER
2.MASM SOFTWARE
PROGRAMS:
(1).ADDITION:
ASSUME CS:CODE
CODE SEGMENT
MOV SI,2000H
MOV AX,[SI]
INC SI
INC SI
MOV BX,[SI]
ADD AX,BX
INT 03H
CODE ENDS
END
(2).SUBTRACTION:
ASSUME CS:CODE
CODE SEGMENT
MOV SI,2000H
MOV AX,[SI]
INC SI
INC SI
MOV BX,[SI]
SUB AX,BX
INT 03H
CODE ENDS
END
(3).MULTIPICATION:
ASSUME CS:CODE
CODE SEGMENT
MOV SI,2000H
MOV AX,[SI]
INC SI
INC SI
MOV BX,[SI]
MUL BX
INT 03H
CODE ENDS
END
(4). DIVISION:
ASSUME CS:CODE
CODE SEGMENT
MOV SI,2000H
MOV AX,[SI]
INC SI
INC SI
MOV BX,[SI]
DIV BX
INT 03H
CODE ENDS
RESULT:
1. ADDITION
INPUT: AX=5698H
BX=8734H
OUTPUT:AX=DDCC
DX=0000
2.SUBTRACTION:
INPUT: AX=6788H
BX=4523H
OUTPUT:AX=2265
DX=0000
3.MULTIPLICATION:
INPUT: AX=3417H
BL=8845H
OUTPUT:AX=E613
DX=0000
4.DIVISION:
INPUT:AL=8944H
BL=6633H
OUTPUT:AX=0001
DX=2311
EXPERIMENT NO:12
COPY/MOVE STRING FROM ONE LOCATION TO ANOTHER
AIM: WRITE LOGICAL PROGRAM TO COPY/MOVE STRING FROM ONE LOCATION TO
ANOTHER LOCATION.
COMPONENTS:
1.PERSONAL COMPUTER
2.MASM SOFTWARE
PROGRAMS:
ASSUME CS:CODE
CODE SEGMENT
START:MOV SI,2000H
MOV CL,05H
MOV DI,3000H
UP:MOV AL,[SI]
MOV [DI],AL
INC SI
INC DI
JNZ UP
INT 03H
CODE ENDS
END START
RESULT:
INPUT:
E 2000
13 26 39 52 65
OUTPUT:
D DS:3000
13 26 39 52 65
EXPERIMENT NO:13
REVERSE OF THE STRING
AIM: WRITE LOGICAL PROGRAM TO REVERSE OF STRING.
COMPONENTS:
1.PERSONAL COMPUTER
2.MASM SOFTWARE
PROGRAMS:
ASSUME CS:CODE
CODE SEGMENT
START:MOV SI,2000H
MOV CX,0006H
MOV DI,3000H
ADD SI,0005H
UP:MOV AL,[SI]
MOV [DI],AL
DEC SI
INC DI
LOOP UP
INT 03H
CODE ENDS
END START
RESULT:
INPUT:
E 2000
22 33 44 55 66 77
OUTPUT:
D DS:3000
77 66 55 44 33 22
EXPERIMENT NO:14
GET REVERSE OF A GIVEN NUMBER
AIM: WRITE LOGICAL PROGRAM TO GET REVERSE OF A GIVEN NUMBER.
COMPONENTS:
1.PERSONAL COMPUTER
2.MASM SOFTWARE
PROGRAMS:
ASSUME CS:CODE
CODE SEGMENT
START:MOV SI,2000H
MOV AX,[SI]
MOV CL,04H
ROL AL,CL
XCHG AL,AH
ROR AL,CL
INT 03H
CODE ENDS
END START
RESULT:
INPUT:5974
E 2000
74 59
OUTPUT:
AX=4795
EXPERIMENT NO:15
PROGRAM FOR FACTOROAL OF A GIVEN NUMBER
AIM: WRITE LOGICAL PROGRAM TO FIND FACTORIAL OF A GIVEN NUMBER.
COMPONENTS:
1.PERSONAL COMPUTER
2.MASM SOFTWARE
PROGRAMS:
ASSUME CS:CODE
CODE SEGMENT
START:MOV SI,2000H
MOV CL,[SI]
MOV AL,00H
MOV AH,00H
UP:MUL CL
DEC CL
JNZ UP
INT 03H
CODE ENDS
END START
RESULT:
INPUT:
CL=0005
OUTPUT:
AX=0078
EXPERIMENT NO:16
PROGRAM FOR 8-BIT MANUPULATON
AIM:WRITE AN ALP TO PERFORM 8-BIT ARITHMETIC OPERATIONS FOR
8086(USING VARIOUS ADDRESSING MODES)
APPARATUS:
1.PERSONAL COMPUTER
2.MASM SOFTWARE
PROGRAM:
A.ADDITION:-
ASSUME CS:CODE
CODE SEGMENT
MOV AL,12H
MOV BL,34H
ADD AL,BL
INT 03H
CODE ENDS
END
RESULT:
OUTPUT:
AX=FF46
B.SUBTRACTION:
ASSUME CS: CODE
CODE SEGMENT
MOV AL,12H
MOV BL,34H
SUB BL,AL
INT 03H
CODE ENDS
END
RESULT:
OUTPUT:
AX=FF12
C.MULTIPLICATION:
ASSUME CS:CODE
CODE SEGMENT
MOV AL,22H
MOV BL,11H
MUL BL
INT 03H
CODE ENDS
END
RESULT:
OUTPUT:
AX=0242
D.DIVISION:
ASSUME CS:CODE
CODE SEGMENT
MOV AH,00H
MOV AL,33H
MOV BL,11H
DIV BL
INT 03H
CODE ENDS
END
RESULT:
OUTPUT:
AX=0003
8051 MICROCONTROLLER
EXPERIMENT NO:17
PROGRAM FOR ARITHMETIC OPERATIONS OF 8051
MICREOCONTROLLER
AIM:WRITE AN ASSEMBLY LANGUAGE PROGRAM TO PERFORM ARITHMETIC
OPERATIONS OF TWO 8 BIT NUMBERS
APPARATUS:
1.MC 8051 TRAINER KIT
2.SMPS
PROGRAM:
A.ADDITION:
8000 MOV A,#03
8002 MOV B,#05
8005 ADD A,B
8007 LCALL 03
RESULT:
S.NO ADDRESS OPCODE MNEMONIC OPERANDS
4. 8007 12 LCALL 03
OUTPUT: A(DATA)=08
PROGRAM:
A.SUBTRACTION:
8000 MOV A,#05
8002 MOV B,#02
8005 SUBB A,B
8007 LCALL 03
RESULT:
S.NO ADDRESS OPCODE MNEMONIC OPERANDS
4. 8007 12 LCALL 03
OUTPUT: A(DATA)=03
MULTIPLICATION:
PROGRAM:
8000 MOV DPTR,#8200
8001 MOV A,@DPTR
8004 MOV F0,A
8005 INC DPTR
8007 MOVX A,@DPTR
8008 MUL AB
8009 INC DPTR
800A MOVX @DPTR,A
800B MOV A,F0
800E INC DPTR
800F MOVX @DPTR,A
8010 LCALL 03
RESULT:
S.NO ADDRESS OPCODE MNEMONIC OPRANDS
OUTPUT A(DATA):36H
DIVISION:
PROGRAM:
8000 MOV DPTR,#8200
8001 MOV A,@DPTR
8004 MOV F0,A
8005 INC DPTR
8007 MOVX A,@DPTR
8008 DIV AB
8009 INC DPTR
800A MOVX @DPTR,A
800B MOV A,F0
800E INC DPTR
800F MOVX @DPTR,A
8010 LCALL 03
RESULT:
S.NO ADDRESS OPCODE MNEMONIC OPRANDS
OUTPUT A(DATA):02H
EXPERIMENT NO:18
PROGRAM FOR INCREMENT AND DECREMENT OPERATIONS OF
8051 MICREOCONTROLLER
AIM:WRITE AN ASSEMBLY LANGUAGE PROGRAM AND EXECUTE THE PROGRAM FOR
INCREMENT/DECFEMENT OPERATIONS OF 8051 MICRO CONTROLLER
APPARATUS:
1.MC 8051 TRAINER KIT
2.SMPS
PROGRAM:
A.INCREMENT:
8000 MOV A,#08
8002 INC A
8003 LCALL 03
RESULT:
S.NO ADDRESS OPCODE MNEMONIC OPERANDS
2. 8002 04 INC A
3. 8003 12 LCALL 03
OUTPUT: A(DATA)=09
PROGRAM:
A.DECREMENT:
8000 MOV A,#08
8002 DEC A
8003 LCALL 03
RESULT:
S.NO ADDRESS OPCODE MNEMONIC OPERANDS
2. 8002 04 DEC A
3. 8003 12 LCALL 03
OUTPUT: A(DATA)=07
EXPERIMENT NO:19
PROGRAM FOR LOGICAL OPERATIONS OF 8051
MICREOCONTROLLER
AIM:WRITE AN ASSEMBLY LANGUAGE PROGRAM AND EXECUTE THE PROGRAM FOR
LOGICAL OPERATIONS OF 8051 MICRO CONTROLLER
APPARATUS:
1.MC 8051 TRAINER KIT
2.SMPS
PROGRAM:
A.AND OPERATION:
8000 MOV A,#03
8002 MOV R1,#09
8004 ANL A,R1
8005 LCALL 03
RESULT:
S.NO ADDRESS OPCODE MNEMONIC OPERANDS
4. 8005 12 LCALL 03
OUTPUT: A(DATA)=01
PROGRAM:
B.OR OPERATION:
8000 MOV A,#05
8002 MOV R1,#09
8004 ORL A,R1
8005 LCALL 03
RESULT:
S.NO ADDRESS OPCODE MNEMONIC OPERANDS
4. 8005 12 LCALL 03
OUTPUT: A(DATA)=0D
PROGRAM:
C.EX-OR OPERATION:
8000 MOV A,#05
8002 MOV R1,#09
8004 XRL A,R1
8005 LCALL 03
RESULT:
S.NO ADDRESS OPCODE MNEMONIC OPERANDS
4. 8005 12 LCALL 03
OUTPUT: A(DATA)=0C
EXPERIMENT NO:20
PROGRAM FOR ROTATE,SWAP,CLEAR OPERATIONS OF 8051
MICREOCONTROLLER
AIM:WRITE AN ASSEMBLY LANGUAGE PROGRAM AND EXECUTE THE PROGRAM FOR
ROTATE OPERATIONS OF 8051 MICRO CONTROLLER
APPARATUS:
1.MC 8051 TRAINER KIT
2.SMPS
PROGRAM:
A.ROTATE LEFT OPERATION(WITHOUT CARRY):
8000 MOV A,#05
8002 RL A
8003 LCALL 03
RESULT:
2. 8002 23 RL A
3. 8003 12 LCALL 03
OUTPUT: A(DATA)=0A
PROGRAM:
B.ROTATE LEFT OPERATION(WITH CARRY):
8000 MOV A,#0A
8002 RLC A
8003 LCALL 03
RESULT:
2. 8002 33 RLC A
3. 8003 12 LCALL 03
OUTPUT: A(DATA)=14
PROGRAM:
C.ROTATE RIGHT OPERATION(WITHOUT CARRY):
8000 MOV A,#05
8002 RR A
8003 LCALL 03
RESULT:
2. 8002 03 RR A
3. 8003 12 LCALL 03
OUTPUT: A(DATA)=82
PROGRAM:
D.ROTATE RIGHT OPERATION(WITH CARRY):
8000 MOV A,#0A
8002 RRC A
8003 LCALL 03
RESULT:
2. 8002 13 RRC A
3. 8003 12 LCALL 03
OUTPUT: A(DATA)=05
PROGRAM:
E.SWAP OPERATION:
8000 MOV A,#03
8002 SWAP A
8003 LCALL 03
RESULT:
2. 8002 04 SWAP A
3. 8003 12 LCALL 03
OUTPUT: A(DATA)=30
PROGRAM:
F.CLEAR OPERATION:
8000 MOV A,#05
8002 CLR A
8003 LCALL 03
RESULT:
2. 8002 E4 CLR A
3. 8003 12 LCALL 03
OUTPUT: A(DATA)=00
11
EXPERIMENT NO:21
PROGRAM FOR 1’S COMPLIMENT OPERATION OF 8051
MICREOCONTROLLER
AIM:WRITE AN ASSEMBLY LANGUAGE PROGRAM AND EXECUTE THE PROGRAM FOR
1’S COMPLIMENT OPERATION OF 8051 MICRO CONTROLLER
APPARATUS:
1.MC 8051 TRAINER KIT
2.SMPS
PROGRAM:
A.AND OPERATION:
8000 MOV A,#05
8002 CLP A
8003 LCALL 03
RESULT:
2. 8002 F4 CPL A
3. 8003 12 LCALL 03
OUTPUT: A(DATA)=FA
EXPERIMENT NO.22
Assembly Language Programs to 8086 to Perform Arithmetic, Logical, String Operations on
16 Bit and 32-Bit Data
OUTPUT:
Input output
Register Data Register Data
AX 4343 AX 5454
BX 1111
SUBTRACTION:
OUTPUT:
Input output
Register Data Register Data
AX 4343 AX 3232
BX 1111
MULTIPLICATION:
MEMORY LOCATION OP-CODE LABEL MNEMONIC
1000 MOV AX,4343
MOV BX,1111
MUL BX
INT 3
OUTPUT:
Input Output
Register Data Register Data
AX 4343 AX EA73
BX 1111 DX 047B
DIVISION:
OUTPUT:
Input Output
Register Data Register Data
AX 34CD AX 0002
BX 12AB DX 0F77
LOGICAL OPERATIONS:
AND:
OUTPUT:
Input output
Register Data Register Data
AL 43 AL 01
BL 11 BL 11
OR:
OUPUT:
Input output
Register Data Register Data
AL 43 AL 53
BL 11 BL 11
NOR:
OUTPUT:
Input output
Register Data Register Data
AL 43 AL AC
BL 11 BL 11
NAND:
OUTPUT:
Input output
Register Data Register Data
AL 43 AL FE
BL 11 BL 11
EX-NOR:
OUTPUT:
Input output
Register Data Register Data
AL 43 AL AD
BL 11 BL 11
STRING OPERATIONS:
REVERSE A STRING:
JNZ UP
INT 3
OUTPUT:
Input output
MEMORY Data MEMORY Data
LOCATION LOCATION
2000 01 2008 08
2001 02 2009 07
2002 03 200A 06
2003 04 200B 05
2004 05 200C 04
2005 06 200D 03
2006 07 200E 02
2007 08 200F 01
EXPERIMENT NO.23
Bit level Logical Operations, Rotate, Shift, Swap and Branch Operations.
ROTATE RIGHT:
MEMORY LOCATION OP-CODE LABEL INSTRUCTION
1000 MOV AX,9E78H
MOV CL,02
ROR AX,CL
INT 3
OUTPUT:
Input output
Register Data Register Data
AX 9E78 AX 279E
CL 02
ROTATE LEFT:
MEMORY LOCATION OP-CODE LABEL INSTRUCTION
1000 MOV AX,124FH
MOV CL,03
ROL AX,CL
INT 3
OUTPUT:
Input output
Register Data Register Data
AX 9E78 AX 9278
CL 03
SHIFT LEFT:
OUTPUT:
Input output
Register Data Register Data
AX 7FA4 AX FE90
CL 02
SHIFT RIGHT:
OUTPUT:
Input output
Register Data Register Data
AX 7FA4 AX 1FE9
CL 02
EXPERIMENT NO.24
Assembly Language Programs to Perform Arithmetic (Both Signed and Unsigned) 16 Bit Data
Operations, Logical Operations (Byte and Bit Level Operations), Rotate, Shift, Swap and
Branch Instructions.
Aim: To Perform all Arithmetic, logical, Rotate, Shift, Swap and branch Operations.
Apparatus: 8051 Microcontroller kit.
ADDITION:
OUTPUT:
Input output
DATAL1 34 ADDRESS Data
DATAL2 78 4150 AC
DATAM1 12 4151 68
DATAM2 56
SUBTRACTION:
OUTPUT:
Input output
DATA1 20 4500 10
DATA2 10 4501
MULTIPLICATION:
OUTPUT:
Input output
DATA1 0A 4500 50
DATA2 88 4501 05
DIVISION:
OUTPUT:
Input output
DATA1 65 (DIVIDEND) 4500 0C
DATA2 08 (DIVISOR) 4501 05
LOGICAL OPERATIONS:
AND:
OUTPUT:
Input output
Register Data Register Data
A 43 4150 01
R0 11 R0 11
OR:
OUPUT:
Input output
Register Data Register Data
A 43 4150 53
R0 11 R0 11
NOR:
OUTPUT:
Input output
Register Data Register Data
A 43 4150 AC
R0 11 R0 11
NAND:
OUTPUT:
Input output
Register Data Register Data
A 43 4150 FE
R0 11 R0 11
EX-NOR:
OUTPUT:
Input output
Register Data Register Data
A 43 4150 AD
R0 11 R0 11
EX-OR:
OUTPUT:
Input output
Register Data Register Data
A 43 4150 52
R0 11 R0 11
ROTATE RIGHT:
OUTPUT:
Input output
Register Data Register Data
A 25 4150 92
ROTATE LEFT:
OUTPUT:
Input output
Register Data Register Data
A 25 4150 4A
OUTPUT:
Input output
Register Data Register Data
A 25 4150 92
OUTPUT:
Input output
Register Data Register Data
A 25 4150 4A
SWAP:
OUTPUT:
Input output
Register Data Register Data
A 25 4150 52
EXPERIMENT NO.25
Time delay Generation Using Timers of 8051.
Aim: To perform time delay generation using timers.
Apparatus: 8051 Microcontroller kit,
Timer interfacing device (8253)
Program:
MEMORY LOCATION OP-CODE LABEL INSTRUCTION
4100 MOV DPTR,#FFCE
MOV A,#30
MOVX @DPTR,A
MOV DPTR,#FFC8
MOV A,#05
MOVX @DPTR,A
MOV A,#00
MOVX @DPTR,A
HERE SJMP HERE
OUTPUT: Connect CLKO of 8253 to the debounce circuit and execute the program. Observe the
output of channel 0. After giving six clock pulses, output goes high
EXPERIMENT NO.26
Serial Communication from / to 8051 to / from I/O devices.
Aim: To perform data transfer from one device to another device using serial port.
Apparatus: 8051 microcontroller kit
Serial interfacing device (8251)
Program:
Transmitter program:
Receiver program:
OUTPUT: The transmitter program transfers 41H serially. In the receiver, 8051 internal registers are
initialised for serial reception. As the character is received, the program stores 41H at the location
4200
EXPERIMENT NO.27
Program Using Interrupts to Generate Square Wave 10 KHZ Frequency on P2.1 Using Timer 0
8051 in 8 bit Auto reload Mode and Connect a 1 HZ Pulse to INT1 pin and Display on Port 0.
Assume Crystal Frequency as 11.0592 MHZ
EXPERIMENT NO.28
7 Segment Display to 8051
Aim: To initialise 8279 and to display the character A in the first digit of the display.
Apparatus: 8051 microcontroller kit
8279 display interfacing device.
Program:
OUTPUT: Enter the above program from the address specified and execute it. The display should be
"A" in the first digit, and the rest should be blank
EXPERIMENT NO.29
Matrix Keypad to 8051
PROGRAM IN MICRO-51EB LCD ASSEMBLY LANGUAGE
ORG 4100H
DEN EQU 0FF04H
DENL EQU 04H
LATCH EQU 0FF08H
LATCHL EQU 08H
IOHIGH EQU 0FFH
4100 KEYSTART:
4100 90 FF 0F MOV DPTR,#FF0FH
4103 74 82 MOV A,#82H
4105 F0 MOVX @DPTR,A
4106 START:
4106 74 00 MOV A,#00H
4108 90 FF 0C MOV DPTR,#FF0CH ;PORTA
410B F0 MOVX @DPTR,A
410C 90 FF 0D MOV DPTR,#FF0DH ;PORTB
410F E0 MOVX A,@DPTR
4110 54 0F ANL A,#0FH
4112 B4 0F 03 CJNE A,#0FH,CONT
4115 02 41 06 LJMP START
4118 CONT:
4118 12 41 1E LCALL GETDAT ; R O U T I N E T O GETDATA
411B 02 41 06 LJMP START
411E GETDAT:
411E 7A 51 MOV R2,#51H
4120 7B 00 MOV R3,#00H ;DATA TO BE DISPLAY IN 5100H
4122 7C 52 MOV R4,#52H
4124 7D 00 MOV R5,#00H
4126 74 0E MOV A,#0EH ;FIRST ROW DATA
4128 12 41 3B LCALL FIND1
PROCEDURE:
The above mentioned datas are to be stored in corresponding locations when we press the key
In hex key board, the key will be displayed in MICRO-51 EB LCD KIT
EXPERIMENT NO.30
8 bit ADC Interface to 8051.
PROCEDURE
EXPERIMENT NO.31
Triangular Wave Generator through DAC interfaces to 8051.
Aim: To generate a Triangular wave from using DAC interface to 8051.
Apparatus: 8051 Microcontroller kit
DAC interface board.
Program:
DAC I EQU 0FFC0H
ORG 4100H
4100 START:
4100 74 00 MOV A,#00H
4102 LI:
4102 90 FF C0 MOV DPTR,#DACI
4105 F0 MOVX @DPTR,A
4106 04 INC A
4107 70 F9 JNZ LI
4109 74 FF MOV A,#FFH
410B L2:
410B F0 MOVX @DPTR,A
410C 14 DEC A
410D 70 4C JNZ L2
410F 80 EF SJMP START
4111 END