Mohamad Al [email protected]
Introduction to 8085 Assembly Introduction to 8085 Assembly Language ProgrammingLanguage 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
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
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
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
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
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.
Mohamad Al [email protected]
Branching Operations
• (conditional and noncondithional(
• Jump: conditional jump, decision making, Z, CY flags.
• Call, return, and restart
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
Mohamad Al [email protected]
Data format
• The instruction consists of the following tow parts:
– Operation code (opcode)– Operand
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)
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
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
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
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
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.
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
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
Mohamad Al [email protected]
Data Format
• ASCII Code
• BCD Code
• Signed Integer
• Unsigned Integers
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
Mohamad Al [email protected]
• FLOW CHART
End
Start
Load Hexadecimal Numbers
Add Numbers
Display Sum
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
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
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.
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
Mohamad Al [email protected]
8085 Mnemonics
Hex Code
Binary Code
Flow Chart
ManualLookup
Monitor Program
To memory for Storage