400 likes | 599 Views
TK 2633 Microprocessor & Interfacing. Lecture 1: Introduction to 8085 Assembly Language Programming (2). 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:
E N D
TK 2633Microprocessor & Interfacing Lecture 1: Introduction to 8085 Assembly Language Programming (2)
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
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
1-byte instructions • It includes the opcode and the operand in the same byte. For example: Prepared by: Dr Masri Ayob - TK2123
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
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
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
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
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
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
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
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
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
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
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
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
How To Write, Assemble, And Executea 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
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
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
Example: Writing a simple program Prepared by: Dr Masri Ayob - TK2123
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
Example: Writing a simple program Prepared by: Dr Masri Ayob - TK2123
Example: Writing a simple program Prepared by: Dr Masri Ayob - TK2123
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
Example: Writing a simple program • In this illustrative example, the program will be stored in memory as follows: Prepared by: Dr Masri Ayob - TK2123
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
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
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
Data Transfer (Copy) Instructions Prepared by: Dr Masri Ayob - TK2123
Arithmetic Instructions • Add • Subtract • Increment (Add 1) • Decrement (Subtract 1) Prepared by: Dr Masri Ayob - TK2123
Arithmetic Instructions Prepared by: Dr Masri Ayob - TK2123
Logic and Bit Manipulation Instructions • AND • OR • X-OR (Exclusive OR) • Compare • Rotate Bits Prepared by: Dr Masri Ayob - TK2123
Branch Instructions Prepared by: Dr Masri Ayob - TK2123
Machine Control Instructions • These instructions affect the operation of the processor. • HLT Stop processing and wait • NOP Do not perform any operation Prepared by: Dr Masri Ayob - TK2123
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
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
Thank youQ&A Prepared by: Dr Masri Ayob - TK2123