Lectures\Lect 2 - ArchDataAddr

advertisement
68000 Architecture, Data
Types and Addressing Modes
9/20/6
Lecture 2 - Prog Model
1
Lecture Overview


Assembler Language
Programmers Model


9/20/6
Registers
Addressing Modes
Lecture 2 - Prog Model
2
Assembler Language

Programming language very close to the
machine code for a language



All assemblers have two types of statements


9/20/6
Can be considered a native language for the
architecture targeted.
Assembler languages have a 1-to-1 translation to
machine code
Executable instructions
Assembler directives
Lecture 2 - Prog Model
3
Assembler Directives

TTL


EQU





9/20/6
“Title” – gives the program a user-defined name
**Links a pneumonic name to a value. Very
valuable in making the program “readable”.
Example to reserve 128 bytes for a stack.
STACK_FRAME EQU 128
Define a stack frame of 128 bytes
***
LINK A1,# -STACK_FRAME
Lecture 2 - Prog Model
4
Assembler Directives (2)

DC


Define constant. Allows the programmer to set
memory locations to specific values.
Qualifier specifies data type: .B, .W, .L
ORG $001000
FST DC.B 10, 66 Set constants of 10 and 66
DC.L $0A1234 Store $000A1234 in memory
STR DC.B ‘April’ Store ASCII values
9/20/6
Lecture 2 - Prog Model
5
Assembler Directives (3)

DS


ORG


9/20/6
Define the value of the location counter. Sets the memory
address where the code is placed.
SECTION


Reserve bytes, words, or longwords of storage
Set the address counter to zero for position independent
code.
END
Lecture 2 - Prog Model
6
Assembler Code Example
9/20/6
Lecture 2 - Prog Model
7
Programmers Model

When looking at any architecture what does
the programmer see?





9/20/6
REGISTERS (General purpose)
ADDRESS REGISTERS
SPECIAL PURPOSE REGISTERS
MEMORY
Allowable operations and data transfers supported
Lecture 2 - Prog Model
8
DATA REGISTERS





9/20/6
A 32-bit machine
8 general purpose
Called D0 to D7
Any operation permitted
on Di can also be done
on Dj
Data access 8,16,32 bits
Lecture 2 - Prog Model
9
Address Registers






9/20/6
8 Address Regs
Labeled A0 to A7
Entire 32 bits is single entity value
Any operation permitted on Ai is also allowed
on Aj
2’s complement value treatment
Used in instructions to address memory
Lecture 2 - Prog Model
10
Special Purpose Registers

2 such registers

PC – Program Counter


SR – Status Register



9/20/6
Contains the address of the next instruction to be
executed.
16 bits divided into two bytes
MSB – System byte – control operation mode
LSB – Condition codes
Lecture 2 - Prog Model
11
Status Word
9/20/6
Lecture 2 - Prog Model
12
Addressing Modes


Modes supported are reflective of even the most
modern architecture
Some Notation





9/20/6
[Dx] means the “contents of”
% num means binary
$ num means hexadecimal
 indicates transfer of information
Table on page 27 lists meaning of symbols and
notation
Lecture 2 - Prog Model
13
Immediate Addressing



ACTION: The value of the operand (data) is loaded
into the specified register at the time the program
runs.
The value of the operand is used in the operation
Note that general form of instructions is


Operation #Source, Destination
MOVE.W #$8123,D3 [D3(0:15)]$8123


MOVE.L #$8123,D3 [D3(0:31)]$00008123

9/20/6
Fill the low order bytes of De
Fills all 32 bits of register D3
Lecture 2 - Prog Model
14
9/20/6
Lecture 2 - Prog Model
15
Absolute Addressing



Sometimes called “Direct Addressing”
The address in memory being referenced by the
instruction is given in the instruction. Used when the
address of the operand is known when the program is
written.
The instruction contains the operand’s address




9/20/6
FORM Operation source,destination
MOVE.L D3,$1234 [M($1234)][D3(16:31)]
[M($1236)][D3(0:15)]
MOVE.W $1234,D3 [D3(0:15)][M($1234)]
Lecture 2 - Prog Model
16
Register Direct Addressing




Register to register operation
The assembler instruction lists both register
which will be used for operand of the operation
to be performed
The 2nd register listed is both the 2nd operand of
the operation and gets the results of the
operation.
Example: MOVE.L D0,D3

9/20/6
Effect: [D3]  [D0]
Lecture 2 - Prog Model
17
Address Register Indirect


Register Indirect means that the address of the
operand is in a register, the address registers.
ASSEMBLER
RTL
Ex:
MOVE.L (A0), D3
[D3]  [M(A0)]
MOVE.W D4, (A6)
9/20/6
Lecture 2 - Prog Model
[M([A6])] 
[D4(0:15)]
18
Forms of Address Reg. Indirect

Address Register Indirect with postincrement



Address Register Indirect with predecrement


9/20/6
The contents of the address register are
incremented by the appropriate amount after use
That is, the data is referenced with the value
currently in the address register. Then the
contents of the register are incremented by the
size referenced.
Contents are decremented and then used
What use may these have?
Lecture 2 - Prog Model
19
Forms of Address Reg. Indirect (2)

Address Register Indirect with displacement



Register Indirect with Index Addressing


9/20/6
A 16-bit displacement is specified in instruction
Displacement added to address register to obtain
the effective address of the operand
Effective address is calculated by adding the
address register + 8-bit signed displacement +
contents of general purpose register
Ref fig 2.15 of text, pg.39
Lecture 2 - Prog Model
20
PC Relative



9/20/6
Similar to register indirect except that the
address of the operand is specified with
respect to the PC contents.
Allows data to be located relative to the
location of the program in memory, i.e.,
relative to the Program Counter –
allows WHAT????
Restricted to only the source operand
Lecture 2 - Prog Model
21
PC Relative


9/20/6
Allows data to be located relative to the
location of the program in memory, i.e.,
relative to the Program Counter – allows
position-independent code.
What is position-independent code?
Lecture 2 - Prog Model
22
PC Relative


Allows data to be located relative to the
location of the program in memory, i.e.,
relative to the Program Counter – allows
position-independent code.
What is position-independent code?

9/20/6
Code that can be located anywhere (some
caveats) in memory and executes the same.
Lecture 2 - Prog Model
23
The Stack

With autoincrementing/autodecrementing of
address register you have essentially 8 stacks.


For Jump to Subroutine, register A7 is used


9/20/6
In this way register A0 through A7 can become
user defined stacks
So you may not want to use address register A7
for programs that calls to subroutines
The stack grows down and the register points
to the TOS element and has valid contents.
Lecture 2 - Prog Model
24
Stack Operations

PUSH data onto stack



Stack grows down.
TOS has valid data.
Use the predecrement form


POP data from stack

Use the postincrement form

9/20/6
MOVE.W $4234, -(A7)
MOVE.W (A7)+,D4
Lecture 2 - Prog Model
25
Assignment

From Text HW1



9/20/6
Problem 2-1 parts a,b,d,g
Problem 2-5
Problem 2-6
Lecture 2 - Prog Model
26
Download