Microprocessor Lab Manual
Microprocessor Lab Manual
1.1 INTRODUCTION
This section briefs the hardware and software facilities available in both the trainers
Micro-85 EBl and Micro-85 EB2. Micro-85 EBl is a powerful Microprocessor Trainer with
basic features such as 24 TTL lines using 8255 Hardware Single Stepping and Software Single
Stepping of user programs.
In addition to the above features, Micro-85 EB2 has RS232C compatible serial port,
Bus Expansion for interfacing VBMB series of add-on cards and 24 TTL I/O lines. A separate
switch is provided for learning more about hardware. interrupts. There is also provision to
add multi output power supply for interfacing experiment boards. Most of the control
signals are terminated .at test points for easy analysis on CRO or logic probe.
The differences in the specification of Micro-85 EBl and Micro-85 EB2 are highlighted
in this manual. The users are therefore requested to go through the Hardware specification
carefully.
1.2 SPECIFICATIONS
1.2.1 HARDWARE SPECIFICATIONS
2) MEMORY:
Note: The RAM area from 4000 - 40FF should not be accessed by the user since it
is used as scratch pad by the Monitor program.
3) INPUT/OUTPUT:
4) DISPLAY:
7) BATTERY BACKUP:
This facility allows the user to execute programs at machine cycle level using a
separate switch.
12) TEST POINTS: Test points provided for MR*, MW*, INTA*, IO/M*,
This RES key allows you to terminate any present activity and to return your
RES
Micro-85 EB to an initialized state. When pressed, the µ..85 sign-on message
appears in the display for a few seconds and the monitor will
display command prompt “-“ in the left most digit.
INT
DEC (or)
DEC
(or)
The 16 Hexa decimal keys have either a dual or a triple role to play.
iii) It functions as command key when pressed directly after command prompt.
ii. This key is for substituting memory contents When NEXT key is pressed
immediate1y after this it takes the user to the start address for
iii. Register
TR key “B”
i. Hex key entry “4”.
4
ii. Block search for a byte.
F
iii. Register
BLOC key “F”.
iii. Register
FILL key “A”.
The TW/TR
SER keys are used for sending/receiving respectively.
GO key "I"
iii. Register
iii. Register
BC key "SPL"
CMP
OUTPUT
DATA
2401-48H
2402-56H
RESULT 2403-9EH
PROGRAM NO:3
AIM:- PROGRAM TO FIND SUBTRACTION OF TWO 8 BIT NUMBERS
DATA
48H
33H
RESULT
15H
PROGRAM NO:-4
OUTPUT
DATA
48H
33H
RESULT
15H
PROGRAM NO:-5
AIM:-PROGRAM TO FIND 2’S COMPLEMENT OF A NO
OUTPUT
DATA
2401-78H
RESULT
2402-88H
PROGRAM NO:- 6
AIM:-PROGRAM TO FIND MULTIPLICATION OF TWO 8 BIT NUMBER.
OUTPUT
DATA
2401H-6,8
RESULT
2404H-48
PROGRAM NO:- 7
AIM:-PROGRAM TO FIND LARGEST NUMBER IN A DATA ARRAY.
OUTPUT
DATA
2401-91H
2402-72H
2403-93H
RESULT
2405-93H
PROGRAM NO:- 8
AIM:-PROGRAM TO FIND SMALLER NUMBER IN A DATA ARRAY.
OUTPUT
DATA
2401-56H
2402-69H
RESULT
2405-56H
PROGRAM NO:- 9
AIM:-PROGRAM TO FIND SQ. ROOT OF 8 BIT NO.
OUTPUT
DATA
SQ. ROOT OF 36
RESULT
6
PROGRAM NO:-10
Memory:
Program, data and stack memories occupy the same memory space. The total addressable
memory size is 1MB KB. As the most of the processor instructions use16-bit pointers the
processor can effectively address only 64 KB of memory. To access memory outside of 64 KB
the CPU uses special segment registers to specify where the code, stack and data 64 KB
segments are positioned within 1 MB of memory (see the "Registers" section below).
16-bit pointers and data are stored as :address : low-order byteaddress+1 : high-order byte32-
bit addresses are stored in "segment:offset" format as :address : low-order byte of
segmentaddress+1 : high-order byte of segmentaddress+2 : low-order byte of offsetaddress+3 :
high-order byte of offset Physical memory address pointed by SEGMENT:OFFSET pair is
calculated as:
Physical address = (<Segment Addr> * 16) + <Offset Addr>Program memory
- program can be located anywhere in memory. Jump and call instructions can be used for short
jumps within currently selected 64 KB code segment, as well as for far jumps anywhere within 1
MB of memory. All conditional jump instructions can be used to jump within approximately
+127 - -127 bytes from current instruction.
Data memory
- the processor can access data in any one out of 4 available segments, which limits the size of
accessible memory to 256 KB (if all four segments point to different 64 KB blocks). Accessing
data from the Data, Code, Stack or Extra segments can be usually done by prefixing instructions
with the DS:,CS:, SS: or ES: (some registers and instructions by default may use the ES or SS segments
instead of DS segment).Word data can be located at odd or even byte boundaries. The
processor uses two memory accesses to read 16-bit word located at odd byte boundaries.
Reading word data from even byte boundaries requires only one memory access.
Stack memory
can be placed anywhere in memory. The stack can be located at odd memory addresses, but it
is not recommended for performance reasons (see"Data Memory" above).
Reserved locations
0000h - 03FFh are reserved for interrupt vectors. Each interrupt vector is a32-bit pointer in
format SEGMENT:OFFSET.
FFFF0h - FFFFFh - after RESET the processor always starts program execution at the FFFF0h
address.
Interrupts:
The processor has the following interrupts:
INTR
is a maskable hardware interrupt. The interrupt can be enabled/disabled using STI/CLI
instructions or using more complicated method of updating the FLAGS register with the help of
the POPF instruction. When an interrupt occurs, the processor stores FLAGS register into stack,
disables further interrupts, fetches from the bus one byte representing interrupt type, and
jumps to interrupt processing routine address of which is stored in location 4 * <interrupt
type>. Interrupt processing routine should return with the IRET instruction.
NMI
is a non-maskable interrupt. Interrupt is processed in the same way as the INTR interrupt.
Interrupt type of the NMI is 2, i.e. the address of the NMI processing routine is stored in
location 0008h. This interrupt has higher priority then the maskable interrupt.
Software interrupts
can be caused by:
INT <interrupt number> instruction - any one interrupt from available 256interrupts.
Single-step interrupt - generated if the TF flag is set. This is a type 1interrupt. When the CPU
processes this interrupt it clears TF flag before callingthe interrupt processing routine.
Processor exceptions: divide error (type 0), unused opcode (type 6) andescape opcode (type
7).Software interrupt processing is the same as for the hardware interrupts.
I/O ports:
8086 can interface maximum of 65536 nos of 8-bit I/O ports. These ports can bealso addressed
as 32768 16-bit I/O ports.
Registers:
Most of the registers contain data/instruction offsets within 64 KB memory segment. There are
four different 64 KB segments for instructions, stack, data and extra data. To specify where in 1
MB of processor memory these 4 segments are located the processor uses four segment
registers:
Code segment
(CS) is a 16-bit register containing address of 64 KB segment with processor instructions. The
processor uses CS segment for all accesses to instructions referenced by instruction pointer (IP)
register. CS register cannot be changed directly. The CS register is automatically updated during
far jump, far call and far return instructions.
Stack segment
(SS) is a 16-bit register containing address of 64KB segment with program stack. By default, the
processor assumes that all data referenced by the stack pointer (SP) and base pointer (BP)
registers is located in the stack segment.SS register can be changed directly using POP
instruction.
Data segment
(DS) is a 16-bit register containing address of 64KB segment with program data. By default, the
processor assumes that all data referenced by general registers (AX, BX, CX, DX) and index
register (SI, DI) is located in the data segment. DS register can be changed directly using POP
and LDS instructions.
Extra segment
(ES) is a 16-bit register containing address of 64KB segment, usually with program data. By
default, the processor assumes that the DI register references the ES segment in string
manipulation instructions. ES register can be changed directly using POP and LES instructions. It
is possible to change default segments used by general and index registers by prefixing
instructions with a CS, SS, DS or ES prefix.
All general registers of the 8086 microprocessor can be used for arithmetic and logic
operations. The general registers are:
Accumulator (AX)
register consists of 2 8-bit registers AL and AH, which can be combined together and used as a
16-bit register AX. AL in this case contains the low-order byte of the word, and AH contains the
high-order byte. Accumulator can be used for I/O operations and string manipulation.
Base (BX)
register consists of 2 8-bit registers BL and BH, which can be combined together and used as a
16-bit register BX. BL in this case contains the low-order byte of the word, and BH contains the
high-order byte. BX register usually contains a data pointer used for based, based indexed or
register indirect addressing.
Count (CX)
register consists of 2 8-bit registers CL and CH, which can be combined together and used as a
16-bit register CX. When combined, CL register contains the low-order byte of the word, and CH
contains the high-order byte. Count register can be used as a counter in string manipulation
and shift/rotate instructions.
Data (DX)
register consists of 2 8-bit registers DL and DH, which can be combined together and used as a
16-bit register DX. When combined, DL register contains the low-order byte of the word, and
DH contains the high-order byte. Data register can be used as a port number in I/O operations.
In integer 32-bit multiply and divide instruction the DX register contains high-order word of the
initial or resulting number.
The following registers are both general and index registers:
Stack Pointer
(SP) is a 16-bit register pointing to program stack.
Base Pointer
(BP) is a 16-bit register pointing to data in stack segment. BP register is usually used for based,
based indexed or register indirect addressing.
Source Index
(SI) is a 16-bit register. SI is used for indexed, based indexed and register indirect addressing, as
well as a source data address in string manipulation instructions.
Destination Index
(DI) is a 16-bit register. DI is used for indexed, based indexed and register indirect addressing, as
well as a destination data address in string manipulation instructions. Other registers:
Instruction Pointer
(IP) is a 16-bit register.
Flag Register
It is a 16-bit register containing 9 no.s of one bit flags:
Overflow Flag (OF) - set if the result is too large positive number, or is too small negative
number to fit into destination operand.
Direction Flag (DF) - if set then string manipulation instructions will auto-decrement
index registers. If cleared then the index registers will be auto-incremented
Interrupt-enable Flag (IF) - setting this bit enables maskable interrupts.
Single-step Flag (TF) - if set then single-step interrupt will occur after the next
instruction.
Sign Flag (SF) - set if the most significant bit of the result is set.
Zero Flag (ZF) - set if the result is zero.
Auxiliary carry Flag (AF) - set if there was a carry from or borrow to bits 0-3in the AL
register.
Parity Flag (PF) - set if parity (the number of "1" bits) in the low-order byte of the result
is even.
Carry Flag (CF) - set if there was a carry from or borrow to the most significant bit during last result
calculation.
Instruction Set:
8086 instruction set consists of the following instructions: