Skip to content Skip to navigation

Connexions

You are here: Home » Content » 2.2 - Structure of an Assembly Program

Navigation

Content Actions

  • Download module PDF
  • Add to ...
    Add the module to:
    • My Favorites
    • A lens
    • An external social bookmarking service
    • My Favorites (What is 'My Favorites'?)
      'My Favorites' is a special kind of lens which you can use to bookmark modules and collections directly in Connexions. 'My Favorites' can only be seen by you, and collections saved in 'My Favorites' can remember the last module you were on. You need a Connexions account to use 'My Favorites'.
    • A lens (What is a lens?)

      Definition of a lens

      Lenses

      A lens is a custom view of Connexions content. You can think of it as a fancy kind of list that will let you see Connexions through the eyes of organizations and people you trust.

      What is in a lens?

      Lens makers point to Connexions materials (modules and collections), creating a guide that includes their own comments and descriptive tags about the content.

      Who can create a lens?

      Any individual Connexions member, a community, or a respected organization.

    • External bookmarks
  • E-mail the author

Lenses

What is a lens?

Definition of a lens

Lenses

A lens is a custom view of Connexions content. You can think of it as a fancy kind of list that will let you see Connexions through the eyes of organizations and people you trust.

What is in a lens?

Lens makers point to Connexions materials (modules and collections), creating a guide that includes their own comments and descriptive tags about the content.

Who can create a lens?

Any individual Connexions member, a community, or a respected organization.

This content is ...

Affiliated with (What does "Affiliated with" mean?)

This content is either by members of the organizations listed or about topics related to the organizations listed. Click each link to see a list of all content affiliated with the organization.
  • TI MSP430

    This module is included inLens: Texas Instruments MSP430
    By: Texas InstrumentsAs a part of collection:"Introduction to the Texas Instruments ez430"

    Comments:

    "This is the entire course organized at Rice University for all the basic lessons for using an MSP430. It is designed for the use of an eZ430 tool and is still under construction."

    Click the "TI MSP430" link to see all content affiliated with them.

Recently Viewed

This feature requires Javascript to be enabled.

Tags

(What is a tag?)

These tags come from the endorsement, affiliation, and other lenses that include this content.

2.2 - Structure of an Assembly Program

Module by: Naren Anand Based on: Structure of an Assembly Program by CJ Ganier

Summary: Explains the structure of an assembly language program.

The assembly program begins execution at the reset interrupt. The reset interrupt is the first thing that occurs when power is given to the processor. By default in the Workbench files, the reset interrupt is loaded to send the execution of the program to the start of the written code. Until a branch is reached, the processor will execute each instruction in turn. If the program does not loop back to an earlier point to keep going, eventually the execution will reach the end of the valid instructions in memory and attempt to execute the "instructions" in the following memory addresses (which are invalid and possibly gibberish). You should never let this happen.

The control of a programs execution is called control flow, and it is accomplished through branching, jumping, function calls, and interrupts. Interrupts are the subject of future labs. Branching and jumping refer to changing the next instruction from the next one sequentially to an instruction elsewhere in the program. By branching to an instruction above the branch itself you can cause the program to repeat itself. This is a basic loop in assembly. Branches can also be conditional. In the MSP architecture conditional branches are generally dependent on the status register (SR) bits to decide whether to execute the next instruction after the branch or the instruction the branch specifies. Many arithmetic and logical operations can set the relevant bits in the status register; check the ez430's User’s Guide for which ones you will need. A full description of each of the Assembly instructions for the ez430 can be found in Section 3.4.

To store values to perform operations, you must use the ez430's registers to store values. The ez430 has 16 CPU registers. Of these 16, the upper 12 are general purpose 16 bit registers (R4-R15). The lower four are:

  • R0 Program Counter(PC) – This register controls the next instruction to be executed by the MSP core. In general, this register is incremented automatically during execution. It can be used as a source in operations normally.
  • R1 Stack pointer (SP) – The stack pointer is used to keep track of previous execution modes and to return from interrupts. Can be read as a normal register.
  • R2 Status Register (SR) – The status register can be written to change the operating mode of the MSP as specified in the User’s Guide. When read it can act as a constant generator. Depending on the instruction code options this register will be read as: a normal register, 0x0000, 0x0004, or 0x0008 depending on the As bits.
  • R3 Constant Generator II – This register cannot be written to, and when read produces: 0x0000, 0x0001, 0x0002, or 0xffff depending on the As bits.
The rest of the registers on the ez430 behave as if they were memory. In most cases, these special purpose registers can be read and written to normally but they affect the behavior of their respective systems.

Once you understand the basics of assembly you should be able to write some simple routines. Once you create a new Assembly project in Workbench, replace the default code with the following. You'll see that the Watchdog timer has already been deactivated. Put your assembly code in the place indicated. Also, notice the difference in location of instructions and labels. Labels, which mark the begining of certain blocks of code, are left aligned such as the "RESET" seen below. Instructions, however, are tabbed over. Remember to follow this convention because the compiler will assume anything left aligned is a label.

#include "msp430x20x1.h"

;-------------------------------------------------------------------------------
            ORG     0xF800                  ; Begining PsuedoOP
;-------------------------------------------------------------------------------
RESET       mov.w   #0x280,SP               ; Set stackpointer
            mov.w   #WDTPW+WDTHOLD,&WDTCTL  ; Stop watchdog timer       

;;    **YOUR CODE GOES HERE**
        
        
;-------------------------------------------------------------------------------
;           Interrupt Vectors
;-------------------------------------------------------------------------------
            ORG     0xFFFE                  ; MSP430 RESET Vector
            DW      RESET                   ;
            END  

Comments, questions, feedback, criticisms?

Send feedback