Top Banner
Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1
32

Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Dec 26, 2015

Download

Documents

Derek Goodman
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Lab 1 – Assembly Language and Interfacing

Start date: Week 3Due date: Week 4

1

Page 2: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Agenda

Lab ObjectivesConnecting to the board (review)About the boardAssembly language structure and commandsAssembler directivesCompiling / downloading / runningD-Bug12 commands

2

Page 3: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Board Setup

Connect board to power supplyConnect to the PC through USB

3

Page 4: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Connecting

Open MiniIDECompiler options (terminal options) COM(X) 9600 baud rate Ensure compiler is asm12.exe in assembler tab

Terminal connectedEnsure you have a terminal (terminal show terminal window)Press the reset button on the boardYou should see a D-Bug12 message

4

Page 5: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

About the board

CISC – many instructions (we will only go over a few, there are many outlined in the text or in the manual)A, B and D registers are the main registers for instructionsX and Y registers can be used for instructions or addressing

5

Page 6: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

About the Board

D register is 16 bitsA and B are 8-bit PARTS of the D register

A B

D

6

Page 7: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

About the Board

X and Y are both 16 bitsX and Y can also be used for addressing Covered later in class when you talk

about addressing modes

7

Page 8: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

About the board

Memory There are only certain areas in

memory that you can use These areas can be used for data or

code There are commands to load from

and store to RAM

8

Page 9: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

About the Board

Other Functionality (covered as needed in later labs) I/O ports A/D ports Timers Interrupts Serial ports Etc.

9

Page 10: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Assembly Language Structure

4 fields Label Operation Operand Comment

start ldaa #$03 ;load a reg

10

Page 11: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Assembly Language Structure

Label Used to mark a certain part of the code Useful when doing branches / jumps Can use them almost like a GOTO You make them up, so can be any word you

want Labels are optional, use where needed

start ldaa #$03 ;load A reg

11

Page 12: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Assembly Language Structure

Operation Describes the operation you want to do Many operations available because

CISC Ex. Add, subtract, or, load, store,

branch

start ldaa #$03 ;load A reg

12

Page 13: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Assembly Language Structure

Operand Describes what you want to do the

operation to Manual will tell you what operands you need

with what operations #$03 = immediate, $03 = direct $=hex, %=binary, nothing = decimal

start ldaa #$03 ;load A reg

13

Page 14: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Assembly Language Structure

Comment Start with a semi-colon for comment

to end of line Very helpful in assembly code

because it can be hard to understand

start ldaa #$03 ;load A reg

14

Page 15: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Assembly Instructions - load

LDAA, LDAB, LDD, LDX, LDY Load a register with a value Syntax: (label) LDAA value LDAA #$30 = load register A with the

value $30 LDAA $30 = load register A with the

value held in memory location $30

15

Page 16: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Assembly Instructions - store

STAA, STAB, STD, STX, STY Store the value in a register to a

memory location Syntax: (label) STAA memory_location STAA $30 = store the value in

register A to memory location $30

16

Page 17: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Assembly Instructions - Add

Ex. ADDA, ADDB, ADDD, ABA More in manual

ADDA, ADDB = add 8-bit operand to register A or B (label) ADDA $30 = add the value in memory

location $30 to A, and store in A (label) ADDA #$30 = add the value $30 to A

and store in A

ADDD = add 16-bit operand to register DABA = add registers A and B and store in A

17

Page 18: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Assembly Instructions - SWI

SWI stands for software interruptUse it to end your programs and to get back out to the D-Bug12 promptNo operand

18

Page 19: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Compiler Directives

Compiler directives give instructions to the compilerReserve space, set memory locations etc.Not actually executed like an instruction

19

Page 20: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Compiler Directives - org

Org is used to tell the compiler where to put the program in memoryUnlike high level languages, where the program gets put anywhere it fits, in assembly you have to tell the compiler where to start putting the programYou can have multiple orgs in a program, ex to separate space for data and for the program (try not to have too many though)

20

Page 21: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Compiler Directives – org con’t

There are only certain areas on the board your can use for your program/dataA memory map of the system shows where you can put your code/data See appendix You have from $1000 to $4000 $1000 is good for the program because it is

big

Ex. org $1000

21

Page 22: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Compiler Directives - RMB

RMB stands for reserve memory byteOperand is the number of bytes to reserveYou can then use these to store dataIf they are labelled you can refer to them by the label(label) RMB 2

22

Page 23: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Compiler Directives - EQU

EQU = equateLike C #defineCompiler will go through and substitute before the code is compiledRequires a label to uselabel EQU $30

23

Page 24: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Compiler Directives - other

BSZ = block set zero Like RMB, but fills the blocks with 0’s

FCB = form constant byte Stores values specified in memory (label) FCB $30 (label) FCB 30, $40, ‘a’

FDB = form double byte Same as FCB, but 16 bits

FCC = form constant character (label) FCC ‘hello world’

24

Page 25: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Example

org $1000

val0 RMB 1

three EQU $03

org $1100

start LDAA #three

STAA val0

SWI

25

Page 26: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Compiling

Save as “whatever.asm” you have to type the “.asm” part too

Press the build buttonCheck the output window for errors and warnings

26

Page 27: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Downloading and Running

To load: Type “load” at the prompt Click the download button Select your s-record file (.s19)

To run Figure out where your program starts (your

probably used an ORG right before, so wherever you ORG’d to)

ex. At $1100…type “g 1100”

27

Page 28: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

D-Bug12 commands

Once your program has exited, you can use D-Bug12 to analyze the outputImportant ones: load g md mm rd

Others in Lab 0

28

Page 29: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

D-Bug12 commands - md

md = memory displayMd <start address> (<end address>)Shows the contents of memory starting at the start addressEx, you ORG’d at $1000 and then used RMB to store some data. To see it, type:md 1000

29

Page 30: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

D-Bug12 commands - mm

To modify a memory locationmm <address> <value>

Ex, you load data from a certain memory location at 800, but you want to change it without recompilingmm 1100 40

30

Page 31: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

D-Bug12 commands - RD

rd = register displayUse it to see the contents of all the user registers, flags, stack points and PCNo operands, just “rd”

31

Page 32: Lab 1 – Assembly Language and Interfacing Start date: Week 3 Due date: Week 4 1.

Academic Misconduct

Reports and demos are submitted as a group, but it is a SINGLE group effortYou may talk with other groups but sharing code or reports is NOT ALLOWEDCopying code/reports from previous years is also NOT ALLOWEDIf we find copying we are REQUIRED to report it

32