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:
- Organization of memory
- Parity, Opcodes
- Number Systems
- Binary && Hex
- Conversion
- Two’s compliment
- Character Representation
- Architecture
- System Buses
- Processor - Arithmetic and logic unit, Control Unit, Instruction Cycle
- Registers
- Instruction Format
- Data Segment
- Numbers
- Characters
- Variables
- Arrays
- Instructions
- Assignment, Arithmetic, Addition, Subtraction, Multiplication, Division
- Logic and Control including Jumps, Loops
- Status Register
- Signed and Unsigned Data
- High-level Branching Structures
- If, for, while, switch
- Pointers
- Stack Operations
- Procedures
- Saving and Restoring Registers
- Passing Arguments on the Stack
- Passing Arguments from C++
- Passing Reference Arguments from C++
- Recursive Procedures
- Advanced Procedures
- Local Variables using the stack
- Using Local Directive
- Using INVOKE
- C and C++ Structures
- Floating Point
- Floating-Point Unit (FPU)
- Returning values to C++
- Load and Store Instructions
- Arithmetic Instructions
- Comparison Instructions
- Windows Programming
- Startup code
- User-provided Entry Point for Windows app
- WinMain Procedure
- MessageLoop
- Macros
- Compiler generated code
- Pipelining