Introduction to 8085 Assembly Language Programming
prepared by : Maher Al-omari
8085 Programming Model
Programming Registers
prepared by : Maher Al-omari
Flags
D7 D6 D5 D4 D3 D2 D1 D0
AC
CY
The flags are affected by the ALU operation
since the results are stored in accumulator then the flags reflect the condition of the accumulator
prepared by : Maher Al-omari
Flags
D7 D6 D5 D4 D3 D2 D1 D0
AC
CY
Sign flag: S 1 if D7 of the auxiliary carry flag: used for Zero flag : if the ALU result =1;means ve number BCD1, and and AC 1 if the carry is operation is 0 then Z passed from D3 to D4 (not used vice Parity flag: P 1 if the number versa in conditions) of 1s in the result is even and vice versa carry : CY 1 if there is a carry result from the ALU operation
prepared by : Maher Al-omari
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
prepared by : Maher Al-omari
8085 inst Classification
The instruction set is classified in to the following five functional categories:
1. 2. 3. 4. 5.
Data transfer (copy) operations Arithmetic operations Logical operations Branching operations Machine control operations
prepared by : Maher Al-omari
Instruction Word Size
( Word = 1 byte in 8085)
Operation code (opcode) Operand
One word : 1 byte instruction Two word : 2 byte instruction Three word : 3 word instruction
prepared by : Maher Al-omari
One byte instruction
Includes the opcode and operand in the same byte, such as
Task Copy the contents of acc to reg. C Add the cont. of reg. B to the Acc. Complement the contents of the acc. opcode MOV operand C,A Binary code 0100 1111 Hex code 4FH
ADD
1000 0000
80H
CMA
----
0010 1111
2FH
prepared by : Maher Al-omari
Two Byte Instructions
The first byte specifies the opcode and the second specifies the operand
Task Load an 8-bit data byte in the acc. opcode MVI operand A, B7 Binary code 0011 1110 1011 0111 Hex code 3EH B7H
prepared by : Maher Al-omari
Three byte instruction
The first byte specifies the opcode and the next two bytes specify 16 bit address
Task Transfer the prog sequ. To the mem loc 2085H
opcode JMP
operand 2085H
Binary code 1100 0011 1000 0101 0010 0000
Hex code C3H 85H 20H
prepared by : Maher Al-omari
the binary format for the op-code
Opcode format 1
Add the cont. of reg. B to the Acc.
ADD
1000 0000
80H
prepared by : Maher Al-omari
the binary format for the op-code
Opcode format 2
Code 000 001 010 011 100 101 111 110
The internal registers are identified as follows:
reg. Code reg. pair B 00 BC C 01 DE D 10 HL E 11 SP H L A RESERVED FOR MEMORY RELATED OPERATION
prepared by : Maher Al-omari
format for the MOV instruction 01
MOVE
Opcode format 3
DDD reg. Rd
SSS [Link]
Write the instruction that Moves the content from A to C move the contents: 01 to Register C : 001 111 from Register A: binary instruction: 01 001 111 IN Assem. Lang. MOV C,A
4FH
prepared by : Maher Al-omari
Data Format
ASCII Code
7-Bit alphanumeric code
BCD Code
4-bit binary coded decimal
Signed Integer
D7 is used for the sign D0-D6 represent the magnitude 00-7F positive numbers. 80-FF negative numbers. all negative numbers are in 2s complement Unsigned Integers
prepared by : Maher Al-omari
Data Format
The processor processes binary bits ; it is up to the user to interpret the result. 41H (0100 0001)
A IN ASCII
41 in BCD
65 in SIGNED INTEGERS
prepared by : Maher Al-omari
DATA TRANSFER (COPY) OPERATIONS These instructions transfer data to and from registers and memory. Condition flags are not affected.
Copy Register
Mnemonics Task (r1) (r2) Comment The content of register 2 is copied to register 1.
MOV r1, r2
Example: Mnemonics MOV A, B MOV C, D
Hex Code 78H 4AH
Task (A) (B) (C) (D)
Comment The content of register B is copied to register A. The content of register D is copied to register C.
Copy From Memory
Mnemonics Task (r) ((H)(L)) Comment The content of the memory location, whose address is in registers H and L, is copied to register r.
MOV r, M
Example: Assume that (H) = 20, (L) = 50, and (2050) = A6H Hex Code
Mnemonics MOV A, M MOV C, M
Task (A) (2050) (C) (2050)
Comment A6H is copied into the accumulator. A6H is copied to register C.
Copy to Memory
Mnemonics Task Comment The content of register r is copied to the memory location whose address is in registers H and L.
MOV M, ((H)(L)) (r) r
Example: Assume that (H) = 20, (L) = 60, and (B) = 8CH
Mnemonics MOV M, B
Hex Code
Task (2060) (B )
Comment
Move (copy) immediate
Mnemonics MVI r, data Task (r) (byte 2) Comment The content of byte 2 of the instruction is copied to register r.
Example: Mnemonics MVI A, 38 Hex Code Task (A) 38H Comment
Move (copy) to memory immediate
Mnemonics Task Comment MVI M, data ((H)(L)) (byte 2) The content of byte 2 of the instruction is copied to the memory location, whose address is in registers H and L. Example: Assume that (H) = 20 and (L) = 90
Mnemonics MVI M, 35
Hex Code
Task (2090) 35H
Comment
Load Register Pair Immediate
Mnemonics LXI rp, data 16 Task (rh) (byte 3) (rl) (byte 2) Comment rh = high-order register rl = low-order register
Example:
Mnemonics LXI H, 2055H
Hex Code
Task (H) 20 (L) 55
Comment
Load Accumulator Direct
Mnemonics LDA address Task (A) ((byte 3)(byte 2) Comment The content of memory location, whose address is specified in byte 2 and byte 3 of the instruction, is copied to register A.
Example: Assume that (2040) = 9FH Mnemonics LDA 2040H Hex Code Task (A) (2040H) Comment 9FH is stored in reg A
Store accumulator direct
Mnemonics STA address Task ((byte 3)(byte 2) (A) Comment The content of the accumulator is copied to the memory location, whose address is specified in byte 2 and byte 3 of the instruction. Comment
Example: Assume that (A) = 69H Mnemonics STA 2060H Hex Code Task
(2060) (A) 69H goes to memory location 2060H
read data from an input device
Mnemonics IN address Task Comment
Example: Mnemonics IN 20H Hex Code Task A (20) Comment Data is read in to the accumulator from device # 20
Write data to an output device
Mnemonics OUT address Task Comment
Example: Mnemonics OUT F3H Hex Code Task F3 (A) Comment Data is read from the accumulator to device # F3
HALT
Mnemonics HLT Task Comment
Writing Assembling and Execution of Assembly programs Add two 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
prepared by : Maher Al-omari
FLOW CHART
Start
MVI A,32H MVI B,48H
Load Hexadecimal Numbers
ADD B
Add Numbers
OUT 01H
Display Sum
HLT
End
prepared by : Maher Al-omari
MVI A,32H MVI B,48H ADD B OUT 01H HLT
Load the Register A with 32H Load the Register B with 48H
Add the 2 bytes and save res in A Display the acc. Contents at port 01H End
prepared by : Maher Al-omari
CONVERTING FROM ASSEMBLY LANGUAGE TO HEX CODE
Mnemonics MVI A,32H MVI B,48H ADD B OUT 01H HLT
Hex Code
3E 32 06
48
80 D3 01 67
prepared by : Maher Al-omari
Can you recognize the number of BYTE s in each instruction
STORING IN MEMORY AND CONVERTING FROM HEX CODE 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: Reset the system Enter the first memory address using Hex key where the program should be stored say 2000H Enter each machine code by pushing Hex Key, for example to enter the first 3EH, press 3, then E, then STORE keys. Repeat step 3 untill the last machine code Reset the system.
1. 2. 3. 4. 5.
prepared by : Maher Al-omari
How hex code converted into binary ??
Mnemonics Hex Code MVI A,32H 3E 32 MVI B,48H 06 48 ADD B 80 OUT 01H D3 01 HLT 76
memory contents 0011 1110 0011 0010 0000 0110 0100 1000 1000 0000 1101 0011 0000 0001 0111 1110
Mem Add 2000 2001 2002 2003 2004 2005 2006 2007
How to differentiate between data & opcode?
prepared by : Maher Al-omari
Flow Chart
8085 Mnemonics
Manual Lookup
Monitor Hex Code Program
Binary Code
To memory for Storage
prepared by : Maher Al-omari