AA/AS Degree X Date Originally Submitted: MODESTO JUNIOR COLLEGE Non-Degree Date Updated: COURSE OUTLINE 2/22/2000 Noncredit I. DIVISION: Business, Behavioral & Social Sciences PREFIX/NO.: CMPSC 241 DIV./DEPT. NO: COURSE TITLE: Assembly Language Programming Formerly listed as: Hours/Week: 41/2000 Date Changed: Lecture: 3 Lab: 2 Other: % Load: .182 % Load: .121 % Load: If catalog is to read lecture/lab check here Other (explain): II. ALSO OFFERED AS: Div: III. Div: COURSE INFORMATION: No. Weeks: Offered Only: IV. Title: Prefix/No.: Title: 18 TOP: 3 SAM: .303 CAN: Units: Tot % Load: Prefix/No.: Spring 0701.00 State Class: B I Method of Instruction: Wk/Ex: CSCI 10 30 In-Service: Apprentice: Summer Fall Eve Not offered every semester: PREREQUISITE(S)/COREQUISITE(S)/RECOMMENDED FOR SUCCESS: Prerequisite (P) x Corequisite: (C) Recommended for success (R) (Please check all that apply and list below. Also attach appropriate documentation forms) (P) CMPSC 204, Introduction to Programming V. CATALOG DESCRIPTION: Designed for Computer Science transfer majors, but open to all students. Introduction to microcomputer hardware architecture and assembly language programming. A microprocessor instruction set will be examined in detail. Memory addressing modes, logic and control, data representations and manipulation, table processing, and device I/O control processes will be examined. Macros, program modules, and interrupts will be studied. Extensive hands-on computer projects implementing course objectives will be assigned. VI. FIELD TRIPS REQUIRED? VII. GRADING: VIII. REPEAT PROCEDURES: Yes A-F Only No CR/NC Only Credit: Maybe x CR/NC Option No x Yes Maximum Completions: Non-Credit: No x Yes Maximum Completions: * IX. EXPLAIN FEE REQUIRED: Materials fee required for files, diskettes, documentation, and laboratory supplies. Rev: 8/98 x Non-Grades Maximum Units: * 2 CMPSC 241 – Assembly Language Programming X. PREREQUISITE SKILLS Before entering the course, the student will be able to: A. Discuss the uses of computers and their effect on society. B. Describe the functional hardware components of a computer system. C. Describe the concepts and functions of a computer operating system and application software. D. Demonstrate the use of the Windows operating system to format storage, create folders, launch applications, navigate through multiple windows, and access menus and toolbars to accomplish specified tasks. E. Perform simple problem analysis, and design solution algorithms. F. Demonstrate the implementation of sequence, selection, and iterative control processes using a high-level programming language such as BASIC or C++. G. Discuss and apply the principles of top-down problem decomposition. XI. OBJECTIVES (Expected outcomes for students) Upon successful completion of the course, the student will be able to: A. Demonstrate conversions between and arithmetic operations on various number system representations. B. Describe the hardware architecture and component functions for a modern microprocessor and systems board. C. Describe and demonstrate usage of various memory addressing modes. D. Explain the purpose of editors, assemblers, linkers, loaders, and operating systems runtime requirements. E. Compare and contrast assemblers, compilers, and interpreters. F. Discuss memory and program segmentation. G. Describe and utilize a processor instruction set to construct assembly language programs. H. Demonstrate program logic and contol structures within assembly language programs. XII. I. Demonstrate basic and advanced data manipulation and I/O processes within assembly language programs. J. Implement advanced assembly language processes through MACROS, program modules, and program interrupts. CONTENT A. Introduction to PC Hardware 1. Bits and Bytes 2. Binary, Decimal, Octal, and Hexadecimal Number Systems 3. Character Code Representations 4. The Central Processing Unit (CPU) 5. Internal Memory and Memory Maps 6. Segments and Addressing 7. Hardware Registers Rev: 8/98 3 CMPSC 241 – Assembly Language Programming B. PC Software Requirements 1. Operating System Characteristics 2. The Boot Process and The System Program Loader 3. DOS-BIOS Interface 4. The Stack, Program Addressing, Memory and Register References C. Assembly Language Requirements 1. Editors, Assemblers, and Linkers 2. Assemblers versus Interpreters or Compilers 3. Assembly Language Syntax 4. Statements and Definitions 5. Data and Segment Directives D. Assembling, Linking, and Executing 1. Assembly Language Source Code and .LST Listings 2. Simple Segment Directives versus Conventional Segment Directives 3. Two-Pass Assembler 4. Error Diagnostics and Debuggers 5. Linking Object Code and Program Execution 6. Cross-Reference Listings E. Processor Instructions and Addressing 1. The CPU Instruction Set 2. Operators and Operands 3. Alignment of Addresses 4. Program Segments and Near and Far Addresses 5. The Segment Override Prefix F. Program Logic and Control 1. The Flags Register 2. Instruction Labels and Short, Near and Far Addresses 3. Unconditional and Conditonal Jumps, Jump Tables, and Loop Control 4. Data Comparison, Boolean Operations, Shifting and Rotating Bits 5. Procedure Calls G. Screen and Keyboard Processing 1. Cursor Control and Setting Screen Attributes 2. DOS and BIOS Interrupts, Controlling Screen and Keyboard I/O and Display Modes 3. Video Adapters, Buffers, and Pages 4. Standard File Handles for Screen Display and Keyboard Input CMPSC 241 – Assembly Language Programming 4 H. Data Manipulation I. J. XIII. 1. String Operations 2. Processing Binary Data, Unsigned and Signed Arithmetic Processes 3. Processing ASCII and BCD Data 4. Table Processing External I/O Processing 1. Disk Storage Organization 2. Creating and Accessing External Files 3. DOS Interrupt Operations for Supporting Disks and Files 4. BIOS Interrupt Disk Operations 5. Printing and Other I/O Processes Advanced Programming 1. Writing MACROS 2. Subprograms and Separately Assembled Program Segments 3. EXTRN and PUBLIC Attributes 4. Common Data in Subprograms 5. Passing Parameters 6. Intrasegment and Intersegment Calls 7. Linking External Libraries 8. Program Interrupts TEACHING METHODS A. B. Methods to achieve course objectives: 1. Formal lectures by a certified instructor 2. Assigned reading and discussion of required text 3. Assigned reading of supplemental reference materials 4. Implementation of computer programming laboratory projects Methods used in achieving learner independence and critical thinking: Student will be required to apply standard systems analysis problem-solving methodology to all programming projects. This methodology is described by the five phases of the program development cycle as follows: Phase 1 – Written problem definition and program specifications Phase 2 – Formal solution algorithm design using flowcharts, structure charts, or other standard algorithm presentation techniques Phase 3 – Program code using valid syntax and constructs Phase 4 – Implementation and critical testing and analysis of program results Phase 5 – Written documentation, both internal and external, for the solution CMPSC 241 – Assembly Language Programming 5 XIV. TEXTBOOKS (Typical) IBM Assembly Language Programming, Peter Abel , Prentice Hall, ISBN 0-7637-02929-7 XV. SPECIAL STUDENT MATERIALS (i.e., protective eyewear, aprons, etc.) XVI. METHODS OF EVALUATING STUDENT PROGRESS A. completeness and clarity of program documentation B. Accuracy of problem definition and implementation C. Written unit evaluations and/or midterm examination D. Written final exam