0% found this document useful (0 votes)
5 views

Assembly Language Discussion

The document provides an overview of Assembly Language programming for the 8085 microprocessor, explaining the difference between machine language and assembly language, as well as the programming model of the 8085. It details various operations such as data transfer, arithmetic, logical operations, branching, and machine control instructions, along with addressing modes and instruction formats. Additionally, it highlights the importance of assemblers and compilers in converting assembly and high-level languages to machine code.

Uploaded by

itsmebasic18
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

Assembly Language Discussion

The document provides an overview of Assembly Language programming for the 8085 microprocessor, explaining the difference between machine language and assembly language, as well as the programming model of the 8085. It details various operations such as data transfer, arithmetic, logical operations, branching, and machine control instructions, along with addressing modes and instruction formats. Additionally, it highlights the importance of assemblers and compilers in converting assembly and high-level languages to machine code.

Uploaded by

itsmebasic18
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

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:

You might also like