270 likes | 547 Views
68000 Architecture, Data Types and Addressing Modes. Lecture Overview. Assembler Language Programmers Model Registers Addressing Modes. Assembler Language. Programming language very close to the machine code for a language Can be considered a native language for the architecture targeted.
E N D
68000 Architecture, Data Types and Addressing Modes Lecture 2 - Prog Model
Lecture Overview • Assembler Language • Programmers Model • Registers • Addressing Modes Lecture 2 - Prog Model
Assembler Language • Programming language very close to the machine code for a language • Can be considered a native language for the architecture targeted. • Assembler languages have a 1-to-1 translation to machine code • All assemblers have two types of statements • Executable instructions • Assembler directives Lecture 2 - Prog Model
Assembler Directives • TTL • “Title” – gives the program a user-defined name • EQU • **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
Assembler Directives (2) • ORG – sets the location counter (address) • 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 at memory location $1000 DC.L $0A1234 Store $000A1234 in memory STR DC.B ‘April’ Store ASCII values Lecture 2 - Prog Model
Assembler Directives (3) • DS • Reserve bytes, words, or longwords of storage • ORG • Define the value of the location counter. Sets the memory address where the code is placed. • SECTION • Set the address counter to zero for position independent code. • END Lecture 2 - Prog Model
Assembler Code Example Lecture 2 - Prog Model
Programmers Model • When looking at any architecture what does the programmer see? • REGISTERS (General purpose) • ADDRESS REGISTERS • SPECIAL PURPOSE REGISTERS • MEMORY • Allowable operations and data transfers supported Lecture 2 - Prog Model
DATA REGISTERS • 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
Address Registers • 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
Special Purpose Registers • 2 such registers • PC – Program Counter • Contains the address of the next instruction to be executed. • SR – Status Register • 16 bits divided into two bytes • MSB – System byte – control operation mode • LSB – Condition codes Lecture 2 - Prog Model
Status Word Lecture 2 - Prog Model
Addressing Modes • Modes supported are reflective of even the most modern architecture • Some Notation • [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
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 • Fill the low order bytes of De • MOVE.L #$8123,D3 [D3(0:31)]$00008123 • Fills all 32 bits of register D3 Lecture 2 - Prog Model
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 • 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
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 • Effect: [D3] [D0] Lecture 2 - Prog Model
Address Register Indirect • Register Indirect means that the address of the operand is in a register, the address registers. • Ex: Lecture 2 - Prog Model
Forms of Address Reg. Indirect • Address Register Indirect with postincrement • 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. • Address Register Indirect with predecrement • Contents are decremented and then used • What use may these have? Lecture 2 - Prog Model
Forms of Address Reg. Indirect (2) • Address Register Indirect with displacement • A 16-bit displacement is specified in instruction • Displacement added to address register to obtain the effective address of the operand • Register Indirect with Index Addressing • 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
PC Relative • 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
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? Lecture 2 - Prog Model
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? • Code that can be located anywhere (some caveats) in memory and executes the same. Lecture 2 - Prog Model
The Stack • With autoincrementing/autodecrementing of address register you have essentially 8 stacks. • In this way register A0 through A7 can become user defined stacks • For Jump to Subroutine, register A7 is used • 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
Stack Operations • PUSH data onto stack • Stack grows down. • TOS has valid data. • Use the predecrement form • MOVE.W $4234, -(A7) • POP data from stack • Use the postincrement form • MOVE.W (A7)+,D4 Lecture 2 - Prog Model
Assignment • From Text HW1 • Problem 2-1 parts a,b,d,g • Problem 2-5 • Problem 2-6 • BE READY TO DISCUSS these in class next week. Lecture 2 - Prog Model
You can get a free 68K assembler/simulator Lecture 2 - Prog Model