ELN5622 Embedded Systems Class 2 Spring, 2003 - PowerPoint PPT Presentation

About This Presentation
Title:

ELN5622 Embedded Systems Class 2 Spring, 2003

Description:

Labels provide names for addresses (usually in first column) ... Some compilers provide a post-compilation assembly file or list file for debugging. ... – PowerPoint PPT presentation

Number of Views:64
Avg rating:3.0/5.0
Slides: 59
Provided by: kort5
Category:

less

Transcript and Presenter's Notes

Title: ELN5622 Embedded Systems Class 2 Spring, 2003


1
ELN5622Embedded SystemsClass 2Spring, 2003
Kent Orthnerkorthner_at_hotmail.com
2
Resources
  • Course Page
  • www.ksoa.ca/eln5644/index.html
  • Other Resources
  • www.hc11.demon.nl

3
Programming Model Instruction Set Architecture
4
Instruction Set Architecture
  • The set of instructions that the microprocessor
    can execute.
  • Defines registers that a programmer can access
  • Some registers in the microprocessor are not
    directly accessible by the programmer

5
Instruction Set Characteristics
  • Fixed vs. variable Length Instructions
  • 68HC11
  • INX 0x08
  • LDX C100 0xce c1 00
  • Addressing modes
  • R1 ? R2 C100
  • R1 ? R3 M(R3 X)
  • Supported Operands
  • FMUL/FDIV, INC/DEC

6
Multiple Implementations
  • Successful architectures have several
    implementations
  • varying clock speeds
  • different bus widths
  • different cache sizes
  • etc.
  • Ie 8086 Architecture has not changed greatly
    through 8088, 80286, 80386, 80486, Pentium, etc

7
Pseudo-code
  • Intended to illustrate algorithms.
  • Simple to understand
  • Assignments
  • AccA ? 1234
  • AccB ? M(5678)
  • Functions
  • Putchar (char)
  • Newchar ? getchar ()

8
Pseudo-code
  • Loops
  • While ()
  • Endwhile
  • Repeat
  • Until ()
  • Conditionals
  • If () then
  • Elsif () then
  • Endif

9
Programmers Model
  • Describes the microprocessor registers that are
    accessible by the programmer
  • Includes information about the register width and
    the type of data element it may contain
  • Indicate how the instructions access and
    manipulate the registers
  • Some registers are not visible (IR).

10
Registers
  • Local memory bits inside the processor.
  • Instructions use the registers to accomplish
    tasks.
  • Some are general purpose
  • R0 through R7
  • Some are function specific.
  • Program Counter
  • Stack Pointer
  • Condition Code

11
Motorola 68HC11 Programmers Model
12
Motorola 68HC11 Programmers Model
  • Accumulator
  • 8-bit A , B (ACCA, ACCB)
  • 16-bit D (ACCD)
  • Two 8-bit accumulator registers. Each may be a
    source or destination operand for 8-bit
    instructions.
  • Some instructions use D as a single 16-bit
    accumulator, with A as the most significant Byte.
  • Examples
  • ACCA ? 64
  • ACCB ? ACCB M(0074)
  • ACCD ? ACCD (MM1)

13
Motorola 68HC11 Programmers Model
  • Index Registers
  • X, Y (IX, IY)
  • Two 16-bit registers X Y used primarily for
    indexed addressing.
  • Examples
  • IX ? 0064
  • ACCD ? M(IX64)M(IX65)

14
Motorola 68HC11 Programmers Model
  • Stack Pointer
  • SP
  • 16-bit registers pointing to the next available
    memory location for a push operation.
  • Automatically decremented during a push
    operation, incremented during a pull operation.
  • Must be initialized before use.

15
Motorola 68HC11 Programmers Model
  • Program Counter
  • PC
  • 16-bit register pointing to the beginning fot he
    next instruction to be executed.
  • Automatically incremented after each instruction.
  • Programmer has no control over, other than branch
    jump instructions.

16
Motorola 68HC11 Programmers Model
  • Condition Code Register
  • CCR
  • 4-bit register whose bits are set or reset during
    arithmetic or other operations.
  • Used for branch operations.
  • Bits include
  • C Carry
  • V Twos complements overflow
  • Z Zero
  • N Negative
  • I Interrupt Mask
  • H Half-carry
  • X External Interrupt Mask
  • S Stop Disable

17
Motorola 68HC11 Programmers Model
  • Condition Code Register Example
  • ACCA ? F0
  • ACCA ? ACCA F0
  • 11110000
  • 11110000
  • 11100000
  • C ? 1
  • Z ? 0
  • N ? 1
  • V ? 0

18
Addressing Modes
  • Immediate Addressing
  • ACCA ? 64
  • Direct / Extended Addressing
  • Direct Addr lt 0xFF
  • Extended Addr gt 0x0100
  • ADDA ? M(0064) (Direct)
  • ADDA ? M(1234) (Extended)

19
Addressing Modes
  • Indexed Addressing
  • ACCA ? M(IX 64)
  • Inherent Addressing
  • ADDA ? ACCA ACCB
  • Relative Addressing
  • PC ? (PC 15)

20
Motorola 68HC11 Instruction Types
  • Load Store Instructions
  • 8-bit Load/Store
  • 16-bit Load/Store
  • Stack Push/Pull
  • Transfer Register Instructions
  • Decrement Increment Instructions

21
Motorola 68HC11 Instruction Types
  • Clear Set Instructions
  • CLRA, CLRB, BCLR, BSET
  • Shift Rotate Instructions
  • Logical Shift
  • Arithmetic Shift
  • Rotate

22
Motorola 68HC11 Instruction Types
  • Arithmetic Instructions
  • Add Subtract
  • Decimal Instructions (BCD)
  • Negating Instructions
  • Multiplications
  • Fractional Number Arithmetic
  • Division

23
Motorola 68HC11 Instruction Types
  • Logic Instructions
  • ANDA, ANDB, EORA, ORAA, COM
  • Data Test Instructions
  • BITA, BITB, CBA, CMPA, TST, TSTA
  • Conditional Branch Instructions
  • Signed Unsigned Conditional Branches
  • BMI, BPL, BVS, GLT, BGT, BEQ, BNE
  • Unconditional Jump Branch Instructions
  • JMP, JSR, BSR, RTS BRA, BRN

24
Motorola 68HC11 Instruction Types
  • Condition Code Register Instructions
  • CLC, SEC, CLV, CEV, TAP, TPA
  • Interrupt Instructions
  • CLI, SEI, RTI, SWI, WAI
  • Miscellaneous Instructions
  • NOP, STOP, TEST

25
Assembly Language Overview
26
Language Spectrum
  • Machine Language
  • Assembly Language
  • Compiled Languages
  • C, C, Pascal,
  • Interpreted Languages
  • Perl, TCL, UNIX shells
  • Higher level Languages
  • SQL, Etc

27
Machine Language
  • The lowest level of programming languages
  • Binary encodings of the machines instructions
  • Specific to the microprocessors
  • Programmers do not write machine language
    programs (anymore)
  • Machine language (or machine code) is
    automatically generated from the assembly or
    compilation processes

28
Machine Language Example
  • X ? 1234 (Immediate)
  • LDX 1234
  • ce 12 34
  • X ? 1234 (Direct)
  • LDX 1234
  • fe 12 34

29
Assembly Language
  • One-to-one with Machine Language instructions
    (more or less)
  • More legible
  • Basic features
  • One instruction per line.
  • Labels provide names for addresses (usually in
    first column).
  • Instructions often start in later columns.
  • Columns run to end of line.

30
Assembly Language
  • Assembly languages are unique to each
    microprocessor.
  • They are categorized at a much lower level than
    the High-Level Languages (HLLs)
  • May not be executed on other computer systems
    with different microprocessors (unless the
    microprocessors are designed to be compatible)

31
Assembly Language Examples
  • Intel 8085, 8086, 80286,80486
  • Intel Pentium
  • Motorola 6800, 6805, and 6809
  • Motorola 68000, 68020 68040
  • Motorola PowerPC
  • SUN Sparc processor

32
Assembling Process
  • When a programmer writes a program in assembly
    language, a specific assembler must be used to
    create the object code for that specific
    microprocessor
  • The final executable file produced from this
    process can only be executed on a computer
    containing that specific type of microprocessor

33
Assembling Process
  • Major tasks
  • generate binary for assembly instructions
  • translate labels into addresses
  • handle assembler directives
  • Generally one-to-one translation.
  • We are using a cross assembler
  • Runs on a PC, but assembles for a 68HC11
  • The assembler were using is an absolute
    assembler
  • All source code must be in one file or group of
    files assembled together.

34
Compilation Process
  • Converts from a high level language to
    machine-executable machine language.
  • Output format is called object code.
  • Still needs to be linked before it can really be
    machine code.
  • Some compilers provide a post-compilation
    assembly file or list file for debugging.

35
Data Types
  • Numeric Data
  • Integers
  • Fixed Point
  • Floating Point
  • Boolean Data
  • TRUE 0
  • Character Data
  • American Standard Code for Information
    Interchange (ASCII)
  • Extended Binary Coded Decimal Interchange Code
    (EBCDIC)
  • UNICODE (Used extensively by Java)

36
Programming in Assembly Language
37
Assembly Fields
  • This is a Comment!
  • Label OPCODE OP1,OP2 Comment
  • OPCODE OP1
  • OPCODE Another Comment

38
Labels
  • A-Z a-z 0-9 . _
  • Up to 15 characters
  • 1st character can not be 0-9 or
  • Case sensitive
  • May end with
  • May be on a line by itself.
  • Examples
  • Test
  • _Test
  • JumpToHere LDX 1234
  • Label1

39
Op-Codes
  • Processor Instruction or
  • Assembler Directive (pseudo-op)
  • Must be preceded by at least one whitespace.
  • JumpToHere LDX 1234
  • JMP JumpToHere

40
Operand Field
  • Defines the operand for the instruction or
    directive.
  • Depends on the instructions.
  • Determines the addressing mode
  • Can be expressions to be evaluated by the
    assembler.
  • JumpToHere LDX 1234 5
  • JMP JumpToHere

41
Operand Field Addressing Modes
  • Inherent
  • INX
  • Direct, Extended, Relative
  • LDX 1234
  • Immediate
  • LDX 1234
  • Indexed
  • CLR 1234,X

42
Comments
  • Complete Line Comments First chararcter is an
    asterisk.
  • This is a Comment
  • Kent Orthner, May 22, 2003
  • After the Operand
  • JumpHere LDX 1234 5
  • JMP JumpHere Also a Comment

43
Hello World Example
  • Hello World
  • Kent Orthner, May 22, 2003
  • Definitions
  • OUTSTR EQU FFCA Define OUTSTR Function
  • EOT EQU 04 Define EndOfText Char
  • PROG EQU C000 Define Program Location
  • STACK EQU DFFF Define Stack Location

44
Hello World Example
  • Program
  • ORG PROG Locate program in mem
  • lds STACK Init stack pointer
  • ldx HELLO Point to start of message
  • jsr OUTSTR Jump to print subroutine
  • swi Returns to the debugger
  • String Definition
  • HELLO FCC /Hello World!/
  • FCB EOT

45
Assembler OutputMachine Language
  • Addr Value
  • c000 8e df ff ce
  • c004 c0 0a bd ff
  • c008 ca 3f 48 65
  • c00c 6c 6c 6f 20
  • c010 57 6f 72 6c
  • c014 64 21 04

46
Assembler Output List Files
  • Line Addr Code Label Opcode
  • 0001 Hello World
  • 0002 Kent Orthner, May 22, 2003
  • 0003
  • 0004 Definitions
  • 0005 ffca OUTSTR EQU FFCA Define
    OUTSTR
  • 0006 0004 EOT EQU 04 Define
    EndOfTex
  • 0007 c000 PROG EQU C000 Define
    Program L
  • 0008 dfff STACK EQU DFFF Define
    Stack Lo

47
Assembler Output List Files
  • Line Addr Code Label Opcode
  • 0009 Program
  • 0010 c000 ORG PROG Locate
    program
  • 0011 c000 8e df ff lds STACK Init
    stack po
  • 0012 c003 ce c0 0a ldx HELLO Point to
    start
  • 0013 c006 bd ff ca jsr OUTSTR Jump to
    print
  • 0014 c009 3f swi Returns
    to the
  • 0015
  • 0016 String Definition
  • 0017 c00a 48 65 6c HELLO FCC /Hello World!/
  • 6c 6f 20
  • 57 6f 72
  • 6c 64 21
  • 0018 c016 04 FCB EOT

48
Instructions
49
Assembler Directives
50
Assembler Directives
  • ORG Set the Program Counter
  • ORG E000
  • EQU Define Constants
  • RAM EQU E000
  • RMB Reserve Memory Bytes
  • TABLE RMB 100

51
Assembler Directives
  • BSZ/ZMB Block Storage Zeroes
  • ZeroSpace BSZ 100
  • FCB Form Constant Byte
  • CountSpace FCB 1,2,3,4,5,6
  • FCC Form Constant Character String
  • StringSpace FCC Hello World!

52
Assembler Directives
  • FDB Form Double Byte
  • FDB 1234
  • FILL Fill Memory
  • AASpace aa,100
  • OPT Assembler Output Options
  • OPT c,l,cre

53
Assembler Exercise
54
Lab 1 Simple Menu
55
Lab 1 Simple Menu
  • Purpose
  • Program assembly execution.
  • Serial Input and Output.
  • Polling-based timing.
  • Parallel I/O
  • Assignment
  • Menu-based system.
  • Control something with the Parallel I/O block.

56
Lab 1 Simple Menu
  • Criteria
  • Serial output to display menu.
  • Key entry causes menu change.
  • 2-Level menu
  • Pressing a key at the second level menu causes an
    external effect.
  • Idiot-proof (Doesnt do anything when a wrong
    key is pressed.)

57
Lab 1 Simple Menu
  • Criteria
  • Serial output to display menu.
  • Key entry causes menu change.
  • 2-Level menu
  • Pressing a key at the second level menu causes an
    external effect.
  • Idiot-proof (Doesnt do anything when a wrong
    key is pressed.)

58
Lab 1 Simple MenuImplementation Hints
  • Use Putchar(), Putstr(), getchar()
  • Well cover how to create them next week.
  • Suggested program flow
  • Top Print Menu
  • Wait for input
  • Go to SubMenu1, submenu2, or top.
  • Submenu1 Print submenu1
  • wait for input
  • Dosomething1, submenu1, or top.
  • Dosomething1 Do the action.
  • Go to Submenu1
  • Submenu2
Write a Comment
User Comments (0)
About PowerShow.com