No Slide Title

Download Report

Transcript No Slide Title

TK 2633
Microprocessor & Interfacing
Lecture 1: Introduction to 8085
Assembly Language Programming
(2)
Dr Masri Ayob
Room: E-3-31
Phone: 03-8921 6726
[email protected]
Instruction, Data Format, And Storage


Instruction is a command to the microprocessor to
perform a given task on specified data.
Each instruction has two parts:


one is the task to be performed, called the operation
code (op-code),
the second is the data to be operated on, called the
operand.


The operand (or data) can be specified in various ways.
It may include 8-bit (or 16-bit) data, an internal register, a
memory location, or an 8-bit (or 16-bit) address. In some
instructions, the operand is implicit.
Prepared by: Dr Masri Ayob - TK2123
2
Instruction, Data Format, And Storage
In the 8085, “byte” and “word” are
synonymous because it is an 8-bit
microprocessor.
 However, instructions are commonly
referred to in terms of bytes rather than
words.

1-byte instructions
 2-byte instructions
 3-byte instructions

Prepared by: Dr Masri Ayob - TK2123
3
1-byte instructions

It includes the opcode and the operand in
the same byte. For example:
Prepared by: Dr Masri Ayob - TK2123
4
2-byte instructions

The first byte specifies the operation code and
the second byte specifies the operand. For
example:
Prepared by: Dr Masri Ayob - TK2123
5
3-byte instructions



The first byte specifies the operation code and the following two
bytes specify the 16-bit address.
The second byte is the low-order address and the third byte is the
high-order address.
For example:
Prepared by: Dr Masri Ayob - TK2123
6
Addressing Modes

Instructions can be categorized according
to their method of addressing the hardware
registers and/or memory.
Implied Addressing
 Register Addressing
 Immediate Addressing
 Direct Addressing
 Register Indirect Addressing
 Combined Addressing Modes.

Prepared by: Dr Masri Ayob - TK2123
7
Implied Addressing

The addressing mode of certain instructions
is implied by the instruction’s function.

For example:
 the
STC (set carry flag) instruction deals only with
the carry flag
 the DAA (decimal adjust accumulator) instruction
deals with the accumulator.
Prepared by: Dr Masri Ayob - TK2123
8
Register Addressing



Quite a large set of instructions call for register
addressing.
We must specify one of the registers A through E, H or L
as well as the operation code.
The accumulator is implied as a second operand.



For example, the instruction CMP E may be interpreted as
'compare the contents of the E register with the contents of the
accumulator.
Most of the instructions that use register addressing deal
with 8-bit values.
However, a few of these instructions deal with 16-bit
register pairs.

For example, the PCHL instruction exchanges the contents of the
program counter with the contents of the H and L registers.
Prepared by: Dr Masri Ayob - TK2123
9
Immediate Addressing

These instructions have data assembled as a part
of the instruction itself.

For example, the instruction CPI 'C' may be interpreted
as ‘compare the contents of the accumulator with the
letter C.




When assembled, this instruction has the hexadecimal value
FE43.
Hexadecimal 43 is the internal representation for the letter C.
When this instruction is executed, the processor fetches the
first instruction byte and determines that it must fetch one more
byte.
The processor fetches the next byte into one of its internal
registers and then performs the compare operation.
Prepared by: Dr Masri Ayob - TK2123
10
Direct Addressing
These instructions require three bytes of
storage: one for the instruction code, and
two for the 16-bit address.
 Example:


JMP 1000H causes a jump to the hexadecimal
address 1000H by replacing the current
contents of the PC with the new value 1000H.
Prepared by: Dr Masri Ayob - TK2123
11
Register Indirect Addressing
These instructions reference memory via a
register pair.
 For example:
MOV M,C



moves the contents of the C register into the
memory address stored in the H and L register
pair.
The instruction LDAX B loads the
accumulator with the byte of data specified
by the address in the B and C register pair .
Prepared by: Dr Masri Ayob - TK2123
12
Combined Addressing Modes

Some instructions use a combination of
addressing modes.
A CALL instruction, for example, combines
direct addressing and register indirect
addressing.
 The direct address in a CALL instruction
specifies the address of the desired subroutine;
 the register indirect address is the stack
pointer. The CALL instruction pushes the
current contents of the program counter into the
memory location specified by the stack pointer.

.
Prepared by: Dr Masri Ayob - TK2123
13
Timing Effects of Addressing Modes


Addressing modes affect both the amount of time required
for executing an instruction and the amount of memory
required for its storage.
For example, instructions that use implied or register
addressing, execute very quickly since they deal directly
with the processor’s hardware or with data already present
in hardware registers.


Most important, however is that the entire instruction can be
fetched with a single memory access. The number of memory
accesses required is the single greatest factor in determining
execution timing.
More memory accesses require more execution time.

A CALL instruction for example, requires five memory accesses:
three to access the entire instruction and two more to push the
contents of the program counter onto the stack.
Prepared by: Dr Masri Ayob - TK2123
14
Data Format



The 8085 is an 8-bit microprocessor, and it
processes only binary numbers.
We need to code binary numbers into different
media.
Common codes and data formats are ASCII,
BCD, signed integers, and unsigned integers:


ASCII Code - 7-bit alphanumeric code that represents
decimal numbers, English alphabets, and nonprintable
characters such as carriage return. Extended ASCII is
an 8-bit code.
BCD Code - Binary-coded decimal; it is used for
decimal numbers.
Prepared by: Dr Masri Ayob - TK2123
15
Data Format

Signed Integer - A signed integer is either a positive
number or a negative number.



In an 8-bit processor, the most significant digit, D7, is used for the
sign; 0 represents the positive sign and I represents the negative
sign.
The remaining seven bits, D6—D0, represent the magnitude of an
integer. Therefore, the largest positive integer that can be
processed by the 8085 at one time is 0111 1111 (7FH); the
remaining Hex numbers, 80H to FFH, are considered negative
numbers.
Unsigned Integers - An integer without a sign can be
represented by all the 8 bits in a microprocessor register.


Therefore, the largest number that can be processed at one time is
FFH.
However, this does not imply that the 8085 microprocessor is
limited to handling only 8-bit numbers. Numbers larger than 8 bits
(such as 16-bit or 24-bit numbers) are processed by dividing them
in groups of 8 bits.
Prepared by: Dr Masri Ayob - TK2123
16
How To Write, Assemble, And Execute
a Simple Program
A program is a sequence of instructions
written to tell a computer to perform a
specific function.
 The instructions are selected from the
instruction set of the microprocessor.
 To write a program:

divide a given problem in small steps in terms
of the operations the 8085 can perform;
 then translate these steps into instructions.

Prepared by: Dr Masri Ayob - TK2123
17
Example: Writing a simple program

PROBLEM STATEMENT
Write instructions to load the two hexadecimal
numbers 32H and 48H in registers A and B,
respectively.
 Add the numbers, and display the sum at the
LED output port PORT.

Prepared by: Dr Masri Ayob - TK2123
18
Example: Writing a simple program

PROBLEM ANALYSIS
1. Load the numbers in the registers.
 2. Add the numbers.
 3. Display the sum at the output port PORT.

Prepared by: Dr Masri Ayob - TK2123
19
Example: Writing a simple program
Prepared by: Dr Masri Ayob - TK2123
20
Example: Writing a simple program

ASSEMBLY LANGUAGE PROGRAM





To write an assembly language program, we need to
translate the blocks shown in the flowchart into 8085
operations and then, subsequently, into mnemonics.
By examining the blocks, we can classify them into
three types of operations: Blocks 1 and 3 are copy
(data transfer) instruction.
Block 2 is an arithmetic operation;
Block 4 is a machine-control operation.
To translate these steps into assembly and machine
languages, we should review the instruction set.
Prepared by: Dr Masri Ayob - TK2123
21
Example: Writing a simple program
Prepared by: Dr Masri Ayob - TK2123
22
Example: Writing a simple program
Prepared by: Dr Masri Ayob - TK2123
23
Example: Writing a simple program


STORING IN MEMORY AND CONVERTING FROM HEX
CODE TO BINARY CODE
To store the program in R/W memory of a single-board
microcomputer and display the output, we need to know
the memory addresses and the output port address.

Let us assume that R/W memory ranges from 2000H to 2OFFH,
and the system has an LED output port with the address 01H.
Now, to enter the program:





Reset the system by pushing the RESET key.
Enter the first memory address using Hex keys where the program
should be stored. Let us assume it is 2000H.
Enter each machine code by pushing Hex keys. For example, to enter
the first machine code, push the 3, E, and STORE keys. (The STORE
key may be labeled differently in different systems).
Repeat Step 3 until the last machine code, 76H.
Reset the system.
Prepared by: Dr Masri Ayob - TK2123
24
Example: Writing a simple program

In this illustrative example, the program will be
stored in memory as follows:
Prepared by: Dr Masri Ayob - TK2123
25
Example: Writing a simple program

EXECUTING THE PROGRAM

To execute the program, we need to tell the
microprocessor where the program begins by
entering the memory address 2000H.
 Now,
we can push the Execute key (or the key with
a similar label) to begin the execution.
 As soon as the Execute function key is pushed, the
microprocessor loads 2000H in the program counter,
and the program control is transferred from the
Monitor program to our program.
 The microprocessor begins to read one machine
code at a time, and when it fetches the complete
instruction, it executes that instruction.
Prepared by: Dr Masri Ayob - TK2123
26
Overview Of The 8085 Instruction Set
The 8085 microprocessor instruction set
has 74 operation codes that result in 246
instructions.
 The following notations are used in the
description of the instructions:

R = 8085 8-bit register
(A,B,C,D,E,H,L)
M = Memory register (location)
Rs=Register source
(A,B,C,D,E,H,L)
Rd=Register destination
(A,B,C,D,E,H,L)
Rp=Register pair
(BC,DE,HL,SP)
() = Contents of
Prepared by: Dr Masri Ayob - TK2123
27
Data Transfer (Copy) Instructions

These instruction perform the following 6
operations:
Load an 8-bit register
 Copy from register to register
 Copy between I/O and accumulator
 Load 16-bit number in a register pair
 Copy between register and memory
 Copy between registers and stack memory

Prepared by: Dr Masri Ayob - TK2123
28
Data Transfer (Copy) Instructions
Prepared by: Dr Masri Ayob - TK2123
29
Arithmetic Instructions
Add
 Subtract
 Increment (Add 1)
 Decrement (Subtract 1)

Prepared by: Dr Masri Ayob - TK2123
30
Arithmetic Instructions
Prepared by: Dr Masri Ayob - TK2123
31
Logic and Bit Manipulation Instructions
AND
 OR
 X-OR (Exclusive OR)
 Compare
 Rotate Bits

Prepared by: Dr Masri Ayob - TK2123
32
Branch Instructions
Prepared by: Dr Masri Ayob - TK2123
33
Machine Control Instructions

These instructions affect the operation of
the processor.
HLT
 NOP

Prepared by: Dr Masri Ayob - TK2123
Stop processing and wait
Do not perform any operation
34
Common Errors






LDA 205lH: Not entering the code of the 16-bit
address in reversed order.
Forgetting to enter the code for the operand, such
as 205lH.
MOV B, A: Assuming that this copies from B to A.
Incrementing the address in decimal, from 2039H
to 2040H.
HLT: Not terminating a program.
Confusing the entering of Hex code in memory as
executing a program.
Prepared by: Dr Masri Ayob - TK2123
35
Summary


The 8085 microprocessor operations are classified into
five major groups: data transfer (copy), arithmetic, logic,
branch, and machine control.
An instruction has two parts:





opcode (operation to be performed)
operand (data to be operated on) - The operand can be data (8- or
16-bit), address, or register, or it can be implicit.
The method of specifying an operand (directly, indirectly,
etc.) is called the addressing mode.
The instruction set is classified in three groups according
to the word size: 1-, 2-, or 3-byte instructions.
To write an assembly language program, divide the given
problem into small steps in terms of the microprocessor
operations, translate these steps into assembly language
instructions, and then translate them into the 8085
machine code.
Prepared by: Dr Masri Ayob - TK2123
36
Thank you
Q&A
Prepared by: Dr Masri Ayob - TK2123
37