COURSE NUMBER AND TITLE: CSCI 3370 Assembly Language Programming

CREDIT HOURS: 3

CATALOG DESCRIPTION: A study of computer systems and programming at the assembly language level. Topics include computer structure, instruction execution, addressing techniques, digital representation of data, assemblers and associated system programs, and control of input/output devices.

PREREQUISITE(S): CSCI 1302 with C or better

SUGGESTED TEXT: Assembly Language: Programming for the IBM PC Family by William B. Jones

COURSE OUTLINE:

  1. Organization of memory
    1. Parity, Opcodes
  2. Number Systems
    1. Binary && Hex
    2. Conversion
    3. Two’s compliment
    4. Character Representation
  3. Architecture
    1. System Buses
    2. Processor - Arithmetic and logic unit, Control Unit, Instruction Cycle
    3. Registers
  4. Instruction Format
  5. Data Segment
    1. Numbers
    2. Characters
    3. Variables
    4. Arrays
  6. Instructions
    1. Assignment, Arithmetic, Addition, Subtraction, Multiplication, Division
    2. Logic and Control including Jumps, Loops
  7. Status Register
  8. Signed and Unsigned Data
  9. High-level Branching Structures
    1. If, for, while, switch
  10. Pointers
  11. Stack Operations
  12. Procedures
    1. Saving and Restoring Registers
    2. Passing Arguments on the Stack
    3. Passing Arguments from C++
    4. Passing Reference Arguments from C++
    5. Recursive Procedures
  13. Advanced Procedures
    1. Local Variables using the stack
    2. Using Local Directive
    3. Using INVOKE
  14. C and C++ Structures
  15. Floating Point
    1. Floating-Point Unit (FPU)
    2. Returning values to C++
  16. Load and Store Instructions
  17. Arithmetic Instructions
  18. Comparison Instructions
  19. Windows Programming
    1. Startup code
    2. User-provided Entry Point for Windows app
    3. WinMain Procedure
    4. MessageLoop
  20. Macros
  21. Compiler generated code
  22. Pipelining