Table of Contents

~~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:

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) Thursday, May 20th, 2010 to complete and submit this to me.

If desired, our scheduled finals week meeting time is: Thursday, May 20th, 2010 from 11:15am-2:15pm in C002 (our regular room).

Good luck!

Part I: Questions

Question 0x0: System Calls

What is a 'System Call'? And why are they important?

Show an example of a system call.

Question 0x1: Registers

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

Question 0x2: Registers

What are the registers available for general use on the x86 architecture? How big are they?

Question 0x3: Registers

Do registers have data types?

Question 0x4: Stacks

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

Demonstrate the operation of a stack in assembly.

Question 0x5: Branching

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

Question 0x6: Labels

What use do labels have in assembly? What instructions can use them?

Question 0x7: Labels

What is the importance of having a starting symbol? What two common names are typically used (thinking assembly and C/C++/Java) as starting symbols?

Part II: Programs

Question 0x8: Adding without Addition

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

Write an assembly program that does the following:

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

Question 0x9: Swapping values

Write an assembly program that does the following:

Question 0xa: Reversing strings

Write an assembly program that does the following:

Question 0xb: Uppercasing a string

Write an assembly program that does the following:

Part III: Wrapping up

Question 0xc: FAQ

A big part of our explorations this semester involved discovering knowledge, both the intrinsics that make assembly make more sense in general, and knowledge that the greater internets seem to have forgotten about in specific.

The class wiki has been a centralized place for the collection of this data, and now I'd like to fine tune it a bit, and perhaps create a resource that others on the internet can use when exploring assembly language.

Located at faq:asm is the FAQ list I've created for this class and EoCE. I would like for EACH of you to come up with 8 questions and answers to contribute to the FAQ. These can include any aspect of exploring and utilizing assembly language this semester (setting up system calls, what are the system calls, using the debugger, how to assemble, how to link, how to use a given instruction, etc.). But 8 distinct questions/answers from EACH person in the class.

The FAQ page contains some additional syntax for use with FAQ lists (even though it may not display in any unique way– yet).

Be sure to, as content develops, to organize/categorize as appropriate under subsections (perhaps have a basic instruction usage, syscall usage, using the debugger, etc. – but in a form that makes sense to how the content is developing).

The intent is to try and make this document what something that would have been very useful to you when we started out at the beginning of the semester.

Question 0xd: The Philosophical Impact of Assembly Language

I've mentioned on a few occasions that although we spend time learning assembly language in this class, 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.

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.

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: