(Array and Addressing Modes)

Slides:



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

There are two types of addressing schemes:
Microprocessor Fundamentals Week 5 Mount Druitt College of TAFE Dept. Electrical Engineering 2008.
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.
Irvine, Kip R. Assembly Language For Intel-Based Computers TYPE and SIZE Operators TYPE –returns the size, in bytes of a single element of a data label.
Addressing modes – 1 The way in which an operand is specified is called the Address Mode.
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.
Microcomputer & Interfacing Lecture 3
Microprocessor Systems Design I Instructor: Dr. Michael Geiger Spring 2013 Lecture 4: 80386DX memory, addressing.
CEN 226: Computer Organization & Assembly Language :CSC 225 (Lec#8) By Dr. Syed Noman.
INTRODUCTION TO IBM PC ASSEMBLY LANGUAGE
CEG 320/520: Computer Organization and Assembly Language ProgrammingIntel Assembly 1 Intel IA-32 vs Motorola
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.
4-Oct Fall 2001: copyright ©T. Pearce, D. Hutchinson, L. Marshall Sept  direct mode: OK for static addresses  indirect register mode:
Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language.
Assembly Language. Symbol Table Variables.DATA var DW 0 sum DD 0 array TIMES 10 DW 0 message DB ’ Welcome ’,0 char1 DB ? Symbol Table Name Offset var.
Review of Assembly language. Recalling main concepts.
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.
Addressing Modes Dr. Hadi Hassan.  Two Basic Questions  Where are the operands?  How memory addresses are computed?  Intel IA-32 supports 3 fundamental.
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.
Assembly language programming
Instruction set Architecture
Format of Assembly language
Presentation on Real Mode Memory Addressing
Data Transfers, Addressing, and Arithmetic
Microprocessor Systems Design I
Microprocessor Systems Design I
COURSE OUTCOMES OF MICROPROCESSOR AND PROGRAMMING
16.317: Microprocessor System Design I
ADDRESSING MODES.
16.317: Microprocessor System Design I
Microprocessor Systems Design I
Microprocessor and Assembly Language
Lecture 4 Control Flow Structures (LOOPS)
ADDRESSING MODES.
University of Gujrat Department of Computer Science
(The Stack and Procedures)
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
3.6 Data transfer Instructions
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)
(The Stack and Procedures)
Shift & Rotate Instructions)
Symbolic Instruction and Addressing
(Array and Addressing Modes)
Morgan Kaufmann Publishers Computer Organization and Assembly Language
CNET 315 Microprocessor & Assembly Language
University of Gujrat Department of Computer Science
Microprocessor and Assembly Language
Chapter 6 –Symbolic Instruction and Addressing
(The Stack and Procedures)
Chapter 8: Instruction Set 8086 CPU Architecture
Part I Data Representation and 8086 Microprocessors
(The Stack and Procedures)
Presentation transcript:

(Array and Addressing Modes) Assembly Language Lecture 9 (Array and Addressing Modes)

Lecture Outline Introduction Addressing Modes Register Indirect Mode Based and Indexed Addressing Modes Addressing Modes 1

Introduction The way an operand is specified is known as its addressing mode. Addressing modes: Register mode Immediate mode Direct mode Register Indirect Based Indexed Based Indexed An operand is a register (ex. INC AX) An operand is a constant (ex. ADD A, 5) An operand is a variable(ex. ADD A, 5) Used with one dimensional arrays Address memory operands indirectly Used with two dimensional arrays Addressing Modes 2

Register Indirect Mode The offset address of the operand is contained in a register. I.e. The register acts as a pointer to the memory location. Format: [register] The register must be one of the following: BX SI DI BP The operand’s segment number is contained in DS The operand’s segment number is contained in SS Addressing Modes 3

Register Indirect Mode Ex. suppose that SI contains 0100h, and the word at 0100h contains 1234h. MOV AX, [SI] The CPU: 1. Examines SI and obtains the offset address 100h. 2. Uses the address DS:0100h to obtain the value 1234h. 3. Moves 1234h to AX. MOV AX, SI The CPU will move the value of SI, namely 100h, into AX. Addressing Modes 4

Register Indirect Mode Ex. Write some code to sum in AX the elements of the 10-element array W defined by W DW 10,20,30,40,50,60,70,80,90,100 MOV AX, 0 ; AX holds sum LEA SI, W ; SI points to array W MOV CX, 10 ; CX has number of elements ADDNOS: ADD AX, [SI] ; sum = sum + element ADD SI, 2 ; move pointer to the next element LOOP ADDNOS ; loop until done Addressing Modes 6

Based and Indexed Addressing Modes The operand’s offset address is obtained by adding a number called a displacement to the contents of a register. Displacement may be: The offset address of a variable. (ex. A) A constant (positive or negative). (ex. -2) The offset address of a variable + or - a constant. (ex. A + 4) Syntax: [register + displacement] [displacement + register] [register] + displacement displacement + [register] displacement [register] Addressing Modes 7

Based and Indexed Addressing Modes The register must be one of the following: BX SI DI BP The addressing mode is called based if BX (base register) or BP (base pointer) is used. The addressing mode is called indexed if SI (source index) or DI (destination index) is used. The operand’s segment number is contained in DS The operand’s segment number is contained in SS Addressing Modes 8

Based and Indexed Addressing Modes Ex. Suppose W is a word array, and BX contains 4 MOV AX, 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 third element in the array) The instuction could also have been written in any of these forms: MOV AX, [W+BX] MOV AX, [BX+W] MOV AX, W+[BX] MOV AX, [BX]+W Addressing Modes 9

Based and Indexed Addressing Modes Ex. suppose SI contains the address of a word array W MOV AX, [SI+2] • The displacement is 2. • The instruction moves the contents of W + 2 to AX. (this is the second element in the array) • The instruction could also have been written in any of these forms: MOV AX, [2+SI] MOV AX, 2+[SI] MOV AX, [SI]+2 MOV AX, 2[SI] Addressing Modes 10

Based and Indexed Addressing Modes Ex. Write some code to sum in AX the elements of the 10-element array W defined by W DW 10,20,30,40,50,60,70,80,90,100 XOR AX, AX ; AX holds sum. Can also use MOV AX,0 XOR BX, BX ; clear base register MOV CX, 10 ; CX has number of elements ADDNOS: ADD AX, W[BX] ; sum = sum + element ADD BX, 2 ; index next element LOOP ADDNOS ; loop until done Addressing Modes 11

Based and Indexed Addressing Modes Ex. Suppose that ALPHA is declared as ALPHA DW 0123H,0456H,0789H,0ABCDH In segment address by DS. Suppose also that BX contains 2 offset 0002 contains 1084 h SI contains 4 offset 0004contains 2BACh DI contains 1 What will be the result of following instructions: instruction NUMBER MOVED MOV AX,[ALPHA+BX] 0456H MOV BX,[BX+2] 2BACH MOV CX,ALPHA[SI] 0789H MOV AX,-2[SI] 1084H MOV BX,[ALPHA+3+DI] MOV AX,[BX]2 illegal Addressing Modes 11

Based and Indexed Addressing Modes Ex. Replace each lower case letter in the following string by it’s upper case equivalence. Use index addressing mode MSG DB ‘this is a message’ Solution: MOV CX,17 ; NO of chars in string XOR SI, SI ; clear SI indexes a char TOP: CMP MSG[SI],’ ‘ ;BLANK ? JE NEXT ; yes skip over AND MSG[SI],0DFH ; convert to upper case NEXT: INC SI ;Index next byte LOOP TOP ; loop until done Addressing Modes 11