Difference between revisions of "CSC270 Homework 7 2012"
(→Problem #2) |
(→Problem #1) |
||
Line 14: | Line 14: | ||
The reverse table found [http://home.earthlink.net/~tdickens/68hc11/68hc11_opcode_map.html here] will help you do the reverse engineering. | The reverse table found [http://home.earthlink.net/~tdickens/68hc11/68hc11_opcode_map.html here] will help you do the reverse engineering. | ||
+ | |||
+ | The table below is a list of the different Operating System entry points for the 6811 Kit. You'll see addresses that are used in the program you are reverse-engineering. | ||
+ | <br /> | ||
+ | <center> | ||
+ | [[Image:6811RomEntriePoints.png]] | ||
+ | </center> | ||
=Problem #2= | =Problem #2= |
Revision as of 13:37, 28 March 2012
--D. Thiebaut 13:43, 28 March 2012 (EDT)
This homework assignment is due on 4/4/12, at 1:00 p.m. You may work on this lab in teams of at most 2 people.
Contents
Problem #1
Disassemble the code you used in the lab to display your message. This requires looking up the op-codes and figuring out what instructions they correspond to, and write the whole program using mnemonics.
The reverse table found here will help you do the reverse engineering.
The table below is a list of the different Operating System entry points for the 6811 Kit. You'll see addresses that are used in the program you are reverse-engineering.
Problem #2
Question 1
Using the same idea as the "Hacking" problem in the last lab (putting your name into the display of the kit), pick a message that you want to display, and hack the code you used in the lab to make it display your code.
Take a picture (or several pictures) of the display showing your message and include it/them with your answer
Question 2 (optional extra credit)
Write the code of your hacked program in assembly using the knowledge you acquired in Problem 1.
Problem #3
Question 1
- Write a program in 6800 Assembly Language that computes the quantity
Y = 3 * ( a + b ) - ( c - 2 )
- where Y, a, b, and c are byte variables.
- Assemble your code by hand.
- Write the listing of your code in a format similar to the example below:
ORG 0000 ; specifies starting address 0000
LDAA a ; get Mem[0000] in ACCA (direct addressing)
LDAB b ; get Mem[0001] in ACCB
ABA ; ACCA <- ACCA + ACCB
STAA c ; Mem[0002] <- ACCA
ORG 0010 ; specifies starting address 0
a DB 2 ; 2 is stored at 0010
b DB 3 ; 3 is stored at 0011
c DB ? ;
- Make sure you include the opcodes on the left of the program, including the address for each instruction.
Question 2
- How many bytes of code plus data does your program take?
Question 3
- How many cycles does your program take to execute from first to last instruction.