SlideShare uma empresa Scribd logo
1 de 145
Baixar para ler offline
 A microprocessor is a clock-driven semiconductor device consisting of electronic logic 
circuits manufactured by using either a large-scale integration (LSI) or very-large-scale 
integration (VLSI) technique. 
 The microprocessor is capable of performing various computing functions and making 
decisions to change the sequence of program execution. 
 In large computers, a CPU performs these computing functions. The Microprocessor 
resembles a CPU exactly. 
 The microprocessor is in many ways similar to the CPU, but includes all the logic 
circuitry including the control unit, on one chip. 
 The microprocessor can be divided into three segments for the sake of clarity. – They are: 
arithmetic/logic unit (ALU), register array, and control unit. 
 A comparison between a microprocessor, and a computer is shown below: 
 Arithmetic/Logic Unit: This is the area of the microprocessor where various computing 
functions are performed on data. The ALU unit performs such arithmetic operations as 
addition and subtraction, and such logic operations as AND, OR, and exclusive OR. 
 Register Array: This area of the microprocessor consists of various registers identified 
by letters such as B, C, D, E, H, and L. These registers are primarily used to store data 
temporarily during the execution of a program and are accessible to the user through 
instructions. 
 Control Unit: The control unit provides the necessary timing and control signals to all 
the operations in the microcomputer. It controls the flow of data between the 
microprocessor and memory and peripherals. 
 Memory: Memory stores such binary information as instructions and data, and provides 
that information to the microprocessor whenever necessary. To execute programs, the 
microprocessor reads instructions and data from memory and performs the computing 
operations in its ALU section. Results are either transferred to the output section for 
display or stored in memory for later use. Read-Only memory (ROM) and Read/Write 
memory (R/WM), popularly known as Random- Access memory (RAM). 
1. The ROM is used to store programs that do not need alterations. The monitor 
program of a single-board microcomputer is generally stored in the ROM. This 
program interprets the information entered through a keyboard and provides 
equivalent binary digits to the microprocessor. Programs stored in the ROM can 
only be read; they cannot be altered. 
2. The Read/Write memory (RIWM) is also known as user memory It is used to
store user programs and data. In single-board microcomputers, the monitor 
program monitors the Hex keys and stores those instructions and data in the R/W 
memory. The information stored in this memory can be easily read and altered. 
 I/O (Input/Output): It communicates with the outside world. I/O includes two types of 
devices: input and output; these I/O devices are also known as peripherals. 
 System Bus: The system bus is a communication path between the microprocessor and 
peripherals: it is nothing but a group of wires to carry bits. 
Microprocessor is a multi-use device which finds applications in almost all the fields. Here is 
some sample applications given in variety of fields. 
Electronics: 
 Digital clocks & Watches 
 Mobile phones 
 Measuring Meters 
Mechanical: 
 Automobiles 
 Lathes 
 All remote machines 
Electrical: 
 Motors 
 Lighting controls 
 Power stations 
Medical: 
 Patient monitoring 
 Most of the Medical equipments 
 Data loggers 
Computer: 
 All computer accessories 
 Laptops & Modems 
 Scanners & Printers 
Domestic: 
 Microwave Ovens 
 Television/CD/DVD players
 Washing Machines 
ARCHITECHTURE or FUNCTIONAL BLOCK DIAGRAM OF 8085 
The functional block diagram or architecture of 8085 Microprocessor is very important as it gives the 
complete details about a Microprocessor. Fig. shows the Block diagram of a Microprocessor. 
8085 Bus Structure: 
Address Bus: 
 The address bus is a group of 16 lines generally identified as A0 to A15. 
 The address bus is unidirectional: bits flow in one direction-from the MPU to peripheral 
devices. 
 The MPU uses the address bus to perform the first function: identifying a peripheral or a 
memory location.
Data Bus: 
 The data bus is a group of eight lines used for data flow. 
 These lines are bi-directional - data flow in both directions between the MPU and 
memory and peripheral devices. 
 The MPU uses the data bus to perform the second function: transferring binary 
information. 
 The eight data lines enable the MPU to manipulate 8-bit data ranging from 00 to FF (28 = 
256 numbers). 
 The largest number that can appear on the data bus is 11111111. 
Control Bus: 
 The control bus carries synchronization signals and providing timing signals. 
 The MPU generates specific control signals for every operation it performs. These signals 
are used to identify a device type with which the MPU wants to communicate. 
Registers of 8085: 
 The 8085 have six general-purpose registers to store 8-bit data during program 
execution. 
 These registers are identified as B, C, D, E, H, and L. 
 They can be combined as register pairs-BC, DE, and HL-to perform some 16-bit 
operations.
Accumulator (A): 
 The accumulator is an 8-bit register that is part of the arithmetic/logic unit (ALU). 
 This register is used to store 8-bit data and to perform arithmetic and logical operations. 
 The result of an operation is stored in the accumulator. 
Flags: 
 The ALU includes five flip-flops that are set or reset according to the result of an 
operation. 
 The microprocessor uses the flags for testing the data conditions. 
 They are Zero (Z), Carry (CY), Sign (S), Parity (P), and Auxiliary Carry (AC) flags. 
The most commonly used flags are Sign, Zero, and Carry. 
The bit position for the flags in flag register is, 
1.Sign Flag (S):
After execution of any arithmetic and logical operation, if D7 of the result is 1, the sign 
flag is set. Otherwise it is reset. 
2.Zero Flag (z): 
If the result of arithmetic and logical operation is zero, then zero flag is set otherwise it 
is reset. 
3.Auxiliary Carry Flag (AC): 
If D3 generates any carry when doing any arithmetic and logical operation, this flag is 
set. Otherwise it is reset. 
4.Parity Flag (P): 
If the result of arithmetic and logical operation contains even number of 1's then this 
flag will be set and if it is odd number of 1's it will be reset. 
5.Carry Flag (CY): 
If any arithmetic and logical operation result any carry then carry flag is set otherwise 
it is reset. 
Arithmetic and Logic Unit (ALU): 
 It is used to perform the arithmetic operations like addition, subtraction, multiplication, 
division, increment and decrement and logical operations like AND, OR and EX-OR. 
 It receives the data from accumulator and registers. 
 According to the result it set or reset the flags. 
Program Counter (PC): 
 This 16-bit register sequencing the execution of instructions. 
 It is a memory pointer. Memory locations have 16-bit addresses, and that is why this is a 
16-bit register. 
 The function of the program counter is to point to the memory address of the next 
instruction to be executed. 
 When an opcode is being fetched, the program counter is incremented by one to 
point to the next memory location.
Stack Pointer (Sp): 
 The stack pointer is also a 16-bit register used as a memory pointer. 
 It points to a memory location in R/W memory, called the stack. 
 The beginning of the stack is defined by loading a 16-bit address in the stack pointer 
(register). 
Temporary Register: It is used to hold the data during the arithmetic and logical operations. 
Instruction Register: When an instruction is fetched from the memory, it is loaded in 
the instruction register. 
Instruction Decoder: It gets the instruction from the instruction register and decodes the 
instruction. It identifies the instruction to be performed. 
Serial I/O Control: It has two control signals named SID and SOD for serial data transmission. 
Timing and Control unit: 
 It has three control signals ALE, RD (Active low) and WR (Active low) and three status 
signals IO/M(Active low), S0 and S1. 
 ALE is used for provide control signal to synchronize the components of microprocessor 
and timing for instruction to perform the operation. 
 RD (Active low) and WR (Active low) are used to indicate whether the operation is 
reading the data from memory or writing the data into memory respectively. 
 IO/M(Active low) is used to indicate whether the operation is belongs to the memory or 
peripherals. 
If,
Interrupt Control Unit: 
 It receives hardware interrupt signals and sends an acknowledgement for receiving the 
interrupt signal. 
PIN DIAGRAM AND PIN DESCRIPTION OF 8085 
 The microprocessor is a clock-driven semiconductor device consisting of electronic logic 
circuits manufactured by using either a large-scale integration (LSI) or very-large-scale 
integration (VLSI) technique. 
 The microprocessor is capable of performing various computing functions and making 
decisions to change the sequence of program execution. 
 In large computers, a CPU implemented on one or more circuit boards performs these 
computing functions. 
 The microprocessor is in many ways similar to the CPU, but includes the logic circuitry, 
including the control unit, on one chip.
 The microprocessor can be divided into three segments for the sake clarity, 
arithmetic/logic unit (ALU), register array, and control unit. 
 8085 is a 40 pin IC, DIP package. The signals from the pins can be grouped as follows 
1. Power supply and clock signals 
2. Address bus 
3. Data bus 
4. Control and status signals 
5. Interrupts and externally initiated signals 
6. Serial I/O ports 
1. Power supply and Clock frequency signals: 
 Vcc + 5 volt power supply 
 Vss Ground 
 X1, X2 : Crystal or R/C network or LC network connections to set the frequency of 
internal clock generator. 
 The frequency is internally divided by two. Since the basic operating timing frequency is 
3 MHz, a 6 MHz crystal is connected externally. 
 CLK (output)-Clock Output is used as the system clock for peripheral and devices 
interfaced with the microprocessor.
Fig (a) - Pin Diagram of 8085 & Fig(b) - logical schematic of Pin diagram. 
2. Address Bus: 
 A8 - A15 (output; 3-state) 
 It carries the most significant 8 bits of the memory address or the 8 bits of the I/O 
address; 
3. Multiplexed Address / Data Bus: 
 AD0 - AD7 (input/output; 3-state) 
 These multiplexed set of lines used to carry the lower order 8 bit address as well as data 
bus.
 During the opcode fetch operation, in the first clock cycle, the lines deliver the lower 
order address A0 - A7. 
 In the subsequent IO / memory, read / write clock cycle the lines are used as data bus. 
 The CPU may read or write out data through these lines. 
4. Control and Status signals: 
 ALE (output) - Address Latch Enable. 
 This signal helps to capture the lower order address presented on the multiplexed address 
/ data bus. 
 RD (output 3-state, active low) - Read memory or IO device. 
 This indicates that the selected memory location or I/O device is to be read and that the 
data bus is ready for accepting data from the memory or I/O device. 
 WR (output 3-state, active low) - Write memory or IO device. 
 This indicates that the data on the data bus is to be written into the selected memory 
location or I/O device. 
 IO/M (output) - Select memory or an IO device. 
 This status signal indicates that the read / write operation relates to whether the memory 
or I/O device. 
 It goes high to indicate an I/O operation. 
 It goes low for memory operations. 
5. Status Signals: 
 It is used to know the type of current operation of the microprocessor.
6. Interrupts and Externally initiated operations: 
 They are the signals initiated by an external device to request the microprocessor to do a 
particular task or work. 
 There are five hardware interrupts called, 
 On receipt of an interrupt, the microprocessor acknowledges the interrupt by the active 
low INTA (Interrupt Acknowledge) signal. 
Reset In (input, active low) 
 This signal is used to reset the microprocessor. 
 The program counter inside the microprocessor is set to zero. 
 The buses are tri-stated. 
Reset Out (Output) 
 It indicates CPU is being reset. 
 Used to reset all the connected devices when the microprocessor is reset. 
7. Direct Memory Access (DMA): 
Tri state devices: 
 3 output states are high & low states and additionally a high impedance state.
 When enable E is high the gate is enabled and the output Q can be 1 or 0 (if A is 0, Q is 
1, otherwise Q is 0). However, when E is low the gate is disabled and the output Q enters 
into a high impedance state. 
Fig (a) - Pin Diagram of 8085 & Fig(b) - logical schematic of Pin diagram. 
 For both high and low states, the output Q draws a current from the input of the OR gate. 
 When E is low, Q enters a high impedance state; high impedance means it is electrically 
isolated from the OR gate's input, though it is physically connected. Therefore, it does not 
draw any current from the OR gate's input. 
 When 2 or more devices are connected to a common bus, to prevent the devices from 
interfering with each other, the tristate gates are used to disconnect all devices except the 
one that is communicating at a given instant. 
 The CPU controls the data transfer operation between memory and I/O device. Direct 
Memory Access operation is used for large volume data transfer between memory and an 
I/O device directly. 
 The CPU is disabled by tri-stating its buses and the transfer is effected directly by 
external control circuits. 
 HOLD signal is generated by the DMA controller circuit. On receipt of this signal, the 
microprocessor acknowledges the request by sending out HLDA signal and leaves out the 
control of the buses. After the HLDA signal the DMA controller starts the direct transfer 
of data. 
READY (input) 
 Memory and I/O devices will have slower response compared to microprocessors. 
 Before completing the present job such a slow peripheral may not be able to handle 
further data or control signal from CPU.
 The processor sets the READY signal after completing the present job to access the data. 
 The microprocessor enters into WAIT state while the READY pin is disabled. 
8. Single Bit Serial I/O ports: 
 SID (input) - Serial input data line 
 SOD (output) - Serial output data line 
 These signals are used for serial communication. 
TIMING DIAGRAM 
Timing Diagram is a graphical representation. It represents the execution time taken by each 
instruction in a graphical format. The execution time is represented in T-states. 
Instruction Cycle: 
The time required to execute an instruction is called instruction cycle. 
Machine Cycle: 
The time required to access the memory or input/output devices is called machine cycle. 
T-State: 
 The machine cycle and instruction cycle takes multiple clock periods. 
 A portion of an operation carried out in one system clock period is called as T-state.
MACHINE CYCLES OF 8085: 
The 8085 microprocessor has 5 (seven) basic machine cycles. They are 
1. Opcode fetch cycle (4T) 
2. Memory read cycle (3 T) 
3. Memory write cycle (3 T) 
4. I/O read cycle (3 T) 
5. I/O write cycle (3 T) 
 Each instruction of the 8085 processor consists of one to five machine cycles, i.e., 
when the 8085 processor executes an instruction, it will execute some of the machine 
cycles in a specific order. 
 The processor takes a definite time to execute the machine cycles. The time taken by 
the processor to execute a machine cycle is expressed in T-states. 
 One T-state is equal to the time period of the internal clock signal of the processor. 
 The T-state starts at the falling edge of a clock.
Opcode fetch machine cycle of 8085 : 
 Each instruction of the processor has one byte opcode. 
 The opcodes are stored in memory. So, the processor executes the opcode fetch 
machine cycle to fetch the opcode from memory. 
 Hence, every instruction starts with opcode fetch machine cycle. 
 The time taken by the processor to execute the opcode fetch cycle is 4T. 
 In this time, the first, 3 T-states are used for fetching the opcode from memory and 
the remaining T-states are used for internal operations by the processor. 
Fig - Timing Diagram for Opcode Fetch Machine Cycle
Memory Read Machine Cycle of 8085: 
 The memory read machine cycle is executed by the processor to read a data byte 
from memory. 
 The processor takes 3T states to execute this cycle. 
 The instructions which have more than one byte word size will use the machine 
cycle after the opcode fetch machine cycle. 
Fig - Timing Diagram for Memory Read Machine Cycle
Memory Write Machine Cycle of 8085: 
 The memory write machine cycle is executed by the processor to write a data byte in 
a memory location. 
 The processor takes, 3T states to execute this machine cycle. 
Fig - Timing Diagram for Memory Write Machine Cycle
I/O Read Cycle of 8085: 
 The I/O Read cycle is executed by the processor to read a data byte from I/O port or 
from the peripheral, which is I/O, mapped in the system. 
 The processor takes 3T states to execute this machine cycle. 
 The IN instruction uses this machine cycle during the execution. 
Fig - Timing Diagram for I/O Read Machine Cycle
I/O Write Cycle of 8085: 
 The I/O write machine cycle is executed by the processor to write a data byte in the 
I/O port or to a peripheral, which is I/O, mapped in the system. 
 The processor takes, 3T states to execute this machine cycle. 
Fig - Timing Diagram for I/O Write Machine Cycle 
 The 8085 instructions consist of one to five machine cycles. 
 Actually the execution of an instruction is the execution of the machine cycles of that 
instruction in the predefined order. 
 The timing diagram of an instruction ate obtained by drawing the timing diagrams 
of the machine cycles of that instruction, one by one in the order of execution.
Timing diagram for STA 526AH. 
 STA means Store Accumulator -The contents of the accumulator is stored in the 
specified address(526A). 
 The opcode of the STA instruction is said to be 32H. It is fetched from the memory 
41FFH(see fig). - OF machine cycle 
 Then the lower order memory address is read(6A). - Memory Read Machine Cycle 
 Read the higher order memory address (52).- Memory Read Machine Cycle 
 The combination of both the addresses are considered and the content from 
accumulator is written in 526A. - Memory Write Machine Cycle 
 Assume the memory address for the instruction and let the content of accumulator 
is C7H. So, C7H from accumulator is now stored in 526A.
Timing diagram for IN C0H. 
 Fetching the Opcode DBH from the memory 4125H. 
 Read the port address C0H from 4126H. 
 Read the content of port C0H and send it to the accumulator. 
 Let the content of port is 5EH.
Timing diagram for INR M 
 Fetching the Opcode 34H from the memory 4105H. (OF cycle) 
 Let the memory address (M) be 4250H. (MR cycle -To read Memory address and 
data) 
 Let the content of that memory is 12H. 
 Increment the memory content from 12H to 13H. (MW machine cycle)
Timing diagram for MVI B, 43H. 
 Fetching the Opcode 06H from the memory 2000H. (OF machine cycle) 
 Read (move) the data 43H from memory 2001H. (memory read)
INTERRUPT STRUCTURE 
 Interrupt is signals send by an external device to the processor, to request the 
processor to perform a particular task or work. 
 Mainly in the microprocessor based system the interrupts are used for data transfer 
between the peripheral and the microprocessor. 
 The processor will check the interrupts always at the 2nd T-state of last machine 
cycle. 
 If there is any interrupt it accept the interrupt and send the INTA (active low) 
signal to the peripheral. 
 The vectored address of particular interrupt is stored in program counter. 
 The processor executes an interrupt service routine (ISR) addressed in program 
counter. 
 It returned to main program by RET instruction. 
Types of Interrupts: 
It supports two types of interrupts. 
 Hardware 
 Software 
Software interrupts: 
 The software interrupts are program instructions. These instructions are inserted at 
desired locations in a program. 
 The 8085 has eight software interrupts from RST 0 to RST 7. The vector address for 
these interrupts can be calculated as follows. 
 Interrupt number * 8 = vector address 
 For RST 5,5 * 8 = 40 = 28H 
 Vector address for interrupt RST 5 is 0028H 
The Table shows the vector addresses of all interrupts.
Hardware interrupts: 
 An external device initiates the hardware interrupts and placing an appropriate 
signal at the interrupt pin of the processor. 
 If the interrupt is accepted then the processor executes an interrupt service routine. 
The 8085 has five hardware interrupts 
(1) TRAP (2) RST 7.5 (3) RST 6.5 (4) RST 5.5 (5) INTR 
TRAP: 
 This interrupt is a non-maskable interrupt. It is unaffected by any mask or 
interrupt enable. 
 TRAP bas the highest priority and vectored interrupt. 
 TRAP interrupt is edge and level triggered. This means hat the TRAP must go high 
and remain high until it is acknowledged. 
 In sudden power failure, it executes a ISR and send the data from main memory to 
backup memory. 
 The signal, which overrides the TRAP, is HOLD signal. (i.e., If the processor 
receives HOLD and TRAP at the same time then HOLD is recognized first and then 
TRAP is recognized). 
 There are two ways to clear TRAP interrupt. 
1.By resetting microprocessor (External signal) 
2.By giving a high TRAP ACKNOWLEDGE (Internal signal)
RST 7.5: 
 The RST 7.5 interrupt is a maskable interrupt. 
 It has the second highest priority. 
 It is edge sensitive. ie. Input goes to high and no need to maintain high state until it 
recognized. 
 Maskable interrupt. It is disabled by, 
1.DI instruction 
2.System or processor reset. 
3.After reorganization of interrupt. 
 Enabled by EI instruction. 
RST 6.5 and 5.5: 
 The RST 6.5 and RST 5.5 both are level triggered. . ie. Input goes to high and stay 
high until it recognized. 
 Maskable interrupt. It is disabled by, 
1.DI, SIM instruction 
2.System or processor reset. 
3.After reorganization of interrupt. 
 Enabled by EI instruction. 
 The RST 6.5 has the third priority whereas RST 5.5 has the fourth priority. 
INTR: 
 INTR is a maskable interrupt. It is disabled by, 
1.DI, SIM instruction 
2.System or processor reset. 
3.After reorganization of interrupt. 
 Enabled by EI instruction. 
 Non- vectored interrupt. After receiving INTA (active low) signal, it has to supply 
the address of ISR. 
 It has lowest priority.
 It is a level sensitive interrupts. ie. Input goes to high and it is necessary to maintain 
high state until it recognized. 
 The following sequence of events occurs when INTR signal goes high. 
1. The 8085 checks the status of INTR signal during execution of each instruction. 
2. If INTR signal is high, then 8085 complete its current instruction and sends 
active low interrupt acknowledge signal, if the interrupt is enabled. 
3. In response to the acknowledge signal, external logic places an instruction 
OPCODE on the data bus. In the case of multibyte instruction, additional interrupt 
acknowledge machine cycles are generated by the 8085 to transfer the additional 
bytes into the microprocessor. 
4. On receiving the instruction, the 8085 save the address of next instruction on 
stack and execute received instruction. 
SIM and RIM for interrupts: 
 The 8085 provide additional masking facility for RST 7.5, RST 6.5 and RST 5.5 
using SIM instruction. 
 The status of these interrupts can be read by executing RIM instruction. 
 The masking or unmasking of RST 7.5, RST 6.5 and RST 5.5 interrupts can be 
performed by moving an 8-bit data to accumulator and then executing SIM 
instruction. 
 The format of the 8-bit data is shown below. 
 The status of pending interrupts can be read from accumulator after executing RIM 
instruction.
 When RIM instruction is executed an 8-bit data is loaded in accumulator, which can 
be interpreted as shown in fig.
8085 INSTRUCTION SET CLASSIFICATION 
The 8085 instruction set can be classified into the following five functional headings. 
1. DATA TRANSFER INSTRUCTIONS: 
It includes the instructions that move (copies) data between registers or between 
memory locations and registers. In all data transfer operations the content of source 
register is not altered. Hence the data transfer is copying operation. 
Ex: (1) Mov A,B 
(2) MVI C,45H 
2. ARITHMETIC INSTRUCTIONS: 
Includes the instructions, which performs the addition, subtraction, increment or 
decrement operations. The flag conditions are altered after execution of an instruction in 
this group. 
Ex: (1) ADD A,B 
(2) SUI B,05H 
3. LOGICAL INSTRUCTIONS: 
The instructions which performs the logical operations like AND, OR, EXCLUSIVE-OR, 
complement, compare and rotate instructions are grouped under this heading. The 
flag conditions are altered after execution of an instruction in this group. 
Ex: (1) ORA A 
(2) ANI B, 01H 
4. BRANCHING INSTRUCTIONS: 
The instructions that are used to transfer the program control from one memory 
location to another memory location are grouped under this heading. 
Ex: (1) CALL 
(2) JMP 4100 
5. MACHINE CONTROL INSTRUCTIONS: 
It includes the instructions related to interrupts and the instruction used to stop the 
program execution. 
Ex: (1) NOP 
(2) END
ADDRESSING MODES OF 8085 
 Every instruction of a program has to operate on a data. 
 The method of specifying the data to be operated by the instruction is called 
Addressing. 
 The 8085 has the following 5 different types of addressing. 
1. Immediate Addressing 
2. Direct Addressing 
3. Register Addressing 
4. Register Indirect Addressing 
5. Implied Addressing 
1. Immediate Addressing: 
 In immediate addressing mode, the data is specified in the instruction itself. The 
data will be a part of the program instruction. 
 EX. MVI B, 3EH - Move the data 3EH given in the instruction to B register; LXI 
SP, 2700H. 
2. Direct Addressing: 
 In direct addressing mode, the address of the data is specified in the instruction. The 
data will be in memory. In this addressing mode, the program instructions and data 
can be stored in different memory. 
 EX. LDA 1050H - Load the data available in memory location 1050H in to 
accumulator; SHLD 3000H 
3. Register Addressing: 
 In register addressing mode, the instruction specifies the name of the register in 
which the data is available. 
 EX. MOV A, B - Move the content of B register to A register; SPHL; ADD C. 
4. Register Indirect Addressing: 
 In register indirect addressing mode, the instruction specifies the name of the 
register in which the address of the data is available. Here the data will be in 
memory and the address will be in the register pair. 
 EX. MOV A, M - The memory data addressed by H L pair is moved to A register. 
LDAX B. 
5. Implied Addressing: 
 In implied addressing mode, the instruction itself specifies the data to be operated. 
 EX. CMA - Complement the content of accumulator; RAL
8085 - Instruction set list 
8085 Instructions - Datatransfer 
Opcode Operand 
Explanation of 
Instruction 
Description 
MOV 
Rd, Rs 
M, Rs 
Rd, M 
Copy from 
source(Rs) to 
destination(Rd) 
This instruction copies the contents of the source 
register into the destination register; the contents of the 
source register are not altered. If one of the operands is 
a memory location, its location is specified by the 
contents of the HL registers. 
Example: MOV B, C or MOV B, M 
MVI 
Rd, data 
M, data 
Move immediate 8- 
bit 
The 8-bit data is stored in the destination register or 
memory. If the operand is a memory location, its 
location is specified by the contents of the HL 
registers. 
Example: MVI B, 57H or MVI M, 57H 
LDA 
16-bit 
address 
Load accumulator 
The contents of a memory location, specified by a 16- 
bit address in the operand, are copied to the 
accumulator. The contents of the source are not altered. 
Example: LDA 2034H 
LDAX 
B/D Reg. 
pair 
Load accumulator 
indirect 
The contents of the designated register pair point to a 
memory location. This instruction copies the contents 
of that memory location into the accumulator. The 
contents of either the register pair or the memory 
location are not altered. 
Example: LDAX B 
LXI 
Reg. pair, 
16-bit data 
Load register pair 
immediate 
The instruction loads 16-bit data in the register pair 
designated in the operand. 
Example: LXI H, 2034H or LXI H, XYZ 
LHLD 
16-bit 
address 
Load H and L 
registers direct 
The instruction copies the contents of the memory 
location pointed out by the 16-bit address into register 
L and copies the contents of the next memory location 
into register H. The contents of source memory 
locations are not altered. 
Example: LHLD 2040H
STA 
16-bit 
address 
16-bit address 
The contents of the accumulator are copied into the 
memory location specified by the operand. This is a 3- 
byte instruction, the second byte specifies the low-order 
address and the third byte specifies the high-order 
address. 
Example: STA 4350H 
STAX Reg. pair 
Store accumulator 
indirect 
The contents of the accumulator are copied into the 
memory location specified by the contents of the 
operand (register pair). The contents of the 
accumulator are not altered. 
Example: STAX B 
SHLD 
16-bit 
address 
Store H and L 
registers direct 
The contents of register L are stored into the memory 
location specified by the 16-bit address in the operand 
and the contents of H register are stored into the next 
memory location by incrementing the operand. The 
contents of registers HL are not altered. This is a 3- 
byte instruction, the second byte specifies the low-order 
address and the third byte specifies the high-order 
address. 
Example: SHLD 2470H 
XCHG none 
Exchange H and L 
with D and E 
The contents of register H are exchanged with the 
contents of register D, and the contents of register L 
are exchanged with the contents of register E. 
Example: XCHG 
SPHL none 
Copy H and L 
registers to the stack 
pointer 
The instruction loads the contents of the H and L 
registers into 
the stack pointer register, the contents of the H register 
provide the high-order address and the contents of the 
L register provide the low-order address. The contents 
of the H 
and L registers are not altered. 
Example: SPHL 
XTHL none 
Exchange H and L 
with top of stack 
The contents of the L register are exchanged with the 
stack location pointed out by the contents of the stack 
pointer register. The contents of the H register are 
exchanged with the next stack location (SP+1); 
however, the contents of the stack pointer register are 
not altered.
Example: XTHL 
PUSH Reg. pair 
Push register pair 
onto stack 
The contents of the register pair designated in the 
operand are copied onto the stack in the following 
sequence. The stack pointer register is decremented 
and the contents of the highorder register (B, D, H, A) 
are copied into that location. The stack pointer register 
is decremented again and the contents of the low-order 
register (C, E, L, flags) are copied to that location. 
Example: PUSH B or PUSH A 
POP Reg. pair 
Pop off stack to 
register pair 
The contents of the memory location pointed out by the 
stack pointer register are copied to the low-order 
register (C, E, L, status flags) of the operand. The stack 
pointer is incremented by 1 and the contents of that 
memory location are copied to the high-order register 
(B, D, H, A) of the operand. The stack pointer register 
is again incremented by 1. 
Example: POP H or POP A 
OUT 
8-bit port 
address 
Output data from 
accumulator to a 
port with 8-bit 
address 
The contents of the accumulator are copied into the 
I/O port specified by the operand. 
Example: OUT F8H 
IN 
8-bit port 
address 
Input data to 
accumulator from a 
port with 8-bit 
address 
The contents of the input port designated in the 
operand are read and loaded into the accumulator. 
Example: IN 8CH 
8085 Instructions - Arithmetic 
Opcode Operand 
Explanation of 
Instruction 
Description 
ADD 
R 
M 
Add register or 
memory, to 
accumulator 
The contents of the operand (register or memory) are 
added to the contents of the accumulator and the result is 
stored in the accumulator. If the operand is a memory 
location, its location is specified by the contents of the 
HL registers. All flags are modified to reflect the result of 
the addition. 
Example: ADD B or ADD M 
ADC 
R Add register to 
accumulator with 
The contents of the operand (register or memory) and M 
the Carry flag are added to the contents of the
M carry accumulator and the result is stored in the accumulator. If 
the operand is a memory location, its location is specified 
by the contents of the HL registers. All flags are modified 
to reflect the result of the addition. 
Example: ADC B or ADC M 
ADI 8-bit data 
Add immediate to 
accumulator 
The 8-bit data (operand) is added to the contents of the 
accumulator and the result is stored in the accumulator. 
All flags are modified to reflect the result of the addition. 
Example: ADI 45H 
ACI 8-bit data 
Add immediate to 
accumulator with 
carry 
The 8-bit data (operand) and the Carry flag are added to 
the contents of the accumulator and the result is stored in 
the accumulator. All flags are modified to reflect the 
result of the addition. 
Example: ACI 45H 
LXI 
Reg. pair, 
16-bit data 
Load register pair 
immediate 
The instruction loads 16-bit data in the register pair 
designated in the operand. 
Example: LXI H, 2034H or LXI H, XYZ 
DAD Reg. pair 
Add register pair 
to H and L 
registers 
The 16-bit contents of the specified register pair are 
added to the contents of the HL register and the sum is 
stored in the HL register. The contents of the source 
register pair are not altered. If the result is larger than 16 
bits, the CY flag is set. No other flags are affected. 
Example: DAD H 
SUB 
R 
M 
Subtract register 
or memory from 
accumulator 
The contents of the operand (register or memory ) are 
subtracted from the contents of the accumulator, and the 
result is stored in the accumulator. If the operand is a 
memory location, its location is specified by the contents 
of the HL registers. All flags are modified to reflect the 
result of the subtraction. 
Example: SUB B or SUB M 
SBB 
R 
M 
Subtract source 
and borrow from 
accumulator 
The contents of the operand (register or memory ) and M 
the Borrow flag are subtracted from the contents of the 
accumulator and the result is placed in the accumulator. If 
the operand is a memory location, its location is specified 
by the contents of the HL registers. All flags are modified 
to reflect the result of the subtraction. 
Example: SBB B or SBB M
SUI 8-bit data 
Subtract 
immediate from 
accumulator 
The 8-bit data (operand) is subtracted from the contents 
of the accumulator and the result is stored in the 
accumulator. All flags are modified to reflect the result of 
the subtraction. 
Example: SUI 45H 
SBI 8-bit data 
Subtract 
immediate from 
accumulator with 
borrow 
The contents of register H are exchanged with the 
contents of register D, and the contents of register L are 
exchanged with the contents of register E. 
Example: XCHG 
INR 
R 
M 
Increment register 
or memory by 1 
The contents of the designated register or memory) are 
incremented by 1 and the result is stored in the same 
place. If the operand is a memory location, its location is 
specified by the contents of the HL registers. 
Example: INR B or INR M 
INX R 
Increment register 
pair by 1 
The contents of the designated register pair are 
incremented by 1 and the result is stored in the same 
place. 
Example: INX H 
DCR 
R 
M 
Decrement 
register or 
memory by 1 
The contents of the designated register or memory are M 
decremented by 1 and the result is stored in the same 
place. If the operand is a memory location, its location is 
specified by the contents of the HL registers. 
Example: DCR B or DCR M 
DCX R 
Decrement 
register pair by 1 
The contents of the designated register pair are 
decremented by 1 and the result is stored in the same 
place. 
Example: DCX H 
DAA none 
Decimal adjust 
accumulator 
The contents of the accumulator are changed from a 
binary value to two 4-bit binary coded decimal (BCD) 
digits. This is the only instruction that uses the auxiliary 
flag to perform the binary to BCD conversion, and the 
conversion procedure is described below. S, Z, AC, P, 
CY flags are altered to reflect the results of the operation. 
If the value of the low-order 4-bits in the accumulator is 
greater than 9 or if AC flag is set, the instruction adds 6 to 
the low-order four bits.
If the value of the high-order 4-bits in the accumulator is 
greater than 9 or if the Carry flag is set, the instruction 
adds 6 to the high-order four bits. 
Example: DAA 
8085 Instructions - Branching 
BRANCHING INSTRUCTIONS 
Opcode Operand 
Explanation of 
Instruction 
Description 
JMP 
16-bit 
address 
Jump 
unconditionally 
The program sequence is 
transferred to the memory location 
specified by the 16-bit address 
given in the operand. 
Example: JMP 2034H or JMP 
XYZ 
Opcode Description 
Flag 
Status 
JC Jump on Carry CY = 1 
JNC 
Jump on no 
Carry 
CY = 0 
JP 
Jump on 
positive 
S = 0 
JM Jump on minus S = 1 
JZ Jump on zero Z = 1 
JNZ Jump on no zero Z = 0 
JPE 
Jump on parity 
even 
P = 1 
JPO 
Jump on parity 
odd 
P = 0 
16-bit 
address 
Jump 
conditionally 
The program sequence is 
transferred to the memory location 
specified by the 16-bit address 
given in the operand based on the 
specified flag of the PSW as 
described below. 
Example: JZ 2034H or JZ XYZ 
Opcode Description 
Flag 
Status 
CC Call on Carry CY = 1 
CNC 
Call on no 
Carry 
CY = 0 
16-bit 
address 
Unconditional 
subroutine call 
The program sequence is 
transferred to the memory location 
specified by the 16-bit address 
given in the operand. Before the 
transfer, the address of the next 
instruction after CALL (the 
contents of the program counter) is
CP Call on positive S = 0 
CM Call on minus S = 1 
CZ Call on zero Z = 1 
CNZ Call on no zero Z = 0 
CPE 
Call on parity 
even 
P = 1 
CPO 
Call on parity 
odd 
P = 0 
pushed onto the stack. 
Example: CALL 2034H or 
CALL XYZ 
RET none 
Return from 
subroutine 
unconditionally 
The program sequence is 
transferred from the subroutine to 
the calling program. The two bytes 
from the top of the stack are copied 
into the program counter,and 
program execution begins at the 
new address. 
Example: RET 
Opcode Description 
Flag 
Status 
RC Return on Carry CY = 1 
RNC 
Return on no 
Carry 
CY = 0 
RP 
Return on 
positive 
S = 0 
RM Return on minus S = 1 
RZ Return on zero Z = 1 
RNZ 
Return on no 
zero 
Z = 0 
RPE 
Return on parity 
even 
P = 1 
RPO 
Return on parity 
odd 
P = 0 
none 
Return from 
subroutine 
conditionally 
The program sequence is 
transferred from the subroutine to 
the calling program based on the 
specified flag of the PSW as 
described below. The two bytes 
from the top of the stack are copied 
into the program counter, and 
program execution begins at the 
new address. 
Example: RZ 
PCHL none 
Load program 
counter with HL 
contents 
The contents of registers H and L 
are copied into the program 
counter. The contents of H are 
placed as the high-order byte and 
the contents of L as the low-order 
byte. 
Example: PCHL
RST 
0-7 Restart 
The RST instruction is equivalent 
to a 1-byte call instruction to one of 
eight memory locations depending 
upon the number. The instructions 
are generally used in conjunction 
with interrupts and inserted using 
external hardware. However these 
can be used as software instructions 
in a program to transfer program 
execution to one of the eight 
locations. The addresses are: 
Instruction 
Restart 
Address 
RST 0 0000H 
RST1 0008H 
RST 2 0010H 
RST 3 0018H 
RST 4 0020H 
RST 5 0028H 
RST 6 0030H 
RST 7 0038H 
The 8085 has four additional 
interrupts and these interrupts 
generate RST instructions 
internally and thus do not require 
any external hardware. These 
instructions and their Restart 
addresses are: 
Interrupt 
Restart 
Address 
TRAP 0024H 
RST 5.5 002CH 
RST 6.5 0034H 
RST 7.5 003CH
LOGICAL INSTRUCTIONS 
Opcode Operand 
Explanation of 
Instruction 
Description 
CMP 
R 
M 
Compare register 
or memory with 
accumulator 
The contents of the operand (register or memory) are M 
compared with the contents of the accumulator. Both 
contents are preserved . The result of the comparison is 
shown by setting the flags of the PSW as follows: 
if (A) < (reg/mem): carry flag is set 
if (A) = (reg/mem): zero flag is set 
if (A) > (reg/mem): carry and zero flags are reset 
Example: CMP B or CMP M 
CPI 
8-bit 
data 
Compare 
immediate with 
accumulator 
The second byte (8-bit data) is compared with the contents 
of the accumulator. The values being compared remain 
unchanged. The result of the comparison is shown by 
setting the flags of the PSW as follows: 
if (A) < data: carry flag is set 
if (A) = data: zero flag is set 
if (A) > data: carry and zero flags are reset 
Example: CPI 89H 
ANA 
R 
M 
Logical AND 
register or 
memory with 
accumulator 
The contents of the accumulator are logically ANDed with 
M the contents of the operand (register or memory), and 
the result is placed in the accumulator. If the operand is a 
memory location, its address is specified by the contents of 
HL registers. S, Z, P are modified to reflect the result of the 
operation. CY is reset. AC is set. 
Example: ANA B or ANA M 
ANI 
8-bit 
data 
Logical AND 
immediate with 
accumulator 
The contents of the accumulator are logically ANDed with 
the 
8-bit data (operand) and the result is placed in the 
accumulator. S, Z, P are modified to reflect the result of the 
operation. CY is reset. AC is set. 
Example: ANI 86H 
XRA 
R 
M 
Exclusive OR 
register or 
memory with 
accumulator 
The contents of the accumulator are Exclusive ORed with 
M the contents of the operand (register or memory), and 
the result is placed in the accumulator. If the operand is a 
memory location, its address is specified by the contents of 
HL registers. S, Z, P are modified to reflect the result of the
operation. CY and AC are reset. 
Example: XRA B or XRA M 
XRI 
8-bit 
data 
Exclusive OR 
immediate with 
accumulator 
The contents of the accumulator are Exclusive ORed with 
the 8-bit data (operand) and the result is placed in the 
accumulator. S, Z, P are modified to reflect the result of the 
operation. CY and AC are reset. 
Example: XRI 86H 
ORA 
R 
M 
Logical OR 
register or 
memory with 
accumulator 
The contents of the accumulator are logically ORed with M 
the contents of the operand (register or memory), and the 
result is placed in the accumulator. If the operand is a 
memory location, its address is specified by the contents of 
HL registers. S, Z, P are modified to reflect the result of the 
operation. CY and AC are reset. 
Example: ORA B or ORA M 
ORI 
8-bit 
data 
Logical OR 
immediate with 
accumulator 
The contents of the accumulator are logically ORed with 
the 8-bit data (operand) and the result is placed in the 
accumulator. S, Z, P are modified to reflect the result of the 
operation. CY and AC are reset. 
Example: ORI 86H 
RLC none 
Rotate 
accumulator left 
Each binary bit of the accumulator is rotated left by one 
position. Bit D7 is placed in the position of D0 as well as in 
the Carry flag. CY is modified according to bit D7. S, Z, P, 
AC are not affected. 
Example: RLC 
RRC none 
Rotate 
accumulator right 
Each binary bit of the accumulator is rotated right by one 
position. Bit D0 is placed in the position of D7 as well as in 
the Carry flag. CY is modified according to bit D0. S, Z, P, 
AC are not affected. 
Example: RRC 
RAL none 
Rotate 
accumulator left 
through carry 
Each binary bit of the accumulator is rotated left by one 
position through the Carry flag. Bit D7 is placed in the 
Carry flag, and the Carry flag is placed in the least 
significant position D0. CY is modified according to bit 
D7. S, Z, P, AC are not affected. 
Example: RAL 
RAR none 
Rotate 
accumulator right 
Each binary bit of the accumulator is rotated right by one 
position through the Carry flag. Bit D0 is placed in the
through carry Carry flag, and the Carry flag is placed in the most 
significant position D7. CY is modified according to bit 
D0. S, Z, P, AC are not affected. 
Example: RAR 
CMA none 
Complement 
accumulator 
The contents of the accumulator are complemented. No 
flags are affected. 
Example: CMA 
CMC none 
Complement 
carry 
The Carry flag is complemented. No other flags are 
affected. 
Example: CMC 
STC none Set Carry 
Set Carry 
Example: STC 
CONTROL INSTRUCTIONS 
Opcode Operand 
Explanation 
of 
Instruction 
Description 
NOP none 
No 
operation 
No operation is performed. The instruction is fetched and decoded. 
However no operation is executed. 
Example: NOP 
HLT none 
Halt and 
enter wait 
state 
The CPU finishes executing the current instruction and halts any further 
execution. An interrupt or reset is necessary to exit from the halt state. 
Example: HLT 
DI none 
Disable 
interrupts 
The interrupt enable flip-flop is reset and all the interrupts except the 
TRAP are disabled. No flags are affected. 
Example: DI 
EI none 
Enable 
interrupts 
The interrupt enable flip-flop is set and all interrupts are enabled. No flags 
are affected. After a system reset or the acknowledgement of an interrupt, 
the interrupt enable flipflop is reset, thus disabling the interrupts. This 
instruction is 
necessary to reenable the interrupts (except TRAP). 
Example: EI
RIM none 
Read 
interrupt 
mas 
This is a multipurpose instruction used to read the status of interrupts 7.5, 
6.5, 5.5 and read serial data input bit. The instruction loads eight bits in 
the accumulator with the following interpretations. 
Example: RIM 
SIM none 
Set interrupt 
mask 
This is a multipurpose instruction and used to implement the 8085 
interrupts 7.5, 6.5, 5.5, and serial data output. The instruction interprets 
the accumulator contents as follows. 
Example: SIM
Opcode Sheet of 8085 Microprocessor with 
description 
What is OPCODE? OPCODE is the machine language. ie, while we talk or write, we do it in english; 
because we understand english. But a machine cannot understand direct english. So, we translate english 
into its level to make a machine to understand. For example, there is a translator inside all computers 
which translate our english into Binary language for a computer to understand and perform the required 
operations. Similarly, a machine language which a Microprocessor can understand is the HEXA language. 
These hex codes are called OPCODES which makes a microprocessor to work. As there is no translator 
inside a Microprocessor, we directly fnd the OPCODES for each and every instruction and we feed it 
alone inside a trainer kit. Those opcodes with its description are given below. The OPCODE sheet 
without description is also given in the main page.
Calculate the sum of series of numbers 
Multiply two 8-bit numbers 
Divide a 16 bit number by a 8-bit number 
Find the negative numbers in a block of data. 
Find the largest of given numbers 
Count number of one's in a number 
Arrange in ascending order 
Calculate the sum of series of even numbers 
Calculate the sum of series of odd numbers 
Find the square of given number 
Search a byte in a given number 
Add two decimal numbers of 6 digit each 
Add each element of array with the elements of another array 
Separate even numbers from given numbers 
Transfer contents to overlapping memory blocks 
Add parity bit to 7-bit ASCII characters 
Find the number of negative, zero and positive numbers 
Inserting string in a given array of characters 
Deleting string in a given array of characters 
Multiply two eight bit numbers with shift and add method 
Divide 16-bit number with 8-bit number using shifting technique 
Sub routine to perform the task of DAA 
Program to test RAM 
Program to generate Fibonacci number 
Generate a delay of 0.4 seconds 
Arrange in Descending Order 
Data transfer from one memory block to other memory block. 
Find the factorial of a number 
Find the Square Root of a given number 
Split a HEX data into two nibbles and store it 
Add two 4-digit BCD numbers 
Subtraction of two BCD numbers 
Multiply two 2-digit BCD numbers 
Generate and display binary up counter 
Generate and display BCD up counter with frequency 1Hz 
Generate and display BCD down counter 
Generate and display the contents of decimal counter 
Debug the delay routine 
2-Digit BCD to binary conversion. 
Binary to BCD conversion 
Find the 7-segment codes for given numbers 
Find the ASCII character 
ASCII to Decimal Conversion 
HEX to Decimal conversion 
HEX to binary conversion
Store 8-bit data in memory 
Statement: Store the data byte 32H into memory location 4000H. 
Program 1: 
MVI A, 52H : Store 32H in the accumulator 
STA 4000H : Copy accumulator contents at address 4000H 
HLT : Terminate program execution 
Program 2: 
LXI H : Load HL with 4000H 
MVI M : Store 32H in memory location pointed by HL register pair (4000H) 
HLT : Terminate program execution 
Note: The result of both programs will be the same. In program 1 direct addressing 
instruction is used, whereas in program 2 indirect addressing instruction is used. 
Statement: Exchange the contents of memory locations 2000H and 4000H. 
Program 1: 
LDA 2000H : Get the contents of memory location 2000H into accumulator 
MOV B, A : Save the contents into B register 
LDA 4000H : Get the contents of memory location 4000Hinto accumulator 
STA 2000H : Store the contents of accumulator at address 2000H 
MOV A, B : Get the saved contents back into A register 
STA 4000H : Store the contents of accumulator at address 4000H
Program 2: 
LXI H 2000H : Initialize HL register pair as a pointer to memory location 2000H. 
LXI D 4000H : Initialize DE register pair as a pointer to memory location 4000H. 
MOV B, M : Get the contents of memory location 2000H into B register. 
LDAX D : Get the contents of memory location 4000H into A register. 
MOV M, A : Store the contents of A register into memory location 2000H. 
MOV A, B : Copy the contents of B register into accumulator. 
STAX D : Store the contents of A register into memory location 4000H. 
HLT : Terminate program execution. 
Note: In Program 1, direct addressing instructions are used, whereas in Program 2, 
indirect addressing instructions are used. 
Statement: Add the contents of memory locations 4000H and 4001H and place the result in 
memory location 4002H. 
Sample problem 
(4000H) = 14H 
(4001H) = 89H 
Result = 14H + 89H = 9DH 
Source program 
LXI H 4000H : HL points 4000H 
MOV A, M : Get first operand 
INX H : HL points 4001H
ADD M : Add second operand 
INX H : HL points 4002H 
MOV M, A : Store result at 4002H 
HLT : Terminate program execution 
Flowchart 
Note: In Program 1, direct addressing instructions are used, whereas in Program 2, 
indirect addressing instructions are used. 
Statement: Add the 16-bit number in memory locations 4000H and 4001H to the 16-bit 
number in memory locations 4002H and 4003H. The most significant eight bits of the two 
numbers to be added are in memory locations 4001H and 4003H. Store the result in 
memory locations 4004H and 4005H with the most significant byte in memory location 
4005H. 
Program - 5.a: Add two 16-bit numbers - Source Program 1 
Sample problem: 
(4000H) = 15H
(4001H) = 1CH 
(4002H) = B7H 
(4003H) = 5AH 
Result = 1C15 + 5AB7H = 76CCH 
(4004H) = CCH 
(4005H) = 76H 
Source Program 1: 
LHLD 4000H : Get first I6-bit number in HL 
XCHG : Save first I6-bit number in DE 
LHLD 4002H : Get second I6-bit number in HL 
MOV A, E : Get lower byte of the first number 
ADD L : Add lower byte of the second number 
MOV L, A : Store result in L register 
MOV A, D : Get higher byte of the first number 
ADC H : Add higher byte of the second number with CARRY 
MOV H, A : Store result in H register 
SHLD 4004H : Store I6-bit result in memory locations 4004H and 4005H. 
HLT : Terminate program execution 
Flowchart
Program - 5b: Add two 16-bit numbers - Source Program 2 
Source program 2: 
LHLD 4000H : Get first I6-bit number 
XCHG : Save first I6-bit number in DE 
LHLD 4002H : Get second I6-bit number in HL 
DAD D : Add DE and HL 
SHLD 4004H : Store I6-bit result in memory locations 4004H and 4005H. 
HLT : Terminate program execution 
NOTE: In program 1, eight bit addition instructions are used (ADD and ADC) and addition is 
performed in two steps. First lower byte addition using ADD instruction and then higher byte 
addition using ADC instruction.In program 2, 16-bit addition instruction (DAD) is used.
Statement: Subtract the contents of memory location 4001H from the memory location 
2000H and place the result in memory location 4002H. 
Program - 4: Subtract two 8-bit numbers 
Sample problem: 
(4000H) = 51H 
(4001H) = 19H 
Result = 51H - 19H = 38H 
Source program: 
LXI H, 4000H : HL points 4000H 
MOV A, M : Get first operand 
INX H : HL points 4001H 
SUB M : Subtract second operand 
INX H : HL points 4002H 
MOV M, A : Store result at 4002H. 
HLT : Terminate program execution 
Flowchart
Statement: Add the contents of memory locations 40001H and 4001H and place the result 
in the memory locations 4002Hand 4003H. 
Sample problem: 
(4000H) = 7FH 
(400lH) = 89H 
Result = 7FH + 89H = lO8H 
(4002H) = 08H 
(4003H) = 0lH 
Source program: 
LXI H, 4000H :HL Points 4000H 
MOV A, M :Get first operand 
INX H :HL Points 4001H 
ADD M :Add second operand 
INX H :HL Points 4002H
MOV M, A :Store the lower byte of result at 4002H 
MVIA, 00 :Initialize higher byte result with 00H 
ADC A :Add carry in the high byte result 
INX H :HL Points 4003H 
MOV M, A :Store the higher byte of result at 4003H 
HLT :Terminate program execution 
Flowchart 
Statement: Subtract the 16-bit number in memory locations 4002H and 4003H from the 
16-bit number in memory locations 4000H and 4001H. The most significant eight bits of the 
two numbers are in memory locations 4001H and 4003H. Store the result in memory 
locations 4004H and 4005H with the most significant byte in memory location 4005H. 
Sample problem: 
(4000H) = 19H
(400IH) = 6AH 
(4004H) = I5H (4003H) = 5CH 
Result = 6A19H - 5C15H = OE04H 
(4004H) = 04H 
(4005H) = OEH 
Source program: 
LHLD 4000H : Get first 16-bit number in HL 
XCHG : Save first 16-bit number in DE 
LHLD 4002H : Get second 16-bit number in HL 
MOV A, E : Get lower byte of the first number 
SUB L : Subtract lower byte of the second number 
MOV L, A : Store the result in L register 
MOV A, D : Get higher byte of the first number 
SBB H : Subtract higher byte of second number with borrow 
MOV H, A : Store l6-bit result in memory locations 4004H and 4005H. 
SHLD 4004H : Store l6-bit result in memory locations 4004H and 4005H. 
HLT : Terminate program execution. 
Flowchart
Statement: Find the l's complement of the number stored at memory location 4400H and 
store the complemented number at memory location 4300H. 
Sample problem: 
(4400H) = 55H 
Result = (4300B) = AAB 
Source program: 
LDA 4400B : Get the number 
CMA : Complement number 
STA 4300H : Store the result 
HLT : Terminate program execution
Flowchart 
Statement: Find the 2's complement of the number stored at memory location 4200H and 
store the complemented number at memory location 4300H. 
Sample problem: 
(4200H) = 55H 
Result = (4300H) = AAH + 1 = ABH 
Source program: 
LDA 4200H : Get the number 
CMA : Complement the number 
ADI, 01 H : Add one in the number 
STA 4300H : Store the result 
HLT : Terminate program execution 
Flowchart
Statement: Pack the two unpacked BCD numbers stored in memory locations 4200H and 4201H 
and store result in memory location 4300H. Assume the least significant digit is stored at 4200H. 
Sample problem: 
(4200H) = 04 
(4201H) = 09 
Result = (4300H) = 94 
Source program: 
 LDA 4201H : Get the Most significant BCD digit 
 RLC 
 RLC 
 RLC 
 RLC : Adjust the position of the second digit (09 is changed to 90) 
 ANI FOH : Make least significant BCD digit zero 
 MOV C, A : store the partial result 
 LDA 4200H : Get the lower BCD digit 
 ADD C : Add lower BCD digit 
 STA 4300H : Store the result 
 HLT : Terminate program execution 
Flowchart
Statement: Two digit BCD number is stored in memory location 4200H. Unpack the BCD 
number and store the two digits in memory locations 4300H and 4301H such that memory 
location 4300H will have lower BCD digit. 
Sample problem: 
(4200H) = 58 
Result = (4300H) = 08 and 
(4301H) = 05 
Source program: 
LDA 4200H : Get the packed BCD number 
ANI FOH : Mask lower nibble 
RRC 
RRC
RRC 
RRC : Adjust higher BCD digit as a lower digit 
STA 4301H : Store the partial result 
LDA 4200H : .Get the original BCD number 
ANI OFH : Mask higher nibble 
STA 4201H : Store the result 
HLT : Terminate program execution 
Flowchart 
Statement: Read the program given below and state the contents of all registers after the 
execution of each instruction in sequence. 
Main program: 
4000H LXI SP, 27FFH
4003H LXI H, 2000H 
4006H LXI B, 1020H 
4009H CALL SUB 
400CH HLT 
Subroutine program: 
4100H SUB: PUSH B 
4101H PUSH H 
4102H LXI B, 4080H 
4105H LXI H, 4090H 
4108H SHLD 2200H 
4109H DAD B 
410CH POP H 
410DH POP B 
410EH RET 
Note: 
The table given gives the instruction sequence and the contents of all registers and stack 
after execution of each instruction. 
TABLE
Statement: Write a program to shift an eight bit data four bits right. Assume data is in 
register C. 
Sample problem: 
(4200H) = 58 
Result = (4300H) = 08 and 
(4301H) = 05 
Source program 1: 
 MOV A, C 
 RAR 
 RAR 
 RAR 
 RAR 
 MOV C, A 
 HLT 
Flowchart for Source 
program1
Statement: Write a program to shift a 16 bit data, 1 bit right. Assume that data is in BC 
register pair. 
Source program 2 
 MOV A, B 
 RAR 
 MOV B, A 
 MOV A, C 
 RAR 
 MOV C, A 
 HLT 
Flowchart for Source 
program1 
Statement: Program to shift a 16-bit data 1 bit left. Assume data is in the HL register 
Source Program 
Statement: Write a set of instructions to alter the contents of flag register in 8085.
 PUSH PSW: Save flags on stack 
 POP H: Retrieve flags in 'L' 
 MOV A, L :Flags in accumulator 
 CMA:Complement accumulator 
 MOV L, A:Accumulator in 'L' 
 PUSH H:Save on stack 
 POP PSW:Back to flag register 
 HLT:Terminate program execution 
Statement: Calculate the sum of series of numbers. The length of the series is in memory 
location 4200H and the series begins from memory location 4201H. 
a. Consider the sum to be 8 bit number. So, ignore carries. Store the sum at memory 
location 4300H. 
b. Consider the sum to be 16 bit number. Store the sum at memory locations 4300H and 
4301H. 
Sample problem 1: 
4200H = 04H 
4201H = 10H 
4202H = 45H 
4203H = 33H 
4204H = 22H 
Result = 10 +41 + 30 + 12 = H 
4300H = H 
Source program 1: 
LDA 4200H 
MOV C, A : Initialize counter 
SUB A : sum = 0 
LXI H, 420lH : Initialize pointer 
Flowchart for Source program1
BACK: ADD M : SUM = SUM + 
data 
INX H : increment pointer 
DCR C : Decrement counter 
JNZ BACK : if counter 0 repeat 
STA 4300H : Store sum 
HLT : Terminate program execution 
Sample problem 2: 
4200H = 04H 
420lH = 9AH 
4202H = 52H 
4203H = 89H 
4204H = 3EH 
Result = 9AH + 52H + 89H + 3EH = H 
4300H = B3H Lower byte 
4301H = 0lH Higher byte 
Source program 2 
LDA 4200H 
MOV C, A : Initialize counter 
LXI H, 4201H : Initialize pointer 
SUB A :Sum low = 0
MOV B, A : Sum high = 0 
BACK: ADD M : Sum = sum + data 
JNC SKIP 
INR B : Add carry to MSB of SUM 
SKIP: INX H : Increment pointer 
DCR C : Decrement counter 
JNZ BACK : Check if counter 0 repeat 
STA 4300H : Store lower byte 
MOV A, B 
STA 4301H : Store higher byte 
HLT :Terminate program execution 
Statement: Multiply two 8-bit numbers stored in memory locations 2200H and 2201H by 
repetitive addition and store the result in memory locations 2300H and 2301H. 
Sample problem 1: 
(2200H) = 03H 
(2201H) = B2H 
Result = B2H + B2H + B2H = 216H 
= 216H 
(2300H) = 16H 
(2301H) = 02H 
Source program : 
 LDA 2200H 
 MOV E, A 
 MVI D, 00 : Get the first number in DE 
register pair 
Flowchart for program
 LDA 2201H 
 MOV C, A : Initialize counter 
 LX I H, 0000 H : Result = 0 
 BACK: DAD D : Result = result + first 
number 
 DCR C : Decrement count 
 JNZ BACK : If count 0 repeat 
 SHLD 2300H : Store result 
 HLT : Terminate program execution 
Statement: Divide 16 bit number stored in memory locations 2200H and 2201H by the 8 bit 
number stored at memory location 2202H. Store the quotient in memory locations 2300H and 
2301H and remainder in memory locations 2302H and 2303H. 
Sample problem 1: 
(2200H) = 60H 
(2201H) = A0H 
(2202H) = l2H 
Result = A060H/12H = 8E8H Quotient and 10H remainder 
(2300H) = E8H 
(2301H) = 08H 
(2302H= 10H 
(2303H) 00H 
Source program : Flowchart for program
 LHLD 2200H : Get the dividend 
 LDA 2202H : Get the divisor 
 MOV C, A 
 LXI D, 0000H : Quotient = 0 
 BACK: MOV A, L 
 SUB C : Subtract divisor 
 MOV L, A : Save partial result 
 JNC SKIP : if CY 1 jump 
 DCR H : Subtract borrow of previous 
subtraction 
 SKIP: INX D : Increment quotient 
 MOV A, H 
 CPI, 00 : Check if dividend < divisor 
 JNZ BACK : if no repeat 
 MOV A, L 
 CMP C 
 JNC BACK 
 SHLD 2302H : Store the remainder 
 XCHG 
 SHLD 2300H : Store the quotient 
 HLT : Terminate program execution 
Statement: Find the number of negative elements (most significant bit 1) in a block of data. The 
length of the block is in memory location 2200H and the block itself begins in memory location 
2201H. Store the number of negative elements in memory location 2300H 
Sample problem 1: 
(2200H) = 04H 
(2201H) = 56H 
(2202H) = A9H 
(2203H) = 73H 
(2204H) = 82H 
Result = 02 since 2202H and 2204H contain numbers with a MSB of 1. 
Source program : Flowchart for program
 LDA 2200H 
 MOV C, A : Initialize count 
 MVI B, 00 : Negative number = 0 
 LXI H, 2201H : Initialize pointer 
 BACK: MOV A, M : Get the number 
 ANI 80H : Check for MSB 
 JZ SKIP : If MSB = 1 
 INR B : Increment negative number 
count 
 SKIP: INX H : Increment pointer 
 DCR C : Decrement count 
 JNZ BACK : If count 0 repeat 
 MOV A, B 
 STA 2300H : Store the result 
 HLT : Terminate program execution 
Statement: Find the largest number in a block of data. The length of the block is in 
memory location 2200H and the block itself starts from memory location 2201H.Store the 
maximum number in memory location 2300H. Assume that the numbers in the block are 
all 8 bit unsigned binary numbers. 
Sample problem 1: 
(2200H) = 04 
(2201H) = 34H 
(2202H) = A9H 
(2203H) = 78H 
(2204H) =56H
Result = (2202H) = A9H 
Source program : 
 LDA 2200H 
 MOV C, A : Initialize counter 
 XRA A : Maximum = Minimum possible 
value = 0 
 LXI H, 2201H : Initialize pointer 
 BACK: CMP M : Is number> maximum 
 JNC SKIP : Yes, replace maximum 
 MOV A, M 
 SKIP: INX H 
 DCR C 
 JNZ BACK 
 STA 2300H : Store maximum number 
 HLT : Terminate program execution 
Flowchart for program 
Statement: Write a program to count number of l's in the contents of D register and store the 
count in the B register. 
Sample problem 1: 
(2200H) = 04
(2201H) = 34H 
(2202H) = A9H 
(2203H) = 78H 
(2204H) =56H 
Result = (2202H) = A9H 
Source program : 
 MVI B, 00H 
 MVI C, 08H 
 MOV A, D 
 BACK: RAR 
 JNC SKIP 
 INR B 
 SKIP: DCR C 
 JNZ BACK 
 HLT 
Flowchart for program 
Statement: Write a program to sort given 10 numbers from memory location 2200H in the 
ascending order. 
Source program : 
 MVI B, 09 : Initialize counter 
 START : LXI H, 2200H: Initialize memory pointer 
 MVI C, 09H : Initialize counter 2 
 BACK: MOV A, M : Get the number
 INX H : Increment memory pointer 
 CMP M : Compare number with next number 
 JC SKIP : If less, don't interchange 
 JZ SKIP : If equal, don't interchange 
 MOV D, M 
 MOV M, A 
 DCX H 
 MOV M, D 
 INX H : Interchange two numbers 
 SKIP:DCR C : Decrement counter 2 
 JNZ BACK : If not zero, repeat 
 DCR B : Decrement counter 1 
 JNZ START 
 HLT : Terminate program execution 
Flowchart for program 
Statement: Calculate the sum of series of even numbers from the list of numbers. The 
length of the list is in memory location 2200H and the series itself begins from memory 
location 2201H. Assume the sum to be 8 bit number so you can ignore carries and store the 
sum at memory location 2210H. 
Sample problem 1: 
2200H= 4H 
2201H= 20H
2202H= l5H 
2203H= l3H 
2204H= 22H 
Result 22l0H= 20 + 22 = 42H 
Source program : 
 LDA 2200H 
 MOV C, A : Initialize counter 
 MVI B, 00H : sum = 0 
 LXI H, 2201H : Initialize pointer 
 BACK: MOV A, M : Get the number 
 ANI 0lH : Mask Bit l to Bit7 
 JNZ SKIP : Don't add if number is 
ODD 
 MOV A, B : Get the sum 
 ADD M : SUM = SUM + data 
 MOV B, A : Store result in B register 
 SKIP: INX H : increment pointer 
 DCR C : Decrement counter 
 JNZ BACK : if counter 0 repeat 
 STA 2210H : store sum 
 HLT : Terminate program execution 
Flowchart for program 
Statement: Calculate the sum of series of odd numbers from the list of numbers. The 
length of the list is in memory location 2200H and the series itself begins from memory 
location 2201H. Assume the sum to be 16-bit. Store the sum at memory locations 2300H 
and 2301H. 
Sample problem 1: 
2200H = 4H
2201H= 9AH 
2202H= 52H 
2203H= 89H 
2204H= 3FH 
Result = 89H + 3FH = C8H 
2300H= H Lower byte 
2301H = H Higher byte 
Source program : 
 LDA 2200H 
 MOV C, A : Initialize counter 
 LXI H, 2201H : Initialize pointer 
 MVI E, 00 : Sum low = 0 
 MOV D, E : Sum high = 0 
 BACK: MOV A, M : Get the number 
 ANI 0lH : Mask Bit 1 to Bit7 
 JZ SKIP : Don't add if number is 
even 
 MOV A, E : Get the lower byte of sum 
 ADD M : Sum = sum + data 
 MOV E, A : Store result in E register 
 JNC SKIP 
 INR D : Add carry to MSB of SUM 
 SKIP: INX H : Increment pointer 
Flowchart for program 
Statement: Find the square of the given numbers from memory location 6100H and store 
the result from memory location 7000H.
Sample problem 1: 
2200H = 4H 
2201H= 9AH 
2202H= 52H 
2203H= 89H 
2204H= 3FH 
Result = 89H + 3FH = C8H 
2300H= H Lower byte 
2301H = H Higher byte 
Source program : 
 LXI H, 6200H : Initialize lookup table pointer 
 LXI D, 6100H : Initialize source memory pointer 
 LXI B, 7000H : Initialize destination memory pointer 
 BACK: LDAX D : Get the number 
 MOV L, A : A point to the square 
 MOV A, M : Get the square 
 STAX B : Store the result at destination memory location 
 INX D : Increment source memory pointer 
 INX B : Increment destination memory pointer 
 MOV A, C 
 CPI 05H : Check for last number 
 JNZ BACK : If not repeat 
 HLT : Terminate program execution 
Statement: Search the given byte in the list of 50 numbers stored in the consecutive 
memory locations and store the address of memory location in the memory locations 2200H 
and 2201H. Assume byte is in the C register and starting address of the list is 2000H. If 
byte is not found store 00 at 2200H and 2201H. 
Source program : 
 LX I H, 2000H : Initialize memory pointer 52H 
 MVI B, 52H : Initialize counter 
 BACK: MOV A, M : Get the number
 CMP C : Compare with the given byte 
 JZ LAST : Go last if match occurs 
 INX H : Increment memory pointer 
 DCR B : Decrement counter 
 JNZ B : I f not zero, repeat 
 LXI H, 0000H 
 SHLD 2200H 
 JMP END : Store 00 at 2200H and 2201H 
 LAST: SHLD 2200H : Store memory address 
 END: HLT : Stop 
Flowchart for program 
Statement: Two decimal numbers six digits each, are stored in BCD package form. Each 
number occupies a sequence of byte in the memory. The starting address of first number is 
6000H Write an assembly language program that adds these two numbers and stores the 
sum in the same format starting from memory location 6200H. 
Source program : 
 LXI H, 6000H : Initialize pointer l to first number 
 LXI D, 6l00H : Initialize pointer2 to second number 
 LXI B, 6200H : Initialize pointer3 to result 
 STC 
 CMC : Carry = 0 
 BACK: LDAX D : Get the digit 
 ADD M : Add two digits 
 DAA : Adjust for decimal
 STAX.B : Store the result 
 INX H : Increment pointer 1 
 INX D : Increment pointer2 
 INX B : Increment result pointer 
 MOV A, L 
 CPI 06H : Check for last digit 
 JNZ BACK : If not last digit repeat 
 HLT : Terminate program execution 
Flowchart for program 
Statement: Two decimal numbers six digits each, are stored in BCD package form. Each 
number occupies a sequence of byte in the memory. The starting address of first number is 
6000H Write an assembly language program that adds these two numbers and stores the 
sum in the same format starting from memory location 6200H. 
Source program : 
 LXI H, 6000H : Initialize pointer l to first number 
 LXI D, 6l00H : Initialize pointer2 to second number 
 LXI B, 6200H : Initialize pointer3 to result 
 STC 
 CMC : Carry = 0 
 BACK: LDAX D : Get the digit 
 ADD M : Add two digits
 DAA : Adjust for decimal 
 STAX.B : Store the result 
 INX H : Increment pointer 1 
 INX D : Increment pointer2 
 INX B : Increment result pointer 
 MOV A, L 
 CPI 06H : Check for last digit 
 JNZ BACK : If not last digit repeat 
 HLT : Terminate program execution 
Flowchart for program 
Statement: Write an assembly language program to separate even numbers from the given 
list of 50 numbers and store them in the another list starting from 2300H. Assume starting 
address of 50 number list is 2200H. 
Source program : 
 LXI H, 2200H : Initialize memory pointer l 
 LXI D, 2300H : Initialize memory pointer2 
 MVI C, 32H : Initialize counter 
 BACK:MOV A, M : Get the number 
 ANI 0lH : Check for even number 
 JNZ SKIP : If ODD, don't store 
 MOV A, M : Get the number 
 STAX D : Store the number in result list 
 INX D : Increment pointer 2 
 SKIP: INX H : Increment pointer l 
 DCR C : Decrement counter
 JNZ BACK : If not zero, repeat 
 HLT : Stop 
Flowchart for program 
Statement: Write assembly language program with proper comments for the following: 
A block of data consisting of 256 bytes is stored in memory starting at 3000H. This block is 
to be shifted (relocated) in memory from 3050H onwards. Do not shift the block or part of 
the block anywhere else in the memory. 
Two blocks (3000 - 30FF and 3050 - 314F) are overlapping. Therefore it is necessary to 
transfer last byte first and first byte last. 
Source Program: 
 MVI C, FFH : Initialize counter 
 LX I H, 30FFH : Initialize source memory pointer 3l4FH 
 LXI D, 314FH : Initialize destination memory pointer 
 BACK: MOV A, M : Get byte from source memory block 
 STAX D : Store byte in the destination memory block 
 DCX H : Decrement source memory pointer 
 DCX : Decrement destination memory pointer 
 DCR C : Decrement counter 
 JNZ BACK : If counter 0 repeat 
 HLT : Stop execution 
Statement: Add even parity to a string of 7-bit ASCII characters. The length of the string 
is in memory location 2040H and the string itself begins in memory location 2041H. Place 
even parity in the most significant bit of each character.
Source program : 
 LXI H, 2040H 
 MOV C ,M : Counter for character 
 REPEAT:INX H : Memory pointer to character 
 MOV A,M : Character in accumulator 
 ORA A : ORing with itself to check parity. 
 JPO PAREVEN : If odd parity place 
 ORI 80H even parity in D7 (80). 
 PAREVEN:MOV M , A : Store converted even parity character. 
 DCR C : Decrement counter. 
 JNZ REPEAT : If not zero go for next character. 
 HLT : Terminate program execution 
Flowchart for program 
Statement: A list of 50 numbers is stored in memory, starting at 6000H. Find number of 
negative, zero and positive numbers from this list and store these results in memory 
locations 7000H, 7001H, and 7002H respectively. 
Source program : 
 LXI H, 6000H : Initialize memory pointer 
 MVI C, 00H : Initialize number counter 
 MVI B, 00H : Initialize negative number counter 
 MVI E, 00H : Initialize zero number counter 
 BEGIN:MOV A, M : Get the number 
 CPI 00H : If number = 0 
 JZ ZERONUM : Goto zeronum 
 ANI 80H : If MSB of number = 1i.e. if 
 JNZ NEGNUM number is negative goto NEGNUM 
 INR D : otherwise increment positive number counter
 JMP LAST 
 ZERONUM:INR E : Increment zero number counter 
 JMP LAST 
 NEGNUM:INR B : Increment negative number counter 
 LAST:INX H : Increment memory pointer 
 INR C : Increment number counter 
 MOV A, C 
 CPI 32H : If number counter = 5010 then 
 JNZ BEGIN : Store otherwise check next number 
 LXI H, 7000 : Initialize memory pointer. 
 MOV M, B : Store negative number. 
 INX H 
 MOV M, E : Store zero number. 
 INX H 
 MOV M, D : Store positive number. 
 HLT : Terminate execution 
Flowchart for program 
Statement: Write an 8085 assembly language program to insert a string of four characters 
from the tenth location in the given array of 50 characters. 
Solution: 
Step 1: Move bytes from location 10 till the end of array by four bytes downwards.
Step 2: Insert four bytes at locations 10, 11, 12 and 13. 
Source program : 
 LXI H, 2l31H : Initialize pointer at the last location of array. 
 LXI D, 2l35H : Initialize another pointer to point the last location of array after 
insertion. 
 AGAIN: MOV A, M : Get the character 
 STAX D : Store at the new location 
 DCX D : Decrement destination pointer 
 DCX H : Decrement source pointer 
 MOV A, L : [check whether desired 
 CPI 05H bytes are shifted or not] 
 JNZ AGAIN : if not repeat the process 
 INX H : adjust the memory pointer 
 LXI D, 2200H : Initialize the memory pointer to point the string to be inserted 
 REPE: LDAX D : Get the character 
 MOV M, A : Store it in the array 
 INX D : Increment source pointer 
 INX H : Increment destination pointer 
 MOV A, E : [Check whether the 4 bytes 
 CPI 04 are inserted] 
 JNZ REPE : if not repeat the process 
 HLT : stop 
Statement: Write an 8085 assembly language program to delete a string of 4 characters 
from the tenth location in the given array of 50 characters. 
Solution: 
Shift bytes from location 14 till the end of array upwards by 4 characters i.e. from location 10 
onwards. 
Source program : 
 LXI H, 2l0DH :Initialize source memory pointer at the 14thlocation of the array. 
 LXI D, 2l09H : Initialize destination memory pointer at the 10th location of the array. 
 MOV A, M : Get the character 
 STAX D : Store character at new location 
 INX D : Increment destination pointer 
 INX H : Increment source pointer 
 MOV A, L : [check whether desired 
 CPI 32H bytes are shifted or not] 
 JNZ REPE : if not repeat the process
 HLT : stop 
Statement: Multiply the 8-bit unsigned number in memory location 2200H by the 8-bit 
unsigned number in memory location 2201H. Store the 8 least significant bits of the result 
in memory location 2300H and the 8 most significant bits in memory location 2301H. 
Sample problem: 
(2200) = 1100 (0CH) 
(2201) = 0101 (05H) 
Multiplicand = 1100 (1210) 
Multiplier = 0101 (510) 
Result = 12 x 5 = (6010) 
Source program : 
 LXI H, 2200 : Initialize the memory pointer 
 MOV E, M : Get multiplicand 
 MVI D, 00H : Extend to 16-bits 
 INX H : Increment memory pointer 
 MOV A, M : Get multiplier 
 LXI H, 0000 : Product = 0 
 MVI B, 08H : Initialize counter with count 8 
 MULT: DAD H : Product = product x 2 
 RAL 
 JNC SKIP : Is carry from multiplier 1 ? 
 DAD D : Yes, Product =Product + Multiplicand 
 SKIP: DCR B : Is counter = zero 
 JNZ MULT : no, repeat 
 SHLD 2300H : Store the result 
 HLT : End of program 
Flowchart for program 
Statement: Divide the 16-bit unsigned number in memory locations 2200H and 2201H 
(most significant bits in 2201H) by the B-bit unsigned number in memory location 2300H 
store the quotient in memory location 2400H and remainder in 2401H. 
Assumption: The most significant bits of both the divisor and dividend are zero.
Source program : 
 MVI E, 00 : Quotient = 0 
 LHLD 2200H : Get dividend 
 LDA 2300 : Get divisor 
 MOV B, A : Store divisor 
 MVI C, 08 : Count = 8 
 NEXT: DAD H : Dividend = Dividend x 2 
 MOV A, E 
 RLC 
 MOV E, A : Quotient = Quotient x 2 
 MOV A, H 
 SUB B : Is most significant byte of Dividend > divisor 
 JC SKIP : No, go to Next step 
 MOV H, A : Yes, subtract divisor 
 INR E : and Quotient = Quotient + 1 
 SKIP:DCR C : Count = Count - 1 
 JNZ NEXT : Is count =0 repeat 
 MOV A, E 
 STA 2401H : Store Quotient 
 Mov A, H 
 STA 2410H : Store remainder 
 HLT : End of program. 
Flowchart for program 
Statement: Assume the DAA instruction is not present. Write a sub routine which will 
perform the same task as DAA. 
Sample Problem: 
Execution of DAA instruction: 
1. If the value of the low order four bits (03-00) in the accumulator is greater than 9 or if 
auxiliary carry flag is set, the instruction adds 6 '(06) to the low-order four bits. 
2. If the value of the high-order four bits (07-04) in the accumulator is greater than 9 or if 
carry flag is set, the instruction adds 6(06) to the high-order four bits. 
Source program : 
 LXI SP, 27FFH : Initialize stack pointer 
 MOV E, A : Store the contents of accumulator 
 ANI 0FH : Mask upper nibble 
 CPI 0A H : Check if number is greater than 9 
Flowchart for 
program
 JC SKIP : if no go to skip 
 MOV A, E : Get the number 
 ADI 06H : Add 6 in the number 
 JMP SECOND : Go for second check 
 SKIP: PUSH PSW : Store accumulator and flag contents in 
stack 
 POP B : Get the contents of accumulator in B register and flag 
register contents in C register 
 MOV A, C : Get flag register contents in accumulator 
 ANI 10H : Check for bit 4 
 JZ SECOND : if zero, go for second check 
 MOV A, E : Get the number 
 ADI 06 : Add 6 in the number 
 SECOND: MOV E, A : Store the contents of accumulator 
 ANI FOH : Mask lower nibble 
 RRC 
 RRC 
 RRC 
 RRC : Rotate number 4 bit right 
 CPI 0AH : Check if number is greater than 9 
 JC SKIPl : if no go to skip 1 
 MOV A, E : Get the number 
 ADI 60 H : Add 60 H in the number 
 JMP LAST : Go to last 
 SKIP1: JNC LAST : if carry flag = 0 go to last 
 MOV A, E : Get the number 
 ADI 60 H : Add 60 H in the number 
 LAST: HLT 
Statement: To test RAM by writing '1' and reading it back and later writing '0' (zero) and 
reading it back. RAM addresses to be checked are 40FFH to 40FFH. In case of any error, it 
is indicated by writing 01H at port 10H. 
Source program : 
 LXI H, 4000H : Initialize memory pointer 
 BACK: MVI M, FFH : Writing '1' into RAM 
 MOV A, M : Reading data from RAM 
 CPI FFH : Check for ERROR 
 JNZ ERROR : If yes go to ERROR 
 INX H : Increment memory pointer 
 MOV A, H 
 CPI SOH : Check for last check 
 JNZ BACK : If not last, repeat
 LXI H, 4000H : Initialize memory pointer 
 BACKl: MVI M, OOH : Writing '0' into RAM 
 MOV A, M : Reading data from RAM 
 CPI OOH : Check for ERROR 
 INX H : Increment memory pointer 
 MOV A, H 
 CPI SOH : Check for last check 
 JNZ BACKl : If not last, repeat 
 HLT : Stop Execution 
Statement: Write an assembly language program to generate fibonacci number. 
Source program : 
 MVI D, COUNT : Initialize counter 
 MVI B, 00 : Initialize variable to store previous number 
 MVI C, 01 : Initialize variable to store current number 
 MOV A, B :[Add two numbers] 
 BACK: ADD C :[Add two numbers] 
 MOV B, C : Current number is now previous number 
 MOV C, A : Save result as a new current number 
 DCR D : Decrement count 
 JNZ BACK : if count 0 go to BACK 
 HLT : Stop. 
Statement: Write a program to generate a delay of 0.4 sec if the crystal frequency is 5 
MHz. 
Calculation: In 8085, the operating frequency is half of the crystal frequency, 
ie.Operating frequency = 5/2 = 2.5 MHz 
Time for one T -state = 
Number of T-states required = 1 x 106 
Source program : 
 LXI B, count : 16 - bit count 
 BACK: DCX B : Decrement count 
 MOV A, C 
 ORA B : Logically OR Band C
 JNZ BACK : If result is not zero repeat 
Statement: Arrange an array of 8 bit unsigned no in descending order 
 START:MVI B, 00 ; Flag = 0 
 LXI H, 4150 ; Count = length of array 
 MOV C, M 
 DCR C ; No. of pair = count -1 
 INX H ; Point to start of array 
 LOOP:MOV A, M ; Get kth element 
 INX H 
 CMP M ; Compare to (K+1) th element 
 JNC LOOP 1 ; No interchange if kth >= (k+1) th 
 MOV D, M ; Interchange if out of order 
 MOV M, A ; 
 DCR H 
 MOV M, D 
 INX H 
 MVI B, 01H ; Flag=1 
 LOOP 1:DCR C ; count down 
 JNZ LOOP ; 
 DCR B ; is flag = 1? 
 JZ START ; do another sort, if yes 
 HLT ; If flag = 0, step execution 
Statement: Transfer ten bytes of data from one memory to another memory block. Source 
memory block starts from memory location 2200H where as destination memory block 
starts from memory location 2300H. 
LXI H, 4150 : Initialize memory pointer 
MVI B, 08 : count for 8-bit 
MVI A, 54 
LOOP : RRC 
JC LOOP1 
MVI M, 00 : store zero it no carry 
JMP COMMON 
LOOP2: MVI M, 01 : store one if there is a carry 
COMMON: INX H 
DCR B : check for carry 
JNZ LOOP 
HLT : Terminate the program
Statement: Program to calculate the factorial of a number between 0 to 8 
Source program : 
 LXI SP, 27FFH ; Initialize stack pointer 
 LDA 2200H ; Get the number 
 CPI 02H ; Check if number is greater than 1 
 JC LAST 
 MVI D, 00H ; Load number as a result 
 MOV E, A 
 DCR A 
 MOV C,A ; Load counter one less than number 
 CALL FACTO ; Call subroutine FACTO 
 XCHG ; Get the result in HL 
 SHLD 2201H ; Store result in the memory 
 JMP END 
 LAST: LXI H, 000lH ; Store result = 01 
 END: SHLD 2201H 
 HLT 
Subroutine Program: 
 FACTO:LXI H, 0000H 
 MOV B, C ; Load counter 
 BACK: DAD D 
 DCR B 
 JNZ BACK ; Multiply by successive addition 
 XCHG ; Store result in DE 
 DCR C ; Decrement counter 
 CNZ FACTO ; Call subroutine FACTO 
 RET ; Return to main program 
Flowchart for program
Statement: Write a program to find the Square Root of an 8 bit binary number. The 
binary number is stored in memory location 4200H and store the square root in 4201H. 
Source program : 
 LDA 4200H : Get the given data(Y) in A register 
 MOV B,A : Save the data in B register 
 MVI C,02H : Call the divisor(02H) in C register 
 CALL DIV : Call division subroutine to get initial value(X) in D-reg 
 REP: MOV E,D : Save the initial value in E-reg 
 MOV A,B : Get the dividend(Y) in A-reg 
 MOV C,D : Get the divisor(X) in C-reg 
 CALL DIV : Call division subroutine to get initial value(Y/X) in D-reg 
 MOV A, D : Move Y/X in A-reg 
 ADD E : Get the((Y/X) + X) in A-reg 
 MVI C, 02H : Get the divisor(02H) in C-reg 
 CALL DIV : Call division subroutine to get ((Y/X) + X)/2 in D-reg. 
This is XNEW 
 MOV A, E : Get Xin A-reg 
 CMP D : Compare X and XNEW 
 JNZ REP : If XNEW is not equal to X, then repeat 
 STA 4201H : Save the square root in memory 
 HLT : Terminate program execution 
Subroutine Program: 
 DIV: MVI D, 00H : Clear D-reg for Quotient 
 NEXT:SUB C : Subtract the divisor from dividend 
Flowchart for Program 
Flowchart for 
subroutine
 INR D : Increment the quotient 
 CMP C : Repeat subtraction until the 
 JNC NEXT : divisor is less than dividend 
 RET : Return to main program 
Note: The square root can be taken by an iterative technique. First, an initial value is 
assumed. Here, the initial value of square root is taken as half the value of given number. 
The new value of square root is computed by using an expression XNEW = (X + Y/X)/2 
where, X is the initial value of square root and Y is the given number. Then, XNEW is 
compared with initial value. If they are not equal then the above process is repeated until X 
is equal to XNEW after taking XNEW as initial value. (i.e., X ←XNEW) 
Statement: Write a simple program to Split a HEX data into two nibbles and store it in 
memory 
Source program : 
 LXI H, 4200H : Set pointer data for array 
 MOV B,M : Get the data in B-reg 
 MOV A,B : Copy the data to A-reg 
 ANI OFH : Mask the upper nibble 
 INX H : Increment address as 4201 
 MOV M,A : Store the lower nibble in memory 
 MOV A,B : Get the data in A-reg 
 ANI FOH : Bring the upper nibble to lower nibble position 
 RRC 
 RRC 
 RRC 
 RRC 
 INX H 
 MOV M,A : Store the upper nibble in memory 
 HLT : Terminate program execution
Statement: Add two 4 digit BCD numbers in HL and DE register pairs and store result in 
memory locations, 2300H and 2301H. Ignore carry after 16 bit. 
Sample Problem: 
(HL) =3629 
(DE) =4738 
Step 1 : 29 + 38 = 61 and auxiliary carry flag = 1 
:.add 06 
61 + 06 = 67 
Step 2 : 36 + 47 + 0 (carry of LSB) = 7D 
Lower nibble of addition is greater than 9, so add 6. 
7D + 06 = 83 
Result = 8367 
Source program : 
 MOV A, L : Get lower 2 digits of no. 1 
 ADD E : Add two lower digits 
 DAA : Adjust result to valid BCD 
 STA 2300H : Store partial result 
 MOV A, H : Get most significant 2 digits of number 
 ADC D : Add two most significant digits 
 DAA : Adjust result to valid BCD 
 STA 2301H : Store partial result 
 HLT : Terminate program execution. 
Flowchart for Program
Statement: Subtract the BCD number stored in E register from the number stored in the 
D register. 
Source Program: 
MVI A,99H 
SUB E : Find the 99's complement of subtrahend 
INR A : Find 100's complement of subtrahend 
ADD D : Add minuend to 100's complement of subtrahend 
DAA : Adjust for BCD 
HLT : Terminate program execution
Note: When two BCD numbers are subtracted, we can use DAA instruction for ajusting 
the result to BCD. Therefore, the subtraction of BCD number is carried out 10's 
complement or 100's complement. 
The 10's complement of a decimal number is equal to the 99's complement plus 1. The 99's 
complement of a number can be found by subtracting the number from 99. 
The steps for finding 100's complement BCD subtraction are : 
 Find the 100's complement of subtrahend 
 Add two numbers using BCD adition 
Statement: Write an assembly language program to multiply 2 BCD numbers 
Source Program: 
 MVI C, Multiplier : Load BCD multiplier 
 MVI B, 00 : Initialize counter 
 LXI H, 0000H : Result = 0000 
 MVI E, multiplicand : Load multiplicand 
 MVI D, 00H : Extend to 16-bits 
 BACK: DAD D : Result Result + Multiplicand 
 MOV A, L : Get the lower byte of the result 
 ADI, 00H 
 DAA : Adjust the lower byte of result to BCD. 
 MOV L, A : Store the lower byte of result 
 MOV A, H : Get the higher byte of the result 
 ACI, 00H 
 DAA : Adjust the higher byte of the result to BCD 
 MOV H, A : Store the higher byte of result. 
 MOV A, B : [Increment 
 ADI 01H : counter 
 DAA : adjust it to BCD and 
 MOV B,A : store it] 
 CMP C : Compare if count = multiplier 
 JNZ BACK : if not equal repeat 
 HLT : Stop 
Statement:
Write a program for displaying binary up counter. Counter should count numbers from 00 
to FFH and it should increment after every 0.5 sec.Assume operating frequency of 8085 
equal to 2MHz. Display routine is available. 
Source program: 
 LXI SP, 27FFH : Initialize stack pointer 
 MVI C, OOH : Initialize counter 
 BACK: CALL Display : Call display subroutine 
 CALL Delay : Call delay subroutine 
 INR C : Increment counter 
 MOV A, C 
 CPI OOH : Check counter is > FFH 
 JNZ BACK : If not, repeat 
 HLT : Stop 
Delay Routine: 
 Delay: LXI B, count : Initialize count 
 BACK: DCX D : Decrement count 
 MOV A, E 
 ORA D : Logically OR D and E 
 JNZ BACK : If result is not 0 repeat 
 RET : Return to main program 
Flowchart for Program 
Flowchart for subroutine
Statement: Write a program for displaying BCD up counter. Counter should count 
numbers from 00 to 99H and it should increment after every 1 sec. Assume operating 
frequency of 8085 equal to 3MHz. Display routine is available. 
Source program: 
 LXI SP, 27FFH : Initialize stack pointer 
 MVI C, OOH : Initialize counter 
 BACK: CALL Display : Call display subroutine 
 CALL Delay : Call delay subroutine 
 MOV A, C 
 ADI A, 0 1 : Increment counter 
 DAA : Adjust it for decimal 
 MOV C,A : Store count 
 CPI ,00 : Check count is > 99 
 JNZ BACK : If not, repeat 
 HLT : Stop 
Delay Routine: 
 Delay:MVI B, Multiplier-count : Initialize multiplier count 
 BACK 1 :LXI D, Initialize Count 
 BACK:DCX D : Decrement count 
 MOV A, E 
 ORA D : Logically OR D and E 
 JNZ BACK : If result is not a, repeat 
 DCR B : Decrement multiplier count 
 JNZ BACK 1 : If not zero, repeat 
 RET : Return to main program.
Flowchart for Program 
Flowchart for delay routine
Statement:Write a program for displaying BCD down counter. Counter should count 
numbers from 99 to 00 and it should increment after every 1 sec. Assume operating 
frequency of 8085 equal to 3MHz. Display routine is available. 
Source program 1: 
 LXI SP, 27FFH : Initialize stack pointer 
 MVI C, 99H : Initialize counter = 99 
 BACK:CALL Display : Call display subroutine 
 CALL Delay : Call delay subroutine 
 ADI 99H : See Addition below 
 DAA : Adjust for decimal 
 CPI 99H : Compare with last count 
 JNZ BACK :If no, repeat 
 HLT 
Source Program 2: 
 LXI SP, 27FFH : Initialize stack pointer 
 MVI C, 99H : Initialize counter = 99 
 BACK: CALL Display : Call display subroutine 
 CALL Delay : Call delay subroutine 
 MOV A, C : Get count
 ANI 0FH : Check for lower nibble 
 JNZ SKIP : If it is not 0FH go to skip 
 MOV A,C : Else get the count 
 SBI ,06 : Subtract 06 
 MOV C,A : Store the count 
 DCR C : Decrement count 
 CPI 99H : Check it for last count 
 JNZ BACK : If not, repeat 
 HLT : Stop 
Flowchart for Program 
Statement: Write assembly language program to with proper comments for the following: 
To display decimal decrementing counter (99 to 00) at port 05 H with delay of half seconds 
between .each count. Write as well the delay routine giving delay of half seconds. Operating 
frequency of microprocessor is 3.072 MHz. Neglect delay for the main program. 
Source Program:
 MVI C, 99H : Initialize counter 
 BACK: MOV A, C 
 ANI OF : Mask higher nibble 
 CPI OF 
 JNZ SKIP 
 MOV A, C 
 SUI 06 : Subtract 6 to adjust decimal count 
 MOV D, A 
 SKIP: MOV A, C 
 OUT 05 : send count on output port 
 CALL Delay : Wait for 0.5 seconds 
 DCR C : decrement count 
 MOV A, C 
 CPI FF 
 JNZ BACK : If not zero, repeat 
 HLT : Stop execution 
Delay subroutine: 
 Delay: LXI D, Count 
 Back: DCX D : 6 T-states 
 MOV A, D : 4 T-states 
 ORA E : 4 T-states 
 JNZ Back : 10 T-states 
 RET 
Statement:The delay routine given below is in infinite loop, identify the error and correct the 
program. 
Delay routine with error:
 DELAY : LXI H, N 
 L1 : DCX H 
 JNZ L1 
Sol.: 1) The fault in the above program is at instruction JNZ L1. This condition always 
evaluates to be true hence loops keep on executing and hence infinite loop. 
2) Reason for infinite looping: - The instruction DCX H decrease the HL pair count one by 
one but it does not affect the zero flag. So when count reaches to OOOOH in HL pair zero flag 
is not affected and JNZ L1 evaluates to be true and loop continues. Now HL again decrements 
below OOOOH and HL becomes FFFFH and thus execution continues. 
3) The modification in the program is as follows: 
 DELAY : LXI H, N :Load 16 bit count 
 L1 : DCX H : Decrement count 
 MOV A, L 
 ORA H : logically OR Hand L 
 JNZ L1 : If result is not 0 repeat 
Statement: Convert a 2-digit BCD number stored at memory address 2200H into its 
binary equivalent number and store the result in a memory location 2300H. 
Sample problem 1: 
(2200H) = 67H 
(2300H) = 6 x OAH + 7 = 3CH + 7 = 43H 
Source program : 
 LDA 2200H : Get the BCD number 
 MOV B, A : Save it 
 ANI OFH : Mask most significant four bits 
 MOV C, A : Save unpacked BCDI in C register 
 MOV A, B : Get BCD again 
 ANI FOH : Mask least significant four bits 
 RRC : Convert most significant four bits into unpacked 
BCD2 
 RRC 
 RRC 
 RRC 
 MOV B, A : Save unpacked BCD2 in B register 
 XRA A : Clear accumulator (sum = 0) 
Flowchart for program
 MVI D, 0AH : Set D as a multiplier of 10 
 Sum: ADD D : Add 10 until (B) = 0 
 DCR B : Decrement BCD2 by one 
 JNZ SUM : Is multiplication complete? i if not, go back 
and add again 
 ADD C : Add BCD1 
 STA 2300H : Store the result 
 HLT : Terminate program execution 
Statement: Convert a 2-digit BCD number stored at memory address 2200H into its 
binary equivalent number and store the result in a memory location 2300H. 
Sample problem 1: 
(2200H) = 67H 
(2300H) = 6 x OAH + 7 = 3CH + 7 = 43H 
Source program : 
 LDA 2200H : Get the BCD number 
 MOV B, A : Save it 
 ANI OFH : Mask most significant four bits 
 MOV C, A : Save unpacked BCDI in C register 
 MOV A, B : Get BCD again 
 ANI FOH : Mask least significant four bits 
 RRC : Convert most significant four bits into unpacked 
BCD2 
Flowchart for program
 RRC 
 RRC 
 RRC 
 MOV B, A : Save unpacked BCD2 in B register 
 XRA A : Clear accumulator (sum = 0) 
 MVI D, 0AH : Set D as a multiplier of 10 
 Sum: ADD D : Add 10 until (B) = 0 
 DCR B : Decrement BCD2 by one 
 JNZ SUM : Is multiplication complete? i if not, go back 
and add again 
 ADD C : Add BCD1 
 STA 2300H : Store the result 
 HLT : Terminate program execution 
Statement: Write a main program and a conversion subroutine to convert the binary 
number stored at 6000H into its equivalent BCD number. Store the result from memory 
location 6100H. 
Sample problem : 
(6000) H = 8AH 
Source program : 
 LXI H, 6200H : Initialize lookup table pointer 
 LXI D, 6000H : Initialize source memory pointer 
 LXI B, 7000H : Initialize destination memory pointer 
 BACK: LDAX D : Get the number 
 MOV L, A : A point to the 7-segment code 
 MOV A, M : Get the 7-segment code 
 STAX B : Store the result at destination memory location 
 INX D : Increment source memory pointer 
 INX B : Increment destination memory pointer 
Flowchart for program
 MOV A, C 
 CPI O5H : Check for last number 
 JNZ BACK : If not repeat 
 HLT : End of program 
Statement: Write an assembly language program to convert the contents of the five 
memory locations starting from 2000H into an ASCII character. Place the result in another 
five memory locations starting from 2200H. 
Sample Problem 
(2000H) = 1 
(2001H) = 2 
(2002H) = 9 
(2003H) = A 
(2004H) = B 
Result:(2200H) = 31 
(2201H) = 32 
(2202H) = 39 
(2203H) = 41 
(2204H) = 42 
Source program: 
LXI SP, 27FFH : Initialize stack pointer 
LXI H, 2000H : Source memory pointer 
LXI D, 2200H : Destination memory pointer 
MVI C, O5H : Initialize the counter 
BACK: MOV A, M : Get the number 
CALL ASCII : Call subroutine ASCII 
STAX D : Store result 
INX H : Increment source memory pointer 
INX D : Increment destination memory pointer 
DCR C : Decrement count by 1 
CJNZ : if not zero, repeat 
HLT : Stop program execution subroutine ASCII 
ASCII: CPI, OAH : Check if number is OAR 
JNC NEXT : If yes go to next otherwise continue 
ADI 30H 
JMP LAST 
NEXT: ADI 37H
LAST: RET : Return to main program 
Subroutine: 
Subroutine 'ASCII' converts a hexadecimal digit to ASCII.The digit is passed using 
accumulator and the result is stored in accumulator.Stack starts From 27FEH to 27FDH. 
Note: The ASCII Code (American Standard Code for Information Interchange) is 
commonly used for communication. In such cases we need to convert binary number to its 
ASCII equivalent. It is a seven bit code. In this code number 0 through 9 are represented as 
30 through 39 respectively and letters A through Z are represented as 41H through 5AH. 
Therefore, by adding 30H we can convert number into its ASCII equivalent and by adding 
37H we can convert letter to its ASCII equivalent. 
Statement: Convert the ASCII number in memory to its equivalent decimal number 
Source program : 
 LXI H, 4150 : Point to data 
 MOV A, M : Get operand
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS
MICROPROCESSOR 8085 WITH PROGRAMS

Mais conteúdo relacionado

Mais procurados

Instruction cycle
Instruction cycleInstruction cycle
Instruction cycleKumar
 
System bus timing 8086
System bus timing 8086System bus timing 8086
System bus timing 8086mpsrekha83
 
8086 microprocessor-architecture
8086 microprocessor-architecture8086 microprocessor-architecture
8086 microprocessor-architectureprasadpawaskar
 
Stacks & subroutines 1
Stacks & subroutines 1Stacks & subroutines 1
Stacks & subroutines 1deval patel
 
8051 Microcontroller ppt
8051 Microcontroller ppt8051 Microcontroller ppt
8051 Microcontroller pptRahul Kumar
 
8096 microcontrollers notes
8096 microcontrollers notes8096 microcontrollers notes
8096 microcontrollers notesDr.YNM
 
Register Reference Instructions | Computer Science
Register Reference Instructions | Computer ScienceRegister Reference Instructions | Computer Science
Register Reference Instructions | Computer ScienceTransweb Global Inc
 
Flag register 8086 assignment
Flag register 8086 assignmentFlag register 8086 assignment
Flag register 8086 assignmentZia3130
 
Micro Programmed Control Unit
Micro Programmed Control UnitMicro Programmed Control Unit
Micro Programmed Control UnitKamal Acharya
 
Control unit design
Control unit designControl unit design
Control unit designDhaval Bagal
 
Interfacing memory with 8086 microprocessor
Interfacing memory with 8086 microprocessorInterfacing memory with 8086 microprocessor
Interfacing memory with 8086 microprocessorVikas Gupta
 
8086 Microprocessor powerpoint
8086  Microprocessor  powerpoint8086  Microprocessor  powerpoint
8086 Microprocessor powerpointRandhir Kumar
 
Instruction cycle presentation
Instruction   cycle presentationInstruction   cycle presentation
Instruction cycle presentationMoniba Irfan
 

Mais procurados (20)

Instruction cycle
Instruction cycleInstruction cycle
Instruction cycle
 
System bus timing 8086
System bus timing 8086System bus timing 8086
System bus timing 8086
 
8086 microprocessor-architecture
8086 microprocessor-architecture8086 microprocessor-architecture
8086 microprocessor-architecture
 
Registers
RegistersRegisters
Registers
 
Stacks & subroutines 1
Stacks & subroutines 1Stacks & subroutines 1
Stacks & subroutines 1
 
8051 Microcontroller ppt
8051 Microcontroller ppt8051 Microcontroller ppt
8051 Microcontroller ppt
 
Arithmetic and logical instructions
Arithmetic and logical instructionsArithmetic and logical instructions
Arithmetic and logical instructions
 
8096 microcontrollers notes
8096 microcontrollers notes8096 microcontrollers notes
8096 microcontrollers notes
 
8255 PPI
8255 PPI8255 PPI
8255 PPI
 
Interrupt
InterruptInterrupt
Interrupt
 
Register Reference Instructions | Computer Science
Register Reference Instructions | Computer ScienceRegister Reference Instructions | Computer Science
Register Reference Instructions | Computer Science
 
Timing diagram 8085 microprocessor
Timing diagram 8085 microprocessorTiming diagram 8085 microprocessor
Timing diagram 8085 microprocessor
 
Flag register 8086 assignment
Flag register 8086 assignmentFlag register 8086 assignment
Flag register 8086 assignment
 
Micro Programmed Control Unit
Micro Programmed Control UnitMicro Programmed Control Unit
Micro Programmed Control Unit
 
Control unit design
Control unit designControl unit design
Control unit design
 
Ch7 official
Ch7 officialCh7 official
Ch7 official
 
8085 instruction set
8085 instruction set8085 instruction set
8085 instruction set
 
Interfacing memory with 8086 microprocessor
Interfacing memory with 8086 microprocessorInterfacing memory with 8086 microprocessor
Interfacing memory with 8086 microprocessor
 
8086 Microprocessor powerpoint
8086  Microprocessor  powerpoint8086  Microprocessor  powerpoint
8086 Microprocessor powerpoint
 
Instruction cycle presentation
Instruction   cycle presentationInstruction   cycle presentation
Instruction cycle presentation
 

Semelhante a MICROPROCESSOR 8085 WITH PROGRAMS

Mpmc unit 1 notes
Mpmc unit 1 notesMpmc unit 1 notes
Mpmc unit 1 notespavihari
 
8085 microprocessor
8085 microprocessor8085 microprocessor
8085 microprocessorAnuja Gunale
 
Overview of microcontroller and microprocessor
Overview of microcontroller and microprocessor Overview of microcontroller and microprocessor
Overview of microcontroller and microprocessor Mrunal Deshkar
 
20838382 microprocessor-8085-notes
20838382 microprocessor-8085-notes20838382 microprocessor-8085-notes
20838382 microprocessor-8085-notesRavali Sunki
 
Microprocessor Basics 8085 Ch-1
Microprocessor Basics 8085 Ch-1Microprocessor Basics 8085 Ch-1
Microprocessor Basics 8085 Ch-1Neelam Kapoor
 
MPMC UNIT-1. Microprocessor 8085 pdf Microprocessor and Microcontroller
MPMC UNIT-1. Microprocessor 8085 pdf Microprocessor and MicrocontrollerMPMC UNIT-1. Microprocessor 8085 pdf Microprocessor and Microcontroller
MPMC UNIT-1. Microprocessor 8085 pdf Microprocessor and MicrocontrollerRAHUL RANJAN
 
microprocessor8085 power point presentation
microprocessor8085 power point presentationmicroprocessor8085 power point presentation
microprocessor8085 power point presentationrohitkuarm5667
 
Computer engineering - overview of microprocessors
Computer engineering - overview of microprocessorsComputer engineering - overview of microprocessors
Computer engineering - overview of microprocessorsEkeedaPvtLtd
 
Introduction to microprocessor
Introduction to microprocessorIntroduction to microprocessor
Introduction to microprocessorRamaPrabha24
 
Architecture of 8085
Architecture of 8085Architecture of 8085
Architecture of 8085ShivamSood22
 
Microprocessor Basics 8085 Ch-1
Microprocessor Basics 8085 Ch-1Microprocessor Basics 8085 Ch-1
Microprocessor Basics 8085 Ch-1Neelam Kapoor
 
U proc ovw
U proc ovwU proc ovw
U proc ovwBrit4
 
2 8085 microprocessor
2 8085 microprocessor2 8085 microprocessor
2 8085 microprocessoraditidey19
 
8085 microprocessor architecture
8085 microprocessor architecture8085 microprocessor architecture
8085 microprocessor architectureArashdeepkaur16
 
Microprocessor 8085 architecture ppt. april 2013
Microprocessor 8085 architecture ppt. april 2013Microprocessor 8085 architecture ppt. april 2013
Microprocessor 8085 architecture ppt. april 2013harshalata
 

Semelhante a MICROPROCESSOR 8085 WITH PROGRAMS (20)

Mpmc unit 1 notes
Mpmc unit 1 notesMpmc unit 1 notes
Mpmc unit 1 notes
 
EE8551 MPMC
EE8551  MPMCEE8551  MPMC
EE8551 MPMC
 
8085 microprocessor
8085 microprocessor8085 microprocessor
8085 microprocessor
 
Overview of microcontroller and microprocessor
Overview of microcontroller and microprocessor Overview of microcontroller and microprocessor
Overview of microcontroller and microprocessor
 
20838382 microprocessor-8085-notes
20838382 microprocessor-8085-notes20838382 microprocessor-8085-notes
20838382 microprocessor-8085-notes
 
Microprocessor Basics 8085 Ch-1
Microprocessor Basics 8085 Ch-1Microprocessor Basics 8085 Ch-1
Microprocessor Basics 8085 Ch-1
 
c++
c++ c++
c++
 
MPMC UNIT-1. Microprocessor 8085 pdf Microprocessor and Microcontroller
MPMC UNIT-1. Microprocessor 8085 pdf Microprocessor and MicrocontrollerMPMC UNIT-1. Microprocessor 8085 pdf Microprocessor and Microcontroller
MPMC UNIT-1. Microprocessor 8085 pdf Microprocessor and Microcontroller
 
microprocessor8085 power point presentation
microprocessor8085 power point presentationmicroprocessor8085 power point presentation
microprocessor8085 power point presentation
 
Microprocessors
MicroprocessorsMicroprocessors
Microprocessors
 
Computer engineering - overview of microprocessors
Computer engineering - overview of microprocessorsComputer engineering - overview of microprocessors
Computer engineering - overview of microprocessors
 
Introduction to microprocessor
Introduction to microprocessorIntroduction to microprocessor
Introduction to microprocessor
 
Architecture of 8085
Architecture of 8085Architecture of 8085
Architecture of 8085
 
Microprocessor Basics 8085 Ch-1
Microprocessor Basics 8085 Ch-1Microprocessor Basics 8085 Ch-1
Microprocessor Basics 8085 Ch-1
 
U proc ovw
U proc ovwU proc ovw
U proc ovw
 
2 8085 microprocessor
2 8085 microprocessor2 8085 microprocessor
2 8085 microprocessor
 
8085 architecture
8085 architecture8085 architecture
8085 architecture
 
8085 microprocessor architecture
8085 microprocessor architecture8085 microprocessor architecture
8085 microprocessor architecture
 
Microprocessor 8085 architecture ppt. april 2013
Microprocessor 8085 architecture ppt. april 2013Microprocessor 8085 architecture ppt. april 2013
Microprocessor 8085 architecture ppt. april 2013
 
8085 (1)
8085 (1)8085 (1)
8085 (1)
 

Último

Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordCCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordAsst.prof M.Gokilavani
 
Extrusion Processes and Their Limitations
Extrusion Processes and Their LimitationsExtrusion Processes and Their Limitations
Extrusion Processes and Their Limitations120cr0395
 
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxAsutosh Ranjan
 
AKTU Computer Networks notes --- Unit 3.pdf
AKTU Computer Networks notes ---  Unit 3.pdfAKTU Computer Networks notes ---  Unit 3.pdf
AKTU Computer Networks notes --- Unit 3.pdfankushspencer015
 
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).pptssuser5c9d4b1
 
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSHARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSRajkumarAkumalla
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...Soham Mondal
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxupamatechverse
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxupamatechverse
 
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxupamatechverse
 
Processing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxProcessing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxpranjaldaimarysona
 
Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)simmis5
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlysanyuktamishra911
 
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSMANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSSIVASHANKAR N
 
SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )Tsuyoshi Horigome
 

Último (20)

Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
 
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordCCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
 
Extrusion Processes and Their Limitations
Extrusion Processes and Their LimitationsExtrusion Processes and Their Limitations
Extrusion Processes and Their Limitations
 
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptx
 
AKTU Computer Networks notes --- Unit 3.pdf
AKTU Computer Networks notes ---  Unit 3.pdfAKTU Computer Networks notes ---  Unit 3.pdf
AKTU Computer Networks notes --- Unit 3.pdf
 
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
 
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSHARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
 
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINEDJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptx
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptx
 
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptx
 
Processing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxProcessing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptx
 
Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghly
 
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSMANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
 
SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )
 

MICROPROCESSOR 8085 WITH PROGRAMS

  • 1.  A microprocessor is a clock-driven semiconductor device consisting of electronic logic circuits manufactured by using either a large-scale integration (LSI) or very-large-scale integration (VLSI) technique.  The microprocessor is capable of performing various computing functions and making decisions to change the sequence of program execution.  In large computers, a CPU performs these computing functions. The Microprocessor resembles a CPU exactly.  The microprocessor is in many ways similar to the CPU, but includes all the logic circuitry including the control unit, on one chip.  The microprocessor can be divided into three segments for the sake of clarity. – They are: arithmetic/logic unit (ALU), register array, and control unit.  A comparison between a microprocessor, and a computer is shown below:  Arithmetic/Logic Unit: This is the area of the microprocessor where various computing functions are performed on data. The ALU unit performs such arithmetic operations as addition and subtraction, and such logic operations as AND, OR, and exclusive OR.  Register Array: This area of the microprocessor consists of various registers identified by letters such as B, C, D, E, H, and L. These registers are primarily used to store data temporarily during the execution of a program and are accessible to the user through instructions.  Control Unit: The control unit provides the necessary timing and control signals to all the operations in the microcomputer. It controls the flow of data between the microprocessor and memory and peripherals.  Memory: Memory stores such binary information as instructions and data, and provides that information to the microprocessor whenever necessary. To execute programs, the microprocessor reads instructions and data from memory and performs the computing operations in its ALU section. Results are either transferred to the output section for display or stored in memory for later use. Read-Only memory (ROM) and Read/Write memory (R/WM), popularly known as Random- Access memory (RAM). 1. The ROM is used to store programs that do not need alterations. The monitor program of a single-board microcomputer is generally stored in the ROM. This program interprets the information entered through a keyboard and provides equivalent binary digits to the microprocessor. Programs stored in the ROM can only be read; they cannot be altered. 2. The Read/Write memory (RIWM) is also known as user memory It is used to
  • 2. store user programs and data. In single-board microcomputers, the monitor program monitors the Hex keys and stores those instructions and data in the R/W memory. The information stored in this memory can be easily read and altered.  I/O (Input/Output): It communicates with the outside world. I/O includes two types of devices: input and output; these I/O devices are also known as peripherals.  System Bus: The system bus is a communication path between the microprocessor and peripherals: it is nothing but a group of wires to carry bits. Microprocessor is a multi-use device which finds applications in almost all the fields. Here is some sample applications given in variety of fields. Electronics:  Digital clocks & Watches  Mobile phones  Measuring Meters Mechanical:  Automobiles  Lathes  All remote machines Electrical:  Motors  Lighting controls  Power stations Medical:  Patient monitoring  Most of the Medical equipments  Data loggers Computer:  All computer accessories  Laptops & Modems  Scanners & Printers Domestic:  Microwave Ovens  Television/CD/DVD players
  • 3.  Washing Machines ARCHITECHTURE or FUNCTIONAL BLOCK DIAGRAM OF 8085 The functional block diagram or architecture of 8085 Microprocessor is very important as it gives the complete details about a Microprocessor. Fig. shows the Block diagram of a Microprocessor. 8085 Bus Structure: Address Bus:  The address bus is a group of 16 lines generally identified as A0 to A15.  The address bus is unidirectional: bits flow in one direction-from the MPU to peripheral devices.  The MPU uses the address bus to perform the first function: identifying a peripheral or a memory location.
  • 4. Data Bus:  The data bus is a group of eight lines used for data flow.  These lines are bi-directional - data flow in both directions between the MPU and memory and peripheral devices.  The MPU uses the data bus to perform the second function: transferring binary information.  The eight data lines enable the MPU to manipulate 8-bit data ranging from 00 to FF (28 = 256 numbers).  The largest number that can appear on the data bus is 11111111. Control Bus:  The control bus carries synchronization signals and providing timing signals.  The MPU generates specific control signals for every operation it performs. These signals are used to identify a device type with which the MPU wants to communicate. Registers of 8085:  The 8085 have six general-purpose registers to store 8-bit data during program execution.  These registers are identified as B, C, D, E, H, and L.  They can be combined as register pairs-BC, DE, and HL-to perform some 16-bit operations.
  • 5. Accumulator (A):  The accumulator is an 8-bit register that is part of the arithmetic/logic unit (ALU).  This register is used to store 8-bit data and to perform arithmetic and logical operations.  The result of an operation is stored in the accumulator. Flags:  The ALU includes five flip-flops that are set or reset according to the result of an operation.  The microprocessor uses the flags for testing the data conditions.  They are Zero (Z), Carry (CY), Sign (S), Parity (P), and Auxiliary Carry (AC) flags. The most commonly used flags are Sign, Zero, and Carry. The bit position for the flags in flag register is, 1.Sign Flag (S):
  • 6. After execution of any arithmetic and logical operation, if D7 of the result is 1, the sign flag is set. Otherwise it is reset. 2.Zero Flag (z): If the result of arithmetic and logical operation is zero, then zero flag is set otherwise it is reset. 3.Auxiliary Carry Flag (AC): If D3 generates any carry when doing any arithmetic and logical operation, this flag is set. Otherwise it is reset. 4.Parity Flag (P): If the result of arithmetic and logical operation contains even number of 1's then this flag will be set and if it is odd number of 1's it will be reset. 5.Carry Flag (CY): If any arithmetic and logical operation result any carry then carry flag is set otherwise it is reset. Arithmetic and Logic Unit (ALU):  It is used to perform the arithmetic operations like addition, subtraction, multiplication, division, increment and decrement and logical operations like AND, OR and EX-OR.  It receives the data from accumulator and registers.  According to the result it set or reset the flags. Program Counter (PC):  This 16-bit register sequencing the execution of instructions.  It is a memory pointer. Memory locations have 16-bit addresses, and that is why this is a 16-bit register.  The function of the program counter is to point to the memory address of the next instruction to be executed.  When an opcode is being fetched, the program counter is incremented by one to point to the next memory location.
  • 7. Stack Pointer (Sp):  The stack pointer is also a 16-bit register used as a memory pointer.  It points to a memory location in R/W memory, called the stack.  The beginning of the stack is defined by loading a 16-bit address in the stack pointer (register). Temporary Register: It is used to hold the data during the arithmetic and logical operations. Instruction Register: When an instruction is fetched from the memory, it is loaded in the instruction register. Instruction Decoder: It gets the instruction from the instruction register and decodes the instruction. It identifies the instruction to be performed. Serial I/O Control: It has two control signals named SID and SOD for serial data transmission. Timing and Control unit:  It has three control signals ALE, RD (Active low) and WR (Active low) and three status signals IO/M(Active low), S0 and S1.  ALE is used for provide control signal to synchronize the components of microprocessor and timing for instruction to perform the operation.  RD (Active low) and WR (Active low) are used to indicate whether the operation is reading the data from memory or writing the data into memory respectively.  IO/M(Active low) is used to indicate whether the operation is belongs to the memory or peripherals. If,
  • 8. Interrupt Control Unit:  It receives hardware interrupt signals and sends an acknowledgement for receiving the interrupt signal. PIN DIAGRAM AND PIN DESCRIPTION OF 8085  The microprocessor is a clock-driven semiconductor device consisting of electronic logic circuits manufactured by using either a large-scale integration (LSI) or very-large-scale integration (VLSI) technique.  The microprocessor is capable of performing various computing functions and making decisions to change the sequence of program execution.  In large computers, a CPU implemented on one or more circuit boards performs these computing functions.  The microprocessor is in many ways similar to the CPU, but includes the logic circuitry, including the control unit, on one chip.
  • 9.  The microprocessor can be divided into three segments for the sake clarity, arithmetic/logic unit (ALU), register array, and control unit.  8085 is a 40 pin IC, DIP package. The signals from the pins can be grouped as follows 1. Power supply and clock signals 2. Address bus 3. Data bus 4. Control and status signals 5. Interrupts and externally initiated signals 6. Serial I/O ports 1. Power supply and Clock frequency signals:  Vcc + 5 volt power supply  Vss Ground  X1, X2 : Crystal or R/C network or LC network connections to set the frequency of internal clock generator.  The frequency is internally divided by two. Since the basic operating timing frequency is 3 MHz, a 6 MHz crystal is connected externally.  CLK (output)-Clock Output is used as the system clock for peripheral and devices interfaced with the microprocessor.
  • 10. Fig (a) - Pin Diagram of 8085 & Fig(b) - logical schematic of Pin diagram. 2. Address Bus:  A8 - A15 (output; 3-state)  It carries the most significant 8 bits of the memory address or the 8 bits of the I/O address; 3. Multiplexed Address / Data Bus:  AD0 - AD7 (input/output; 3-state)  These multiplexed set of lines used to carry the lower order 8 bit address as well as data bus.
  • 11.  During the opcode fetch operation, in the first clock cycle, the lines deliver the lower order address A0 - A7.  In the subsequent IO / memory, read / write clock cycle the lines are used as data bus.  The CPU may read or write out data through these lines. 4. Control and Status signals:  ALE (output) - Address Latch Enable.  This signal helps to capture the lower order address presented on the multiplexed address / data bus.  RD (output 3-state, active low) - Read memory or IO device.  This indicates that the selected memory location or I/O device is to be read and that the data bus is ready for accepting data from the memory or I/O device.  WR (output 3-state, active low) - Write memory or IO device.  This indicates that the data on the data bus is to be written into the selected memory location or I/O device.  IO/M (output) - Select memory or an IO device.  This status signal indicates that the read / write operation relates to whether the memory or I/O device.  It goes high to indicate an I/O operation.  It goes low for memory operations. 5. Status Signals:  It is used to know the type of current operation of the microprocessor.
  • 12. 6. Interrupts and Externally initiated operations:  They are the signals initiated by an external device to request the microprocessor to do a particular task or work.  There are five hardware interrupts called,  On receipt of an interrupt, the microprocessor acknowledges the interrupt by the active low INTA (Interrupt Acknowledge) signal. Reset In (input, active low)  This signal is used to reset the microprocessor.  The program counter inside the microprocessor is set to zero.  The buses are tri-stated. Reset Out (Output)  It indicates CPU is being reset.  Used to reset all the connected devices when the microprocessor is reset. 7. Direct Memory Access (DMA): Tri state devices:  3 output states are high & low states and additionally a high impedance state.
  • 13.  When enable E is high the gate is enabled and the output Q can be 1 or 0 (if A is 0, Q is 1, otherwise Q is 0). However, when E is low the gate is disabled and the output Q enters into a high impedance state. Fig (a) - Pin Diagram of 8085 & Fig(b) - logical schematic of Pin diagram.  For both high and low states, the output Q draws a current from the input of the OR gate.  When E is low, Q enters a high impedance state; high impedance means it is electrically isolated from the OR gate's input, though it is physically connected. Therefore, it does not draw any current from the OR gate's input.  When 2 or more devices are connected to a common bus, to prevent the devices from interfering with each other, the tristate gates are used to disconnect all devices except the one that is communicating at a given instant.  The CPU controls the data transfer operation between memory and I/O device. Direct Memory Access operation is used for large volume data transfer between memory and an I/O device directly.  The CPU is disabled by tri-stating its buses and the transfer is effected directly by external control circuits.  HOLD signal is generated by the DMA controller circuit. On receipt of this signal, the microprocessor acknowledges the request by sending out HLDA signal and leaves out the control of the buses. After the HLDA signal the DMA controller starts the direct transfer of data. READY (input)  Memory and I/O devices will have slower response compared to microprocessors.  Before completing the present job such a slow peripheral may not be able to handle further data or control signal from CPU.
  • 14.  The processor sets the READY signal after completing the present job to access the data.  The microprocessor enters into WAIT state while the READY pin is disabled. 8. Single Bit Serial I/O ports:  SID (input) - Serial input data line  SOD (output) - Serial output data line  These signals are used for serial communication. TIMING DIAGRAM Timing Diagram is a graphical representation. It represents the execution time taken by each instruction in a graphical format. The execution time is represented in T-states. Instruction Cycle: The time required to execute an instruction is called instruction cycle. Machine Cycle: The time required to access the memory or input/output devices is called machine cycle. T-State:  The machine cycle and instruction cycle takes multiple clock periods.  A portion of an operation carried out in one system clock period is called as T-state.
  • 15. MACHINE CYCLES OF 8085: The 8085 microprocessor has 5 (seven) basic machine cycles. They are 1. Opcode fetch cycle (4T) 2. Memory read cycle (3 T) 3. Memory write cycle (3 T) 4. I/O read cycle (3 T) 5. I/O write cycle (3 T)  Each instruction of the 8085 processor consists of one to five machine cycles, i.e., when the 8085 processor executes an instruction, it will execute some of the machine cycles in a specific order.  The processor takes a definite time to execute the machine cycles. The time taken by the processor to execute a machine cycle is expressed in T-states.  One T-state is equal to the time period of the internal clock signal of the processor.  The T-state starts at the falling edge of a clock.
  • 16. Opcode fetch machine cycle of 8085 :  Each instruction of the processor has one byte opcode.  The opcodes are stored in memory. So, the processor executes the opcode fetch machine cycle to fetch the opcode from memory.  Hence, every instruction starts with opcode fetch machine cycle.  The time taken by the processor to execute the opcode fetch cycle is 4T.  In this time, the first, 3 T-states are used for fetching the opcode from memory and the remaining T-states are used for internal operations by the processor. Fig - Timing Diagram for Opcode Fetch Machine Cycle
  • 17. Memory Read Machine Cycle of 8085:  The memory read machine cycle is executed by the processor to read a data byte from memory.  The processor takes 3T states to execute this cycle.  The instructions which have more than one byte word size will use the machine cycle after the opcode fetch machine cycle. Fig - Timing Diagram for Memory Read Machine Cycle
  • 18. Memory Write Machine Cycle of 8085:  The memory write machine cycle is executed by the processor to write a data byte in a memory location.  The processor takes, 3T states to execute this machine cycle. Fig - Timing Diagram for Memory Write Machine Cycle
  • 19. I/O Read Cycle of 8085:  The I/O Read cycle is executed by the processor to read a data byte from I/O port or from the peripheral, which is I/O, mapped in the system.  The processor takes 3T states to execute this machine cycle.  The IN instruction uses this machine cycle during the execution. Fig - Timing Diagram for I/O Read Machine Cycle
  • 20. I/O Write Cycle of 8085:  The I/O write machine cycle is executed by the processor to write a data byte in the I/O port or to a peripheral, which is I/O, mapped in the system.  The processor takes, 3T states to execute this machine cycle. Fig - Timing Diagram for I/O Write Machine Cycle  The 8085 instructions consist of one to five machine cycles.  Actually the execution of an instruction is the execution of the machine cycles of that instruction in the predefined order.  The timing diagram of an instruction ate obtained by drawing the timing diagrams of the machine cycles of that instruction, one by one in the order of execution.
  • 21. Timing diagram for STA 526AH.  STA means Store Accumulator -The contents of the accumulator is stored in the specified address(526A).  The opcode of the STA instruction is said to be 32H. It is fetched from the memory 41FFH(see fig). - OF machine cycle  Then the lower order memory address is read(6A). - Memory Read Machine Cycle  Read the higher order memory address (52).- Memory Read Machine Cycle  The combination of both the addresses are considered and the content from accumulator is written in 526A. - Memory Write Machine Cycle  Assume the memory address for the instruction and let the content of accumulator is C7H. So, C7H from accumulator is now stored in 526A.
  • 22. Timing diagram for IN C0H.  Fetching the Opcode DBH from the memory 4125H.  Read the port address C0H from 4126H.  Read the content of port C0H and send it to the accumulator.  Let the content of port is 5EH.
  • 23. Timing diagram for INR M  Fetching the Opcode 34H from the memory 4105H. (OF cycle)  Let the memory address (M) be 4250H. (MR cycle -To read Memory address and data)  Let the content of that memory is 12H.  Increment the memory content from 12H to 13H. (MW machine cycle)
  • 24. Timing diagram for MVI B, 43H.  Fetching the Opcode 06H from the memory 2000H. (OF machine cycle)  Read (move) the data 43H from memory 2001H. (memory read)
  • 25. INTERRUPT STRUCTURE  Interrupt is signals send by an external device to the processor, to request the processor to perform a particular task or work.  Mainly in the microprocessor based system the interrupts are used for data transfer between the peripheral and the microprocessor.  The processor will check the interrupts always at the 2nd T-state of last machine cycle.  If there is any interrupt it accept the interrupt and send the INTA (active low) signal to the peripheral.  The vectored address of particular interrupt is stored in program counter.  The processor executes an interrupt service routine (ISR) addressed in program counter.  It returned to main program by RET instruction. Types of Interrupts: It supports two types of interrupts.  Hardware  Software Software interrupts:  The software interrupts are program instructions. These instructions are inserted at desired locations in a program.  The 8085 has eight software interrupts from RST 0 to RST 7. The vector address for these interrupts can be calculated as follows.  Interrupt number * 8 = vector address  For RST 5,5 * 8 = 40 = 28H  Vector address for interrupt RST 5 is 0028H The Table shows the vector addresses of all interrupts.
  • 26. Hardware interrupts:  An external device initiates the hardware interrupts and placing an appropriate signal at the interrupt pin of the processor.  If the interrupt is accepted then the processor executes an interrupt service routine. The 8085 has five hardware interrupts (1) TRAP (2) RST 7.5 (3) RST 6.5 (4) RST 5.5 (5) INTR TRAP:  This interrupt is a non-maskable interrupt. It is unaffected by any mask or interrupt enable.  TRAP bas the highest priority and vectored interrupt.  TRAP interrupt is edge and level triggered. This means hat the TRAP must go high and remain high until it is acknowledged.  In sudden power failure, it executes a ISR and send the data from main memory to backup memory.  The signal, which overrides the TRAP, is HOLD signal. (i.e., If the processor receives HOLD and TRAP at the same time then HOLD is recognized first and then TRAP is recognized).  There are two ways to clear TRAP interrupt. 1.By resetting microprocessor (External signal) 2.By giving a high TRAP ACKNOWLEDGE (Internal signal)
  • 27. RST 7.5:  The RST 7.5 interrupt is a maskable interrupt.  It has the second highest priority.  It is edge sensitive. ie. Input goes to high and no need to maintain high state until it recognized.  Maskable interrupt. It is disabled by, 1.DI instruction 2.System or processor reset. 3.After reorganization of interrupt.  Enabled by EI instruction. RST 6.5 and 5.5:  The RST 6.5 and RST 5.5 both are level triggered. . ie. Input goes to high and stay high until it recognized.  Maskable interrupt. It is disabled by, 1.DI, SIM instruction 2.System or processor reset. 3.After reorganization of interrupt.  Enabled by EI instruction.  The RST 6.5 has the third priority whereas RST 5.5 has the fourth priority. INTR:  INTR is a maskable interrupt. It is disabled by, 1.DI, SIM instruction 2.System or processor reset. 3.After reorganization of interrupt.  Enabled by EI instruction.  Non- vectored interrupt. After receiving INTA (active low) signal, it has to supply the address of ISR.  It has lowest priority.
  • 28.  It is a level sensitive interrupts. ie. Input goes to high and it is necessary to maintain high state until it recognized.  The following sequence of events occurs when INTR signal goes high. 1. The 8085 checks the status of INTR signal during execution of each instruction. 2. If INTR signal is high, then 8085 complete its current instruction and sends active low interrupt acknowledge signal, if the interrupt is enabled. 3. In response to the acknowledge signal, external logic places an instruction OPCODE on the data bus. In the case of multibyte instruction, additional interrupt acknowledge machine cycles are generated by the 8085 to transfer the additional bytes into the microprocessor. 4. On receiving the instruction, the 8085 save the address of next instruction on stack and execute received instruction. SIM and RIM for interrupts:  The 8085 provide additional masking facility for RST 7.5, RST 6.5 and RST 5.5 using SIM instruction.  The status of these interrupts can be read by executing RIM instruction.  The masking or unmasking of RST 7.5, RST 6.5 and RST 5.5 interrupts can be performed by moving an 8-bit data to accumulator and then executing SIM instruction.  The format of the 8-bit data is shown below.  The status of pending interrupts can be read from accumulator after executing RIM instruction.
  • 29.  When RIM instruction is executed an 8-bit data is loaded in accumulator, which can be interpreted as shown in fig.
  • 30. 8085 INSTRUCTION SET CLASSIFICATION The 8085 instruction set can be classified into the following five functional headings. 1. DATA TRANSFER INSTRUCTIONS: It includes the instructions that move (copies) data between registers or between memory locations and registers. In all data transfer operations the content of source register is not altered. Hence the data transfer is copying operation. Ex: (1) Mov A,B (2) MVI C,45H 2. ARITHMETIC INSTRUCTIONS: Includes the instructions, which performs the addition, subtraction, increment or decrement operations. The flag conditions are altered after execution of an instruction in this group. Ex: (1) ADD A,B (2) SUI B,05H 3. LOGICAL INSTRUCTIONS: The instructions which performs the logical operations like AND, OR, EXCLUSIVE-OR, complement, compare and rotate instructions are grouped under this heading. The flag conditions are altered after execution of an instruction in this group. Ex: (1) ORA A (2) ANI B, 01H 4. BRANCHING INSTRUCTIONS: The instructions that are used to transfer the program control from one memory location to another memory location are grouped under this heading. Ex: (1) CALL (2) JMP 4100 5. MACHINE CONTROL INSTRUCTIONS: It includes the instructions related to interrupts and the instruction used to stop the program execution. Ex: (1) NOP (2) END
  • 31. ADDRESSING MODES OF 8085  Every instruction of a program has to operate on a data.  The method of specifying the data to be operated by the instruction is called Addressing.  The 8085 has the following 5 different types of addressing. 1. Immediate Addressing 2. Direct Addressing 3. Register Addressing 4. Register Indirect Addressing 5. Implied Addressing 1. Immediate Addressing:  In immediate addressing mode, the data is specified in the instruction itself. The data will be a part of the program instruction.  EX. MVI B, 3EH - Move the data 3EH given in the instruction to B register; LXI SP, 2700H. 2. Direct Addressing:  In direct addressing mode, the address of the data is specified in the instruction. The data will be in memory. In this addressing mode, the program instructions and data can be stored in different memory.  EX. LDA 1050H - Load the data available in memory location 1050H in to accumulator; SHLD 3000H 3. Register Addressing:  In register addressing mode, the instruction specifies the name of the register in which the data is available.  EX. MOV A, B - Move the content of B register to A register; SPHL; ADD C. 4. Register Indirect Addressing:  In register indirect addressing mode, the instruction specifies the name of the register in which the address of the data is available. Here the data will be in memory and the address will be in the register pair.  EX. MOV A, M - The memory data addressed by H L pair is moved to A register. LDAX B. 5. Implied Addressing:  In implied addressing mode, the instruction itself specifies the data to be operated.  EX. CMA - Complement the content of accumulator; RAL
  • 32. 8085 - Instruction set list 8085 Instructions - Datatransfer Opcode Operand Explanation of Instruction Description MOV Rd, Rs M, Rs Rd, M Copy from source(Rs) to destination(Rd) This instruction copies the contents of the source register into the destination register; the contents of the source register are not altered. If one of the operands is a memory location, its location is specified by the contents of the HL registers. Example: MOV B, C or MOV B, M MVI Rd, data M, data Move immediate 8- bit The 8-bit data is stored in the destination register or memory. If the operand is a memory location, its location is specified by the contents of the HL registers. Example: MVI B, 57H or MVI M, 57H LDA 16-bit address Load accumulator The contents of a memory location, specified by a 16- bit address in the operand, are copied to the accumulator. The contents of the source are not altered. Example: LDA 2034H LDAX B/D Reg. pair Load accumulator indirect The contents of the designated register pair point to a memory location. This instruction copies the contents of that memory location into the accumulator. The contents of either the register pair or the memory location are not altered. Example: LDAX B LXI Reg. pair, 16-bit data Load register pair immediate The instruction loads 16-bit data in the register pair designated in the operand. Example: LXI H, 2034H or LXI H, XYZ LHLD 16-bit address Load H and L registers direct The instruction copies the contents of the memory location pointed out by the 16-bit address into register L and copies the contents of the next memory location into register H. The contents of source memory locations are not altered. Example: LHLD 2040H
  • 33. STA 16-bit address 16-bit address The contents of the accumulator are copied into the memory location specified by the operand. This is a 3- byte instruction, the second byte specifies the low-order address and the third byte specifies the high-order address. Example: STA 4350H STAX Reg. pair Store accumulator indirect The contents of the accumulator are copied into the memory location specified by the contents of the operand (register pair). The contents of the accumulator are not altered. Example: STAX B SHLD 16-bit address Store H and L registers direct The contents of register L are stored into the memory location specified by the 16-bit address in the operand and the contents of H register are stored into the next memory location by incrementing the operand. The contents of registers HL are not altered. This is a 3- byte instruction, the second byte specifies the low-order address and the third byte specifies the high-order address. Example: SHLD 2470H XCHG none Exchange H and L with D and E The contents of register H are exchanged with the contents of register D, and the contents of register L are exchanged with the contents of register E. Example: XCHG SPHL none Copy H and L registers to the stack pointer The instruction loads the contents of the H and L registers into the stack pointer register, the contents of the H register provide the high-order address and the contents of the L register provide the low-order address. The contents of the H and L registers are not altered. Example: SPHL XTHL none Exchange H and L with top of stack The contents of the L register are exchanged with the stack location pointed out by the contents of the stack pointer register. The contents of the H register are exchanged with the next stack location (SP+1); however, the contents of the stack pointer register are not altered.
  • 34. Example: XTHL PUSH Reg. pair Push register pair onto stack The contents of the register pair designated in the operand are copied onto the stack in the following sequence. The stack pointer register is decremented and the contents of the highorder register (B, D, H, A) are copied into that location. The stack pointer register is decremented again and the contents of the low-order register (C, E, L, flags) are copied to that location. Example: PUSH B or PUSH A POP Reg. pair Pop off stack to register pair The contents of the memory location pointed out by the stack pointer register are copied to the low-order register (C, E, L, status flags) of the operand. The stack pointer is incremented by 1 and the contents of that memory location are copied to the high-order register (B, D, H, A) of the operand. The stack pointer register is again incremented by 1. Example: POP H or POP A OUT 8-bit port address Output data from accumulator to a port with 8-bit address The contents of the accumulator are copied into the I/O port specified by the operand. Example: OUT F8H IN 8-bit port address Input data to accumulator from a port with 8-bit address The contents of the input port designated in the operand are read and loaded into the accumulator. Example: IN 8CH 8085 Instructions - Arithmetic Opcode Operand Explanation of Instruction Description ADD R M Add register or memory, to accumulator The contents of the operand (register or memory) are added to the contents of the accumulator and the result is stored in the accumulator. If the operand is a memory location, its location is specified by the contents of the HL registers. All flags are modified to reflect the result of the addition. Example: ADD B or ADD M ADC R Add register to accumulator with The contents of the operand (register or memory) and M the Carry flag are added to the contents of the
  • 35. M carry accumulator and the result is stored in the accumulator. If the operand is a memory location, its location is specified by the contents of the HL registers. All flags are modified to reflect the result of the addition. Example: ADC B or ADC M ADI 8-bit data Add immediate to accumulator The 8-bit data (operand) is added to the contents of the accumulator and the result is stored in the accumulator. All flags are modified to reflect the result of the addition. Example: ADI 45H ACI 8-bit data Add immediate to accumulator with carry The 8-bit data (operand) and the Carry flag are added to the contents of the accumulator and the result is stored in the accumulator. All flags are modified to reflect the result of the addition. Example: ACI 45H LXI Reg. pair, 16-bit data Load register pair immediate The instruction loads 16-bit data in the register pair designated in the operand. Example: LXI H, 2034H or LXI H, XYZ DAD Reg. pair Add register pair to H and L registers The 16-bit contents of the specified register pair are added to the contents of the HL register and the sum is stored in the HL register. The contents of the source register pair are not altered. If the result is larger than 16 bits, the CY flag is set. No other flags are affected. Example: DAD H SUB R M Subtract register or memory from accumulator The contents of the operand (register or memory ) are subtracted from the contents of the accumulator, and the result is stored in the accumulator. If the operand is a memory location, its location is specified by the contents of the HL registers. All flags are modified to reflect the result of the subtraction. Example: SUB B or SUB M SBB R M Subtract source and borrow from accumulator The contents of the operand (register or memory ) and M the Borrow flag are subtracted from the contents of the accumulator and the result is placed in the accumulator. If the operand is a memory location, its location is specified by the contents of the HL registers. All flags are modified to reflect the result of the subtraction. Example: SBB B or SBB M
  • 36. SUI 8-bit data Subtract immediate from accumulator The 8-bit data (operand) is subtracted from the contents of the accumulator and the result is stored in the accumulator. All flags are modified to reflect the result of the subtraction. Example: SUI 45H SBI 8-bit data Subtract immediate from accumulator with borrow The contents of register H are exchanged with the contents of register D, and the contents of register L are exchanged with the contents of register E. Example: XCHG INR R M Increment register or memory by 1 The contents of the designated register or memory) are incremented by 1 and the result is stored in the same place. If the operand is a memory location, its location is specified by the contents of the HL registers. Example: INR B or INR M INX R Increment register pair by 1 The contents of the designated register pair are incremented by 1 and the result is stored in the same place. Example: INX H DCR R M Decrement register or memory by 1 The contents of the designated register or memory are M decremented by 1 and the result is stored in the same place. If the operand is a memory location, its location is specified by the contents of the HL registers. Example: DCR B or DCR M DCX R Decrement register pair by 1 The contents of the designated register pair are decremented by 1 and the result is stored in the same place. Example: DCX H DAA none Decimal adjust accumulator The contents of the accumulator are changed from a binary value to two 4-bit binary coded decimal (BCD) digits. This is the only instruction that uses the auxiliary flag to perform the binary to BCD conversion, and the conversion procedure is described below. S, Z, AC, P, CY flags are altered to reflect the results of the operation. If the value of the low-order 4-bits in the accumulator is greater than 9 or if AC flag is set, the instruction adds 6 to the low-order four bits.
  • 37. If the value of the high-order 4-bits in the accumulator is greater than 9 or if the Carry flag is set, the instruction adds 6 to the high-order four bits. Example: DAA 8085 Instructions - Branching BRANCHING INSTRUCTIONS Opcode Operand Explanation of Instruction Description JMP 16-bit address Jump unconditionally The program sequence is transferred to the memory location specified by the 16-bit address given in the operand. Example: JMP 2034H or JMP XYZ Opcode Description Flag Status JC Jump on Carry CY = 1 JNC Jump on no Carry CY = 0 JP Jump on positive S = 0 JM Jump on minus S = 1 JZ Jump on zero Z = 1 JNZ Jump on no zero Z = 0 JPE Jump on parity even P = 1 JPO Jump on parity odd P = 0 16-bit address Jump conditionally The program sequence is transferred to the memory location specified by the 16-bit address given in the operand based on the specified flag of the PSW as described below. Example: JZ 2034H or JZ XYZ Opcode Description Flag Status CC Call on Carry CY = 1 CNC Call on no Carry CY = 0 16-bit address Unconditional subroutine call The program sequence is transferred to the memory location specified by the 16-bit address given in the operand. Before the transfer, the address of the next instruction after CALL (the contents of the program counter) is
  • 38. CP Call on positive S = 0 CM Call on minus S = 1 CZ Call on zero Z = 1 CNZ Call on no zero Z = 0 CPE Call on parity even P = 1 CPO Call on parity odd P = 0 pushed onto the stack. Example: CALL 2034H or CALL XYZ RET none Return from subroutine unconditionally The program sequence is transferred from the subroutine to the calling program. The two bytes from the top of the stack are copied into the program counter,and program execution begins at the new address. Example: RET Opcode Description Flag Status RC Return on Carry CY = 1 RNC Return on no Carry CY = 0 RP Return on positive S = 0 RM Return on minus S = 1 RZ Return on zero Z = 1 RNZ Return on no zero Z = 0 RPE Return on parity even P = 1 RPO Return on parity odd P = 0 none Return from subroutine conditionally The program sequence is transferred from the subroutine to the calling program based on the specified flag of the PSW as described below. The two bytes from the top of the stack are copied into the program counter, and program execution begins at the new address. Example: RZ PCHL none Load program counter with HL contents The contents of registers H and L are copied into the program counter. The contents of H are placed as the high-order byte and the contents of L as the low-order byte. Example: PCHL
  • 39. RST 0-7 Restart The RST instruction is equivalent to a 1-byte call instruction to one of eight memory locations depending upon the number. The instructions are generally used in conjunction with interrupts and inserted using external hardware. However these can be used as software instructions in a program to transfer program execution to one of the eight locations. The addresses are: Instruction Restart Address RST 0 0000H RST1 0008H RST 2 0010H RST 3 0018H RST 4 0020H RST 5 0028H RST 6 0030H RST 7 0038H The 8085 has four additional interrupts and these interrupts generate RST instructions internally and thus do not require any external hardware. These instructions and their Restart addresses are: Interrupt Restart Address TRAP 0024H RST 5.5 002CH RST 6.5 0034H RST 7.5 003CH
  • 40. LOGICAL INSTRUCTIONS Opcode Operand Explanation of Instruction Description CMP R M Compare register or memory with accumulator The contents of the operand (register or memory) are M compared with the contents of the accumulator. Both contents are preserved . The result of the comparison is shown by setting the flags of the PSW as follows: if (A) < (reg/mem): carry flag is set if (A) = (reg/mem): zero flag is set if (A) > (reg/mem): carry and zero flags are reset Example: CMP B or CMP M CPI 8-bit data Compare immediate with accumulator The second byte (8-bit data) is compared with the contents of the accumulator. The values being compared remain unchanged. The result of the comparison is shown by setting the flags of the PSW as follows: if (A) < data: carry flag is set if (A) = data: zero flag is set if (A) > data: carry and zero flags are reset Example: CPI 89H ANA R M Logical AND register or memory with accumulator The contents of the accumulator are logically ANDed with M the contents of the operand (register or memory), and the result is placed in the accumulator. If the operand is a memory location, its address is specified by the contents of HL registers. S, Z, P are modified to reflect the result of the operation. CY is reset. AC is set. Example: ANA B or ANA M ANI 8-bit data Logical AND immediate with accumulator The contents of the accumulator are logically ANDed with the 8-bit data (operand) and the result is placed in the accumulator. S, Z, P are modified to reflect the result of the operation. CY is reset. AC is set. Example: ANI 86H XRA R M Exclusive OR register or memory with accumulator The contents of the accumulator are Exclusive ORed with M the contents of the operand (register or memory), and the result is placed in the accumulator. If the operand is a memory location, its address is specified by the contents of HL registers. S, Z, P are modified to reflect the result of the
  • 41. operation. CY and AC are reset. Example: XRA B or XRA M XRI 8-bit data Exclusive OR immediate with accumulator The contents of the accumulator are Exclusive ORed with the 8-bit data (operand) and the result is placed in the accumulator. S, Z, P are modified to reflect the result of the operation. CY and AC are reset. Example: XRI 86H ORA R M Logical OR register or memory with accumulator The contents of the accumulator are logically ORed with M the contents of the operand (register or memory), and the result is placed in the accumulator. If the operand is a memory location, its address is specified by the contents of HL registers. S, Z, P are modified to reflect the result of the operation. CY and AC are reset. Example: ORA B or ORA M ORI 8-bit data Logical OR immediate with accumulator The contents of the accumulator are logically ORed with the 8-bit data (operand) and the result is placed in the accumulator. S, Z, P are modified to reflect the result of the operation. CY and AC are reset. Example: ORI 86H RLC none Rotate accumulator left Each binary bit of the accumulator is rotated left by one position. Bit D7 is placed in the position of D0 as well as in the Carry flag. CY is modified according to bit D7. S, Z, P, AC are not affected. Example: RLC RRC none Rotate accumulator right Each binary bit of the accumulator is rotated right by one position. Bit D0 is placed in the position of D7 as well as in the Carry flag. CY is modified according to bit D0. S, Z, P, AC are not affected. Example: RRC RAL none Rotate accumulator left through carry Each binary bit of the accumulator is rotated left by one position through the Carry flag. Bit D7 is placed in the Carry flag, and the Carry flag is placed in the least significant position D0. CY is modified according to bit D7. S, Z, P, AC are not affected. Example: RAL RAR none Rotate accumulator right Each binary bit of the accumulator is rotated right by one position through the Carry flag. Bit D0 is placed in the
  • 42. through carry Carry flag, and the Carry flag is placed in the most significant position D7. CY is modified according to bit D0. S, Z, P, AC are not affected. Example: RAR CMA none Complement accumulator The contents of the accumulator are complemented. No flags are affected. Example: CMA CMC none Complement carry The Carry flag is complemented. No other flags are affected. Example: CMC STC none Set Carry Set Carry Example: STC CONTROL INSTRUCTIONS Opcode Operand Explanation of Instruction Description NOP none No operation No operation is performed. The instruction is fetched and decoded. However no operation is executed. Example: NOP HLT none Halt and enter wait state The CPU finishes executing the current instruction and halts any further execution. An interrupt or reset is necessary to exit from the halt state. Example: HLT DI none Disable interrupts The interrupt enable flip-flop is reset and all the interrupts except the TRAP are disabled. No flags are affected. Example: DI EI none Enable interrupts The interrupt enable flip-flop is set and all interrupts are enabled. No flags are affected. After a system reset or the acknowledgement of an interrupt, the interrupt enable flipflop is reset, thus disabling the interrupts. This instruction is necessary to reenable the interrupts (except TRAP). Example: EI
  • 43. RIM none Read interrupt mas This is a multipurpose instruction used to read the status of interrupts 7.5, 6.5, 5.5 and read serial data input bit. The instruction loads eight bits in the accumulator with the following interpretations. Example: RIM SIM none Set interrupt mask This is a multipurpose instruction and used to implement the 8085 interrupts 7.5, 6.5, 5.5, and serial data output. The instruction interprets the accumulator contents as follows. Example: SIM
  • 44. Opcode Sheet of 8085 Microprocessor with description What is OPCODE? OPCODE is the machine language. ie, while we talk or write, we do it in english; because we understand english. But a machine cannot understand direct english. So, we translate english into its level to make a machine to understand. For example, there is a translator inside all computers which translate our english into Binary language for a computer to understand and perform the required operations. Similarly, a machine language which a Microprocessor can understand is the HEXA language. These hex codes are called OPCODES which makes a microprocessor to work. As there is no translator inside a Microprocessor, we directly fnd the OPCODES for each and every instruction and we feed it alone inside a trainer kit. Those opcodes with its description are given below. The OPCODE sheet without description is also given in the main page.
  • 45.
  • 46.
  • 47.
  • 48. Calculate the sum of series of numbers Multiply two 8-bit numbers Divide a 16 bit number by a 8-bit number Find the negative numbers in a block of data. Find the largest of given numbers Count number of one's in a number Arrange in ascending order Calculate the sum of series of even numbers Calculate the sum of series of odd numbers Find the square of given number Search a byte in a given number Add two decimal numbers of 6 digit each Add each element of array with the elements of another array Separate even numbers from given numbers Transfer contents to overlapping memory blocks Add parity bit to 7-bit ASCII characters Find the number of negative, zero and positive numbers Inserting string in a given array of characters Deleting string in a given array of characters Multiply two eight bit numbers with shift and add method Divide 16-bit number with 8-bit number using shifting technique Sub routine to perform the task of DAA Program to test RAM Program to generate Fibonacci number Generate a delay of 0.4 seconds Arrange in Descending Order Data transfer from one memory block to other memory block. Find the factorial of a number Find the Square Root of a given number Split a HEX data into two nibbles and store it Add two 4-digit BCD numbers Subtraction of two BCD numbers Multiply two 2-digit BCD numbers Generate and display binary up counter Generate and display BCD up counter with frequency 1Hz Generate and display BCD down counter Generate and display the contents of decimal counter Debug the delay routine 2-Digit BCD to binary conversion. Binary to BCD conversion Find the 7-segment codes for given numbers Find the ASCII character ASCII to Decimal Conversion HEX to Decimal conversion HEX to binary conversion
  • 49. Store 8-bit data in memory Statement: Store the data byte 32H into memory location 4000H. Program 1: MVI A, 52H : Store 32H in the accumulator STA 4000H : Copy accumulator contents at address 4000H HLT : Terminate program execution Program 2: LXI H : Load HL with 4000H MVI M : Store 32H in memory location pointed by HL register pair (4000H) HLT : Terminate program execution Note: The result of both programs will be the same. In program 1 direct addressing instruction is used, whereas in program 2 indirect addressing instruction is used. Statement: Exchange the contents of memory locations 2000H and 4000H. Program 1: LDA 2000H : Get the contents of memory location 2000H into accumulator MOV B, A : Save the contents into B register LDA 4000H : Get the contents of memory location 4000Hinto accumulator STA 2000H : Store the contents of accumulator at address 2000H MOV A, B : Get the saved contents back into A register STA 4000H : Store the contents of accumulator at address 4000H
  • 50. Program 2: LXI H 2000H : Initialize HL register pair as a pointer to memory location 2000H. LXI D 4000H : Initialize DE register pair as a pointer to memory location 4000H. MOV B, M : Get the contents of memory location 2000H into B register. LDAX D : Get the contents of memory location 4000H into A register. MOV M, A : Store the contents of A register into memory location 2000H. MOV A, B : Copy the contents of B register into accumulator. STAX D : Store the contents of A register into memory location 4000H. HLT : Terminate program execution. Note: In Program 1, direct addressing instructions are used, whereas in Program 2, indirect addressing instructions are used. Statement: Add the contents of memory locations 4000H and 4001H and place the result in memory location 4002H. Sample problem (4000H) = 14H (4001H) = 89H Result = 14H + 89H = 9DH Source program LXI H 4000H : HL points 4000H MOV A, M : Get first operand INX H : HL points 4001H
  • 51. ADD M : Add second operand INX H : HL points 4002H MOV M, A : Store result at 4002H HLT : Terminate program execution Flowchart Note: In Program 1, direct addressing instructions are used, whereas in Program 2, indirect addressing instructions are used. Statement: Add the 16-bit number in memory locations 4000H and 4001H to the 16-bit number in memory locations 4002H and 4003H. The most significant eight bits of the two numbers to be added are in memory locations 4001H and 4003H. Store the result in memory locations 4004H and 4005H with the most significant byte in memory location 4005H. Program - 5.a: Add two 16-bit numbers - Source Program 1 Sample problem: (4000H) = 15H
  • 52. (4001H) = 1CH (4002H) = B7H (4003H) = 5AH Result = 1C15 + 5AB7H = 76CCH (4004H) = CCH (4005H) = 76H Source Program 1: LHLD 4000H : Get first I6-bit number in HL XCHG : Save first I6-bit number in DE LHLD 4002H : Get second I6-bit number in HL MOV A, E : Get lower byte of the first number ADD L : Add lower byte of the second number MOV L, A : Store result in L register MOV A, D : Get higher byte of the first number ADC H : Add higher byte of the second number with CARRY MOV H, A : Store result in H register SHLD 4004H : Store I6-bit result in memory locations 4004H and 4005H. HLT : Terminate program execution Flowchart
  • 53. Program - 5b: Add two 16-bit numbers - Source Program 2 Source program 2: LHLD 4000H : Get first I6-bit number XCHG : Save first I6-bit number in DE LHLD 4002H : Get second I6-bit number in HL DAD D : Add DE and HL SHLD 4004H : Store I6-bit result in memory locations 4004H and 4005H. HLT : Terminate program execution NOTE: In program 1, eight bit addition instructions are used (ADD and ADC) and addition is performed in two steps. First lower byte addition using ADD instruction and then higher byte addition using ADC instruction.In program 2, 16-bit addition instruction (DAD) is used.
  • 54. Statement: Subtract the contents of memory location 4001H from the memory location 2000H and place the result in memory location 4002H. Program - 4: Subtract two 8-bit numbers Sample problem: (4000H) = 51H (4001H) = 19H Result = 51H - 19H = 38H Source program: LXI H, 4000H : HL points 4000H MOV A, M : Get first operand INX H : HL points 4001H SUB M : Subtract second operand INX H : HL points 4002H MOV M, A : Store result at 4002H. HLT : Terminate program execution Flowchart
  • 55. Statement: Add the contents of memory locations 40001H and 4001H and place the result in the memory locations 4002Hand 4003H. Sample problem: (4000H) = 7FH (400lH) = 89H Result = 7FH + 89H = lO8H (4002H) = 08H (4003H) = 0lH Source program: LXI H, 4000H :HL Points 4000H MOV A, M :Get first operand INX H :HL Points 4001H ADD M :Add second operand INX H :HL Points 4002H
  • 56. MOV M, A :Store the lower byte of result at 4002H MVIA, 00 :Initialize higher byte result with 00H ADC A :Add carry in the high byte result INX H :HL Points 4003H MOV M, A :Store the higher byte of result at 4003H HLT :Terminate program execution Flowchart Statement: Subtract the 16-bit number in memory locations 4002H and 4003H from the 16-bit number in memory locations 4000H and 4001H. The most significant eight bits of the two numbers are in memory locations 4001H and 4003H. Store the result in memory locations 4004H and 4005H with the most significant byte in memory location 4005H. Sample problem: (4000H) = 19H
  • 57. (400IH) = 6AH (4004H) = I5H (4003H) = 5CH Result = 6A19H - 5C15H = OE04H (4004H) = 04H (4005H) = OEH Source program: LHLD 4000H : Get first 16-bit number in HL XCHG : Save first 16-bit number in DE LHLD 4002H : Get second 16-bit number in HL MOV A, E : Get lower byte of the first number SUB L : Subtract lower byte of the second number MOV L, A : Store the result in L register MOV A, D : Get higher byte of the first number SBB H : Subtract higher byte of second number with borrow MOV H, A : Store l6-bit result in memory locations 4004H and 4005H. SHLD 4004H : Store l6-bit result in memory locations 4004H and 4005H. HLT : Terminate program execution. Flowchart
  • 58. Statement: Find the l's complement of the number stored at memory location 4400H and store the complemented number at memory location 4300H. Sample problem: (4400H) = 55H Result = (4300B) = AAB Source program: LDA 4400B : Get the number CMA : Complement number STA 4300H : Store the result HLT : Terminate program execution
  • 59. Flowchart Statement: Find the 2's complement of the number stored at memory location 4200H and store the complemented number at memory location 4300H. Sample problem: (4200H) = 55H Result = (4300H) = AAH + 1 = ABH Source program: LDA 4200H : Get the number CMA : Complement the number ADI, 01 H : Add one in the number STA 4300H : Store the result HLT : Terminate program execution Flowchart
  • 60. Statement: Pack the two unpacked BCD numbers stored in memory locations 4200H and 4201H and store result in memory location 4300H. Assume the least significant digit is stored at 4200H. Sample problem: (4200H) = 04 (4201H) = 09 Result = (4300H) = 94 Source program:  LDA 4201H : Get the Most significant BCD digit  RLC  RLC  RLC  RLC : Adjust the position of the second digit (09 is changed to 90)  ANI FOH : Make least significant BCD digit zero  MOV C, A : store the partial result  LDA 4200H : Get the lower BCD digit  ADD C : Add lower BCD digit  STA 4300H : Store the result  HLT : Terminate program execution Flowchart
  • 61. Statement: Two digit BCD number is stored in memory location 4200H. Unpack the BCD number and store the two digits in memory locations 4300H and 4301H such that memory location 4300H will have lower BCD digit. Sample problem: (4200H) = 58 Result = (4300H) = 08 and (4301H) = 05 Source program: LDA 4200H : Get the packed BCD number ANI FOH : Mask lower nibble RRC RRC
  • 62. RRC RRC : Adjust higher BCD digit as a lower digit STA 4301H : Store the partial result LDA 4200H : .Get the original BCD number ANI OFH : Mask higher nibble STA 4201H : Store the result HLT : Terminate program execution Flowchart Statement: Read the program given below and state the contents of all registers after the execution of each instruction in sequence. Main program: 4000H LXI SP, 27FFH
  • 63. 4003H LXI H, 2000H 4006H LXI B, 1020H 4009H CALL SUB 400CH HLT Subroutine program: 4100H SUB: PUSH B 4101H PUSH H 4102H LXI B, 4080H 4105H LXI H, 4090H 4108H SHLD 2200H 4109H DAD B 410CH POP H 410DH POP B 410EH RET Note: The table given gives the instruction sequence and the contents of all registers and stack after execution of each instruction. TABLE
  • 64. Statement: Write a program to shift an eight bit data four bits right. Assume data is in register C. Sample problem: (4200H) = 58 Result = (4300H) = 08 and (4301H) = 05 Source program 1:  MOV A, C  RAR  RAR  RAR  RAR  MOV C, A  HLT Flowchart for Source program1
  • 65. Statement: Write a program to shift a 16 bit data, 1 bit right. Assume that data is in BC register pair. Source program 2  MOV A, B  RAR  MOV B, A  MOV A, C  RAR  MOV C, A  HLT Flowchart for Source program1 Statement: Program to shift a 16-bit data 1 bit left. Assume data is in the HL register Source Program Statement: Write a set of instructions to alter the contents of flag register in 8085.
  • 66.  PUSH PSW: Save flags on stack  POP H: Retrieve flags in 'L'  MOV A, L :Flags in accumulator  CMA:Complement accumulator  MOV L, A:Accumulator in 'L'  PUSH H:Save on stack  POP PSW:Back to flag register  HLT:Terminate program execution Statement: Calculate the sum of series of numbers. The length of the series is in memory location 4200H and the series begins from memory location 4201H. a. Consider the sum to be 8 bit number. So, ignore carries. Store the sum at memory location 4300H. b. Consider the sum to be 16 bit number. Store the sum at memory locations 4300H and 4301H. Sample problem 1: 4200H = 04H 4201H = 10H 4202H = 45H 4203H = 33H 4204H = 22H Result = 10 +41 + 30 + 12 = H 4300H = H Source program 1: LDA 4200H MOV C, A : Initialize counter SUB A : sum = 0 LXI H, 420lH : Initialize pointer Flowchart for Source program1
  • 67. BACK: ADD M : SUM = SUM + data INX H : increment pointer DCR C : Decrement counter JNZ BACK : if counter 0 repeat STA 4300H : Store sum HLT : Terminate program execution Sample problem 2: 4200H = 04H 420lH = 9AH 4202H = 52H 4203H = 89H 4204H = 3EH Result = 9AH + 52H + 89H + 3EH = H 4300H = B3H Lower byte 4301H = 0lH Higher byte Source program 2 LDA 4200H MOV C, A : Initialize counter LXI H, 4201H : Initialize pointer SUB A :Sum low = 0
  • 68. MOV B, A : Sum high = 0 BACK: ADD M : Sum = sum + data JNC SKIP INR B : Add carry to MSB of SUM SKIP: INX H : Increment pointer DCR C : Decrement counter JNZ BACK : Check if counter 0 repeat STA 4300H : Store lower byte MOV A, B STA 4301H : Store higher byte HLT :Terminate program execution Statement: Multiply two 8-bit numbers stored in memory locations 2200H and 2201H by repetitive addition and store the result in memory locations 2300H and 2301H. Sample problem 1: (2200H) = 03H (2201H) = B2H Result = B2H + B2H + B2H = 216H = 216H (2300H) = 16H (2301H) = 02H Source program :  LDA 2200H  MOV E, A  MVI D, 00 : Get the first number in DE register pair Flowchart for program
  • 69.  LDA 2201H  MOV C, A : Initialize counter  LX I H, 0000 H : Result = 0  BACK: DAD D : Result = result + first number  DCR C : Decrement count  JNZ BACK : If count 0 repeat  SHLD 2300H : Store result  HLT : Terminate program execution Statement: Divide 16 bit number stored in memory locations 2200H and 2201H by the 8 bit number stored at memory location 2202H. Store the quotient in memory locations 2300H and 2301H and remainder in memory locations 2302H and 2303H. Sample problem 1: (2200H) = 60H (2201H) = A0H (2202H) = l2H Result = A060H/12H = 8E8H Quotient and 10H remainder (2300H) = E8H (2301H) = 08H (2302H= 10H (2303H) 00H Source program : Flowchart for program
  • 70.  LHLD 2200H : Get the dividend  LDA 2202H : Get the divisor  MOV C, A  LXI D, 0000H : Quotient = 0  BACK: MOV A, L  SUB C : Subtract divisor  MOV L, A : Save partial result  JNC SKIP : if CY 1 jump  DCR H : Subtract borrow of previous subtraction  SKIP: INX D : Increment quotient  MOV A, H  CPI, 00 : Check if dividend < divisor  JNZ BACK : if no repeat  MOV A, L  CMP C  JNC BACK  SHLD 2302H : Store the remainder  XCHG  SHLD 2300H : Store the quotient  HLT : Terminate program execution Statement: Find the number of negative elements (most significant bit 1) in a block of data. The length of the block is in memory location 2200H and the block itself begins in memory location 2201H. Store the number of negative elements in memory location 2300H Sample problem 1: (2200H) = 04H (2201H) = 56H (2202H) = A9H (2203H) = 73H (2204H) = 82H Result = 02 since 2202H and 2204H contain numbers with a MSB of 1. Source program : Flowchart for program
  • 71.  LDA 2200H  MOV C, A : Initialize count  MVI B, 00 : Negative number = 0  LXI H, 2201H : Initialize pointer  BACK: MOV A, M : Get the number  ANI 80H : Check for MSB  JZ SKIP : If MSB = 1  INR B : Increment negative number count  SKIP: INX H : Increment pointer  DCR C : Decrement count  JNZ BACK : If count 0 repeat  MOV A, B  STA 2300H : Store the result  HLT : Terminate program execution Statement: Find the largest number in a block of data. The length of the block is in memory location 2200H and the block itself starts from memory location 2201H.Store the maximum number in memory location 2300H. Assume that the numbers in the block are all 8 bit unsigned binary numbers. Sample problem 1: (2200H) = 04 (2201H) = 34H (2202H) = A9H (2203H) = 78H (2204H) =56H
  • 72. Result = (2202H) = A9H Source program :  LDA 2200H  MOV C, A : Initialize counter  XRA A : Maximum = Minimum possible value = 0  LXI H, 2201H : Initialize pointer  BACK: CMP M : Is number> maximum  JNC SKIP : Yes, replace maximum  MOV A, M  SKIP: INX H  DCR C  JNZ BACK  STA 2300H : Store maximum number  HLT : Terminate program execution Flowchart for program Statement: Write a program to count number of l's in the contents of D register and store the count in the B register. Sample problem 1: (2200H) = 04
  • 73. (2201H) = 34H (2202H) = A9H (2203H) = 78H (2204H) =56H Result = (2202H) = A9H Source program :  MVI B, 00H  MVI C, 08H  MOV A, D  BACK: RAR  JNC SKIP  INR B  SKIP: DCR C  JNZ BACK  HLT Flowchart for program Statement: Write a program to sort given 10 numbers from memory location 2200H in the ascending order. Source program :  MVI B, 09 : Initialize counter  START : LXI H, 2200H: Initialize memory pointer  MVI C, 09H : Initialize counter 2  BACK: MOV A, M : Get the number
  • 74.  INX H : Increment memory pointer  CMP M : Compare number with next number  JC SKIP : If less, don't interchange  JZ SKIP : If equal, don't interchange  MOV D, M  MOV M, A  DCX H  MOV M, D  INX H : Interchange two numbers  SKIP:DCR C : Decrement counter 2  JNZ BACK : If not zero, repeat  DCR B : Decrement counter 1  JNZ START  HLT : Terminate program execution Flowchart for program Statement: Calculate the sum of series of even numbers from the list of numbers. The length of the list is in memory location 2200H and the series itself begins from memory location 2201H. Assume the sum to be 8 bit number so you can ignore carries and store the sum at memory location 2210H. Sample problem 1: 2200H= 4H 2201H= 20H
  • 75. 2202H= l5H 2203H= l3H 2204H= 22H Result 22l0H= 20 + 22 = 42H Source program :  LDA 2200H  MOV C, A : Initialize counter  MVI B, 00H : sum = 0  LXI H, 2201H : Initialize pointer  BACK: MOV A, M : Get the number  ANI 0lH : Mask Bit l to Bit7  JNZ SKIP : Don't add if number is ODD  MOV A, B : Get the sum  ADD M : SUM = SUM + data  MOV B, A : Store result in B register  SKIP: INX H : increment pointer  DCR C : Decrement counter  JNZ BACK : if counter 0 repeat  STA 2210H : store sum  HLT : Terminate program execution Flowchart for program Statement: Calculate the sum of series of odd numbers from the list of numbers. The length of the list is in memory location 2200H and the series itself begins from memory location 2201H. Assume the sum to be 16-bit. Store the sum at memory locations 2300H and 2301H. Sample problem 1: 2200H = 4H
  • 76. 2201H= 9AH 2202H= 52H 2203H= 89H 2204H= 3FH Result = 89H + 3FH = C8H 2300H= H Lower byte 2301H = H Higher byte Source program :  LDA 2200H  MOV C, A : Initialize counter  LXI H, 2201H : Initialize pointer  MVI E, 00 : Sum low = 0  MOV D, E : Sum high = 0  BACK: MOV A, M : Get the number  ANI 0lH : Mask Bit 1 to Bit7  JZ SKIP : Don't add if number is even  MOV A, E : Get the lower byte of sum  ADD M : Sum = sum + data  MOV E, A : Store result in E register  JNC SKIP  INR D : Add carry to MSB of SUM  SKIP: INX H : Increment pointer Flowchart for program Statement: Find the square of the given numbers from memory location 6100H and store the result from memory location 7000H.
  • 77. Sample problem 1: 2200H = 4H 2201H= 9AH 2202H= 52H 2203H= 89H 2204H= 3FH Result = 89H + 3FH = C8H 2300H= H Lower byte 2301H = H Higher byte Source program :  LXI H, 6200H : Initialize lookup table pointer  LXI D, 6100H : Initialize source memory pointer  LXI B, 7000H : Initialize destination memory pointer  BACK: LDAX D : Get the number  MOV L, A : A point to the square  MOV A, M : Get the square  STAX B : Store the result at destination memory location  INX D : Increment source memory pointer  INX B : Increment destination memory pointer  MOV A, C  CPI 05H : Check for last number  JNZ BACK : If not repeat  HLT : Terminate program execution Statement: Search the given byte in the list of 50 numbers stored in the consecutive memory locations and store the address of memory location in the memory locations 2200H and 2201H. Assume byte is in the C register and starting address of the list is 2000H. If byte is not found store 00 at 2200H and 2201H. Source program :  LX I H, 2000H : Initialize memory pointer 52H  MVI B, 52H : Initialize counter  BACK: MOV A, M : Get the number
  • 78.  CMP C : Compare with the given byte  JZ LAST : Go last if match occurs  INX H : Increment memory pointer  DCR B : Decrement counter  JNZ B : I f not zero, repeat  LXI H, 0000H  SHLD 2200H  JMP END : Store 00 at 2200H and 2201H  LAST: SHLD 2200H : Store memory address  END: HLT : Stop Flowchart for program Statement: Two decimal numbers six digits each, are stored in BCD package form. Each number occupies a sequence of byte in the memory. The starting address of first number is 6000H Write an assembly language program that adds these two numbers and stores the sum in the same format starting from memory location 6200H. Source program :  LXI H, 6000H : Initialize pointer l to first number  LXI D, 6l00H : Initialize pointer2 to second number  LXI B, 6200H : Initialize pointer3 to result  STC  CMC : Carry = 0  BACK: LDAX D : Get the digit  ADD M : Add two digits  DAA : Adjust for decimal
  • 79.  STAX.B : Store the result  INX H : Increment pointer 1  INX D : Increment pointer2  INX B : Increment result pointer  MOV A, L  CPI 06H : Check for last digit  JNZ BACK : If not last digit repeat  HLT : Terminate program execution Flowchart for program Statement: Two decimal numbers six digits each, are stored in BCD package form. Each number occupies a sequence of byte in the memory. The starting address of first number is 6000H Write an assembly language program that adds these two numbers and stores the sum in the same format starting from memory location 6200H. Source program :  LXI H, 6000H : Initialize pointer l to first number  LXI D, 6l00H : Initialize pointer2 to second number  LXI B, 6200H : Initialize pointer3 to result  STC  CMC : Carry = 0  BACK: LDAX D : Get the digit  ADD M : Add two digits
  • 80.  DAA : Adjust for decimal  STAX.B : Store the result  INX H : Increment pointer 1  INX D : Increment pointer2  INX B : Increment result pointer  MOV A, L  CPI 06H : Check for last digit  JNZ BACK : If not last digit repeat  HLT : Terminate program execution Flowchart for program Statement: Write an assembly language program to separate even numbers from the given list of 50 numbers and store them in the another list starting from 2300H. Assume starting address of 50 number list is 2200H. Source program :  LXI H, 2200H : Initialize memory pointer l  LXI D, 2300H : Initialize memory pointer2  MVI C, 32H : Initialize counter  BACK:MOV A, M : Get the number  ANI 0lH : Check for even number  JNZ SKIP : If ODD, don't store  MOV A, M : Get the number  STAX D : Store the number in result list  INX D : Increment pointer 2  SKIP: INX H : Increment pointer l  DCR C : Decrement counter
  • 81.  JNZ BACK : If not zero, repeat  HLT : Stop Flowchart for program Statement: Write assembly language program with proper comments for the following: A block of data consisting of 256 bytes is stored in memory starting at 3000H. This block is to be shifted (relocated) in memory from 3050H onwards. Do not shift the block or part of the block anywhere else in the memory. Two blocks (3000 - 30FF and 3050 - 314F) are overlapping. Therefore it is necessary to transfer last byte first and first byte last. Source Program:  MVI C, FFH : Initialize counter  LX I H, 30FFH : Initialize source memory pointer 3l4FH  LXI D, 314FH : Initialize destination memory pointer  BACK: MOV A, M : Get byte from source memory block  STAX D : Store byte in the destination memory block  DCX H : Decrement source memory pointer  DCX : Decrement destination memory pointer  DCR C : Decrement counter  JNZ BACK : If counter 0 repeat  HLT : Stop execution Statement: Add even parity to a string of 7-bit ASCII characters. The length of the string is in memory location 2040H and the string itself begins in memory location 2041H. Place even parity in the most significant bit of each character.
  • 82. Source program :  LXI H, 2040H  MOV C ,M : Counter for character  REPEAT:INX H : Memory pointer to character  MOV A,M : Character in accumulator  ORA A : ORing with itself to check parity.  JPO PAREVEN : If odd parity place  ORI 80H even parity in D7 (80).  PAREVEN:MOV M , A : Store converted even parity character.  DCR C : Decrement counter.  JNZ REPEAT : If not zero go for next character.  HLT : Terminate program execution Flowchart for program Statement: A list of 50 numbers is stored in memory, starting at 6000H. Find number of negative, zero and positive numbers from this list and store these results in memory locations 7000H, 7001H, and 7002H respectively. Source program :  LXI H, 6000H : Initialize memory pointer  MVI C, 00H : Initialize number counter  MVI B, 00H : Initialize negative number counter  MVI E, 00H : Initialize zero number counter  BEGIN:MOV A, M : Get the number  CPI 00H : If number = 0  JZ ZERONUM : Goto zeronum  ANI 80H : If MSB of number = 1i.e. if  JNZ NEGNUM number is negative goto NEGNUM  INR D : otherwise increment positive number counter
  • 83.  JMP LAST  ZERONUM:INR E : Increment zero number counter  JMP LAST  NEGNUM:INR B : Increment negative number counter  LAST:INX H : Increment memory pointer  INR C : Increment number counter  MOV A, C  CPI 32H : If number counter = 5010 then  JNZ BEGIN : Store otherwise check next number  LXI H, 7000 : Initialize memory pointer.  MOV M, B : Store negative number.  INX H  MOV M, E : Store zero number.  INX H  MOV M, D : Store positive number.  HLT : Terminate execution Flowchart for program Statement: Write an 8085 assembly language program to insert a string of four characters from the tenth location in the given array of 50 characters. Solution: Step 1: Move bytes from location 10 till the end of array by four bytes downwards.
  • 84. Step 2: Insert four bytes at locations 10, 11, 12 and 13. Source program :  LXI H, 2l31H : Initialize pointer at the last location of array.  LXI D, 2l35H : Initialize another pointer to point the last location of array after insertion.  AGAIN: MOV A, M : Get the character  STAX D : Store at the new location  DCX D : Decrement destination pointer  DCX H : Decrement source pointer  MOV A, L : [check whether desired  CPI 05H bytes are shifted or not]  JNZ AGAIN : if not repeat the process  INX H : adjust the memory pointer  LXI D, 2200H : Initialize the memory pointer to point the string to be inserted  REPE: LDAX D : Get the character  MOV M, A : Store it in the array  INX D : Increment source pointer  INX H : Increment destination pointer  MOV A, E : [Check whether the 4 bytes  CPI 04 are inserted]  JNZ REPE : if not repeat the process  HLT : stop Statement: Write an 8085 assembly language program to delete a string of 4 characters from the tenth location in the given array of 50 characters. Solution: Shift bytes from location 14 till the end of array upwards by 4 characters i.e. from location 10 onwards. Source program :  LXI H, 2l0DH :Initialize source memory pointer at the 14thlocation of the array.  LXI D, 2l09H : Initialize destination memory pointer at the 10th location of the array.  MOV A, M : Get the character  STAX D : Store character at new location  INX D : Increment destination pointer  INX H : Increment source pointer  MOV A, L : [check whether desired  CPI 32H bytes are shifted or not]  JNZ REPE : if not repeat the process
  • 85.  HLT : stop Statement: Multiply the 8-bit unsigned number in memory location 2200H by the 8-bit unsigned number in memory location 2201H. Store the 8 least significant bits of the result in memory location 2300H and the 8 most significant bits in memory location 2301H. Sample problem: (2200) = 1100 (0CH) (2201) = 0101 (05H) Multiplicand = 1100 (1210) Multiplier = 0101 (510) Result = 12 x 5 = (6010) Source program :  LXI H, 2200 : Initialize the memory pointer  MOV E, M : Get multiplicand  MVI D, 00H : Extend to 16-bits  INX H : Increment memory pointer  MOV A, M : Get multiplier  LXI H, 0000 : Product = 0  MVI B, 08H : Initialize counter with count 8  MULT: DAD H : Product = product x 2  RAL  JNC SKIP : Is carry from multiplier 1 ?  DAD D : Yes, Product =Product + Multiplicand  SKIP: DCR B : Is counter = zero  JNZ MULT : no, repeat  SHLD 2300H : Store the result  HLT : End of program Flowchart for program Statement: Divide the 16-bit unsigned number in memory locations 2200H and 2201H (most significant bits in 2201H) by the B-bit unsigned number in memory location 2300H store the quotient in memory location 2400H and remainder in 2401H. Assumption: The most significant bits of both the divisor and dividend are zero.
  • 86. Source program :  MVI E, 00 : Quotient = 0  LHLD 2200H : Get dividend  LDA 2300 : Get divisor  MOV B, A : Store divisor  MVI C, 08 : Count = 8  NEXT: DAD H : Dividend = Dividend x 2  MOV A, E  RLC  MOV E, A : Quotient = Quotient x 2  MOV A, H  SUB B : Is most significant byte of Dividend > divisor  JC SKIP : No, go to Next step  MOV H, A : Yes, subtract divisor  INR E : and Quotient = Quotient + 1  SKIP:DCR C : Count = Count - 1  JNZ NEXT : Is count =0 repeat  MOV A, E  STA 2401H : Store Quotient  Mov A, H  STA 2410H : Store remainder  HLT : End of program. Flowchart for program Statement: Assume the DAA instruction is not present. Write a sub routine which will perform the same task as DAA. Sample Problem: Execution of DAA instruction: 1. If the value of the low order four bits (03-00) in the accumulator is greater than 9 or if auxiliary carry flag is set, the instruction adds 6 '(06) to the low-order four bits. 2. If the value of the high-order four bits (07-04) in the accumulator is greater than 9 or if carry flag is set, the instruction adds 6(06) to the high-order four bits. Source program :  LXI SP, 27FFH : Initialize stack pointer  MOV E, A : Store the contents of accumulator  ANI 0FH : Mask upper nibble  CPI 0A H : Check if number is greater than 9 Flowchart for program
  • 87.  JC SKIP : if no go to skip  MOV A, E : Get the number  ADI 06H : Add 6 in the number  JMP SECOND : Go for second check  SKIP: PUSH PSW : Store accumulator and flag contents in stack  POP B : Get the contents of accumulator in B register and flag register contents in C register  MOV A, C : Get flag register contents in accumulator  ANI 10H : Check for bit 4  JZ SECOND : if zero, go for second check  MOV A, E : Get the number  ADI 06 : Add 6 in the number  SECOND: MOV E, A : Store the contents of accumulator  ANI FOH : Mask lower nibble  RRC  RRC  RRC  RRC : Rotate number 4 bit right  CPI 0AH : Check if number is greater than 9  JC SKIPl : if no go to skip 1  MOV A, E : Get the number  ADI 60 H : Add 60 H in the number  JMP LAST : Go to last  SKIP1: JNC LAST : if carry flag = 0 go to last  MOV A, E : Get the number  ADI 60 H : Add 60 H in the number  LAST: HLT Statement: To test RAM by writing '1' and reading it back and later writing '0' (zero) and reading it back. RAM addresses to be checked are 40FFH to 40FFH. In case of any error, it is indicated by writing 01H at port 10H. Source program :  LXI H, 4000H : Initialize memory pointer  BACK: MVI M, FFH : Writing '1' into RAM  MOV A, M : Reading data from RAM  CPI FFH : Check for ERROR  JNZ ERROR : If yes go to ERROR  INX H : Increment memory pointer  MOV A, H  CPI SOH : Check for last check  JNZ BACK : If not last, repeat
  • 88.  LXI H, 4000H : Initialize memory pointer  BACKl: MVI M, OOH : Writing '0' into RAM  MOV A, M : Reading data from RAM  CPI OOH : Check for ERROR  INX H : Increment memory pointer  MOV A, H  CPI SOH : Check for last check  JNZ BACKl : If not last, repeat  HLT : Stop Execution Statement: Write an assembly language program to generate fibonacci number. Source program :  MVI D, COUNT : Initialize counter  MVI B, 00 : Initialize variable to store previous number  MVI C, 01 : Initialize variable to store current number  MOV A, B :[Add two numbers]  BACK: ADD C :[Add two numbers]  MOV B, C : Current number is now previous number  MOV C, A : Save result as a new current number  DCR D : Decrement count  JNZ BACK : if count 0 go to BACK  HLT : Stop. Statement: Write a program to generate a delay of 0.4 sec if the crystal frequency is 5 MHz. Calculation: In 8085, the operating frequency is half of the crystal frequency, ie.Operating frequency = 5/2 = 2.5 MHz Time for one T -state = Number of T-states required = 1 x 106 Source program :  LXI B, count : 16 - bit count  BACK: DCX B : Decrement count  MOV A, C  ORA B : Logically OR Band C
  • 89.  JNZ BACK : If result is not zero repeat Statement: Arrange an array of 8 bit unsigned no in descending order  START:MVI B, 00 ; Flag = 0  LXI H, 4150 ; Count = length of array  MOV C, M  DCR C ; No. of pair = count -1  INX H ; Point to start of array  LOOP:MOV A, M ; Get kth element  INX H  CMP M ; Compare to (K+1) th element  JNC LOOP 1 ; No interchange if kth >= (k+1) th  MOV D, M ; Interchange if out of order  MOV M, A ;  DCR H  MOV M, D  INX H  MVI B, 01H ; Flag=1  LOOP 1:DCR C ; count down  JNZ LOOP ;  DCR B ; is flag = 1?  JZ START ; do another sort, if yes  HLT ; If flag = 0, step execution Statement: Transfer ten bytes of data from one memory to another memory block. Source memory block starts from memory location 2200H where as destination memory block starts from memory location 2300H. LXI H, 4150 : Initialize memory pointer MVI B, 08 : count for 8-bit MVI A, 54 LOOP : RRC JC LOOP1 MVI M, 00 : store zero it no carry JMP COMMON LOOP2: MVI M, 01 : store one if there is a carry COMMON: INX H DCR B : check for carry JNZ LOOP HLT : Terminate the program
  • 90. Statement: Program to calculate the factorial of a number between 0 to 8 Source program :  LXI SP, 27FFH ; Initialize stack pointer  LDA 2200H ; Get the number  CPI 02H ; Check if number is greater than 1  JC LAST  MVI D, 00H ; Load number as a result  MOV E, A  DCR A  MOV C,A ; Load counter one less than number  CALL FACTO ; Call subroutine FACTO  XCHG ; Get the result in HL  SHLD 2201H ; Store result in the memory  JMP END  LAST: LXI H, 000lH ; Store result = 01  END: SHLD 2201H  HLT Subroutine Program:  FACTO:LXI H, 0000H  MOV B, C ; Load counter  BACK: DAD D  DCR B  JNZ BACK ; Multiply by successive addition  XCHG ; Store result in DE  DCR C ; Decrement counter  CNZ FACTO ; Call subroutine FACTO  RET ; Return to main program Flowchart for program
  • 91. Statement: Write a program to find the Square Root of an 8 bit binary number. The binary number is stored in memory location 4200H and store the square root in 4201H. Source program :  LDA 4200H : Get the given data(Y) in A register  MOV B,A : Save the data in B register  MVI C,02H : Call the divisor(02H) in C register  CALL DIV : Call division subroutine to get initial value(X) in D-reg  REP: MOV E,D : Save the initial value in E-reg  MOV A,B : Get the dividend(Y) in A-reg  MOV C,D : Get the divisor(X) in C-reg  CALL DIV : Call division subroutine to get initial value(Y/X) in D-reg  MOV A, D : Move Y/X in A-reg  ADD E : Get the((Y/X) + X) in A-reg  MVI C, 02H : Get the divisor(02H) in C-reg  CALL DIV : Call division subroutine to get ((Y/X) + X)/2 in D-reg. This is XNEW  MOV A, E : Get Xin A-reg  CMP D : Compare X and XNEW  JNZ REP : If XNEW is not equal to X, then repeat  STA 4201H : Save the square root in memory  HLT : Terminate program execution Subroutine Program:  DIV: MVI D, 00H : Clear D-reg for Quotient  NEXT:SUB C : Subtract the divisor from dividend Flowchart for Program Flowchart for subroutine
  • 92.  INR D : Increment the quotient  CMP C : Repeat subtraction until the  JNC NEXT : divisor is less than dividend  RET : Return to main program Note: The square root can be taken by an iterative technique. First, an initial value is assumed. Here, the initial value of square root is taken as half the value of given number. The new value of square root is computed by using an expression XNEW = (X + Y/X)/2 where, X is the initial value of square root and Y is the given number. Then, XNEW is compared with initial value. If they are not equal then the above process is repeated until X is equal to XNEW after taking XNEW as initial value. (i.e., X ←XNEW) Statement: Write a simple program to Split a HEX data into two nibbles and store it in memory Source program :  LXI H, 4200H : Set pointer data for array  MOV B,M : Get the data in B-reg  MOV A,B : Copy the data to A-reg  ANI OFH : Mask the upper nibble  INX H : Increment address as 4201  MOV M,A : Store the lower nibble in memory  MOV A,B : Get the data in A-reg  ANI FOH : Bring the upper nibble to lower nibble position  RRC  RRC  RRC  RRC  INX H  MOV M,A : Store the upper nibble in memory  HLT : Terminate program execution
  • 93. Statement: Add two 4 digit BCD numbers in HL and DE register pairs and store result in memory locations, 2300H and 2301H. Ignore carry after 16 bit. Sample Problem: (HL) =3629 (DE) =4738 Step 1 : 29 + 38 = 61 and auxiliary carry flag = 1 :.add 06 61 + 06 = 67 Step 2 : 36 + 47 + 0 (carry of LSB) = 7D Lower nibble of addition is greater than 9, so add 6. 7D + 06 = 83 Result = 8367 Source program :  MOV A, L : Get lower 2 digits of no. 1  ADD E : Add two lower digits  DAA : Adjust result to valid BCD  STA 2300H : Store partial result  MOV A, H : Get most significant 2 digits of number  ADC D : Add two most significant digits  DAA : Adjust result to valid BCD  STA 2301H : Store partial result  HLT : Terminate program execution. Flowchart for Program
  • 94. Statement: Subtract the BCD number stored in E register from the number stored in the D register. Source Program: MVI A,99H SUB E : Find the 99's complement of subtrahend INR A : Find 100's complement of subtrahend ADD D : Add minuend to 100's complement of subtrahend DAA : Adjust for BCD HLT : Terminate program execution
  • 95. Note: When two BCD numbers are subtracted, we can use DAA instruction for ajusting the result to BCD. Therefore, the subtraction of BCD number is carried out 10's complement or 100's complement. The 10's complement of a decimal number is equal to the 99's complement plus 1. The 99's complement of a number can be found by subtracting the number from 99. The steps for finding 100's complement BCD subtraction are :  Find the 100's complement of subtrahend  Add two numbers using BCD adition Statement: Write an assembly language program to multiply 2 BCD numbers Source Program:  MVI C, Multiplier : Load BCD multiplier  MVI B, 00 : Initialize counter  LXI H, 0000H : Result = 0000  MVI E, multiplicand : Load multiplicand  MVI D, 00H : Extend to 16-bits  BACK: DAD D : Result Result + Multiplicand  MOV A, L : Get the lower byte of the result  ADI, 00H  DAA : Adjust the lower byte of result to BCD.  MOV L, A : Store the lower byte of result  MOV A, H : Get the higher byte of the result  ACI, 00H  DAA : Adjust the higher byte of the result to BCD  MOV H, A : Store the higher byte of result.  MOV A, B : [Increment  ADI 01H : counter  DAA : adjust it to BCD and  MOV B,A : store it]  CMP C : Compare if count = multiplier  JNZ BACK : if not equal repeat  HLT : Stop Statement:
  • 96. Write a program for displaying binary up counter. Counter should count numbers from 00 to FFH and it should increment after every 0.5 sec.Assume operating frequency of 8085 equal to 2MHz. Display routine is available. Source program:  LXI SP, 27FFH : Initialize stack pointer  MVI C, OOH : Initialize counter  BACK: CALL Display : Call display subroutine  CALL Delay : Call delay subroutine  INR C : Increment counter  MOV A, C  CPI OOH : Check counter is > FFH  JNZ BACK : If not, repeat  HLT : Stop Delay Routine:  Delay: LXI B, count : Initialize count  BACK: DCX D : Decrement count  MOV A, E  ORA D : Logically OR D and E  JNZ BACK : If result is not 0 repeat  RET : Return to main program Flowchart for Program Flowchart for subroutine
  • 97. Statement: Write a program for displaying BCD up counter. Counter should count numbers from 00 to 99H and it should increment after every 1 sec. Assume operating frequency of 8085 equal to 3MHz. Display routine is available. Source program:  LXI SP, 27FFH : Initialize stack pointer  MVI C, OOH : Initialize counter  BACK: CALL Display : Call display subroutine  CALL Delay : Call delay subroutine  MOV A, C  ADI A, 0 1 : Increment counter  DAA : Adjust it for decimal  MOV C,A : Store count  CPI ,00 : Check count is > 99  JNZ BACK : If not, repeat  HLT : Stop Delay Routine:  Delay:MVI B, Multiplier-count : Initialize multiplier count  BACK 1 :LXI D, Initialize Count  BACK:DCX D : Decrement count  MOV A, E  ORA D : Logically OR D and E  JNZ BACK : If result is not a, repeat  DCR B : Decrement multiplier count  JNZ BACK 1 : If not zero, repeat  RET : Return to main program.
  • 98. Flowchart for Program Flowchart for delay routine
  • 99. Statement:Write a program for displaying BCD down counter. Counter should count numbers from 99 to 00 and it should increment after every 1 sec. Assume operating frequency of 8085 equal to 3MHz. Display routine is available. Source program 1:  LXI SP, 27FFH : Initialize stack pointer  MVI C, 99H : Initialize counter = 99  BACK:CALL Display : Call display subroutine  CALL Delay : Call delay subroutine  ADI 99H : See Addition below  DAA : Adjust for decimal  CPI 99H : Compare with last count  JNZ BACK :If no, repeat  HLT Source Program 2:  LXI SP, 27FFH : Initialize stack pointer  MVI C, 99H : Initialize counter = 99  BACK: CALL Display : Call display subroutine  CALL Delay : Call delay subroutine  MOV A, C : Get count
  • 100.  ANI 0FH : Check for lower nibble  JNZ SKIP : If it is not 0FH go to skip  MOV A,C : Else get the count  SBI ,06 : Subtract 06  MOV C,A : Store the count  DCR C : Decrement count  CPI 99H : Check it for last count  JNZ BACK : If not, repeat  HLT : Stop Flowchart for Program Statement: Write assembly language program to with proper comments for the following: To display decimal decrementing counter (99 to 00) at port 05 H with delay of half seconds between .each count. Write as well the delay routine giving delay of half seconds. Operating frequency of microprocessor is 3.072 MHz. Neglect delay for the main program. Source Program:
  • 101.  MVI C, 99H : Initialize counter  BACK: MOV A, C  ANI OF : Mask higher nibble  CPI OF  JNZ SKIP  MOV A, C  SUI 06 : Subtract 6 to adjust decimal count  MOV D, A  SKIP: MOV A, C  OUT 05 : send count on output port  CALL Delay : Wait for 0.5 seconds  DCR C : decrement count  MOV A, C  CPI FF  JNZ BACK : If not zero, repeat  HLT : Stop execution Delay subroutine:  Delay: LXI D, Count  Back: DCX D : 6 T-states  MOV A, D : 4 T-states  ORA E : 4 T-states  JNZ Back : 10 T-states  RET Statement:The delay routine given below is in infinite loop, identify the error and correct the program. Delay routine with error:
  • 102.  DELAY : LXI H, N  L1 : DCX H  JNZ L1 Sol.: 1) The fault in the above program is at instruction JNZ L1. This condition always evaluates to be true hence loops keep on executing and hence infinite loop. 2) Reason for infinite looping: - The instruction DCX H decrease the HL pair count one by one but it does not affect the zero flag. So when count reaches to OOOOH in HL pair zero flag is not affected and JNZ L1 evaluates to be true and loop continues. Now HL again decrements below OOOOH and HL becomes FFFFH and thus execution continues. 3) The modification in the program is as follows:  DELAY : LXI H, N :Load 16 bit count  L1 : DCX H : Decrement count  MOV A, L  ORA H : logically OR Hand L  JNZ L1 : If result is not 0 repeat Statement: Convert a 2-digit BCD number stored at memory address 2200H into its binary equivalent number and store the result in a memory location 2300H. Sample problem 1: (2200H) = 67H (2300H) = 6 x OAH + 7 = 3CH + 7 = 43H Source program :  LDA 2200H : Get the BCD number  MOV B, A : Save it  ANI OFH : Mask most significant four bits  MOV C, A : Save unpacked BCDI in C register  MOV A, B : Get BCD again  ANI FOH : Mask least significant four bits  RRC : Convert most significant four bits into unpacked BCD2  RRC  RRC  RRC  MOV B, A : Save unpacked BCD2 in B register  XRA A : Clear accumulator (sum = 0) Flowchart for program
  • 103.  MVI D, 0AH : Set D as a multiplier of 10  Sum: ADD D : Add 10 until (B) = 0  DCR B : Decrement BCD2 by one  JNZ SUM : Is multiplication complete? i if not, go back and add again  ADD C : Add BCD1  STA 2300H : Store the result  HLT : Terminate program execution Statement: Convert a 2-digit BCD number stored at memory address 2200H into its binary equivalent number and store the result in a memory location 2300H. Sample problem 1: (2200H) = 67H (2300H) = 6 x OAH + 7 = 3CH + 7 = 43H Source program :  LDA 2200H : Get the BCD number  MOV B, A : Save it  ANI OFH : Mask most significant four bits  MOV C, A : Save unpacked BCDI in C register  MOV A, B : Get BCD again  ANI FOH : Mask least significant four bits  RRC : Convert most significant four bits into unpacked BCD2 Flowchart for program
  • 104.  RRC  RRC  RRC  MOV B, A : Save unpacked BCD2 in B register  XRA A : Clear accumulator (sum = 0)  MVI D, 0AH : Set D as a multiplier of 10  Sum: ADD D : Add 10 until (B) = 0  DCR B : Decrement BCD2 by one  JNZ SUM : Is multiplication complete? i if not, go back and add again  ADD C : Add BCD1  STA 2300H : Store the result  HLT : Terminate program execution Statement: Write a main program and a conversion subroutine to convert the binary number stored at 6000H into its equivalent BCD number. Store the result from memory location 6100H. Sample problem : (6000) H = 8AH Source program :  LXI H, 6200H : Initialize lookup table pointer  LXI D, 6000H : Initialize source memory pointer  LXI B, 7000H : Initialize destination memory pointer  BACK: LDAX D : Get the number  MOV L, A : A point to the 7-segment code  MOV A, M : Get the 7-segment code  STAX B : Store the result at destination memory location  INX D : Increment source memory pointer  INX B : Increment destination memory pointer Flowchart for program
  • 105.  MOV A, C  CPI O5H : Check for last number  JNZ BACK : If not repeat  HLT : End of program Statement: Write an assembly language program to convert the contents of the five memory locations starting from 2000H into an ASCII character. Place the result in another five memory locations starting from 2200H. Sample Problem (2000H) = 1 (2001H) = 2 (2002H) = 9 (2003H) = A (2004H) = B Result:(2200H) = 31 (2201H) = 32 (2202H) = 39 (2203H) = 41 (2204H) = 42 Source program: LXI SP, 27FFH : Initialize stack pointer LXI H, 2000H : Source memory pointer LXI D, 2200H : Destination memory pointer MVI C, O5H : Initialize the counter BACK: MOV A, M : Get the number CALL ASCII : Call subroutine ASCII STAX D : Store result INX H : Increment source memory pointer INX D : Increment destination memory pointer DCR C : Decrement count by 1 CJNZ : if not zero, repeat HLT : Stop program execution subroutine ASCII ASCII: CPI, OAH : Check if number is OAR JNC NEXT : If yes go to next otherwise continue ADI 30H JMP LAST NEXT: ADI 37H
  • 106. LAST: RET : Return to main program Subroutine: Subroutine 'ASCII' converts a hexadecimal digit to ASCII.The digit is passed using accumulator and the result is stored in accumulator.Stack starts From 27FEH to 27FDH. Note: The ASCII Code (American Standard Code for Information Interchange) is commonly used for communication. In such cases we need to convert binary number to its ASCII equivalent. It is a seven bit code. In this code number 0 through 9 are represented as 30 through 39 respectively and letters A through Z are represented as 41H through 5AH. Therefore, by adding 30H we can convert number into its ASCII equivalent and by adding 37H we can convert letter to its ASCII equivalent. Statement: Convert the ASCII number in memory to its equivalent decimal number Source program :  LXI H, 4150 : Point to data  MOV A, M : Get operand