Assembly Language
Programming of 8085
Introduction
• A microprocessor executes instructions given by the user
• Instructions should be in a language known to the microprocessor
• Microprocessor understands the language of 0’s and 1’s only
• This language is called Machine Language
Example: 01001111
– Is a valid machine language instruction of 8085
– It copies the contents of one of the internal registers of 8085 to another
A Machine language program to add two numbers
Assembly Language of 8085
• It uses English like words to convey the action/meaning called as MNEMONICS
Example:
– MOV to indicate data transfer
– ADD to add two values
– SUB to subtract two values
Assembly language program to add two numbers
Note: Assembly language is specific to a given processor
Example:
Assembly language of 8085 is different than that of Motorola 6800 microprocessor
Microprocessor understands Machine Language only!
• Microprocessor cannot understand a program written in Assembly language
• A program known as Assembler is used to convert an Assembly language program to machine language
Low-level/High-level languages
• Machine language and Assembly language are both Microprocessor specific (Machine dependent) so
they are called Low-level languages.
• Machine independent languages are called High-level languages.
Example:
BASIC, PASCAL,C++,C,JAVA, etc.
A software called Compiler is required to convert a high-level language program to machine code.
Programming model of 8085
8085 Programming model
1. Six general-purpose registers
– B, C, D, E, H, L
– Can be combined as register pairs to perform 16-bit operations (BC, DE, HL)
2. Accumulator
– identified by name A
– This register is a part of ALU
– 8-bit data storage
– Performs arithmetic and logical operations
– Result of an operation is stored in accumulator
3. Flag Register
– This is also a part of ALU
– 8085 has five flags named
• Zero flag (Z)
• Carry flag (CY)
• Sign flag (S)
• Parity flag (P)
• Auxiliary Carry flag (AC)
• These flags are five flip-flops in flag register
• Execution of an arithmetic/logic operation can set or reset these flags
• Condition of flags (set or reset) can be tested through software
instructions
• 8085 uses these flags in decision-making process
4. Program Counter (PC)
– A 16-bit memory pointer register
– Used to sequence execution of program instructions
– Stores address of a memory location
• where next instruction byte is to be fetched by the 8085
– when 8085 gets busy to fetch current instruction from memory
• PC is incremented by one
• PC is now pointing to the address of next instruction
5. Stack Pointer Register
– a 16-bit memory pointer register
– Points to a location in Stack memory
– Beginning of the stack is defined by loading a 16-bit address in stack pointer register
A. Data Transfer (Copy) Operations
1. Load a 8-bit number in a Register
2. Copy from Register to Register
3. Copy between Register and Memory
4. Copy between Input/Output Port and Accumulator
5. Load a 16-bit number in a Register pair
6. Copy between Register pair and Stack memory
Example:
B. Arithmetic Operations
1. Addition of two 8-bit numbers
2. Subtraction of two 8-bit numbers
3. Increment/ Decrement a 8-bit number
Example:
C. Logical & Bit Manipulation Operations
1. AND two 8-bit numbers
2. OR two 8-bit numbers
3. Exclusive-OR two 8-bit numbers
4. Compare two 8-bit numbers
5. Complement
6. Rotate Left/Right Accumulator bits
Example:
D. Branching Operations
These operations are used to control the flow of program execution
1. Jumps
• Conditional jumps
• Unconditional jumps
2. Call & Return
• Conditional Call & Return
• Unconditional Call & Return
Example:
E. Machine Control Instructions
These instructions affect the operation of the processor
Example:
HLT Stop program execution
NOP Do not perform any operation
Addressing Modes of 8085
• Format of a typical Assembly language instruction is given below
[Label:] Mnemonic [Operands] [;comments]
HLT MVI A, 20H
MOV M, A ;Copy A to memory location whose address is stored in register pair HL
LOAD: LDA 2050H ;Load A with contents of memory location with address 2050H
READ: IN 07H ;Read data from Input port with address 07H
• The various formats of specifying operands are called addressing modes
• Addressing modes of 8085
1. Register Addressing
2. Immediate Addressing
3. Memory Addressing
4. Input/Output Addressing
Register Addressing
• Operands are one of the internal registers of 8085
Examples:
MOV A, B
ADD C
Immediate Addressing
• Value of the operand is given in the instruction itself
Example
MVI A, 20H
LXI H, 2050H
ADI 30H
SUI 10H
Memory Addressing
• One of the operands is a memory location
• Depending on how address of memory location is specified, memory addressing is of two
types
a. Direct addressing
b. Indirect addressing
(a) Direct Addressing
• 16-bit Address of the memory location is specified in the instruction
directly
Examples:
LDA 2050H ;load A with contents of memory location with address
2050H
STA 3050H ;store A with contents of memory location with address
3050H
(b) Indirect Addressing
• A memory pointer register is used to store the address of the memory
location
Example:
MOV M, A ;copy register A to memory location whose address is stored
in register pair HL
Instruction & Data Formats
8085 Instruction set can be classified according to size (in bytes) as
1. 1-byte Instructions
2. 2-byte Instructions
3. 3-byte Instructions
1. One-byte Instructions
• Includes Opcode and Operand in the same byte
Examples:
2. Two-byte Instructions
• First byte specifies Operation Code
• Second byte specifies Operand
Examples:
3. Three-byte Instructions
• First byte specifies Operation Code
• Second & Third byte specifies Operand
Examples: