ceg 320/520: computer organization and assembly language programming1 assembly language programming...

28
CEG 320/520: Computer Organization and Assembly Language Programming 1 Assembly Language Programming Introduction and Addressing Modes

Upload: adrienne-houchens

Post on 14-Dec-2015

222 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 1

Assembly Language Programming

Introduction and Addressing Modes

Page 2: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 2

Intro to Assembly Language: Goals

• Introduction to Assembly language– Basic instructions: MOVE, ADD, EXT, etc.– Operand size (B, W, L)– Register Transfer Notation (RTN)

• Addressing Modes– Register direct, immediate, absolute long, register indirect, indexed basic,

autoincrement, autodecrement– When to use the various modes.

• Assigned Reading– HVZ Chapter 2.4, 2.5, 2.6, 3.8, 3.9, 3.10, 3.11– Reference: HVZ Appendix C

Page 3: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 3

Introduction: Basic Instructions

• Instructions begin with a mnemonic which represents the operation to be performed.– MOVE, ADD, SUB, CLR, etc.

• The mnemonic is followed by a character representing the length of the data to be operated on.– Byte (B), Word (W), and Long Word (L)

• In most instructions, the instruction is followed by one or more operands.– How an operand is interpreted depends on the

information provided and the addressing mode used for that operand.

Page 4: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 4

Introduction: A Few Example Instructions

• ADD/SUB/MUL/DIV/AND/OR source, dest– Performs operation on dest and source and stores result in dest.

• NEG location– Computes 2’s complement of value in location, then stores it into location.

• NOT location– Computes complement of value in location, then stores it into location.

• CLR location– Sets value of byte/word/long at location to 0.

• MOVE source, dest– Moves value of source to dest location.

Page 5: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 5

Assembly: Operand size

• Because the 68000 is capable of performing operations on bytes, words and long words:– In 68000 assembly language, a size indicator is appended to

the instruction mnemonic (W=word, B=byte, L=long word):• MOVE.W, MOVE.B, MOVE.L, ADD.W, ADD.B, and ADD.L are

examples of this.

• If the size indicator is omitted, a WORD operation is assumed.

Page 6: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 6

Assembly: Common Instructions - Examples

• MOVE– MOVE.L D1, D2– D2 = D1– Contents of long word in D1 is copied into D2.– Destroys contents of D2!– Contents of D1 do not change!

• ADD/SUB/MUL/DIV– ADD.W D1, D2– D2 = D1 + D2– Sum of words in D1 and D2 is placed into D2.– Destroys contents of D2!

Page 7: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 7

Assembly: Common Instructions - EXT

• EXT.W extends a byte to a word– Bit 7 is copied into bits 8-15.

• EXT.L extends a word into a long word– Bit 15 is copied into bits 16-31

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Page 8: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 8

Assembly: Common Instructions - EXT

• Sign extension does not change the value of positive or negative 2’s complement numbers!

• 0000 0011 = 3• EXT.L : 0000 0000 0000 0011 = 3

• 1111 1101 = 3• EXT.L : 1111 1111 1111 1101 = 3

Page 9: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 9

Register Transfer Notation: Introduction

• Symbolic and precise way to describe the effect of an instruction.

• Example:MOVE D3,D2The contents of register D3 are copied to register D2.A common notation to designate this is:

D2 [D3] Brackets around D3 indicate “contents of” Left arrow indicates “receives”

Page 10: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 10

Register Transfer Notation: Instructions

• DEST Result

• SUB D5, D7– can be described by:

D7 [D7] - [D5]

• ADD D2, $001004– Here, $001004 is a memory address. The same notation still

suffices:$001004 [$001004] + [D2]

Page 11: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 11

Addressing Modes: Register Direct

MOVE D2, D3

• Register Direct: directly accesses the contents of the indicated register.– RTN:

• D3 [D2]

– Most efficient addressing mode because it requires no memory access to fetch the operand.

– Uses: loop counters, accumulators, operation results of all kinds.

– The data is already in your mailbox, you just need to get it.

Page 12: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 12

Addressing Modes: Register Direct Examples

Memory

$002000 $1234

$002002 $5678

$002004 $ABCD

Registers

D2 $1234 5678

D3 $XXXX XXXX

A0 $0000 2000

MOVE.B D2, D3

Registers

D2 $1234 5678

D3 $XXXX XX78

A0 $0000 2000

MOVE.W D2, D3

Registers

D2 $1234 5678

D3 $XXXX 5678

A0 $0000 2000

Registers

D2 $1234 5678

D3 $1234 5678

A0 $0000 2000

MOVE.L D2, D3

•Register Direct: directly accesses the contents of the indicated register.

Page 13: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 13

Addressing Modes: Absolute Long

MOVE $001020, D2• Absolute Long: accesses the contents of the indicated

memory location.– RTN:

• D2 [$001020]

– Motorola 68k also provides an Absolute Short addressing mode, but we will not be using it.

– Uses: moving stored variables from memory into registers for processing, storing results back to memory.

– You know the actual address ($001020) of the data, so you need to get it from there.

Page 14: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 14

Addressing Modes: Absolute Long Examples

Memory

$002000 $1234

$002002 $5678

$002004 $ABCD

Registers

D2 $XXXX XXXX

D3 $XXXX XXXX

A0 $0000 2000

MOVE.W $002000, D2

Registers

D2 $XXXX 1234

D3 $XXXX XXXX

A0 $0000 2000

MOVE.B $002000, D2

Registers

D2 $XXXX XX12

D3 $XXXX XXXX

A0 $0000 2000

Registers

D2 $1234 5678

D3 $XXXX XXXX

A0 $0000 2000MOVE.L $002000, D2

•Absolute Long: accesses the contents of the indicated memory location.

Page 15: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 15

Addressing Modes: Immediate

MOVE #X, D2• Immediate: an actual number X is provided.

– RTN: • D2 X

– Immediate value is assumed to be decimal unless indicated otherwise (ie by $ for hexadecimal or @ for octal).

– Uses: incrementing loop counters, working with immediate values.

– You know the actual value of the data

Page 16: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 16

Addressing Modes: Immediate Examples

Memory

$002000 $1234

$002002 $5678

$002004 $ABCD

Registers

D2 $XXXX XXXX

D3 $XXXX XXXX

A0 $0000 2000

MOVE.B #12, D2

Registers

D2 $XXXX XX0C

D3 $XXXX XXXX

A0 $0000 2000

MOVE.W #$12, D2

Registers

D2 $XXXX 0012

D3 $XXXX XXXX

A0 $0000 2000

Registers

D2 $0000 000C

D3 $XXXX XXXX

A0 $0000 2000

MOVE.L #12, D2

•Immediate: an actual number X is provided.

Page 17: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 17

Addressing Modes: Register Indirect

MOVE (A0), D2• Register Indirect: accesses the contents of the memory

location in the indicated register. – Effective Address: [A0]

– RTN: • D2 [[A0]]

– Uses: repeated access to the same memory location

– You have a friend (A0) who knows the address of the data. You can ask her where it is in memory, then get it from that location in memory.

Page 18: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 18

Addressing Modes: Register Indirect Examples

Memory

$002000 $1234

$002002 $5678

$002004 $ABCD

Registers

D2 $XXXX XXXX

D3 $XXXX XXXX

A0 $0000 2000

MOVE.B (A0), D2

Registers

D2 $XXXX XX12

D3 $XXXX XXXX

A0 $0000 2000

MOVE.W (A0), D2

Registers

D2 $XXXX 1234

D3 $XXXX XXXX

A0 $0000 2000

Registers

D2 $1234 5678

D3 $XXXX XXXX

A0 $0000 2000

MOVE.L (A0), D2

•Register Indirect: accesses the contents of the memory location in the indicated register.

Page 19: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 19

Addressing Modes: Register Indirect – Indexed Basic

MOVE X(A0), D2• Indexed Basic: An index value X is added to the

memory address in the indicated register to form the effective address, then the contents of the effective address are accessed.– Effective Address:

• [A0] + X

– RTN: • D2 [[A0] + X]

– X is a decimal integer index value– Motorola 68k also provides an Indexed Full addressing mode,

but we will not be using it.

Page 20: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 20

Addressing Modes: Indexed Basic Examples

Memory

$002000 $1234

$002002 $5678

$002004 $ABCD

Registers

D2 $XXXX XXXX

D3 $XXXX XXXX

A0 $0000 2002

MOVE.W 2(A0), D2

Registers

D2 $XXXX ABCD

D3 $XXXX XXXX

A0 $0000 2002

MOVE.W -2(A0), D2

Registers

D2 $XXXX 1234

D3 $XXXX XXXX

A0 $0000 2002

Registers

D2 $1234 5678

D3 $XXXX XXXX

A0 $0000 2002

MOVE.L -2(A0), D2

•Indexed Basic: An index value is added to the memory address to form the effective address.

Page 21: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 21

Addressing Modes: Indexed Basic Example

Struct Student {int grade1;int grade2;int grade3;

};

Struct Student Joe, Bob, Mary;

Avg_Joe = Joe.grade1 + Joe.grade2 + Joe.grade3;

Avg_Joe = Avg_Joe / 3;

MemoryAddress Value$002000 95$002002 89$002004 83

MOVE.L #002000, A0

CLR.L D1

ADD.W (A0), D1

ADD.W 2(A0), D1

ADD.W 4(A0), D1

DIV.W #3, D1

Page 22: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 22

Addressing Modes: Register Indirect – Post-increment

MOVE (A0)+, D2 • Post-increment or Autoincrement: Operand is accessed

indirectly, then address register is incremented.– Effective Address:

• the contents of A0

– RTN: • D2 [[A0]]

• A0 [A0] + the number of bytes accessed

– Increment size: BYTE = 1, WORD = 2, LONG = 4

– Uses: moving through an array, popping from stack

Page 23: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 23

Addressing Modes: Post-increment Examples

Memory

$002000 $1234

$002002 $5678

$002004 $ABCD

Registers

D2 $XXXX XXXX

D3 $XXXX XXXX

A0 $0000 2000

MOVE.B (A0)+, D2

Registers

D2 $XXXX XX12

D3 $XXXX XXXX

A0 $0000 2001

MOVE.W (A0)+, D2

Registers

D2 $XXXX 1234

D3 $XXXX XXXX

A0 $0000 2002

Registers

D2 $1234 5678

D3 $XXXX XXXX

A0 $0000 2004

MOVE.L (A0)+, D2

•Post-increment: Operand is accessed indirectly, then address register is incremented.

Page 24: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 24

Addressing Modes: Register Indirect – Pre-decrement

MOVE.W –(A0), D2• Pre-decrement or Autodecrement: Address register is

decremented, then operand is accessed indirectly.– Effective Address:

• (the contents of A0) – (number of bytes accessed)

– RTN: • A0 [A0] – (number of bytes accessed)

• D2 [[A0]]

– Decrement size: BYTE = 1, WORD = 2, LONG = 4

– Uses: moving through an array, pushing onto stack

Page 25: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 25

Addressing Modes: Pre-decrement Examples

Memory

$002000 $1234

$002002 $5678

$002004 $ABCD

Registers

D2 $XXXX XXXX

D3 $XXXX XXXX

A0 $0000 2004

MOVE.B -(A0), D2

Registers

D2 $XXXX XX78

D3 $XXXX XXXX

A0 $0000 2003

MOVE.W –(A0), D2

Registers

D2 $XXXX 5678

D3 $XXXX XXXX

A0 $0000 2002

Registers

D2 $1234 5678

D3 $XXXX XXXX

A0 $0000 2000

MOVE.L –(A0), D2

•Pre-decrement: Address register is decremented, then operand is accessed indirectly.

Page 26: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 26

Addressing Modes: Post-increment/Pre-decrement

• In the 68000, the increment/decrement depends on the operand size– Suppose A0 = $00002000

– MOVE.B (A0)+,D0 A0 = $00002001

– MOVE.W (A0)+,D0 A0 = $00002002

– MOVE.L (A0)+,D0 A0 = $00002004

Page 27: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 27

Assembly Language: In-Class Exercises

• Assembly Language and Addressing Modes– Exercise

• Big Endian (Memory) vs Little Endian (Registers)– Exercise

Page 28: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes

CEG 320/520: Computer Organization and Assembly Language Programming 28

Intro to Assembly Language: You Should Know…

• Introduction to Assembly language– Basic instructions: MOVE, ADD, EXT, etc.– Operand size (B, W, L)– Register Transfer Notation

• Addressing Modes– Register direct, immediate, absolute long, register indirect, indexed basic,

autoincrement, autodecrement– When to use the various modes

• Assigned Reading– HVZ Chapter 2.4, 2.5, 2.6, 3.8, 3.9, 3.10, 3.11– Reference: HVZ Appendix C