physics 413 chapter 4 : advanced assembly programming

18
Physics 413 Chapter 4: Advanced Assembly Programming

Upload: trella

Post on 13-Jan-2016

21 views

Category:

Documents


0 download

DESCRIPTION

Physics 413 Chapter 4 : Advanced Assembly Programming. My First Assembly Program. Program adds two 16-bit numbers stored at $1000 - $1001 and $1002 - $1003 and stores the sum at $1010 - $1011 org $2000 ldd $1000 addd $1002 std $1010 end. Assembler Directives and more …. org end equ - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Physics 413 Chapter 4 :  Advanced Assembly Programming

Physics 413Chapter 4: Advanced Assembly Programming

Page 2: Physics 413 Chapter 4 :  Advanced Assembly Programming

My First Assembly Program

Program adds two 16-bit numbers stored at $1000 - $1001 and $1002 - $1003 and stores the sum at $1010 - $1011

org $2000

ldd $1000

addd $1002

std $1010

end

Page 3: Physics 413 Chapter 4 :  Advanced Assembly Programming

Assembler Directives and more …

org

end

equ

db

fcc

Examples

alpha equ 1.7

string fcc “hello!”

array db $3, $8, $23, $11, $57, $12, $47

Page 4: Physics 413 Chapter 4 :  Advanced Assembly Programming

Delay Loop

DELAY: LDX # $ FFFF

AGAIN : DEX

BNE AGAIN

SWI

Page 5: Physics 413 Chapter 4 :  Advanced Assembly Programming

Delay Loop Subroutine

here: JSR DELAY

LDAA # $ E3

CMPA $ 50

BNE here

SWI

.

.

.

DELAY: LDX # $ FFFF

AGAIN : DEX

BNE AGAIN

RTS

Page 6: Physics 413 Chapter 4 :  Advanced Assembly Programming

Stack

Stack is the area of RAM pointed to by the 16-bit Stack Pointer (SP)

LDS functions like LDX

LDS #$ 5C42 The number 5C42 is loaded into SP

LDS $ 5C42 Numbers from 5C43 and 5C42 loaded

LDS $ 5C Numbers from 005D and 005C loaded

Page 7: Physics 413 Chapter 4 :  Advanced Assembly Programming

Push and Pull

PSHA A MSP SP - 1 SP

PULA SP + 1 SP MSP A

Page 8: Physics 413 Chapter 4 :  Advanced Assembly Programming

Predict the Outcome!

PSHA

PSHB

PULA

PULB

Page 9: Physics 413 Chapter 4 :  Advanced Assembly Programming

Solution

Congratulations, if you said the contents of A and B will be swapped and , perhaps more importantly, the value of the stack pointer will be restored to its original value before this program segment was run.

00D6

00D5

00D4

00D3

Page 10: Physics 413 Chapter 4 :  Advanced Assembly Programming

Detailed Explanation

Suppose that SP was pointing at 00D6 (stack). PUSHA stores A into 00D6. Then PUSHB stores B into 00D5. At this point SP = 00D4. Then PULA pulls 00D5 (which contains B) and stores it into A. Finally, PULB pulls 00D6 (which contains A) and stores it into B. We end up swapping A and B. At this point SP = 00D6, its original value.

00D6

00D5

00D4

00D3

Page 11: Physics 413 Chapter 4 :  Advanced Assembly Programming

Research Project Ideas Follow . . .

Page 12: Physics 413 Chapter 4 :  Advanced Assembly Programming

D-Bug12 Built-in Subroutines

Table 4.2 D-Bug12 monitor (version 4.x.x) routines

Subroutine Functionpointer address

far main ( )getchar ( )putchar ( )printf ( )far GetCmdLine ( )far sscanhex ( )isxdigit ( )toupper ( )isalpha ( )strlen ( )strcpy ( )far out2hex ( )far out4hex ( )SetUserVector ( )far WriteEEByte ( )far EraseEE ( )far ReadMem ( )far WriteMem ( )

Start of D-Bug12Get a character from SCI 0 or SCI1Send a character out to SCI 0 or SCI1Formatted string output -translates binary values to stringGet a line of input from the userConvert ASCII hex string to a binary integerCheck if a character (in B) is a hex digitConvert lowercase characters to uppercase Check if a character is alphabeticReturns the length of a NULL -terminated stringCopy a NULL-terminated stringOutput 8-bit number as two ASCII hex charactersOutput a 16-bit number as four ASCII hex charactersSet up a vector to a user 's interrupt service routineWrite a byte to the on -chip EEPROM memoryBulk erase the on -chip EEPROM memoryRead data from the HCS12 memory mapWrite data to the HCS 12 memory map

$EE80$EE84$EE86$EE88$EE8A$EE8E$EE92$EE94$EE96$EE98$EE9A$EE9C$EEA0$EEA4$EEA6$EEAA$EEAE$EEB2

Table 4.2 (Huang)

Page 13: Physics 413 Chapter 4 :  Advanced Assembly Programming

Table 4.5 Number of pins available in each paralle port

Port Name No. of Pins Pin Name

ABEHJKMPST

PAD1, PAD0LUVW

8888478888

168888

PA7~PA0PB7~PB0PE7~PE0PH7~PH0PJ7~PJ0PK4~PK0PM7~PM0PP7~PP0PS3~PS0PT7~PT0

PAD15~PAD0PL7~PL0PU7~PU0PV7~PV0

PW7~PW0

I/O Ports

Table 4.5 (Huang)

Page 14: Physics 413 Chapter 4 :  Advanced Assembly Programming

LED Circuit in the Dragon12-Plus Board (Huang)

Figure 4.16 Circuit connection for Example 4.12

PB3

PB2

PB1

PB0

HCS12

PB7

PB6

PB5

PB4

1.5 K

PJ1

Page 15: Physics 413 Chapter 4 :  Advanced Assembly Programming

74H

C244

PB6PB5PB4PB3PB2PB1PB0

a

bc

defgcommon cathode

a

b

cd

e

fg

HCS12

Figure 4.17 Driving a single seven -segment display

470 each

Page 16: Physics 413 Chapter 4 :  Advanced Assembly Programming

.

.

.

a

b

g

PB

6

PB

1

PB

0

Figure 4.18 Port B and Port P together drive six seven -segment displays (MC9S12DG256)

. . .

. . .

. . .

74HC244

HCS12

a

b

g

.

.

.

commoncathode

commoncathode

commoncathode

ab

g

.

.

.

800

PP5

PP4

PP0

800

#5#1#0

74HC367

PP3

PP2

PP1

A5

Y0A0

Y5

A4

Y1

A3

A2

A1

Y2

Y3

Y4

Page 17: Physics 413 Chapter 4 :  Advanced Assembly Programming

VCC

10 K

PA0

PA1PA2PA3

PA4

PA5PA6PA7

HCS12

Figure 4.19 Connecting a set of eight DIP switches to Port A of the HCS 12

SW DIP-8

Page 18: Physics 413 Chapter 4 :  Advanced Assembly Programming

Look for more research project ideas in the book and on the internet . . .