CIS-77 Home http://www.c-jump.com/CIS77/CIS77syllabus.htm

Introduction to x86 Assembly Language


  1. Advantages of High-Level Languages
  2. Why program in Assembly ?
  3. Here is why...
  4. Speed, Efficiency, Debugging, Optimization...
  5. Why MASM ?
  6. Introduction to 80x86 Assembly Language
  7. Materials on the Web
  8. Useful books, in no particular order
  9. Fundamental Concepts
  10. Software Environment
  11. Runtime Environment
  12. M1.ASM
  13. Assembly and C Code Compared
  14. More Assembly and C Code
  15. Assembly vs. Machine Language
  16. Controlling Program Flow
  17. Conditional Jumps
  18. General-Purpose Registers
  19. Typical Uses of General-Purpose Registers
  20. x86 Registers
  21. x86 Registers, Cont
  22. x86 Control Registers
  23. MOV, Data Transfer Instructions
  24. Ambiguous MOVes: PTR and OFFSET
  25. INC and DEC Arithmetic Instructions
  26. ADD Arithmetic Instruction
  27. ADD vs. INC
  28. SUB Arithmetic Instruction
  29. SUB vs. DEC
  30. CMP instruction
  31. Unconditional Jumps
  32. Conditional Jumps
  33. Conditional Jumps, Cont
  34. Conditional Jumps, Cont
  35. LOOP Instruction
  36. Logical Instructions
  37. Logical Instructions, Cont.
  38. Shift Instructions
  39. SHL and SHR Shift Instructions
  40. Shift Instructions Examples
  41. Rotate Instructions
  42. ROL and ROR, Rotate Without Carry
  43. RCL and RCR, Rotate With Carry
  44. EQU directive
  45. EQU Directive Syntax



Bristol Community College
Computer Information Systems Department

CIS-77 Introduction to Computer Systems

  • Welcome!
  • ________________________________________________________
  • Posted Dec 29:

Catalog Description

This course is an introduction to major components of computer systems. The course introduces fundamental concepts of computing systems such as binary arithmetic and data representation, the Von Neumann model for processing computer programs, the operation of memory, instruction set, and machine and assembly language programming. It systematically presents the levels of transformations from machine language to assembly language to high-level language. The course studies the role of such systems software components as assemblers, compilers, linkers, loaders, and operating systems. The course has a strong project component. Three class hours and two lab hours per week.
Instructor: Igor Kholodov Igor.Kholodov@bristolcc.edu
Office: K211
Telephone: 508-678-2811 ext. 3328

Course Objectives

Upon completion of this course, the students should be able to do the following:
  • Identify and describe different types of computing machines
  • Describe distinguishing components of Von-Neumann Architecture
  • Describe how computing machines are organized internally
  • Identify and explain the design trade offs between different computing machines
  • Describe how computers perform calculations
  • Understand principals of machine language and program in assembly.
  • Describe the relation between high level languages and assembly.
  • Define systematic sequence of transformations between layers of abstraction.
  • Explain how bits and bytes are organized to represent data electronically.
  • Describe how digital logic is used to build circuits to process information
  • Indicate program organization in memory
  • Understand program stack, stack frames, procedure calls, and parameters

Course Outline

Required Text


Introduction to Computing Systems
Authors: Sanjay J. Patel, Yale Patt

Title: Introduction to Computing Systems: From Bits and Gates
to C and Beyond. See also: Student Resources.

Publisher: McGraw-Hill, 2nd Edition, 2004.

ISBN-13: 9780072467505
ISBN-10: 0072467509

Reference Materials


  • Reference: Intel Volume 1, Basic Architecture in HTML format (or 1.9 MB ZIP)
  • Reference: Intel Volume 2, Instruction Set Reference in HTML format (or 4.2 MB ZIP)
  • Quick Referencex86 Instructions by Opcode
  • Quick Referencex86 Instructions by Mnemonic
  • Quick ReferenceBrief x86 Instruction Set Reference

  • File M00.zip contains DOS batch files that used in class to assemble small ASM programs. To build your program, simply drag and drop your ASM file on top of
    • _release_build.bat - to build a program.
    • _debug_build.bat - to build a program with debug info;

  • Same ASM file in M00project.zip added to MSVC 2005 project, which can be used to to assemble, link, and debug the program. 

  • Another MSVC 2005 project, M08project.zip, can be used as a starting point for M08lab, Console Input/Output. 

  • OllyDbg Debugger for Microsoft Windows: a debugger that emphasizes binary code analysis. Download OllyDbg 1.10 (final version). 


National Science Foundation
This material is based upon
work supported by the
National Science Foundation.
Any opinions, findings, conclusions, and recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation (NSF).

Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © 2013 Taqi Shah Blogspot -Metrominimalist- Powered by Blogger - Designed by Johanes Djogan -