CATALOG DESCRIPTION: Basics of assembly language programming. Macros. System stack and procedure calls. Techniques for writing assembly language programs. The features of IA-32 based PC will be used. Interfaces between high-level languages and assembly codes will be discussed.

REQUIRED TEXTS: Kip R. Irvine, Assembly Language for x86 Processors, 7th edition, Prentice Hall, 2014

REFERENCE TEXTS: None

COURSE INSTRUCTORS: Prof. Wei-Chung Lin (Fall), Prof. Russ Joseph (Winter)

COURSE COORDINATOR: Prof. Wei-Chung Lin

COURSE GOALS: To teach (1) the Intel IA-32 processor architecture and programming, (2) assembly language directives, macros, operators, and program structure, (3) programming methodology, showing how to use assembly language to create both system-level software tools and application programs, and (4) interaction between assembly language programs, the operating system, and other application programs.

PREREQUISITES: Freshman programming requirement (GTK 205-1, 2, 3, 4). EECS 203 helpful.

PREREQUISITES BY TOPIC:

1. Fundamental concepts about computers and software

2. Programming concepts of high-level languages

3. Syntax of a language

4. Structured programming

DETAILED COURSE TOPICS

Week 1: Introduction to assembly languages, data representation in computers

Week 2: A programmer's view of computer organization, IA-32 processor architecture and memory management, basic elements of assembly language

Week 3: Data definition and transfer instructions, addressing mode, integer addition and subtraction

Week 4: Integer multiplication and division, unconditional jump instructions, conditional processing

Week 5: Linking to external library, stack operations, procedures

Week 6: Advanced procedures, string primitive instructions, bit manipulation

Week 7: Structures and macros, conditional assembly, assembly process, instruction encoding

Week 8: 16-bit MS-DOS programming basics, MS-DOS function calls

Week 9: BIOS-level programming, keyboard processing

Week 10: Video processing

Week 11: Disk storage systems, file systems

LABORATORY PROJECTS:

1. Design of an assembly language program with structured programming

2. Design of an assembly language program with advanced procedures

3. Design of an assembly language program for string processing

4. Design of an assembly language program for keyboard processing

GRADES:

  • Homeworks: 30%
  • Programming Assignments: 50%
  • Final exam: 20%

COURSE OBJECTIVES: When a student completes this course, s/he should be able to:

1. Understand the difference between real mode and protected mode IA-32 assembly language programming

2. Understand the IA-32 protected-mode addressing memory management schemes including segmentation and paging

3. Program in IA-32 assembly language

4. Write procedures called by high-level languages with IA-32 assembly language

ABET CONTENT CATEGORY: 100% Engineering (Design component)