Physics 413 Chapter 4 : Advanced Assembly Programming
description
Transcript of Physics 413 Chapter 4 : Advanced Assembly Programming
![Page 1: Physics 413 Chapter 4 : Advanced Assembly Programming](https://reader035.fdocuments.net/reader035/viewer/2022070410/5681465b550346895db37bb5/html5/thumbnails/1.jpg)
Physics 413Chapter 4: Advanced Assembly Programming
![Page 2: Physics 413 Chapter 4 : Advanced Assembly Programming](https://reader035.fdocuments.net/reader035/viewer/2022070410/5681465b550346895db37bb5/html5/thumbnails/2.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070410/5681465b550346895db37bb5/html5/thumbnails/3.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070410/5681465b550346895db37bb5/html5/thumbnails/4.jpg)
Delay Loop
DELAY: LDX # $ FFFF
AGAIN : DEX
BNE AGAIN
SWI
![Page 5: Physics 413 Chapter 4 : Advanced Assembly Programming](https://reader035.fdocuments.net/reader035/viewer/2022070410/5681465b550346895db37bb5/html5/thumbnails/5.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070410/5681465b550346895db37bb5/html5/thumbnails/6.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070410/5681465b550346895db37bb5/html5/thumbnails/7.jpg)
Push and Pull
PSHA A MSP SP - 1 SP
PULA SP + 1 SP MSP A
![Page 8: Physics 413 Chapter 4 : Advanced Assembly Programming](https://reader035.fdocuments.net/reader035/viewer/2022070410/5681465b550346895db37bb5/html5/thumbnails/8.jpg)
Predict the Outcome!
PSHA
PSHB
PULA
PULB
![Page 9: Physics 413 Chapter 4 : Advanced Assembly Programming](https://reader035.fdocuments.net/reader035/viewer/2022070410/5681465b550346895db37bb5/html5/thumbnails/9.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070410/5681465b550346895db37bb5/html5/thumbnails/10.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070410/5681465b550346895db37bb5/html5/thumbnails/11.jpg)
Research Project Ideas Follow . . .
![Page 12: Physics 413 Chapter 4 : Advanced Assembly Programming](https://reader035.fdocuments.net/reader035/viewer/2022070410/5681465b550346895db37bb5/html5/thumbnails/12.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070410/5681465b550346895db37bb5/html5/thumbnails/13.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070410/5681465b550346895db37bb5/html5/thumbnails/14.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070410/5681465b550346895db37bb5/html5/thumbnails/15.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070410/5681465b550346895db37bb5/html5/thumbnails/16.jpg)
.
.
.
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](https://reader035.fdocuments.net/reader035/viewer/2022070410/5681465b550346895db37bb5/html5/thumbnails/17.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022070410/5681465b550346895db37bb5/html5/thumbnails/18.jpg)
Look for more research project ideas in the book and on the internet . . .