Extended Description CE12/L: Computing Systems and Assembly Language 12. Computing Systems and Assembly Language. F,W,S Introduction to computer systems and assembly language programming. How computers compute in hardware and software. Course overviews digital logic, number systems, data structures, compiling/assembly process, basics of system software and computer architecture. Previous or concurrent enrollment in course 12L is required. Prerequisite: Computer Science 12A or suitable programming experience. R. Hughey, J. Ferguson., C. Bazeghi 12L. Computing Systems and Assembly Language Laboratory (2 credit). F,W,S Laboratory sequence in assembly language programming. The lab examines both RISC and CISC microcontroller programming. Two, two-hour laboratories per week. Previous or concurrent enrollment in course 12 is required. Prerequisite: Computer Science 12A or suitable programming experience. R. Hughey, J. Ferguson., C. Bazeghi Explanation of programming prereq: Students need HLL programming experience to be familiar with computer systems, control statements, procedure calls, data types, and arrays to get the most out of this course. Required skills to pass the course. 1. Number representations, including a. arbitrary base conversion b. binary, hex, decimal, 2s C c. bitwise operators d. Binary fixed point numbers e. single-precision floating-point format 2. Binary Arithmetic, including a. Signed magnitude add/sub b. Unsigned add/sub/mul c. Two's compliment add/sub/mul d. IEEE floating point add/sub/mul 3. Computing Systems a. Basic logic gates (and, or, not, xor) b. Determining the function of simple combinational circuits c. Adder and mux logic blocks 4. Assembly language programming a. Arithmetic and bitwise operations b. Procedure calls c. Stack & memory operations d. Assembly implementation of "C" control structures 5. An understanding of acceptable and unacceptable collaboration, the need to ensure permission to collaborate in a class, and an automatic urge to acknowledge collaborators and others who have assisted in a project. Core topics (must be taught) 1. Assembly language programming including a. Arithmetic and bitwise operations b. Arrays, stacks, and queues c. Procedure calls d. Addressing modes e. Both CISC and RISC architectures 2. An understanding of basic computing systems including a. Basic logic gates and/or/xor/not b. Basic logic blocks (adder, mux) c. Registers, memory, CPU, I/0 d. Steps to execute an instruction e. data structures 3 Binary arithmetic a. Signed magnitude add/sub b. Unsigned add/sub/mul/div b. Two's compliment add/sub/mul c. Floating point add/sub/mul 4. Number representations, including a. Arbitrary base conversion b. Binary, hex, decimal, 2s C c. Bitwise operators d. Binary fixed point numbers e. Arbitrary bases (e.g., 3, 60) f. Biased representation g. IEEE Floating point format 5. HLL language - basic coverage of C. a. Syntax b. Data types c. Procedure calls d. Arithmetic/bitwise operations 6. An understanding of basic system software including a. Assembly and compilation b. Loading and linking c. The basic functions of the operating system 7. Interrupts and I/O a. Causes of interrupts b. Interrupt service routines c. Memory mapped I/O Optional topics 1. Contemporary architecture examples 2. Cache and virtual memory 3. Floating point arithmetic in more detail Core lab exercises 1. Programming the HC 11 microkits 2. Writing a program that uses interrupts 3. Writing programs that perform bit and base conversion 4. Writing programs with formal procedure calls 5. Interfacing assembly language with high-level language 6. Looking at compiler-generated assembly language 7. For all labs, a coding and documentation standard (e.g., README files) that emphasizes the problem that is being solved, the inputs and outputs to the code, interesting aspects of the assignment, and credit to those who helped enable the completion of the assignment. Optional lab exercises 1. Advanced use of the HC11 microkits 2. Advanced data structure manipulation 3. Programming floating-point arithmetic 4. Bit-mapped graphics for HC11 microkits Comments on following courses CE110 Computer Architecture covers IEEE floating point thoroughly 12C must spend sufficient time on the basics (number systems etc) to ensure minimal overlap. Uses RISC (MIPS) architecture. 110 covers more advanced arithmetic like Booth's algorithm. CE121 Microprocessor System Design requires interrupts and HC11 ASM. CS111 Operating Systems depends on knowledge of organization, virtual memory, and interrupt programming. CS104A/B Compilers currently teaches and uses RISC-type assembly language Text: Patt & Patel, "Introduction to Computing Systems: from bits to gates to C & beyond", 2/e, McGraw Hill, 2004. ISBN: 0-07-246750-9 Motorola, "HC11 Programming Reference Guide". Essential. We get copies free from Motorola; advise students to hold on to until 121. Motorola, "HC11 Reference Manual". A classic. We get copies free from Motorola; advise students to hold on to until 121. Carey, McIntire, Ferguson, and Hughey, "Computer Engineering 12C laboratory Manual". Prepared by Richard Hughey, 2/02. Revised 5/02. Revised 5/03. Revised 12/03