User Tools

Site Tools


haas:spring2011:asm:eoce

~~TOC~~


Corning Community College

Computer Organization


End of Course Experience

Rules

Presented within will be various questions evaluating your knowledge and experience gained this semester. In places where you are able, the more you write and explain topics the better the chance you will have of receiving full credit (and alternatively, the more credit you will receive should something be incorrect).

The questions on this experience are open resource with the exception of other individuals. In that respect, it is CLOSED PERSON. This means you are not to communicate with other people (either in the class or otherwise), in real life or electronically. Use your own knowledge, use your skills, and use your ability to access the allowed resources to aid you in coming up with your well thought out answers to each question.

You are allowed, and expected, to ask me questions, so that a problem can be better clarified.

There are three parts to this experience:

  • Part I: 8 questions, covering various concepts we've encountered during the semester.
  • Part II: 3 programs, involving some assembly language or pseudo-assembly language coding.
  • Part III: 5 questions, involving the course and various perspectives you got out of it.

You are to do all questions. Submission is preferred in a plain text electronic format, such as in an e-mail with program attachments on Lab46.

You have until 11:59:59pm (that's 23:59:59 in 24-hour time) Wednesday, May 18th, 2011 to complete and submit this to me.

If desired, you are also welcome to come to the BDC, Room B003 for questions/to work on projects on:

  • Tuesday, May 17th from 8am-2:15pm
  • Wednesday, May 18th from 11:15am-2:15pm

Good luck!

Part I: Questions

Question 0x0: Registers

What are registers? How do they differ from 'variables' in higher level language?

Question 0x1: Registers

What registers are available on the 8085 and 6502 CPUs? What are their storage capacities?

Question 0x2: Registers

Do registers have data types?

Question 0x3: Stacks

How does the notion of a stack work in regards to instructions and memory?

Demonstrate the operation of a stack in assembly.

Question 0x4: Branching

What use do branches/jumps have in assembly? How do conditional jumps know when to act?

Question 0x5: Flags/Status Register

What are the status flags on the 8085 and 6502 CPUs? Pick one flag on one of the CPUs and explain how it works? (What events trigger it, and what states are set)

Question 0x6: Indexing/Indirect access

Explain the purpose of indexing/indirect memory access (you can explain it in terms of a particular CPU- 8085 or 6502 if you wish).

Question 0x7: Registers vs. Memory

What are some pros and cons of registers and memory (have at least 3 pros/cons for each).

Part II: Programs

Program 0x8: Adding without Addition

Computers don't actually know how to do math. They just know how to do logic.

Write an assembly program (pick your CPU; 8085 or 6502)/pseudo code that does the following:

  • has 2 values (via input, stored in memory, registers, whatever)
  • using logic, do the appropriate processing to get a resulting number that would be the sum
  • display/store the result

This program doesn't have to deal with anything greater than 9 as a result.

Program 0x9: Swapping values

Write an assembly program/pseudo code that does the following:

  • has 2 values (doesn't have to numeric, but still single-digit)
  • swaps the values (so what is in location 1 is now in 2, and 2 in 1)
  • output/store the result

Program 0xa: Uppercasing a letter

Write an assembly program/pseudo code that does the following:

  • have a lowercase ASCII letter in some location (register, memory, whatever)
  • perform an operation to make it uppercase
  • display/store the result
  • this must be able to transparently work for ANY lowercase letter

Part III: Wrapping up

Question 0xb: The bottom-up approach

We took a bottom-up approach to Computer Organization– starting with some basic components (logic gates), building additional components (flip-flops), which led into registers, and built more and more logic on top of all these components to end up with our attempts at the various CPU simulators.

  • Pick an instruction on one of the CPUs (8085, 6502) and pick it apart, tracing its internal workings down to base component logic.
  • How does this bottom-up approach influence the coding design of the simulator?
  • If we were to approach this from a top-down approach (starting with implementing the instructions), what difficulties do you think would be encountered?

Question 0xc: 8-bit vs. higher-bit

With our experiences implementing the simulator this semester, take a moment to reflect upon the nature of the CPU. We purposefully chose to implement simpler 8-bit CPUs.

  • What design decisions would you reconsider if we were to implement a modern-day 32- or 64-bit CPU?
  • In terms of the simulator coding, what does the thought of implementing a 64-bit CPU mean to you?
  • Even though different CPUs have unique instruction sets, resources, and capabilities, explain how all conventional CPUs are alike.

Question 0xd: The Philosophical Impact of Assembly Language

It is said that, that by and large, most areas of programming will not require specific assembly language coding (there are exceptions– compiler algorithm development, embedded systems programming, high-performance code customization). Just because it won't specifically be used, however, that does not mean that assembly language is a useless nor “dead” language.

  • Why is it important that a computing curriculum include assembly language?
  • What benefit does it possess for your understanding and programming ability?
  • How has it changed your perspective with regard to writing programs and algorithms?

Question 0xe: The Assembly Language Paradox

All things considered, Assembly Language is a rather simple language- the instructions are very direct and single purpose in nature.

With this simplicity, however, comes work.

  • How is assembly language both simpler yet more work than a higher level language?
  • Why is the devil in the details?

Question 0xf: Your Perspective

After an exciting and intellectually challenging run, we're arriving at the end of this semester's journey. The course as we all experienced it, unfolds in a manner pertaining in part to how you respond to concepts and topics (do we need more time, can I crank it up a couple notches, etc.) so each semester and each class is entirely different from any other- because of each of you, and all of us, working together and learning together.

So, searching deep down within your soul- balancing reason with emotion, and considering attendance and timeliness; answer me the following:

  • What grade do you feel you deserve for this course?
  • Why do you feel you deserve this mark? (Justify your answer based on your own perceived performance, not on need.)
  • How did you feel about the course?
  • Was it useful/interesting to you?
  • What was your least favorite aspect, and why?
  • What was something meaningful to you with respect to the course? Why does this stick out in your mind?
  • Any other comments or suggestions?
haas/spring2011/asm/eoce.txt · Last modified: 2011/05/01 21:33 by 127.0.0.1