|
|
Line 6: |
Line 6: |
| |'''Week''' || '''Topics''' || '''Reading''' | | |'''Week''' || '''Topics''' || '''Reading''' |
| |-valign="top" | | |-valign="top" |
− | | + | |width="15%"| Week 1 <br /> 9/08 |
− | |width="15%"| Week 1 <br /> 9/05 | |
| |width="60%"| | | |width="60%"| |
− | * [[CSC231_First_Program | first program]] | + | * |
− | * assembling programs
| |
− | * first look at Pentium processor. [http://www.intel.com/pressroom/archive/photos/p4_photos.htm?iid=ipp_850echpst+relate_pr& Photos].
| |
− | * Outputing text in assembly
| |
− | * memory map of a program
| |
− | * [[CSC231_skeleton_program | skeleton program]]
| |
− | * [[media:CSC231_Bare_and_Skeleton_version.pdf | Bare versus Skeleton versions]]
| |
− | * A [[CSC231_Hello_World_on_Mac | hello-world program]] for the Mac OSX. More info on Mac OS X system calls can be found [http://www.freebsd.org/doc/en_US.ISO8859-1/books/developers-handbook/x86-system-calls.html here ][[CSC231 Final Exam 12/08|.]]
| |
− | | |
| ---- | | ---- |
| | | |
− | * '''Mini lab''': [[CSC231_Lab_1 | Lab #1 ]] | + | * |
− | || Chapter 1 in the [http://cs.smith.edu/~thiebaut/ArtOfAssembly/artofasm.html Art of Assembly].
| |
− | Also Chapter 3, Sections 0 to 3.1.2.
| |
− | Sections 1.3.1, 1.3.2, 1.3.3, 1.3.4, and 1.3.5 in Carter's [http://cs.smith.edu/~thiebaut/classes/231_0405/doc/pcasm-book.pdf PC Assembly Language].
| |
− | | |
| |- style="background:#eeeeff" valign="top" | | |- style="background:#eeeeff" valign="top" |
− | | Week 2 <br /> 9/08 | + | | Week 2 <br /> 9/13 |
| || | | || |
− | * First introduction to the Pentium processor. Registers, ALU, Control Unit, Busses, Memory | + | * |
− | * [[CSC231_Exercises_Binary_Hexadecimal | Exercises]] on binary, decimal, hexadecimal system
| |
− | * [http://www.willamette.edu/~gorr/classes/cs130/lectures/BinaryConversion/convert.html Bin/Dec/Hex converter]
| |
− | * [[CSC231_listing_file | Listing file]] with assembly and opcodes
| |
− | * [[media:CSC231_StepByStepInstruction.pdf | Step by Step]] execution of instructions
| |
− | * [[CSC231_ReverseEngineering.lst | Exercise]] on reverse engineering. [[CSC231_ReverseEngineeringSol.asm | Solution]]
| |
− | * The '''mov''' instruction. Syntax. Operands
| |
− | * Units of storage: nybble, byte, word, double-word
| |
− | * The '''add''' instruction.
| |
− | * Using the '''ddd''' debugger
| |
− | | |
| ---- | | ---- |
| | | |
− | * [[CSC231_Homework_1 | Homework #1]] and [[CSC231_Homework_1_Solution | Solution ]] | + | * |
− | * [[CSC231_Lab_2 | Lab #2]]
| |
| || | | || |
− | *[http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH03/CH03-1.html Basic computer organization], Sections 3.0, 3.1, 3.3.1 | + | * |
− | *[http://webster.cs.ucr.edu/AoA/Linux/HTML/DataRepresentation.html#998846 Review of data representation]
| |
− | *[http://webster.cs.ucr.edu/AoA/Linux/HTML/DataRepresentation2.html#998917 Bits, nybbles, bytes]
| |
− | *[http://webster.cs.ucr.edu/AoA/Linux/HTML/DataRepresentation3.html#1012324 The hex system]
| |
− | | |
| |- valign="top" | | |- valign="top" |
− | | Week 3 <br /> 9/15 | + | | Week 3 <br /> 9/20 |
| || | | || |
− | * Review of last lab | + | *---- |
− | ** [[CSC231_Add5.asm | add5.asm]]
| |
− | ** [[CSC231_ComputeFib7.asm | computeFib7.asm]]
| |
− | * new instructions
| |
− | ** add, sub, inc, dec, loop
| |
− | ** [[CSC231_Loop_Exercises | Exercises]]
| |
− | * Binary adders, [http://en.wikipedia.org/wiki/Boolean_algebra_(introduction) Boolean Algebra], and the ALU
| |
− | * Signed and unsigned numbers
| |
− | ---- | |
| | | |
− | * [[CSC231_Homework_2 | Homework #2]] and its [[CSC231_Homework_2_Solution | Solution]] | + | * |
− | * [[CSC231_Lab_3 | Lab #3]]
| |
| || | | || |
− | Signed and unsigned numbers are covered in
| + | * |
− | [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH01/CH01-2.html#HEADING2-96 Sections 1.7 and 1.8] and
| |
− | [http://maven.smith.edu/~thiebaut/classes/231_0607/doc/pcasm-book.pdf Chap. 2]
| |
− | [http://en.wikipedia.org/wiki/Boolean_algebra_(introduction) Boolean Algebra]
| |
| | | |
| |- style="background:#eeeeff" valign="top" | | |- style="background:#eeeeff" valign="top" |
− | | Week 4 <br /> 9/22 | + | | Week 4 <br /> 9/27 |
| || | | || |
− | * A [[CSC231_OverFlow_C_Program | C program]] that overflows | + | *---- |
− | * A [[CSC231_OverFlow_Python_Program | Python program]] that overflows (or does it?)
| + | * |
− | * How do we represent signed numbers?
| |
− | * What formats are available?
| |
− | ** Signed magnitude
| |
− | ** 1's complement
| |
− | ** 2's complement
| |
− | * Why the binary adder dictates what we choose
| |
− | * [[CSC231_Mystery_C_Program_with_signed_numbers | Mystery C Program]]
| |
− | *[http://www.mathsisfun.com/binary-decimal-hexadecimal-converter.html Hex/Bin/Decimal converter]
| |
− | * <font color="purple">'''Project starts!'''</font> (on Friday)
| |
− | ---- | |
− | * [[CSC231_Homework_3 | Homework #3]] and its [[CSC231_Homework_3_Solution | Solution]]
| |
− | * [[CSC231_Lab_4 | Lab #4]] | |
| || | | || |
− | *The signed and unsigned representations of numbers are covered in [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH01/CH01-2.html#HEADING2-96 Sections 1.7 and 1.8] of The Art of Assembly, and in [http://maven.smith.edu/~thiebaut/classes/231_0607/doc/pcasm-book.pdf Chapter 2] of Carter's PC Assembly Language. | + | * |
− | | |
− | *[http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH04/CH04-2.html#HEADING2-1 Addressing modes] are covered in Chapter 4 of The Art of Assembly. We won't cover "Displacement Only Addressing" modes (Section 4.6.2.1). Mentally replace 16-bit registers by 32-bit registers when reading this section.
| |
| | | |
| |- valign="top" | | |- valign="top" |
− | | Week 5 <br /> 9/29 | + | | Week 5 <br /> 10/04 |
| || | | || |
− | * Arduino hardware info | + | *---- |
− | * Addressing modes
| + | * |
− | ** inherent
| |
− | ** register
| |
− | ** immediate
| |
− | ** direct
| |
− | ** indirect/based/indexed
| |
− | ** indirect with displacement
| |
− | ** base-indexed
| |
− | ** base-indexed with displacement
| |
− | * [http://www.asciitable.com/ Ascii Table]
| |
− | * [[CSC231_Addressing_Mode_Exercises | Exercises on addressing modes]]
| |
− | * '''SHR''' and '''ADC''' instructions.
| |
− | * [http://cs.smith.edu/~thiebaut/classes/231/bmp/ BMP] processing programs and picture files.
| |
− | ---- | |
− | * [[CSC231_Homework_4 | Homework #4]] and its [[CSC231_Homework_4_Solution | solution ]]
| |
− | * [[CSC231_Lab_5 | Lab #5]] (NOT! Mountain Day!) | |
| || | | || |
− | Read/continue reading on ''Addressing Modes''
| + | * |
| + | |
| |- style="background:#eeeeff" valign="top" | | |- style="background:#eeeeff" valign="top" |
− | | Week 6<br /> 10/06 | + | | Week 6<br /> 10/11 |
| || | | || |
− | * '''Monday''': Burton B17: [[CSC231_Lab_5 | Lab #5]] | + | * '''Monday''': '''Fall Break''' |
− | * '''Wednesday''': Bass 102
| |
− | ** -----------
| |
− | ** Exploring the [http://arduino.cc/en/uploads/Main/Arduino-Diecimila-schematic.pdf schematics] of the Arduino
| |
− | ** Recipes of [http://www.seattlerobotics.org/encoder/mar97/basics.html simple circuits]
| |
− | ** -----------
| |
− | ** More logic instructions AND, OR, NOT, XOR, SHL, SHR.
| |
− | ** [http://heim.ifi.uio.no/~stanisls/helppc/idx_assembler.html HelpPC] resource
| |
− | * '''Friday'''
| |
− | ** Burton B17: <font color="purple">'''Project early proposal (5min)'''</font>
| |
| || | | || |
− | * Read the [http://www.tinker.it/en/uploads/v3_arduino_small.pdf Arduino "Low-Tech Manual"]: great reading for the project. | + | * |
− | * Chapters 2, 3, 7, and 8 of [http://www.parallax.com/dl/docs/books/edu/wamv2_1.pdf What's a MicroController?]
| |
− | | |
| | | |
| |- valign="top" | | |- valign="top" |
− | | Week 7 <br /> 10/13 | + | | Week 7 <br /> 10/18 |
| || | | || |
− | * Fall Break--No class on Monday | + | * |
− | * '''Wednesday''': Continuation of [[CSC231_Lab_5 | Lab #5]]
| |
− | * '''Friday ''': <font color="red">'''in-class Midterm Exam'''</font>. [[CSC231_Midterm_Preparation| Midterm Prep]]
| |
− | * <!--'''Friday 10/17''': Soldering lab in McC basement (Greg Young, Eric Jensen)<br /> -->
| |
| ---- | | ---- |
− | * [[CSC231_Homework_5 | Homework #5]] | + | * |
− | * [[CSC231_Lab_5 | Lab #5]]
| |
| || | | || |
| + | * |
| | | |
| |- style="background:#eeeeff" valign="top" | | |- style="background:#eeeeff" valign="top" |
− | | Week 8 <br /> 10/20 | + | | Week 8 <br /> 10/25 |
| || | | || |
− | * '''Monday''' (Bass): | + | * |
− | ** Functions, Call & Ret instructions.
| |
− | ** Push/Pop, Pushad/Popad instructions
| |
− | ** [[CSC231_Exercises_On_Functions | Exercises on Functions]]
| |
− | * '''Friday''' (Burton): <font color="purple">'''Project final proposal (10 min)'''</font>
| |
| ---- | | ---- |
− | * [[CSC231 Homework 6 | Homework #6]] and its [[CSC231 Homework 6 Solution | solution]] | + | * |
| | | |
| || | | || |
− | * [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH06/CH06-1.html#HEADING1-160 Push and Pop] | + | * |
− | * [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH06/CH06-5.html#HEADING5-98 Call and Ret]
| + | |
| |- valign="top" | | |- valign="top" |
− | | Week 9 <br /> 10/27 | + | | Week 9 <br /> 11/01 |
| || | | || |
− | * '''Monday''': | + | * |
− | ** [[CSC231 Flags Settings Examples | A program that compares]] operands and shows flag values
| |
− | ** Conditional jumps
| |
− | ** [[CSC231 Exercises with conditional jumps | Exercises on conditional jumps]][[CSC231 Exercises with conditinal jumps Solutions |.]]
| |
− | | |
− | * '''Wednesday''':
| |
− | ** Project feedback, questions.
| |
− | ** [[CSC231 Exercises with conditional jumps | Continuation of exercises on conditional jumps]] and their [[CSC231 Exercises with conditinal jumps Solutions | (solution)]]
| |
− | * '''Friday''': Lab in Burton: communication between PC and Arduino
| |
| ---- | | ---- |
− | * [[CSC231 Homework 7 | Homework #7]] | + | * |
− | * [[CSC231 Lab 6 | Lab #6]]
| |
| | | |
| || | | || |
− | * The [http://www.handyboard.com/techdocs/hbmanual.pdf Handy Board Technical Reference] (pdf). Check Section 5 out: it contains very good information on connecting and using various sensors for the projects! | + | * |
− | * [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH06/CH06-5.html#HEADING5-226 Conditional Jumps]
| |
| | | |
| |- style="background:#eeeeff" valign="top" | | |- style="background:#eeeeff" valign="top" |
− | | Week 10 <br /> 11/03 | + | | Week 10 <br /> 11/08 |
| || | | || |
− | * '''Monday''' | + | * |
− | ** [http://webster.cs.ucr.edu/Page_Linux/LinuxSysCalls.pdf Linux system calls]
| |
− | ** [[Media:CSC231_File_IO_In_Assembly.pdf | File I/O in Assembly]] (pdf)
| |
− | *** [[CSC231 createFile.asm | createFile.asm ]]
| |
− | *** [[CSC231 readFile.asm | readFile.asm ]]
| |
− | *** [[CSC231 readWriteTextFile.asm | readWriteTextFile.asm]]
| |
− | ** Functions and Passing parameters
| |
− | *** [[CSC231 SumProc1.asm| sumproc1.asm]]
| |
− | *** [[CSC231 SumProc2.asm| sumproc2.asm]]
| |
− | *** [[CSC231 SumProc3.asm| sumproc3.asm]]
| |
− | *** [[CSC231 SumProc4.asm| sumproc4.asm]]
| |
− | *** [[CSC231 SumProc5.asm| sumproc5.asm]]
| |
| ---- | | ---- |
− | * [[CSC231 Homework 8 | Homework #8]] and its [[CSC231 Homework 8 Solution | solution]]. A modified version of [[CSC231 Modified Arduino-serial.c| arduino-serial.c]] for testing the homework program. | + | * |
| + | |
| | | |
− | * [[CSC231 Lab 7 | Lab #7]]
| |
| || | | || |
− | * [http://webster.cs.ucr.edu/Page_Linux/LinuxSysCalls.pdf Linux System Calls]. Section 1.1 shows the equivalence between registers and parameters. Section 3.3 explains how to interpret the parameters used by a system call. Appendix A lists all the system calls and the parameters. | + | * |
| + | |
| |- valign="top" | | |- valign="top" |
− | | Week 11 <br /> 11/10 | + | | Week 11 <br /> 11/15 |
| || | | || |
− | * '''Monday''' | + | * |
− | ** File I/O
| |
− | *** [[CSC231 createFileProc.asm| createFile.asm]] (with functions)
| |
− | *** [[CSC231 readFileProc.asm | readFile.asm]] (with functions)
| |
− | *** [[CSC231 createBinaryFile.asm | createBinaryFile.asm]]: creates a binary file. Look at it with <tt>od -t x1 data.bin</tt>, or <tt>od -t x4 data.bin</tt>.
| |
− | ** Macros
| |
− | * '''Wednesday''': Lab in Burton
| |
− | ** [http://www.youtube.com/watch?v=1ZjdiRxr0OM How to solder wires]
| |
− | ** [http://www.youtube.com/watch?v=6QznAAwL8rI How to solder wires], from Popular Mechanics
| |
− | ** [http://www.youtube.com/watch?v=krxTfZCFptk How to maintain your soldering iron clean]
| |
− | ** [http://www.youtube.com/watch?v=d-j98tkAbh8 How to heat shrink] wires
| |
| | | |
− | * '''Friday''': no class (work on your project!!!) | + | * |
| ---- | | ---- |
− | * [[CSC231 Homework 9 | Homework #9]] and its [[CSC231 Homework 9 Solution | solution]]. | + | * |
| + | |
| || | | || |
− | * [http://www.tortall.net/projects/yasm/manual/html/nasm-multi-line-macros.html Nasm Macros] | + | * |
− | * new Linux commands:
| + | |
− | ** od (octal-dump)
| |
− | ** hexdump
| |
| |- style="background:#eeeeff" valign="top" | | |- style="background:#eeeeff" valign="top" |
− | | Week 12 <br /> 11/17 | + | | Week 12 <br /> 11/22 |
| || | | || |
− | * '''Monday''' | + | * |
− | ** '''Recursion''' and '''reentrancy'''. Reentrant programs must not modify global variables! | + | * Wednesday: '''Thanksgiving Break''' |
− | ** ''Recursion rule'': '''1)''' stopping condition, '''2)''' recurse on a smaller problem than one given.
| + | * Friday: '''Thanksgiving Break''' |
− | ** [[CSC231_factorial.asm | factorial.asm]] | |
− | * '''Wednesday'''
| |
− | ** Two programs related to the current hw assignment: [[CSC231 driver2.c|driver2.c]], and [[CSC231 writeIntegerAtIndex.asm|writeIntegerAtIndex.asm]]
| |
− | ** Lab in Burton: Make it work! Develop the hardware/software pairs: each hardware sensor should have an assembly language routine that either knows how to read from it, or to write to it.
| |
− | | |
− | * '''Friday''': Presentation of working hardware
| |
| ---- | | ---- |
− | * [[CSC231 Homework 10 | Homework #10]] and its [[CSC231 Homework 10 Solution| Solution]] | + | * |
| || | | || |
− | *the [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH05/CH05-1.html#HEADING1-4 LEA] instruction: an more powerful alternative to '''mov''' when loading up a vector. | + | * |
− | * [http://cs.smith.edu/~thiebaut/classes/231_0405/doc/pcasm-book.pdf Section 2.1.3] of Carter's Assembly Manual on the MUL instruction (and IMUL).
| + | |
| | | |
| |- valign="top" | | |- valign="top" |
− | | Week 13 <br /> 11/24 | + | | Week 13 <br /> 11/29 |
| || | | || |
− | [[Image:turkey.gif | right]]
| + | * |
− | * '''Monday''': | |
− | ** Presentation of working projects (carry over from Friday)
| |
− | ** Current homework ([[CSC231 binarySearch.py | binary search]])
| |
− | ** recursion
| |
− | ** simulating communication with an Arduino stamp
| |
− | * '''Wednesday''': <font color="orange">Thanksgiving break</font>
| |
− | * '''Friday''': <font color="orange">Thanksgiving break</font>
| |
| || | | || |
− | * Section 4.8 of [http://cs.smith.edu/~thiebaut/classes/231_0405/doc/pcasm-book.pdf Carter's Assembly Manual] on recursion | + | * |
− | * [http://docs.hp.com/en/B3921-90010/gettimeofday.2.html get time of day function]
| + | |
− | * [http://en.wikipedia.org/wiki/Binary_search all about binary search]...
| |
− | * [http://wiki.answers.com/Q/Assembly_language_program_to_do_binary_search A good example] of how '''not''' to document a program...
| |
| |- style="background:#eeeeff" valign="top" | | |- style="background:#eeeeff" valign="top" |
− | | Week 14 <br /> 12/01 | + | | Week 14 <br /> 12/06 |
| || | | || |
− | * '''Monday''': | + | * |
− | ** Hardware Interrupts (simplified)
| |
− | ** Sharing interrupts
| |
− | ** Interrupting the processor
| |
− | ** Processor response to an interrupt and stack usage
| |
− | * '''Wednesday'''
| |
− | ** [[CSC231_How_to_play_a_wav_file_in_C | Playing wav files]]
| |
− | ** Interrupts:
| |
− | ** Priority encoder
| |
− | *** Some [[CSC231 Hard-Disk Arduino Project: some numbers | numbers]] related to Hard-disk project
| |
− | *** Average response time
| |
− | *** Alternatives to interrupts: polling
| |
− | *** Arduino Interrupt-related functions
| |
− | **** [http://arduino.cc/en/Reference/AttachInterrupt AttachInterrupt] function
| |
− | **** [http://www.arduino.cc/en/Reference/Millis Millis] function
| |
− | **** [http://arduino.cc/en/Reference/Delay Delay] function
| |
− | **** [http://arduino.cc/en/Reference/DelayMicroseconds DelayMicroseconds] function
| |
− | **** An [[CSC231 Arduino Interrupt Program Example | Interrupt Program]]. [http://www.arduino.cc/en/Reference/Volatile Volatile] variables.
| |
− | * '''Friday'''
| |
− | ** [[CSC231 GetLocalTime.asm| Getting the local time]] in assembly
| |
− | ** [http://maven.smith.edu/~thiebaut/classes/231/floatingpoint.html Floating-Point Converter] applet.
| |
| ---- | | ---- |
− | *[[CSC231 Homework 11 | Homework 11]] | + | * |
− | *[[CSC231 Lab 8 | Lab #8]]
| |
| || | | || |
− | * [http://blogs.msdn.com/adioltean/archive/2004/12/21/329321.aspx Article] on number of interrupts, context swaps, read/write operations per second in a typical Windows machine. | + | * |
− | * [http://www.scs.carleton.ca/~sivarama/asm_book/asm2ed_slides/slides/al2ed_chapter14.ppt PPT Presentation] on interrupts from Carleton.
| + | |
− | * [http://www.xml.com/ldd/chapter/book/ch09.html Chapter 9] of O'Reilly's ''Linux Device Drivers''. Good for general overview. Don't worry about the details.
| + | |
− | <br />
| |
− | <br />
| |
− | * [http://en.wikipedia.org/wiki/Floating_point General description] of the floating-point notation
| |
− | * [http://www.python.org/doc/2.5.2/tut/node16.html A very good description of the limitations] of floating-point numbers in Python: Read it!
| |
− | * Also, not to be missed: [http://www.lahey.com/float.htm The perils of floating-point]
| |
− | * [http://www.programmers-corner.com/tutorial/31?PHPSESSID=4bbf1f2b76df390e1bad01a9f8462854 Floating Point in Assembly]: some high level stuff!
| |
| |- valign="top" | | |- valign="top" |
− | | Week 15 <br /> 12/08 | + | | Week 15 <br /> 12/13 |
| || | | || |
− | * '''Monday''': Floating-point numbers | + | * '''Monday''': '''Last Class''' |
− | * '''Wednesday''': Last Class
| + | |
− | ** Hardware presentation by Le
| |
− | ** Floating-Point Format
| |
− | *** [[CSC231 Float1.asm | float1.asm]]: printing a float in assembly
| |
− | *** [[CSC231 Float2.asm | float2.asm]]: transforms an int into a float
| |
− | *** [[CSC231 Float3.asm | float3.asm]]: computes a = 10.5; b = 5.5; y = 3 * ( a - b ) + PI in assembly.
| |
− | ** [[CSC231 generateRandomNumbers.asm | generateRandomNumbers.asm]]
| |
− | <!--** [[CSC231 maze.asm | maze.asm]]: recursive visit of a maze-->
| |
− | ** [[CSC231 Ansi Sequences | Ansi sequences]]
| |
− | ** [[CSC231 Final Exam 12/08| Optional Take-Home Exam]]
| |
− | * <font color="#00CC66">'''Thursday''': Pre-examination begins</font>
| |
| || | | || |
| | | |
Line 313: |
Line 144: |
| | Week 16 <br /> 12/15 | | | Week 16 <br /> 12/15 |
| || | | || |
− | * <font color="#00CC66">'''Monday''': Pre-examination ends</font> (DT away) | + | * |
− | * <font color="purple">'''Tuesday''': Exam Period</font>
| |
− | * <font color="purple">'''Wednesday''': Exam Period</font> '''12:00p.m.--2:00p.m. Project Presentation in B17'''
| |
− | * <font color="purple">'''Thursday''': Exam Period</font>
| |
− | * <font color="purple">'''Friday''': Exam Period (last day of the semester)</font>
| |
| || | | || |
| | | |