MPMC Lab Manual
MPMC Lab Manual
List Of Experiments
Module 1
1)
2)
3)
4)
5)
A) Signed Multiplication
6)
A) Ascii Addition
7)
A) Ascii Multiplication
B) Signed Division
B) Ascii Subtraction
B) Ascii Division
Module 2
1. Packed Bcd To Unpacked Bcd
2. Bcd To Ascii Conversion
Module 3
1. Block Move
2. String Reversing: For Any Known Character Length
3. Length Of The String
4. String Comparision
5. String Insertion
6.String Deletion
7. Display The String
Module 4
1. A) Stepper motor interfacing in clockwise direction using 8086
B) Stepper motor interfacing in anticlockwise direction using 8086
2. A) Microcontroller Addition
B) Microcontroller Subtraction
C) Microcontroller Multiplication
D) Microcontroller Division
RESOURCES REQUIERED:
Personal Computer
MASM/TASM Software Installed
Program:
DATA SEGMENT
X DB ?
Y DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA
START:
MOV AX, DATA
MOV DS, AX
MOV AX,0000H
MOV AL, X
MOV BL, Y
ADD AL, BL
INT 03
CODE ENDS
END START
END
Flags Affected: AF, CF, OF, PF, SF, ZF
Calculations:
SYMBO
L
X
Y
ADDRE
SS
0000
0001
VALUES VALUES
1
2
12
FE
56
03
AIM: To write an assembly language program to perform subtraction of two 8-bit signed and
unsigned numbers
RESOURCES REQUIERED:
Personal Computer
MASM/TASM Software Installed
Program:
DATA SEGMENT
X DB (?)
Y DB (?)
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA
START:
MOV AX, DATA
MOV DS, AX
MOV AX,0000H
MOV AL, X
MOV BL, Y
SUB AL, BL
INT 03
CODE ENDS
END START
END
Flags Affected: AF, CF, OF, PF, SF, ZF
Calculations:
SYMBO
L
X
Y
ADDRE
SS
0000
0001
VALUES VALUES
1
2
7D
02
56
03
AIM: To write an assembly language program to perform addition of two 16-bit signed and
unsigned numbers
RESOURCES REQUIERED:
Personal Computer
MASM/TASM Software Installed
Program:
DATA SEGMENT
X DW ?
Y DW ?
RES DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA
START:
MOV AX, DATA
MOV DS, AX
MOV AX, X
MOV BX, Y
ADD AX, BX
MOV RES,AX
INT 03
CODE ENDS
END START
END
FLAGS which may affect: AF, CF, OF, PF, SF, ZF
CALCULATIONS:
SYMBO
L
X
Y
RES
ADDRE
SS
0000
0002
0004
VALUES VALUES
1
2
1234
FDFE
5678
1234
X=
Y=
---------------------------------------
X+Y=
X+Y
CF=
AF=
CF=,
AF=
ADDRE
SS
0000
0002
0004
VALUES VALUES
1
2
3322
1ABC
2211
8E12
X=
Y=
----------------------------
X+Y=
CF=,
AF=
----------------X+Y
CF=,
AF=
ADDRE
SS
0000
0001
0002
VALUES VALUES
1
2
12
FF
34
AA
ADDRE
SS
0000
0002
0004
0006
VALUES VALUES
1
2
ADDRE
SS
0000
0002
0003
0004
VALUES VALUES
1
2
014D
1200
34
55
ADDRE
SS
0000
0002
0004
0006
0008
VALUES VALUES
1
2
0032
0BCD
02AB
00AB
2012
ABCD
ADDRE
SS
0000
0002
0004
0006
VALUE
S1
VALUE
S2
ADDRE
SS
0000
0002
0003
0004
VALUE
S1
VALUE
S2
ADDRE
SS
0000
0001
0002
0003
8 + 6 =
RES = 0104 (AX) unpacked BCD of 14
VALUE
S1
8
6
04
01
VALUE
S2
ADDRE
SS
0000
0001
0002
0003
5 9 =
RES=00FC(AX)->2s Complement of(-4)
VALUE
S1
9
5
VALUE
S2
5
9
FC
00
ADDRE
SS
0000
0001
0002
0003
09 * 05 =
RES = 0405 (AX) unpacked BCD of 45
VALUE
S1
09
05
05
04
VALUE
S2
ADDRE
SS
0000
VALUE
S1
0607
0002
09
0003
0004
07
04
VALUE
S2
ADDRES
S
0000
0002
0003
VALUES1
49
VALUES2
INPUT:
BCD = 49
OUTPUT:
UBCD1 = 09
UBCD2 = 04
BCD = 49
ASCII1= 39
ASCII2= 34
ADDRE
SS
0000
0002
0003
VALUE
S1
49
VALUE
S2
MODULE 3
1. BLOCK MOVE
AIM: To write an assembly language program to move the block of data from a specified
source location to the specified destination location.
RESOURCES REQUIERED:
Personal Computer
MASM/TASM Software Installed
REGISTERS USED: AX, DS, ES, SI, DI
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
ORG 2000H
STR DB 04H,0F9H,0BCH,98H,40H
COUNT EQU 05H
DATA ENDS
EXTRA SEGMENT
ORG 3000H
STR1 DB 05 DUP(?)
EXTRA ENDS
CODE SEGMENT
START:MOV AX,DATA
MOV DS,AX
MOV AX,DATA
MOV ES,AX
MOV SI,OFFSET STR
MOV DI,OFFSET STR1
MOV CL,COUNT
CLD
REP MOVSB
INT 03H
CODE ENDS
END START
END
FLAGS AFFECTED: No flags are affected
RESULT:
INPUT: STR (DS:2000H) = 04H,F9H,BCH,98H,40H
OUTPUT:
STR1(ES:3000H) = 04H,F9H,BCH,98H,40H
4. STRING COMPARISION
AIM: To write an assembly language program to compare the given strings.
RESOURCES REQUIERED:
Personal Computer
MASM/TASM Software Installed
REGISTERS USED: AX, DS, SI, DI, CL
PROGRAM:
ASSUME CS:CODE,DS:DATA,ES:EXTRA
DATA SEGMENT
SRC DB 04H,05H,07H,08H
COUNT EQU 04H
DATA ENDS
EXTRA SEGMENT
DST DB 04H,06H,07H,09H
EXTRA ENDS
CODE SEGMENT
START:MOV AX,DATA
MOV DS,AX
MOV AX,EXTRA
MOV ES,AX
MOV SI,OFFSET SRC
MOV DI,OFFSET DST
MOV CX,0000H
MOV CL,COUNT
CLD
REP CMPSB
INT 03H
CODE ENDS
END START
END
FLAGS AFFECTED: ZF,CF
RESULT:
INPUT:
SRC (DS:0000H) =
04H,05H,07H,08H
DST (ES:0000H) =
04H,06H,07H,09H
OUTPUT:
I): IF SRC = DST THEN ZF = 1 &
II): IF SRC DST THEN ZF = 0
5. STRING INSERTION
AIM: To write an Assembly Language Program for inserting one string into the other.
RESOURCES REQUIERED:
Personal Computer
MASM/TASM Software Installed
PROGRAM:
DATA SEGMENT
src DB "New String"
Nul DB 00H;
pos DW 0002H;
DATA ENDS
EXTRA SEGMENT
dst DB "Old String"
EXTRA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:EXTRA
MOV AX,DATA
MOV AX,DATA
MOV DS,AX
MOV AX,EXTRA
MOV ES,AX
MOV SI,OFFSET src
CALL getsrcLENGTH
MOV BX,CX
MOV DI,OFFSET dst
CALL getdstLENGTH
MOV DX,CX
MOV DI,DX
CMP pos,DX;
JG Skip;
MOV CX,pos;
DEC CX;
AGAIN:
MOV AL,ES:[DI]
MOV ES:[DI+BX],AL
CMP DI,CX
JZ Skip
DEC DI
JMP AGAIN
Skip: CLD;
MOV SI,OFFSET src
Insert:
MOV AL,[SI]
MOV ES:[DI],AL
INC SI
INC DI
DEC BX
JNZ Insert
INT 03
getsrcLENGTH PROC
MOV AL,00H
MOV CX,0000H
UP1: CMP [SI],AL
JZ STOP1
INC SI
INC CX
JMP UP1
STOP1: RET
getsrcLENGTH ENDP
getdstLENGTH PROC
MOV AL,00H
MOV CX,0000H
UP2: CMP ES:[DI],AL
JZ STOP2
INC DI
INC CX
JMP UP2
STOP2: RET
getdstLENGTH ENDP
CODE ENDS
END
END
FLAGS AFFECTED: No flags are affected
OUTPUT: new string
6.STRING DELETION
AIM: To write an Assembly Language Program for deleting a string in specified index range
RESOURCES REQUIERED:
Personal Computer
MASM/TASM Software Installed
PROGRAM:
DATA SEGMENT
src DB "COMPUTER";
Nul DB 00H;
startidx DW 0002
endidx DW 0004
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET src
CALL getsrcLENGTH
MOV BP,startidx;
MOV BX,endidx;
CMP BP,BX;
JG Skip;
DEC BP;
DEC BX;
MOV SI,BP;
AGAIN: MOV AL,[SI+BX]
MOV [SI+BP],AL
INC SI
CMP SI,CX;
JNZ AGAIN
Skip: INT 03;
getsrcLENGTH PROC
MOV AL,00H
MOV CX,0000H
UP1: CMP [SI],AL
JZ STOP1
INC SI
INC CX
JMP UP1
STOP1: RET
getsrcLENGTH ENDP
CODE ENDS
END
END
RESULT:
WELCOME TO MICROPROCESSORS LAB
Module 4:
1. A) Stepper motor interfacing in clockwise direction using 8086
AIM: To write an Assembly Language Program to rotate stepper motor in clockwise direction.
RESOURCES REQUIRED:
8086/8088 Kit
PROGRAM:
A 2000
MOV AX, 0000
MOV ES, AX
MOV DX, 0FFE6
MOV AL, 80
OUT DX, AL
MOV AL, 11
MOV DX, 0FFE0
OUT DX, AL
CALL 2020
RCR AL, 1
JMP 2010
ADD DX, 0002
MOV AL, [SI]
OUT DX, AL
INC SI
MOV CX, 0800
LOOP 2023
RET
2. A) MICROCONTROLLER ADDITION
RESULT:
INPUT:
A=05
R1=03
OUTPUT:
A=08
2. B) MICROCONTROLLER SUBTRACTION
AIM: To write an Assembly Language Program to perform microcontroller subtraction.
RESOUCES REQUIRED:
8051 Kit
PROGRAM:
A 8000
MOV A, #05
MOV R1, #03
SUBB A, R1
LJMP 03
G 8000
RESULT:
INPUT:
A=05
R1=03
OUTPUT:
A=02
2. C) MICROCONTROLLER MULTIPLICATION
AIM: To write an Assembly Language Program to perform microcontroller multiplication.
RESOUCES REQUIRED:
8051 Kit
PROGRAM:
A 8000
MOV A, #05
MOV F0, #03
MUL AB
LJMP 03
G 8000
RESULT:
INPUT:
A=05
B=03
OUTPUT:
A=0F
NOTE: Here F0 is noting but register B.
2. D) MICROCONTROLLER DIVISION
AIM: To write an Assembly Language Program to perform microcontroller division.
RESOUCES REQUIRED:
8051 Kit
PROGRAM:
A 8000
MOV A, #04
MOV F0, #02
DIV AB
LJMP 03
G 8000
RESULT:
INPUT:
A=04
R1=02
OUTPUT:
A=02