Addressing modes – 1 The way in which an operand is specified is called the Address Mode.

Slides:



Advertisements
Similar presentations
Lecture By SHERY KHAN Assembly Language Lecture By SHERY KHAN
Advertisements

Register In computer architecture, a processor register is a small amount of storage available on the CPU whose contents can be accessed more quickly than.
There are two types of addressing schemes:
Microprocessor Fundamentals Week 5 Mount Druitt College of TAFE Dept. Electrical Engineering 2008.
CEN 226: Computer Organization & Assembly Language :CSC 225 (Lec#3) By Dr. Syed Noman.
Addressing modes The way in which an operand is specified is called the Address Mode.
ICS312 Set 6 Operands. Basic Operand Types (1) Register Operands. An operand that refers to a register. MOV AX, BX ; moves contents of register BX to.
1/2002JNM1 AL 00 Immediate Addressing Mode Mov AL, 3CH AL 3C.
Chapter 3 Addressing Modes
6-1 ECE 424 Design of Microprocessor-Based Systems Haibo Wang ECE Department Southern Illinois University Carbondale, IL Intel 8088 Addressing modes.
Lect 3: Instruction Set and Addressing Modes. 386 Instruction Set (3.4) –Basic Instruction Set : 8086/8088 instruction set –Extended Instruction Set :
Azir ALIU 1 What is an assembly language?. Azir ALIU 2 Inside the CPU.
Handout 2 Digital System Engineering (EE-390)
Stack Memory H H FFFFF H FFFFE H SS 0105 SP 0008 TOS BOS BOS = FFFF = 1104F H H 1104F H.
Data Movement Instructions
The 8086 Assembly Programming Data Allocation & Addressing Modes
Addressing Modes Instruction – Op-code – Operand Addressing mode indicates a way of locating data or operands. – Any instruction may belong to one or more.
CEN 226: Computer Organization & Assembly Language :CSC 225 (Lec#8) By Dr. Syed Noman.
Lect 4: Instruction Set and Addressing Modes. 386 Instruction Set (3.4)  Basic Instruction Set : 8086/8088 instruction set  Extended Instruction Set.
An Introduction to 8086 Microprocessor.
CDP ECE Spring 2000 ECE 291 Spring 2000 Lecture 7: More on Addressing Modes, Structures, and Stack Constantine D. Polychronopoulos Professor, ECE.
1/2002JNM1 Positional Notation (Hex Digits). 1/2002JNM2 Problem The 8086 has a 20-bit address bus. Therefore, it can access 1,048,576 bytes of memory.
MOHD. YAMANI IDRIS/ NOORZAILY MOHAMED NOOR1 Addressing Mode.
Types of Registers (8086 Microprocessor Based)
INSTRUCTION SET AND ASSEMBLY LANGUAGE PROGRAMMING
UHD:CS2401: A. Berrached1 The Intel x86 Hardware Organization.
4-Oct Fall 2001: copyright ©T. Pearce, D. Hutchinson, L. Marshall Sept  direct mode: OK for static addresses  indirect register mode:
ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ Τμήμα Ηλεκτρολογών Μηχανικών και Τεχνολογίας Υπολογιστών Μικρουπολογιστές & Μικροσυστήματα ΙΙ Καθηγητής Σταύρος Α. Κουμπιάς Πανεπιστημίου.
ECE291 Computer Engineering II Lecture 3 Dr. Zbigniew Kalbarczyk University of Illinois at Urbana- Champaign.
3.4 Addressing modes Specify the operand to be used. To generate an address, a segment register is used also. Immediate addressing: the operand is a number.
University of Sargodha, Lahore Campus Prepared by Ali Saeed.
Addressing Modes. Addressing Mode The data is referred as operand. The operands may be contained in registers, memory or I/O ports, within the instruction.
Computer Organization Instructions Language of The Computer (MIPS) 2.
Assembly Language Data Movement Instructions. MOV Instruction Move source operand to destination mov destination, source The source and destination are.
Internal Programming Architecture or Model
Computer Organization & Assembly Language University of Sargodha, Lahore Campus Prepared by Ali Saeed.
Microprocessors CSE- 341 Dr. Jia Uddin Assistant Professor, CSE, BRAC University Dr. Jia Uddin, CSE, BRAC University.
Intel MP Organization. Registers - storage locations found inside the processor for temporary storage of data 1- Data Registers (16-bit) AX, BX, CX, DX.
I NTEL 8086 M icroprocessor بسم الله الرحمن الرحيم 1.
Addressing Modes Instruction – Op-code – Operand Addressing mode indicates a way of locating data or operands. – Any instruction may belong to one or more.
Microprocessors CSE- 341 Dr. Jia Uddin Assistant Professor, CSE, BRAC University Dr. Jia Uddin, CSE, BRAC University.
Computer Science 516 Intel x86 Overview. Intel x86 Family Eight-bit 8080, 8085 – 1970s 16-bit 8086 – was internally 16 bits, externally 8 bits.
Instruction set Architecture
Introduction to 8086 Microprocessor
COURSE OUTCOMES OF MICROPROCESSOR AND PROGRAMMING
ADDRESSING MODES.
EEM336 Microprocessors Laboratory Orientation
Assembly IA-32.
ADDRESSING MODES.
University of Gujrat Department of Computer Science
Assembly Lang. – Intel 8086 Addressing modes – 1
Chapter 3 Addressing Modes
Morgan Kaufmann Publishers Computer Organization and Assembly Language
Microprocessor and Assembly Language
Defining Types of data expression Dn [name] expression Dn [name]
Symbolic Instruction and Addressing
Introduction to Assembly Language
Data Addressing Modes • MOV AX,BX; This instruction transfers the word contents of the source-register(BX) into the destination register(AX). • The source.
8086 Registers Module M14.2 Sections 9.2, 10.1.
Morgan Kaufmann Publishers Computer Organization and Assembly Language
Symbolic Instruction and Addressing
(Array and Addressing Modes)
Symbolic Instruction and Addressing
(Array and Addressing Modes)
CNET 315 Microprocessor & Assembly Language
Lecture 06 Programming language.
Chapter 6 –Symbolic Instruction and Addressing
Intel 8086.
Chapter 8: Instruction Set 8086 CPU Architecture
(Array and Addressing Modes)
Presentation transcript:

Addressing modes – 1 The way in which an operand is specified is called the Address Mode.

Flexible access to memory, allowing you to easily access variables, arrays, records, pointers, and other complex data types. Mastery of the 80x86 addressing modes is the first step towards mastering 80x86 assembly language.

x86 instructions use five different operand types: -registers, -constants, and -three memory addressing schemes. Each form is called an addressing mode.

x86 processors support  the register addressing mode, the immediate addressing mode, the direct addressing mode, the indirect addressing mode, the base plus index addressing mode, the register relative addressing mode, & the base relative plus index addressing mode.

1. Register AM – mov ax, ax – mov ax, bx – mov ax, cx – mov ax, dx The first instruction accomplishes absolutely nothing. It copies the value from the ax register back into the ax register. The remaining three instructions copy the value of bx, cx and dx into ax. Note that the original values of bx, cx, and dx remain the same. The first operand (the destination) is not limited to ax; you can move values to any of these registers.

By specifying the name of the register as an operand to the instruction, you may access the contents of that register. mov AX, BL  ok? The eight and 16 bit registers are certainly valid operands for this instruction. The only restriction is that both operands must be the same size.

mov ax, bx ;Copies the value from BX into AX mov dl, al ;Copies the value from AL into DL mov si, dx ;Copies the value from DX into SI mov sp, bp ;Copies the value from BP into SP mov dh, cl ;Copies the value from CL into DH mov ax, ax ;Yes, this is legal!

2. Immediate AM – constant » mov ax, 25 » mov bx, 195 » mov cx, 2056 » mov dx, 1000 These instructions are all pretty straightforward.  They load their respective registers with the specified hexadecimal constant.

There are three addressing modes which deal with accessing data in memory. These addressing modes take the following forms: mov ax, [1000] mov ax, [bx] mov ax, [1000+bx]

Direct [memory] AM – operand is variable mov ax, [1000] uses the direct addressing mode to load ax  with the 16 bit value  stored in memory  starting at location 1000 hex.

Indirect [mem] AM mov ax, [bx] It loads ax from the memory location specified by the contents of the bx register. This is an indirect addressing mode. Rather than using the value in bx, this instruction accesses to the memory location whose address appears in bx.  Pointer of the memory location [C prog.]

mov bx, 1000 mov ax, [bx] are equivalent to the single instruction: mov ax, [1000]

Base + index AM mov ax, [1000+bx] This instruction adds the contents of bx with 1000 to produce the address of the memory value to fetch. This instruction is useful for accessing elements of arrays, records, and other data structures.

8086 AM

Marut – Based & Indexed AM Offset address is obtained by adding a number called displacement to the contents of a register. Displacement  – Offset address of a variable – A constant +/- – The offset address of a variable +/- a const.

Syntax of an operand~ [reg. + displacement] [displacement + reg] [reg] + displ dipl. + [reg.] displ[reg] Reg. must be  BX, SI or DI  DS contains the segment no. of the operand’s address  BP  SS has the segment no.

Based/Indexed AM is Based  if BX (base reg) or, BP (base pointer) is used. AM is indexed  if SI (source index) or, DI (destination index) is used. e.g., W is a word array, BX contains 4. MOVAX, W[BX]  The displacement is the offset address of variable W.  The instruction moves the element at address W+4 to AX. This is the 3 rd element in the array.

Other forms of previous example… – MOVAX, W[BX] – MOVAX, [W+BX] – MOVAX, [BX+W] – MOVAX, W+[BX] – MOVAX, [BX]+W

Indexed – SI source index or DI dest index E.g., suppose SI contains the address of a word array W. Instruction – MOV AX, [SI+2];displ is 2 -The instruction moves the contents of W+2 to AX. -This is the 2 nd element of the array -Other forms:

Other forms MOV AX, [SI+2];displ is 2 MOV AX, 2+[SI] MOV AX, [SI]+2 MOV AX, [SI+2] MOV AX, 2[SI]

Q. Write some code to sum in AX the elements of an array. Idea is to set a pointer to the base of the array, & let it move up the array, & summing elements as it goes. XORAX, AX ;AX holds sum LEASI, W;SI points to array W MOVCX, 10 ;CX has no. of elements ADDARRAY: ADDAX, [SI];sum=sum + element ADDSI, 2 ;move pointer to the next element LOOPADDARRAY ;loop until done

This is done by  Register indirect AM. Add 2 as it is WORD not BYTE array LEA moves the source offset address – into the destination.

The same - using based AM Based AM – BX [base reg] or BP [base pointer] The idea is to cleat BX – then add 2 to it on each trip – through summation loop. XORAX, BX ;AX holds sum XORBX, BX;clear base reg BX MOVCX, 10;CX has no. of elements ADDARRAY: ADDAX, W[BX];sum=sum+element ADDBX, 2;index next element LOOPADDARRAY;loop until done