MICRO PROCESSORS
AND
MICRO CONTROLLERS
LAB MANUAL
RD ST
3 B. TECH - 1 SEM
& ECE
1|Page
1.PROGRAMS FOR 16 BIT ARITHMETIC OPERATIONS
(USING VARIOUS ADDRESSING MODES):
A) WRITE AN ALP TO PERFORM ADDITION AND SUBTRACTION OF MULTI
PRECISION NUMBERS.
AIM:
TO WRITE AN ASSEMBLY LANGUAGE PROGRAM FOR 16-BIT ADDITION
USING EMU86 SOFTWARE.
APPARATUS:
EMU86 SOFT WARE
PC
ALGORITHM:
STEP 1: START
STEP 2: INITIALIZE THE DATA SEGMENT
STEP 3: LOAD THE FIRST NUMBER IN TO AX REGISTER
STEP4: LOAD THE SECOND NUMBER IN TO BX REGISTER
STEP5: ADD AX, BX
STEP6: LOAD THE RESULT FROM AX
STEP7: TERMINATE THE PROGRAM
STEP8: STOP
2|Page
PROGRAM:
ASSUME CS: CODE, DS: DATA
DATA SEGMENT
NUM1 DW 2000H
NUM2 DW 1000H
RES1 DW 0000H
RES2 DB 00H
DATA ENDS
CODE SEGMENT
START: MOV AX, DATA
MOV DS, AX
MOV AX, NUM1
MOV BX, NUM2
MOV CL, 00H
ADD AX, BX
JNC L1
INC CL
L1: MOV RES1, AX
MOV RES2, CL
HLT
CODE ENDS
END START
TEST DATA:
3|Page
16-BIT SUBSTRACTION
AIM:
TO WRITE AN ASSEMBLY LANGUAGE PROGRAM FOR 16-BIT SUBTRACTION USING
EMU86 SOFTWARE.
APPARATUS:
EMU8086 SOFT WARE
PC
ALGORITHM:
STEP 1: START
STEP 2: INITIALIZE THE DATA SEGMENT
STEP 3: LOAD THE FIRST NUMBER IN TO AX REGISTER
STEP4: LOAD THE SECOND NUMBER IN TO BX REGISTER
STEP5: SUB AX, BX
STEP6: LOAD THE RESULT FROM AX
STEP7: TERMINATE THE PROGRAM
STEP8: STOP
4|Page
PROGRAM:
ASSUME CS: CODE, DS: DATA
DATA SEGMENT
NUM1 DW 2000H
NUM2 DW 1000H
RES DW 0000H
DATA ENDS
CODE SEGMENT
START: MOV AX, DATA
MOV DS, AX
MOV AX, NUM1
MOV BX, NUM2
SUB AX, BX
MOV RES, AX
HLT
CODE ENDS
END START
TEST DATA:
RESULT:
5|Page
B). WRITE AN ALP TO PERFORM MULTIPLICATION AND DIVISION OF
SIGNED AND UNSIGNED HEXADECIMAL NUMBERS.
. 16-BIT MULTIPLICATION
AIM:
TO WRITE AN ASSEMBLY LANGUAGE PROGRAM FOR 16-BIT MULTIPLICATION USING
EMU86 SOFTWARE.
APPARATUS:
EMU86 SOFT WARE
PC
ALGORITHM:
STEP 1: START
STEP 2: INITIALIZE THE DATA SEGMENT
STEP 3: LOAD THE FIRST NUMBER IN TO AX REGISTER
STEP4: LOAD THE SECOND NUMBER IN TO BX REGISTER
STEP5: MUL AX, BX
STEP6: LOAD THE RESULT1 FROM AX
STEP7: LOAD THE RESULT2 FROM BX
STEP8: TERMINATE THE PROGRAM
STEP9: STOP
6|Page
PROGRAM:
ASSUME CS: CODE, DS: DATA
DATA SEGMENT
NUM1 DW 4567H
NUM2 DW 1234H
RES1 DW 0000H
RES2 DW 0000H
DATA ENDS
CODE SEGMENT
START: MOV AX, DATA
MOV DS, AX
MOV AX, NUM1
MOV BX, NUM2
MUL BX
MOV RES1, AX
MOV RES2, DX
HLT
CODE ENDS
END START
TEST DATA:
7|Page
16-BIT DIVISION
AIM:
TO WRITE AN ASSEMBLY LANGUAGE PROGRAM FOR 16-BIT DIVISION USING EMU86
SOFTWARE.
APPARATUS:
EMU86 SOFT WARE
PC
ALGORITHM:
STEP 1: START
STEP 2: INITIALIZE THE DATA SEGMENT
STEP 3: LOAD THE FIRST NUMBER IN TO AX REGISTER
STEP4: LOAD THE SECOND NUMBER IN TO BX REGISTER
STEP5: DIV AX, BX
STEP6: LOAD THE RESULT FROM AX
STEP7: LOAD THE RESULT2 FROM BX
STEP8: TERMINATE THE PROGRAM
STEP9: STOP
8|Page
PROGRAM:
ASSUME CS: CODE, DS: DATA
DATA SEGMENT
NUM1 DW 4567H
NUM2 DW 1234H
RES1 DW 0000H
RES2 DW 0000H
DATA ENDS
CODE SEGMENT
START: MOV AX, DATA
MOV DS, AX
MOV AX, NUM1
MOV BX, NUM2
DIV BX
MOV RES1, AX
MOV RES2, DX
HLT
CODE ENDS
END START
TEST DATA:
9|Page
C) WRITE AN ALP TO FIND SQUARE, CUBE AND FACTORIAL OF
A GIVEN NUMBER.
FACTORIAL
AIM: TO WRITE AN ASSEMBLY LANGUAGE PROGRAM FOR
FACTORIAL OF A NUMBER BY USING EMU8086 SOFTWARE.
APPARATUS: EMU8086 SOFTWARE WITH PERSONAL COMPUTER.
ALGORITHM:
STEP 1: START
STEP 2: INITIALIZE THE DATA SEGMENT
STEP 3: LOAD THE FIRST NUMBER IN TO AX REGISTER
STEP4: LOAD THE SECOND NUMBER IN TO BX REGISTER
STEP5: START THE LOOP OF FACTORIAL
STEP6: DECRESE BX DATA AND MULTIPLY BX, AX
STEP7: COMPARE BX WITH 1
STEP8: JUMP IF NOT EQUAL TO 1
STEP9: MOVE AX IN TO CX REGISTER
STEP10: STOP
PROGRAM:
10 | P a g e
ASSUME CS: CODE, DS: DATA
DATA SEGMENT
NUM1 DB 05H
RES DW 0000H
DATA ENDS
CODE SEGMENT
START: MOV AX, DATA
MOV DS, AX
MOV AX, 5
MOV BX, AX
FACT:
DEC BX
MUL BX
CMP BX, 1
JNE FACT
MOV CX, AX
END
MOV AX, 4C00H
INT 21H
CUBE AND FACTORIAL:
11 | P a g e
DATA SEGMENT
M1 DB "ENTER NUMBER: $"
NEWLINE DB 13, 10,"$"
M2 DB "CUBE OF $"
M3 DB "IS $"
PRODUCT DW 1
VAL DB?
ENDS
CODE SEGMENT
START:
MOV AX, @DATA
MOV DS, AX
LEA DX, M1
MOV AH, 09H
INT 21H
MOV AH, 01H
INT 21H
SUB AL, 30H
MOV [VAL], AL
MOV CL, 3
FOR:
MUL [PRODUCT]
CMP CL,1
JC FOR_END
MOV BYTE PTR PRODUCT, AL
12 | P a g e
MOV AL, [VAL]
LOOP FOR
FOR_END:
AAM
MOV [PRODUCT], AX
LEA DX, NEWLINE
MOV AH, 09H
INT 21H
LEA DX, M2
MOV AH, 09H
INT 21H
MOV DL, BYTE PTR PRODUCT [1]
ADD DL, 30H
MOV AH, 02H
INT 21H
MOV DL, BYTE PRY PRODUCT [0]
ADD DL, 30H
MOV AH, 02H
INT 21H
MOV AX, 4C00H
INT 21H
ENDS
ENDS STAR
2.PROGRAMS INVOLVING BIT MANIPULATION
INSTRUCTIONS:
13 | P a g e
A) A) WRITE AN ALP TO FIND THE GIVEN DATA IS
POSITIVE OR NEGATIVE
Aim:
To write an assembly language program for bit
manipulation using EMU8086 software.
Apparatus:
EMU8086 software with PC.
ALGORITHM:
STEP 1: START
STEP 2: MOVE THE POSITIVE COUNTER IN TO THE BL REGISTER
STEP3: MOVE THE NAGATIVE COUNTER IN TO THE BH REGISTER
STEP4: CREATE LOOP MOVE SI DATA IN TO AL REG
STEP5: INC BL AND JMP NXT
STEP6: IF IT IS NEGATIVE THEN GO TO NEXT AND DEC CH REG
STEP7: INC BL AND JMP NXT
STEP8: THEN NOW JMP AGAIN BACK TO CHECK POSITIVE OR
NEGATIVE NUMBER
STEP9: STOP
14 | P a g e
PROGRAM:
ORG 100H
MOV BL, 00H /BL=POSITIVE COUNTER
MOV BH, 00H /BH=NEGATIVE COUNTER
MOV SI, 1100H/SI=1100H (MEMORY LOCATION)
MOV CL, 01H/CL=01(SHIFT OPERATION)
MOV CH, [SI] /CH=05
INC SI
LOOP: MOV AL, [SI] /AL=01=>00000001, 8A, 1F
SHL AL, CL
JC NEGATIVE
INC BL /BL=01, 02
JMP NEXT
NEGATIVE: INC BH /BH=00, 01
NEXT: ADD SI, 01H /SI=1104H
DEC CH /CH=04, 03, 02,00S
JNZ LOOP
MOV [1200H], BL
MOV [1201H], BH
HLT
15 | P a g e
(B). WRITE AN ALP TO FIND THE GIVEN DATA IS
ODD OR EVEN.
Aim:
To write an assembly language program for finding
the given data is even or odd using EMU8086
software.
Apparatus:
EMU8086 software with PC.
ALGORITHM:
STEP 1: START
STEP 2: INITIALIZE THE DATA SEGMENT
STEP 3: LOAD THE EFFECTIVE ADDRESS IN TO SI REGISTER
STEP4: LOAD THE CONTACT OF SI IN TO AL REGISTER
STEP5: DO THE OPERATION OF ROTATE BIT TO BITE OF AL
STEP6: INC BL REG AND JMP NXT
STEP7: INC THE SI VALUE AND DEC CL
STEP8: MOVE EVEN VALUE IN BL REG AND ODD IN BH REG
STEP9: STOP
PROGRAM:
DATA SEGMENT
16 | P a g e
NUM DB 5, 9, 25, 20,76,0
EVEN DB?
ODD DB?
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA
START:
MOV AX, DATA
MOV DS, AX /INITIALIZE DS REGISTER
LEA SI, NUM /LODE EFFECTIVE ADDRESS
MOV BL, 0H
MOV BH, 0H
MOV CL, [SI] /TAKE THE COUNTER VALUE FROM FIRST
LOCATION
INC SI /POINT TO THE FIRST NUMBER
UP: MOV AL, [SI]
ROR AL, 1
JC XX
INC BL /INCREMENT EVEN NUMBER REG
JMP NEXT
XX: INC BH /INCREMENT ODD NUMBER REG
NEXT: INC SI /POINT TO NEXT NUMBER
DEC CL /DECREMENT THE COUNTER
JNZ UP /IF COUNTER IS NOT 0 REPEAT THE PROCESS
MOV EVEN, BL /STORE TOTAL EVEN NUMBER
MOV ODD, BH /STORE TOTAL ODD NUMBER
MOV AH, 4CH
INC 21H /TERMINATE THE CODE
CODE ENDS
END START
C) WRITE AN ALP TO FIND LOGICAL ONES AND
ZEROS IN A GIVEN DATA.
Aim:
17 | P a g e
To write an assembly language program for finding
the logical ones and zeros using EMU8086 software.
Apparatus:
EMU8086 software with PC.
ALGORITHM:
STEP 1: START
STEP 2: MOVE THE 16 BIT DATA IN TO AX REG
STEP 3: INITIALIZE THE COUNTER 10H
STEP4: INITIALIZE THE BX WITH 0000H
STEP5: ROTATE THE RIGHT ARM
STEP6: IF CARRY GO TO THE LABEL
STEP7: INC BH
STEP8: DEC CL
STEP9: IF NOT ZERO GO TO THE LABEL L3
STEP10: STOP
PROGRAM:
CODE SEGMENT
ASSUME CS: CODE
START: MOV AX, 5A32H
18 | P a g e
MOV CL, 10H
MOV BX, 0000H
L1: RCR AX, 01H
JC L2
INC BH
DEC CL
JNZ L1
JMP L3
L2: INC BL
DEC CL
JNZ L1
L3: CODE ENDS
END START
3. PROGRAMS ON ARRAYS FOR 8086
A) WRITE AN ALP TO FIND
ADDITION/SUBTRACTION OF N NO‘S.
19 | P a g e
ADDITION:
Aim:
To write an assembly language program for
finding the addition/subtraction using EMU8086
software.
Apparatus:
EMU8086 software with PC.
ALGORITHM:
STEP 1: START
STEP 2: SPECIFY THE ADDRESS OF STACK INDEX
STEP 3: MOVE THE NUMBER IN STACK TO CL
STEP4: DEC CL AND INC SI
STEP5: MOVE STACK INDEX TO AL AND INC STACK INDEX
STEP6: DEFINE BACK MOVE SI TO BL AND ADD THE AL AND BL REG
STEP7: DEC SI AND INC SI IF IT IS NOT EQUAL TO ZERO JMO TO
BACK
STEP8: OTHERWISE STORE THE RESULT IN DI
STEP9:STOP
PROGRAM:
ORG 100H
20 | P a g e
MOV SI, 1100H //SI=1100H
MOV CL, [SI] //CL=05
DEC CL //CL=04
INC SI //SI=1101H
MOV AL, [SI] //AL=01
INC SI //SI=1102H
MOV BL,[SI] //BL=03
ADD AL,BL //AL+BL
INC SI //SI=1103H,1104H,1105H
DEC CL //CL=03,02,01,00
JNZ BACK
MOV DI,1200H
MOV [DI],AL
HLT
SUBTRACTION:
MOV SI,2000
21 | P a g e
MOV CL, [SI]
INC SI
MOV AX, [SI]
DEC CL
UP:INC SI
INC SI
MOV BX, [SI]
SUB AX, BX
DEC CL
JNZ UP
INC SI
INC SI
MOV [SI], AX
INT 03H
RESULT:
B)WRITE AN ALP FOR FINDING
LARGEST/SMALLEST NO.
SMALLEST:
22 | P a g e
Aim:
To write an assembly language program for
finding the largest/smallest number using
EMU8086 software.
Apparatus:
EMU8086 software with PC
ALGORITHM:
STEP 1: START
STEP 2: SPECIFY THE ADDRESS OF STACK INDEX
STEP 3: SPECIFY THE ADDRESS OF DESIGNATON ADDRESS
STEP4: MOVE THE NUMBER IN STACK TO CL
STEP5: INC SI AND MOVE THE NUMBER IN STACK TO AL
STEP6: DEC CLAND INC SI
STEP7: MOVE THE NUMBER IN STACK TO BL AND COMPARE AL, BL
STEP8: IF CARRY JMP AHEAD IF NO CARRY MOVE NUMBER BL IN TO AL
STEP9: STOP
PROGRAM:
MOV SI, 1100H
MOV DI, 1200H
MOV CL, [SI]
INC SI
MOV AL, [SI]
23 | P a g e
DEC CL
AGAIN:
INC SI
MOV BL, [SI]
CMP AL, BL
JC AHEAD
MOV AL, BL
AHEAD:
DEC CL
JNC AGAIN
MOV [DI], AL
HLT
LARGEST:
PROGRAM:
MOV SI, 1100H
24 | P a g e
MOV DI, 1200H
MOV CL, [SI]
INC SI
MOV AL, [SI]
DEC CL
AGAIN:
INC SI
MOV BL, [SI]
CMP AL, BL
JNC AHEAD
MOV AL, BL
AHEAD:
DEC CL
JNC AGAIN
MOV [DI], AL
HLT
C) WRITE AN ALP TO SORT GIVEN ARRAY IN
ASCENDING/DESCENDING ORDER.
Aim:
25 | P a g e
To write an assembly language program to sort the
given array in ascending/descending order using
EMU8086 software.
Apparatus:
EMU8086 software
PC
ALGORITHM:
STEP 1: START
STEP 2: INITIALIZE THE DATA SEGMENT MEMORY
STEP 3: INITIALIZE THE ELEMENT COUNTER
STEP4: INITIALIZE THE COMPREHENSION COUNTER
STEP5: LOAD THE NUMBER IN TO RESPECTIVE REG
STEP6: CMP THE ELEMENT IN TO RESPECTIVE REG THEN SECOND
ELEMENT GO TO THE STEP7 ELSE GO TO THE NEXT STER
STEP7: SWAP THE NUMBER IN THE MEMORY
STEP8:INC MEMORY POINTER AND DEC COMPREHENSION COUNTER
STEP9: IT IS COUNT EQUALS TO ZERO IF YES GO TO THE NEXT
STEPELSE GO TO THE STEP4
STEP10: DEC THE ELEMENT COUNTER
STEP11: IT IS COUNT NOT ZERO GO TO THE COMPREHENSION
COUNTER ELSE GO TO THE NXT STEP
STEP12: STOP
PROGRAM:(DESCENDING):
ASSUME CS: CODE, DS: DATA
DATA SEGMENT
LIST DW 0125H,0144H,3001H,0003H,0002H
COUNT EQU O5H
26 | P a g e
DATA ENDS
CODE SEGMENT
START:MOV AX, DATA
MOV DS, AX
MOV DX, COUNT-1
BACK:MOV CX, DX
MOV SI, OFFSET LIST
AGAIN:MOV AX, [SI]
CMP AX, [SI+2]
JAE GO
XCHG AX, [SI+2]
XCHG AX, [SI]
GO:INC SI
INC SI
LOOP AGAIN
DEC DX
JNZ BACK
INT 03H
CODE ENDS
END START
END
PROGRAM:(ASCENDING):
ASSUME CS: CODE, DS:DATA
DATA SEGMENT
LIST DW 0125H,0144H,3001H,0003H,0002H
COUNT EQU 05H
DATA ENDS
27 | P a g e
CODE SEGMENT
START:MOV AX, DATA
MOV DS, AX
MOV DS, COUNT-1
BACK:MOV CX, DX
MOV SI, OFFSET LIST
AGAIN:MOV AX, [SI]
CMP AX, [SI+2]
JC GO
XCHG AX, [SI+2]
XCHG AX, [SI]
GO:INC SI
INC SI
LOOP AGAIN
DEC DX
JNZ BACK
INT 03H
CODE ENDS
END START
END
4.PROGRAM FOR STRING MANIPULATIONS FOR 8086
a) Write an ALP to find String length.
28 | P a g e
Aim:
To write an assembly language program to find the string
length by using EMU8086 software.
Apparatus:
EMU8086 software
PC
ALGORITHM:
STEP 1: START
STEP 2: INITIALIZE THE DATA SEGMENT
STEP 3: INITIALIZE THE COUNT WITH ZERO
STEP4: MOVE STARTING ADDRESS OF THE STRING TO SI REG
STEP5: MOVE THE EACH CHARACTER FROM MEMORY TO AX
STEP6: CMP WITH LAST CHARACTER OF THE STRING AND INC
UNTIL CL ZF=0
STEP7: STORE THE RESULT
STEP8: STOP
TO FIND A LENGTH OF STRING USING ASCII TABLE:
29 | P a g e
PROGRAM:
ORG 100H
MOV SI, 1200H
MOV DX, 0FFFFH
MOV AH, 0FFH
LOOP: INC DX
MOV AL, [SI]
INC SI
CMP AH, AL
JNZ LOOP
MOV [1100H], DX
HLT
B) WRITE AN ALP FOR DISPLAYING THE GIVEN STRING.
30 | P a g e
Aim:
To write an assembly language program for displaying the
given string by using EMU8086 software.
Apparatus:
EMU8086 software
PC
ALGORITHM:
STEP 1: START
STEP 2: INITIALIZE THE DATA SEGMENT
STEP 3: LOAD THE OFFSET ADDRESS OF A STRING IN TO THE SI
STEP4 : DISPLAY THE STRING
STEP5: STOP
PROGRAM:
ASSUME CS: CODE, DS: DATA
31 | P a g e
DATA SEGMENT
STRING DB "WELCOME TO MPMC LAB '$' "
DATA ENDS
CODE SEGMENT
START: MOV AX, DATA
MOV DS, AX
MOV SI, OFFSET STRING
MOV AH, 09H
INT 21H
CODE ENDS
END START
C) WRITE AN ALP FOR COMPARING TWO STRINGS.
Aim:
32 | P a g e
To write an assembly language program for comparing two
strings by using EMU8086 software.
Apparatus:
EMU8086 software
PC
ALGORITHM:
STEP 1: START
STEP 2: INITIALIZE THE DATA SEGMENT AND EXTRA SEGMENT
STEP 3: LOAD THE OFFSET ADDRESS OF SOURCE AND DESIGNATIONOF
THE STRING IN TO SI AND DI
STEP4: INITIALIZE THE COUNTER REGISTER CX WITH LENGTH OF
A SOURCE STRING
STEP5: CLEAR DIRECTION FLAG(CDF) TO MAKE SI AND DI IN TO
AUTO INC MODE
STEP6: CMP SOURCE STRING WITH DESIGNATION STRING UNTIL
THE CHARACTER ARE NOT EQUAL OR UP TO THE LAST CHARACTER
STEP7: IF ZF=0 STRINGS ARE EQUAL OTHERWISE THE STRINGS
ARE NOT EQUAL
STEP8: STOP
PROGRAM:
ASSUME CS: CODE, DS: DATA, ES: EXTRA
DATA SEGMENT
STRING1 DB 'JNTUACEK'
33 | P a g e
STRLEN EQU ($-STRING1)
SNOTEQUAL DB 'STRINGS ARE UNEQUAL $'
SEQUAL DB 'STRING ARE EQUAL $'
DATA ENDS
EXTRA SEGMENT
STRING2 DB 'JNTUACEK'
EXTRA ENDS
CODE SEGMENT
START: MOV AX, DATA
MOV DS, AX
MOV ES, AX
MOV SI, OFFSET STRING1
MOV DI, OFFSET STRING2
CLD
MOV CX, STRLEN
REPZ CMPSB
JZ FORW
MOV AH, 09H
MOV DX, OFFSET SNOTEQUAL
INT 21H
JMP EXITP
FORW: MOV AH, 09H
MOV DX, OFFSET SEQUAL
INT 21H
EXITP: MOV AH, 4CH
INT 03H
CODE ENDS
END
(D).WRITE AN ALP TO REVERSE STRING AND CHECKING
FOR PALINDROME:
Aim:
34 | P a g e
To write an assembly language program to reverse string and
checking for palindrome by using EMU8086 software.
Apparatus:
EMU8086 software
PC
ALGORITHM:
STEP 1: START
STEP 2: INITIALIZE THE DATA SEGMENT
STEP 3: LOAD THE OFFEST ADDRESS OF A STRING IN TO SI
STEP4: LOAD THECONTENT OF SI IN TO BX PUSH BX
STEP5: INC SI UNTIL LOOP 1 IS ENDED
STEP6: POP DX UNTIL LOOP 2 IS ENDED
STEP7: STOP
PROGRAM:
ASSUME CS: CODE, DS: DATA
DATA SEGMENT
STRING DB 'WELCOM'
35 | P a g e
DATA ENDS
CODE SEGMENT
START: MOV AX, DATA
MOV DS, AX
MOV SI, OFFSET STRING
MOV CX, 10
LOOP1: MOV BX, [SI]
PUSH BX
INC SI
LOOP LOOP1
MOV CX, 10
LOOP2: POP DX
MOV AH, 02H
INT 21H
LOOP LOOP2
CODE ENDS
END START
5. INTERFACING STEPPER MOTOR WITH 8086
A) WRITE AN ALP TO 8086 PROCESSOR TO INTERFACE A
STEPPER MOTOR AND OPERATE IT IN CLOCKWISE
36 | P a g e
BY CHOOSING VARIABLE STEP-SIZE.
Aim:
To write an assembly language program to 8086
processor to interface a stepper motor and operate it in
clockwise by choosing variable step-size.
Apparatus:
EMU8086 software
PC
PROGRAM:
MOV AL, 80
MOV DX, 0FFE6
37 | P a g e
L1: OUT DX, AL
MOV AL, 88
MOV DX, 0FFE0
OUT DX, AL
MOV CX, 0FFFF
L2: NOP
NOP
NOP
LOOP L2
ROR AL, 1
JMP L1
INT 03
PRECAUTIONS:
OBSERVE THE ROTATION OF THE MOTOR CAREFULLY
HANDLE THE TRAINER KIT CAREFULLY
THE CODE OF A PROGRAM SHOULD CORRECT
GIVE THE PROPER POWER SUPPLY AFTER CHECKING THE
CONNECTIONS
B) WRITE AN ALP TO 8086 PROCESSOR TO INTERFACE A STEPPER
MOTOR AND OPERATE IT IN ANTI-CLOCKWISE BYCHOOSING
VARIABLE STEP-SIZE.
38 | P a g e
Aim:
To write an assembly language program to 8086 processor to
interface a stepper motor and operate it in anti-clockwise by choosing
variable step-size.
Apparatus:
EMU8086 software
PC
PROGRAM:
MOV AL, 80
MOV DX, 0FFE6
L1: OUT DX, AL
39 | P a g e
MOV AL, 88
MOV DX, 0FFE0
OUT DX, AL
MOV CX, 0FFFF
L2: NOP
NOP
NOP
LOOP L2
ROL AL, 1
JMP L1
INT 03
PRECAUTIONS:
OBSERVE THE ROTATION OF THE MOTOR CAREFULLY
HANDLE THE TRAINER KIT CAREFULLY
THE CODE OF A PROGRAM SHOULD CORRECT
GIVE THE PROPER POWER SUPPLY AFTER CHECKING THE
CONNECTIONS
6. INTERFACING ADC/DAC WITH 8086
A) WRITE AN ALP TO 8086 PROCESSOR TO INTERFACE DAC AND
GENERATE SQUARE WAVE/TRIANGULAR WAVE/STEPSIGNAL.
40 | P a g e
Aim:
To write an assembly language program to Interface DAC and
generate Triangular wave.
Apparatus:
EMU8086 software
PC
TRIANGULAR:
MOV AL, 80
MOV DX, 0FFE6
OUT DX,AL
AGAIN:MOV AL,00
MOV DX,0FFE0
RISE:OUT DX, AL
INC AL
CMP AL,0FF
JNE RISE
FALL:OUT DX, AL
DEC AL
CMP AL,00
JNE FALL
JMP AGAIN
HLT
PRECAUTIONS:
PROPERLY CONNECT THE 8086 MICROPROCESSOR KIT WITH
POWER SUPPLY TERMINAL AND KEYWORDS
SWITCH ON THE POWER SUPPLY AFTER CHECKING THE
CONNECTIONS.
HANDLE THE TRAINER KIT CAREFULLY
41 | P a g e
(b)SQUARE WAVE:
Aim:
To write an assembly language program to Interface DAC and
generate square wave.
42 | P a g e
Apparatus:
EMU8086 software
PC
PROGRAM:
MOV AL, 80
MOV DX, 0FFE6
OUT DX, AL
MOV DX, 0FFE0
AGAIN: MOV AL, 0FF
OUT DX, AL
MOV CX, 00FF
BACK: NOP
NOP
LOOP BACK
MOV AL, 00
OUT DX, AL
MOV CX, 00FF
BACK1: NOP
NOP
LOOP BACK 1
JMP AGAIN
HLT
PRECAUTIONS:
PROPERLY CONNECT THE 8086 MICROPROCESSOR KIT WITH
POWER SUPPLY TERMINAL AND KEYWORDS
SWITCH ON THE POWER SUPPLY AFTER CHECKING THE
CONNECTIONS.
HANDLE THE TRAINER KIT CAREFULLY
43 | P a g e
(7) KEIL ARM TOOL
(A) ADDITION
AIM:
44 | P a g e
TO WRITE AN ASSEMBLY LANGUAGE PROGRAM FOR 8-
BIT ADDITION USING KEIL SOFTWARE.
APPARATUS:
PC WITH KEIL SOFTWARE.
PROCEDURE:
CREATE AN ASSEMBLE PROJECT IN KEIL SOFTWARE
OPEN THE KEIL IDE BY CLICKING ON THE ICON ON THE DESKTOP
FROM THE PROJECT MENU CHOSE NEW VERSION PROJECT
SELECT DRIVE MENU CHISE NEW VERSION WHEN YOU WOULD
LIKE TO CREATE YOUR PROJECT
IN THE DATA BASE TREE CHOSE THE VECTOR AND CHIP YOU
WANT TO USE AND THE CLICK OK
AFTER SELECTING CHIP FILE CLICK THE OK THEN IT WILL DISPLAY
SOME WINDOW ASKINGTO ADD START A FILE.
CHECK THE NO BUTTON WHEN ADD THE START UO FIL TO
PROJECT POP UP WINDOW IS DISPLAYED A TARGET IS CREATED
TO WRITE PROJECT CODE SELECT A NEW FILE FROM FILE MENU
BAR OR MAKE A NEW FIKE BY CLICKING IN NEW FILE AND SAVE
THE FILE
TYPE THE PROGRAM IN THE FILE
ADD THE PROGRAM ASM FILE TO DO THE PROJECT
RIGHT CLICK ON SOUREC GROUP 1 AND CHOSE ADD EXASTING FILE
TP THE GROUP THEN GO TO THE FIRST PROJECT PRESS ASN ADD
WRITE/RIGHT THE PROGRAM IN THE FILE WINDOW
BUILDING:
NOW GIVW A RIGHT CLICK ON THE PROJECT WINDOW AND SELECT
THE OPTIONS FOR TARGET.
DEBUGGING:
TO START DEBUGGING CLICK ON START OR STOP DELAY SECTION
ICON OR CHOSE START OR STOP DEBUG SECTION FROM DEBUG
MENU.
45 | P a g e
PROGRAM:
ORG 000H
MOV A, #2H
MOV RD, #3H
ADD A, RD
MOV 40H, A
HERE; SJMP HERE
END
(B) SUBTRACTION:
AIM: TO WRITE AN ASSEMBLY LANGUAGE PROGRAM FOR 8-BIT
SUTRACTION USING KEIL SOFTWARE.
46 | P a g e
APPARATUS: PC WITH KEIL SOFTWARE.
PROGRAM:
ORG 000H
MOV A, #15H
MOV R7, #10H
SUB A, R7
MOV 80H, A
HERE; SJMP HERE
END
(C). MULTIPLICATION
AIM:
TO WRITE AN ASSEMBLY LANGUAGE PROGRAM FOR 8-BIT
MULTIPLICATION USING KEIL SOFTWARE.
47 | P a g e
APPARATUS: PC WITH KEIL SOFTWARE.
PROGRAM:
ORG 000H
MOV A, #03H
MOV B, #02H
MUL AB
END
(C) DIVISION:
AIM:
48 | P a g e
TO WRITE AN ASSEMBLY LANGUAGE PROGRAM FOR 8-BIT DIVISION
USING KEIL SOFTWARE.
APPARATUS: PC WITH KEIL SOFTWARE.
PROGRAM:
ORG 000H
MOV A, #20H
MOV B, #10H
DIV AB
END
(D) LOGICAL AND OPERATION:
49 | P a g e
AIM:
TO WRITE AN ASSEMBLY LANGUAGE PROGRAM FOR 8-BIT LOGICAL
AND OPERATION USING KEIL SOFTWARE.
APPARATUS: PC WITH KEIL SOFTWARE.
PROGRAM:
ORG 000H
MOV A, #2H
MOV B, #6H
ORL A, B
MOV 46H, A
END
EXPERIMENT: 08
PROGRAM FOR DIGITAL CLOCK DESIGN USING 8086
50 | P a g e
Aim: To write an ALP program for displaying the system clock
Apparatus: MASM SOFTWARE with PERSONAL COMPUTER
Algorithm:
Step1: start
Step 2: Initialize the data segment
Step 3: Give message data byte i.e, ‘current time is’
Step 4: Give values to hour, min, second and milliseconds data types
Step 5: Initialize the code segment
Step 6: MOV CH into HR, CL data into minutes, sec into DH data, DL
data into M sec
Step 7: MOV CH into HR, CL data into minutes, sec into DH data, DL
data into M sec
Step 8: MOV HR into AL register and operation occurs to AL, AL
register, MOV 2H data in to AX
Step9: Again do those operations with different registers for display
hours, minutes, seconds and milliseconds.
Program:
ASSUME CS: CODE, DS:DATA
51 | P a g e
DATA SEGMENT
MESSAGE DB ‘CURRENT TIME IS:$’
HR DB?
MIN DB?
SEC DB?
MSEC DB?
DATA ENDS
CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX
MOV AH,2CH
INT 21H
MOV HR, CH
MOV MIN, CL
MOV SEC, DH
MOV MSEC, DL
MOV AH,09H
LEA DX, MESSAGE
INT 21H
MOV AL, HR
AND AL, AL
AAM
MOV BX, AX
52 | P a g e
CALL DISPLAY
MOV DL,’:’
MOV AH, 02H
INT 21H
MOV A4, EC
AAM
MOV BX, AX
CALL DISPLAY
MOV DL,’:’
MOV AH,02H
INT 21H
MOV AL,02H
INT21H
MOV AL, SEC
AAM
MOV BX, AX
CALL DISPLAY
MOV AH,4CH
INT 21H
DISPLAY PROCNEAR
MOV DL, BH
ADD DL,03H
MOV AH,02H
INT 21H
53 | P a g e
MOV DL, BL
ADD DL,03H
MOV AH,02H
INT 21H
RET
DISPLAY END
CODE ENDS
END START
OUT PUT:
RESULT:
EXPERIMENT :08(B)
54 | P a g e
Aim: To write an ALP program for designing the digital clock using
INT21.
Apparatus:
1.pc
2.emusoftware
3.masm
Algorithm:
Step 1: start
Step2: Move 2ch into AH register
Step 3: Interrupt 21h move CH into AL register
Step4: Call display move 2 into AH register
Step 5: MOV CL into AL register then call display
Step 6: again repeat the program with interrupt 21H and check the
output
Step 7- Stop
Program:
MODEL SMALL
55 | P a g e
CODE
MOV AH, 2CH
INT 21H
MOV AL, CH
CALL DISP
MOV DL,”:”
MOV AH,2
INT 21H
MOV AH,2
INT 21H
MOV AL, CL
CALL DISP
MOV DL,”:”
MOV AH,2
INT 21H
MOV AL, DH
CALL DISP
MOV AH, 4CH
INT 21H
DISPPROC
AAM
ADD AX, 3030H
MOV BX, AX
MOC DL, AH
56 | P a g e
MOV AH,2
INT 21H
MOV AH,2
INT 21H
MOV DL, BL
INT 21H
RET
DISPENDP
END
OUTPUT:
RESULT:
EXPERIMENT-09(A)
57 | P a g e
Aim: to write an ALP program for displaying parallel communication.
Apparatus:
Microprocessor kit
Algorithm:
Step1: MOV OFFE6 data into DX register
Step2: MOV 30 into AL register
Step3: Out AL into dx register. MOV data into DX register
Step4: Move 29 data into AL register
Step5:-Out AL into dx register MOV data into DX register
Step6: for Receiving program MOV OFFE6 data into DX register
Step7: MOV some data into AL register
Step8: MOV 5000 into SI location and data into CL register
Step9: Then Increment SI, create Loop1, in which AI register data
moved into SI index register
Step10: Then run the receiving program the data entered in the
transmitter will display in receiver.
Program:
TRANSMITTING PROGRAM:
58 | P a g e
MOV DX, OFFE6
MOV AL,80
OUT DX, AL
MOV DX, OFFE0
MOV AL, 29
OUT DX, AL
INT 03
RECEIVING PROGRAM:
MOV DX, OFFE6
MOV AL,90
OUT DX, AL
MOV SI,5000
MOV CL,06
MOV DX, OFFE0
INC AL, DX
L1: MOV [SI], AL
INC SI
LOOP LI
INT 03
OUTPUT:
RESULT:
EXPERIMENT;09(B)
59 | P a g e
Aim:- To write an ALP program for displaying series communication
between tow microprocessors.
Apparatus:
1.pc
2.ESA86\88E UNIT
3.+5v adapter
Algorithm:-
Step1: start
Step2: MOV data into AL register
Step3: Out AC into 31 data MOV 15 into AL register
Step4: Out AL into 81 Then start Receiving program
Step5: Input 81 into AL register
Step6: Here ROR operation is done, then 80 into AL register
Step7: For Transmitting Input 81 moved into AL register
Step8: Here ROR operation is done with AL register
Step9: Then jump No carry for Transmitting MOV BL data into AL
register
Step 10: Then out AL register into 80H data, then JMP receive
PROGRAM CODE:
START: MOV AL, OEE
60 | P a g e
OUT 81, AC
MOV AL,15 OUT 81, AL
RECEIVE: IN AL,81
ROR AL,1
ROR AL,1 , JNC RECEIVE
IN AL,80H;
NOT AL
TRANS:
IN AL,81
ROR AL,1
JNC TRANS
MOV AL, BL;
OUT BOH, AL
JMP RECEIVE
ENDS
OUTPUT:
RESULT:
61 | P a g e