mp ch5 introduction to 8085 assembly language programming

28
Mohamad Al Azawi [email protected] Introduction to 8085 Introduction to 8085 Assembly Language Assembly Language Programming Programming

Upload: gattarde

Post on 10-Apr-2015

345 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

Introduction to 8085 Assembly Introduction to 8085 Assembly Language ProgrammingLanguage Programming

Page 2: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

8085 Programming Model

Programming Registers

Page 3: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

FlagsFlags

SZACPCY

D7 D6 D5 D4 D3 D2 D1 D0

•The flags are affected by the ALU operation and since the results are stored in accumulator then the flags reflect the condition of the accumulator

•The following is the description of the flags

•S- Sign flag: S 1 if D7 of the result =1;means –ve number

•Z – Zero flag : if the ALU operation is 0 then Z 1, and vice versa

•AC – auxiliary carry flag: used for BCD and AC1 if the carry is passed from D3 to D4 (not used in conditions)

•P – Parity flag: P 1 if the number of 1’s is even and vice versa

•CY – carry : CY 1 if there is a carry result from the ALU operation

Page 4: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

Instruction Classification

• Instruction: is a binary pattern designed inside µp to perform a specific function.

• Instruction Set: is the entire group of instructions• 8085 is upward compatible

Page 5: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

8085 inst Classification

• The instruction set is classified int the following five functional categories:

1. Data transfer (copy) operations

2. Arithmetic operations

3. Logical operations

4. Branching operations

5. Machine control operations

Page 6: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

Data transfer (copy) operation

• Copying data from source to destination without modifying the contents of the source

• The data is transferred :

1. Between registers

2. Specific data byte to reg. or mem loc

3. Between mem loc and registers

4. Between an I/O device and accumulator

Page 7: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

Arithmetic operations

• Perform arithmetic operations such as:– Addition – adding any 8-bit numbers, mem

loc, or reg. content can be added to the contents of the accumulatoraccumulator

– Subtraction - Subtracting any 8-bit numbers, mem loc, or reg. content can be subtracted from the contents of the accumulator (using 2’s complement)

– Increment / Decrement

Page 8: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

Logical operations

• AND, OR, Exclusive OR:- ANDing, ORing, or XORing any 8-bit numbers, mem loc, or reg. content can be ANDed, ORed, or XORed with the contents of the accumulator

• Rotate: shifting the bits in the accumulator• Compare: (=, <, >, with the contents of acc.)• Complement: complementing the cont. of acc.

Page 9: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

Branching Operations

• (conditional and noncondithional(

• Jump: conditional jump, decision making, Z, CY flags.

• Call, return, and restart

Page 10: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

Machine control operations

Halt, Interrupt, or do nothing

Page 11: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

Notes

• In copy inst the data in the source is not changed only the data in the destination

• Arith. And logic operations are performed in the accumulator and the results are stored in accumulator

• The flags are affected according to the results

• Any reg. including mem. can be incremented and decremented

Page 12: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

Data format

• The instruction consists of the following tow parts:

– Operation code (opcode)– Operand

Page 13: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

Instruction Word Size

• The 8085 instructions are classified as follows:– One – word or 1 – byte instruction– Tow – word or 2 – byte instruction– Three – word or 3 – word instruction

( Word = 1 byte in 8085)

Page 14: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

One – byte instruction

• Includes the opcode and operand in the same byte, such as

TaskopcodeoperandBinary

code

Hex code

Copy the contents of acc to reg. CMOVC, A0100 11114FH

Add the cont. of reg. B to the Acc.ADDB1000 000080H

Complement the contents of the acc.

CMA----0010 11112FH

Page 15: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

Tow Byte Instructions

• The first byte specifies the opcode and the second specifies the operand

TaskopcodeoperandBinary codeHex code

Load an 8-bit data byte in the acc.

MVIA, DATA 0011 1110

DATA

3EH

DATA

Page 16: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

Three byte instruction

• The first byte specifies the opcode and the next two bytes specify 16 bit address

TaskopcodeoperandBinary codeHex code

Transfer the prog sequ.

To the mem loc 2085H

JMP2085H1100 0011

1000 0101

0010 0000

C3H

85H

20H

Page 17: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

Opcode format

• The internal registers are identified as follows:Code reg. Code reg. pair

000 B 00 BC

001 C 01 DE

010 D 10 HL

011 E 11 SP

100 H

101 L

111 A

110 RESERVED FOR MEMORY RELATED OPERATION

Page 18: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

• EX.

Function opcode1. Rotate each bit of the 00000111 = 07H

acc. To the left by one (8-bit opcode)

position.

2. Add the content of the 10000 xxx

reg. to the accum.

5 – bit opcode

3-bit are reserved for a reg.

Page 19: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

• Ex:

ADD : 10000

register B : 000

to A :

binary instruction:10000 000 = 80H

In assembly language this can be represented as:

opcode operand hex code

ADD B 80H

Page 20: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

• EX: Move (copy ) the contents of the register Rs (source) to register Rd (destination)

01 DDD SSS

MOV reg. Rd reg. Rs

Move the content from A to C

move the contents: 01

to Register C : 001

from Register A : 111binary instruction : 01 001 111 4FH

IN Assem. Lang. MOV C,A

Page 21: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

Data Format

• ASCII Code

• BCD Code

• Signed Integer

• Unsigned Integers

Page 22: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

Writing, Assembling and Execution of Assembly programs

• Add tow hex. Numbers– PROBLEM STATEMENT

• Write instruction to load 2 hex no. 32H and 48H in reg. A and b respectively, Add the numbers and display the sum at the led output port1

– PROBLEM ANALYSIS• Divide the problem into small steps as follows

– Load the numbers in the registers– Add the numbers– Display the sum at the output port PORT1

Page 23: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

• FLOW CHART

End

Start

Load Hexadecimal Numbers

Add Numbers

Display Sum

Page 24: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

MVI A,32H ; Load the Register A with 32H

MVI B,48H ; Load the Register B with 48H

ADD B ; Add the 2 bytes and save res in A

OUT 01H ; Display the acc. Contents at port 01H

HALT ; End

Page 25: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

Mnemonics Hex Code

MVI A,32H 3E

32

MVI B,48H 0648

ADD B 80

OUT 01H D3

01

HALT 67

CONVERTING FROM ASSEMBLY LANGUAGE TO HEX CODE

Page 26: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

STORING IN MEMORY AND CONVERTING FROM HEX STORING IN MEMORY AND CONVERTING FROM HEX CODE TO BINARY CODECODE TO BINARY CODE

Assume that R/W memory range from 2000H to 20FFH and the system has LED output port with the address 01H now to enter the program:

1. Reset the system

2. Enter the first memory address using Hex key where the program should be stored say 2000H

3. Enter each machine code by pushing Hex Key, for example to enter the first 3EH, press 3, then E, then STORE keys.

4. Repeat step 3 untill the last machine code

5. Reset the system.

Page 27: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

• How hex code converted into binary ??

Mnemonics Hex Codememory contents Mem Add

MVI A,32H 3E 0 0 1 1 1 1 1 0 2000

32 0 0 1 1 0 0 1 0 2001

MVI B,48H 06 0 0 0 0 0 1 1 0 2002

48 0 1 0 0 1 0 0 0 2003

ADD B 80 1 0 0 0 0 0 0 0 2004

OUT 01H D3 1 1 0 1 0 0 1 1 2005

01 0 0 0 0 0 0 0 1 2006

HLT 76 0 1 1 1 1 1 1 0 2007

Page 28: Mp Ch5 Introduction to 8085 Assembly Language Programming

Mohamad Al [email protected]

8085 Mnemonics

Hex Code

Binary Code

Flow Chart

ManualLookup

Monitor Program

To memory for Storage