EXPERIMENT LIST
List of Experiments (Based on 8086 Assembler, microprocessor Kits and Simulators
1 . Familiarization with 8086 microprocessors and experimental kits.
2. Implementation of a program to add and subtract two 8-bit and 16-bit numbers using
different addressing modes.
3. Implementation of a program to multiply two 8-bit numbers and 16-bit numbers using
different addressing modes.
4. Implementation of a program to divide a 16-bit number with an8-bitnumber,32-bit
number by a 16-bit number using different addressing modes, and store the result in
memory.
5. Implementation of a program to calculate the sum of a series of 16-bit numbers.
6. Implementation of a program to find the average of a series of binary data.
7 . Implementation of a program to find the square of a given data.
8. Implementation of a program for multibyte addition and subtraction using two 4-byte
operands.
9. Implementation of a program to sort a given sequence of data in ascending and
descending order.
10. Implementation of programs using string instructions to:
a .Copy a string of data from one memory location to another location using string
instructions.
b. Compare two strings of the same length.
c. Detect the number of occurrences of a given character in a string.
1
SUGGESTED PROJECT WORKS: -
Project 1. Implementation of a program to make a calculator.
Project 2. Implementation of a program to display a given character in a seven-segment display
using Look up table method.
Objectives:
1. U nderstanding of Instruction sets of 8086 µP and use the instructions to write different
programs
2. Use microprocessor Kit and 8086 simulation Program
3. Manual decoding of assembly language programand hex file generation using Assembler
4. Understanding Assembler directives and usingMASM/ TASM and 8086 simulation Program
5. Running/ testing assembled program on 8086 Kit
2
Format for Lab report:
Title
Objective
Apparatus
Theory
Description of instructions to use
Algorithm
Flowchart
Procedure
Program
Results
Discussions (should be separate for each student/group)
Lab Rules:
1 .Getyourperformancesheetsignedaftersuccessfulperformanceofexperimentbyyourself,otherwise
itwillbeconsideredthatyouhavenotperformedtheexperimentevenifyouarepresentandMarkswill
notbeawardedforthatexperiment.Thedulysignedperformancesheetmustbeattachedwithyourfare
report.
2 . Whenever there is a call to submit the lab report you must do it within five minutes of the call
otherwise it will not be accepted and you will be awarded late submission penalty.
3 .Therewillbetwoattendance,oneatthestartoflabandtheotherattheendoflab.Studentswhomiss
the attendance for the first time will be penalized by attendance percentage
4. If a student has to go out of lab due to some emergency they must do so after seeking permission.
5. Your timely attendance and submission of lab report will save you lot of hassles.
6 .Performalltheexperimentsyourselfdonotbeaspectatorwhileyourgroup-matesperformit.There
will be a performance test in the end semester.
3
INTRODUCTION to 8086
MICROPROCESSOR
A microprocessor is a controlling unit of a micro-computer, fabricated on a small chip
c apable of performing Arithmetic Logical Unit (ALU) operations and communicating with
the other devices connected to it.
The 8086 Microprocessor is an enhanced version of the 8085 Microprocessor that was
esigned by Intel in 1976. It is a 16-bit Microprocessor having 20 address lines and16
d
data lines that provides up to 1MB storage.
FEATURES of 8086 MICROPROCESSOR
16 bit processor
20 bit address line
16 bit data line
16 bit ALU
16 bit internal data bus
16 bit external data bus
(5MHz – 10 MHz)frequency of operation
6 bytes instruction queue
256 Vector interrupt
Two stages of pipelining (Fetch stage and Execute stage)
1 MB storage access
4
ARCHITECTURE of 8086 MICROPROCESSOR
ALU(Arithmetic and Logic unit):_It handles arithmeticand logic operations.
EU(Execution Unit):-Its function is to control operationson data using the instruction decoder & ALUFlag
Registers:-It is a 16 bit register that behaves likea flip-flop and changes its status as per result stored in an
accumulator. It has 9 flags and they are divided into two groups: conditional flag and control flag.Conditional
Flags:Carry flag, Auxiliary flag, Parity flag, Zeroflag, Sign flag, Overflow flag.
Control Flags:Trap flag, interrupt flag, Directionflag.
General Purpose Registers: There are 8 general purposeregisters, i.e., AH, AL, BH, BL, CH, CL, DH, and DL. In pairs is
referred to the AX, BX, CX, and DX respectively.
Stack pointer:-It is a 16 bit register, which holdsthe address from the start of the segment to the memory
location, where a word was most recently stored on the stack.
BIU (Bus Interface Unit):-BIU takes care of all dataand addresses transfers on the buses for the EU. It has the
following functional parts −
Instruction queue: 6 BYTES
Segment register:-CS,DS,SS & ES.
Instruction pointer:-It is a 16-bit register usedto hold the address of the next instruction to be executed.
Address/data bus:-AD0-AD15. These are 16 address/databus. AD0-AD7 carries low order byte data and AD8-
AD15 carries higher order byte data. A16-A19 is address bus.
Power supply:-It uses 5V DC supply at VCCpin 40,and uses ground at VSSpin 1 and 20 for its operation.
5
TYPES of INSTRUCTIONS
The 8086 microprocessor supports 8 types of instructions −
1. Data Transfer Instructions
2. Arithmetic Instructions
3. Bit Manipulation Instructions
4. String Instructions
5. Program Execution Transfer Instructions (Branch & Loop Instructions)
6. Processor Control Instructions
7. Iteration Control Instructions
8. Interrupt Instructions
1. Data Transfer Instructions
These instructions are used to transfer the data from the source operand to the destination operand. Following are
the list of instructions under this group −
Instruction to transfer a word
MOV− Used to copy the byte or word from the providedsource to the provided destination.
PUSH− Used to put a word at the top of the stack.
POP− Used to get a word from the top of the stackto the provided location.
PUSHA− Used to put all the registers into the stack.
POPA− Used to get words from the stack to all registers.
XCHG− Used to exchange the data from two locations.
XLAT− Used to translate a byte in AL using a tablein the memory.
Instructions for input and output port transfer
IN− Used to read a byte or word from the providedport to the accumulator.
OUT− Used to send out a byte or word from the accumulatorto the provided port.
Instructions to transfer the address
LEA− Used to load the address of operand into theprovided register.
LDS− Used to load DS register and other providedregister from the memory
LES− Used to load ES register and other providedregister from the memory.
Instructions to transfer flag registers
LAHF− Used to load AH with the low byte of the flagregister.
SAHF− Used to store AH register to low byte of theflag register.
PUSHF− Used to copy the flag register at the topof the stack.
POPF− Used to copy a word at the top of the stackto the flag register.
6
2. Arithmetic Instructions
These instructions are used to perform arithmetic operations like addition, subtraction, multiplication, division,
etc.
Following is the list of instructions under this group −
Instructions to perform addition
ADD− Used to add the provided byte to byte/word toword.
ADC− Used to add with carry.
INC− Used to increment the provided byte/word by1.
AAA− Used to adjust ASCII after addition.
DAA− Used to adjust the decimal after the addition/subtractionoperation.
Instructions to perform subtraction
SUB− Used to subtract the byte from byte/word fromword.
SBB− Used to perform subtraction with borrow.
DEC− Used to decrement the provided byte/word by1.
NPG− Used to negate each bit of the provided byte/wordand add 1/2’s complement.
CMP− Used to compare 2 provided byte/word.
AAS− Used to adjust ASCII codes after subtraction.
DAS− Used to adjust decimal after subtraction.
Instruction to perform multiplication
MUL− Used to multiply unsigned byte by byte/wordby word.
IMUL− Used to multiply signed byte by byte/word byword.
AAM− Used to adjust ASCII codes after multiplication.
Instructions to perform division
DIV− Used to divide the unsigned word by byte orunsigned double word by word.
IDIV− Used to divide the signed word by byte or signeddouble word by word.
AAD− Used to adjust ASCII codes after division.
CBW− Used to fill the upper byte of the word withthe copies of the sign bit of the lower byte.
CWD− Used to fill the upper word of the double wordwith the sign bit of the lower word.
7
3. Bit Manipulation Instructions
These instructions are used to perform operations where data bits are involved, i.e. operations like logical, shift,
etc.
Following is the list of instructions under this group −
Instructions to perform logical operation
NOT− Used to invert each bit of a byte or word.
AND− Used for adding each bit in a byte/word withthe corresponding bit in another byte/word.OR−Used to
multiply each bit in a byte/word with the corresponding bit in another byte/word.XOR− Used to perform
Exclusive-OR operation over each bit in a byte/word with the corresponding bit in another byte/word.
TEST− Used to add operands to update flags, withoutaffecting operands.
Instructions to perform shift operations
SHL/SAL− Used to shift bits of a byte/word towardsleft and put zero(S) in LSBs.
SHR− Used to shift bits of a byte/word towards theright and put zero(S) in MSBs.
SAR− Used to shift bits of a byte/word towards theright and copy the old MSB into the new MSB.
Instructions to perform rotate operations
ROL− Used to rotate bits of byte/word towards theleft, i.e. MSB to LSB and to Carry Flag [CF].
ROR− Used to rotate bits of byte/word towards theright, i.e. LSB to MSB and to Carry Flag [CF].
RCR− Used to rotate bits of byte/word towards theright, i.e. LSB to CF and CF to MSB.RCL−
Used to rotate bits of byte/word towards the left, i.e. MSB to CF and CF to LSB.
4. String Instructions
String is a group of bytes/words and their memory is always allocated in a sequential order.
Following is the list of instructions under this group −
REP− Used to repeat the given instruction till CX≠ 0.
REPE/REPZ− Used to repeat the given instruction untilCX = 0 or zero flag ZF = 1.
REPNE/REPNZ− Used to repeat the given instructionuntil CX = 0 or zero flag ZF = 1.
MOVS/MOVSB/MOVSW− Used to move the byte/word fromone string to another.
COMS/COMPSB/COMPSW− Used to compare two string bytes/words.
INS/INSB/INSW− Used as an input string/byte/wordfrom the I/O port to the provided memory location.
OUTS/OUTSB/OUTSW− Used as an output string/byte/wordfrom the provided memory location to the I/O port.
SCAS/SCASB/SCASW− Used to scan a string and compareits byte with a byte in AL or string word with a word in
AX.
LODS/LODSB/LODSW− Used to store the string byte intoAL or string word into AX.
8
. Program Execution Transfer Instructions (Branch and Loop
5
Instructions)CALL− Used to call a procedure andsave their return address
to the stack.RET− Used to return from the procedureto the main program.
JMP− Used to jump to the provided address to proceedto the next instruction.
Instructions to transfer the instruction during an execution with some conditions −
JA/JNBE− Used to jump if above/not below/equal instructionsatisfies.
JAE/JNB− Used to jump if the above/not below instructionsatisfies.
JBE/JNA− Used to jump if below/equal/ not above instructionsatisfies.
JC− Used to jump if carry flag CF = 1
JE/JZ− Used to jump if equal/zero flag ZF = 1
JG/JNLE− Used to jump if greater/not less than/equalinstruction satisfies.
JGE/JNL− Used to jump if greater than/equal/not lessthan instruction satisfies.
JL/JNGE− Used to jump if less than/not greater than/equalinstruction satisfies.
JLE/JNG− Used to jump if less than/equal/if not greaterthan instruction satisfies.
JNC− Used to jump if no carry flag (CF = 0)
JNE/JNZ− Used to jump if not equal/zero flag ZF =0
JNO− Used to jump if no overflow flag OF = 0
JNP/JPO− Used to jump if not parity/parity odd PF= 0
JNS− Used to jump if not sign SF = 0
JO− Used to jump if overflow flag OF = 1
JP/JPE− Used to jump if parity/parity even PF = 1
JS− Used to jump if sign flag SF = 1
6. Processor Control Instructions
These instructions are used to control the processor action by setting/resetting the flag values.
Following are the instructions under this group −
STC− Used to set carry flag CF to 1
CLC− Used to clear/reset carry flag CF to 0
CMC− Used to put complement at the state of carryflag CF.
STD− Used to set the direction flag DF to 1
CLD− Used to clear/reset the direction flag DF to0
STI− Used to set the interrupt enable flag to 1,i.e., enable INTR input.
CLI− Used to clear the interrupt enable flag to 0,i.e., disable INTR input.
9
7. Iteration Control Instructions
These instructions are used to execute the given instructions for number of times.
Following is the list of instructions under this group −
LOOP− Used to loop a group of instructions untilthe condition satisfies, i.e., CX = 0
LOOPE/LOOPZ− Used to loop a group of instructionstill it satisfies ZF = 1 & CX = 0
LOOPNE/LOOPNZ− Used to loop a group of instructionstill it satisfies ZF = 0 & CX = 0
JCXZ− Used to jump to the provided address if CX= 0
8. Interrupt Instructions
These instructions are used to call the interrupt during program execution.INT−
Used to interrupt the program during execution and calling service specified.INTO
− Used to interrupt the program during execution if OF = 1
IRET− Used to return from interrupt service to themain program
10
ADDRESSING MODES
The different ways in which a source operand is denoted in an instruction is known asaddressing modes.There
are8 different addressing modesin 8086 programming−
Immediate addressing mode
MOV CX, 4929 H
ADD AX, 2387 H
MOV AL, FFH
Register addressing mode
MOV CX, AX
ADD BX, AX
Direct addressing mode
MOV AX, [1592H]
MOV AL, [0300H]
Register indirect addressing mode
MOV AX, [BX] ; Suppose the register BX contains 4895H, then the contents
; 4895H are moved to AX
ADD CX, [BX]
Based addressing mode
MOV DX, [BX+04]
ADD CL, [BX+08]
Indexed addressing mode
MOV BX, [SI+16]
ADD AL, [DI+16]
Based-index addressing mode
ADD CX, [AX+SI]
MOV AX, [AX+DI]
Based indexed with displacement mode
MOV AX, [BX+DI+08]
ADD CX, [BX+SI+16]
11
TRAINER KITS
1. ET-8086LCD - (by Excel Technologies).
2. XPO - 86 - (by Anshuman Tech Pvt. Ltd.)
3. 8086 MicroProcessor Kit - (by Labtech Electronics Pvt. Ltd.)
PROCEDURE TO USE THE KITS
1. ET-8086LCD - (by Excel Technologies).
Microsoft’s MASM software is a utility program for Assembling the 8086 Assembly codes into 8086 machine codes.
The utility was actually meant for debugging the programs of 8086 / 8088 based Personal computers on the
computer and editing and running them using the Debug Command of the Personal computer DOS system
However with some help from other utilities available, the same can be used to compile the 8086 Assembly
language programs and generate the Hex File which then can be used by other equipment compatible with the
Intel Hex file system.
tep 1.Download the DOSBox setup and MASM folderfrom the google drive link provided to you .
S
https://drive.google.com/drive/folders/1NZ3JMnN0kdpubbs53EGQ9-He9Rh8ZMcT
Step 2.Install DOSBox on your computer
Step 3.Copy the MASM folder to the C drive of yourComputer .
Step 4.Create an ASM File using an Editor of Window
The Syntax etc. for the various commands will become clear when we use these with some Example: - An example
of Addition with File name ADDNEW.ASM is available in the Folder. You can write your own program also.
Please note that the The commands in the beginning like
CODE SEGMENT PUBLIC
ASSUME CS:CODE,DS:CODE,ES:CODE
nd the commands in the end like
A
CODE ENDS
END STRT
12
Are a must and must be entered
Step 5.Open DOSBox and type “ mount c: c:\MASM” thePress Enter . Type “ c:” then Press Enter.
Step 6.To Edit and Existing file Type “ EDIT ADDNEW.ASM”then press Enter.
( A Blue Windows open up with the new file name written on top of the windows ). Type the program as given
below and then save the same using
Make the Changes to the program if required and save the file from the File Menu.
Step 7.Creating a Obj file using MASM
Now let us create an OBJ file from the ASM File
MASM ADDNEW.ASM <Enter>
The system will ask for the file extensions etc. just pressEnterevery time, the system will generatean OBJ file and
give a message to that effect.
IfthereareerrorsintheAssemblyprograms,thesystemwillgiveerrorandgivethelinenumbersalongwithit.Go
backtotheASMfileusingtheEDITcommand.MakethenecessarycorrectionsandthenAssembleagainusingthe
MASM command.
Step 8.Creating an EXE File from the OBJ File usingthe following command
LINK ADDNEW.OBJ <Enter>and then keep pressing Enterwhen prompted to answer a query.
The system will generate and EXE file named ADDNEW.EXE
Step 9.Creating a BIN File from the EXE File usingthe following Command
EXE2BIN ADDNEW.EXE ADDNEW.BIN <Enter>
Press Enter when prompted to an inquiry and the system will generate a BIN File
Step 10.Use the Utility BIN2HEX to generate the requiredHex file as given below
BIN2HEX ADDNEW.BIN ADDNEW.HEX <Enter>
The system will successfully generate a Hex File which now can be down loaded in the Kit using the Downloading
command given in the manual of the 8086LCD Kit.
13
14
15
16
17
. XPO - 86 - (by Anshuman Tech Pvt. Ltd.)
2
&
3. 8086 MicroProcessor Kit Model 1005 - (by Labtech Electronics Pvt. Ltd.)
18
18
19
19
20
Experiment No. 1
Name of the Experiment: -Familiarization with 8086microprocessors and experimental kits.
[CO1]
Described in the introduction part.
21