Skip to content Skip to navigation

Connexions

You are here: Home » Content » Lab 3: Introduction to Assembly Language

Navigation

Content Actions

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:"Microcontroller and Embedded Systems Laboratory"

    Comments:

    "Basic introduction to microcontroller-based embedded systems development. Includes structured laboratory exercises in the following areas: assembly programming, C language programming, peripheral […]"

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

Tags

(What is a tag?)

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

Lab 3: Introduction to Assembly Language

Module by: CJ Ganier

Summary: A lab that introduces a student to assembly language programming.

In this lab you will be introduced to assembly programming. The specific assembly language instruction set of the MSP will be explained. Setting up and executing assembly projects in Crossworks will also be explained. Finally you will implement the blinking lights program from the previous lab in assembly.

Read the following modules before you begin lab exercises:

Problem 1

Formulate instructions to do the following things:

  1. Set bit 3 to 1 at the memory address 0xd640 while leave bits 0-2 and 4-16 unaffected.
  2. Jump to the instruction labeled POINT if the carry bit is set.
  3. Shift register R6 right one place while preserving the sign.

Problem 2

Examine this loop:


... more instructions... 	
Mov.w  &I,  R4  
Cmp.w  #0x0000, R4 
JZ    After_loop

Start_loop:
Dec.w   #0x0001, R4	 
JZ  After_loop
BR #Start_loop

After_loop:
...more instructions...
  • How many times will this loop execute?
  • Why do we use the BR instruction with a #Start_loop, but with the JZ we use a plain After_loop?
  • What does the first JZ instruction do? If we did not have this initial Cmp and JZ, what (possibly) inadvertent effect might occur?

Problem 3

Re-write the blinking light program from Lab 2, now using assembly code. The program should do the following:

  1. When the program starts all three LED’s should light up for about a second then turn off.
  2. Next, the green LED should blink for about 1/2 second on, 1/2 second off while the other two LED’s are off.
  3. Pushing Button 1 should cause the green LED to stop blinking and cause the red LED to start the blinking pattern.
  4. Pushing the button again should continue the pattern with the yellow LED, and pushing it more times should repeat the green, red, yellow pattern. Note that the current LED that's blinking should stop as soon as the button is pressed and the next LED should begin immediately.

Comments, questions, feedback, criticisms?

Send feedback