CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming...
-
Upload
adrienne-houchens -
Category
Documents
-
view
222 -
download
2
Transcript of CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming...
![Page 1: CEG 320/520: Computer Organization and Assembly Language Programming1 Assembly Language Programming Introduction and Addressing Modes.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/1.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/2.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/3.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/4.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/5.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/6.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/7.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/8.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/9.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/10.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/11.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/12.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/13.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/14.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/15.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/16.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/17.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/18.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/19.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/20.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/21.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/22.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/23.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/24.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/25.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/26.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/27.jpg)
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.](https://reader030.fdocuments.in/reader030/viewer/2022032516/56649c775503460f9492c112/html5/thumbnails/28.jpg)
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