Course Outline - CS-235 Computer Organization and Assembly Language - Fall 2022
Course Outline - CS-235 Computer Organization and Assembly Language - Fall 2022
Course Description
The course covers the organizational aspects and the assembly language programming of
microprocessors. This course also includes the interfacing part of microprocessors and the knowledge
of some computer busses and basic bus protocol concepts. The skills acquired can be used in the
areas of computer science and software engineering.
Course Objectives
Understanding of organization of computer and in part Intel’s x86 processors
Expertise to write and debug applications in assembly language for x86 processors
Understanding of memory systems, addressing, sizing and interfacing of memories with a
microprocessor
Understanding of how I/O devices are interfaced with a microprocessor and how
microprocessor communicates with I/O devices
Understanding of various busses and bus protocols in a computer system
National University of Sciences and Technology
School of Electrical Engineering and Computer Science
Department of Electrical Engineering
Books
Textbooks: 1. Assembly Language for x86 processors, 7th Edition
By Kip Irvine
2. The Intel Microprocessors, 8th Edition
By Barry B. Brey
Reference Books: 3. Computer Organization and Design: The Hardware/Software Interface, RISC-V
Edition (1st or 2nd)
By Hennessy and Patterson
Lectures Breakdown
Week Lecture Topic(s) to be covered
No. No.
1 Introduction, motivation, and history of microprocessors
1 2 From transistors to microprocessors and program execution
3 Components in a general microprocessor
2 4 An introduction to intel x86 Architecture, memory hierarchy and
National University of Sciences and Technology
School of Electrical Engineering and Computer Science
Department of Electrical Engineering
registers
5 x8 Memory models, addressing and management
6 Virtual memory
7 Address translation in virtual memory and TLB
3 8 Assembly language basics
9 Addressing modes
10 Instructions for data transfer MOV, MOVZX
4 11 Instructions for data transfer MOVSX, XCHG
12 Arithmetic instructions ADD, SUB, INC, DEC, NEG
13 Impact of Arithmetic Instructions on Flag Bits
5 14 Data-related directives, array addressing, JMP and LOOP Instructions
15 Runtime stack, PUSH and POP instructions
16 Procedures in Assembly Language
6 17 Boolean instructions and their applications, AND, OR, XOR, etc.
18 TEST and CMP instructions and their applications
19 Conditional jump and loop Instructions
7 20 Applications of conditional jump and loop instructions
21 Finite state machine implementation using conditional instructions
22 Addressing Modes
8 23 Encoding of Assembly Language instructions in Machine Language
24 Encoding of Assembly Language instructions in Machine Language
9 Mid Semester Exam (MSE)
25 Microprocessor hardware specifications – I
10 26 Microprocessor hardware specifications – II
27 Memory architecture and memory sizing
28 Memory interfacing with microprocessor – I
11 29 Memory interfacing with microprocessor – II
30 Interfacing I/O devices with microprocessor
31 Interfacing I/O devices with microprocessor
12 32 Programmable peripheral interface – I
33 Programmable peripheral interface – II
13 34 Examples of using programmable peripheral interface
35 Interrupts and interrupt handling
National University of Sciences and Technology
School of Electrical Engineering and Computer Science
Department of Electrical Engineering
Lab Experiments
Lab 1 Introduction to programming in Assembly Language Using MASM
Lab 2 Introduction to 8086/8088 microprocessor Programming
Lab 3 Programming variables in assembly language
Lab 4 Effects of arithmetic instructions on Flags of CPU
Lab 5 Memory accessing and array's manipulation in assembly language
Lab 6 Procedures and stacks in assembly language
Lab 7 Using loops and conditional statements in assembly language
Lab 8 Arduino Uno for blinking Led using Digital pins on Tinkercad
Lab 9 Use of shift and rotate instructions
Lab 10 Introduction to programming of real numbers using floating point arithmetic
Lab 11 Programming of real numbers using floating point arithmetic
Lab 12 Strings manipulation in assembly language
Lab 13 16-bit programming in assembly language
Quizzes The quizzes are a mandatory component of the overall assessment. The purpose of
quizzes is to keep the students up to date with the lecture material and test basic
understanding of the course concepts. There will be at least 6 quizzes conducted in
the class. Each quiz will consist of questions that target specific topics from the most
recent as well as previous week lectures.
Assignments To give sufficient practice and comprehensive understanding of the subject,
assignments will be given. Upon submission, you must declare that which questions
you have attempted by yourself. The evaluated assignment is an individual effort, and
no hints will be posted on forum. Only declared questions by individual student will
be evaluated. If the declared question done by you is found a copy of other, then you
may lose all the marks in assignments and get zero in assignments category. The
questions in assignments will be challenging to give students the confidence and
enable them to prepare for the exams well. Homework will be submitted at the
beginning of class on the due date. The students are advised to do the assignment
themselves. Copying of assignment is highly discouraged, taken as cheating case and
dealt accordingly. Late submissions will also lose marks.
Labs The labs will be conducted for three/four hours every week. A lab handout will be
given in advance for study and analysis The lab handouts will also be placed on LMS.
The students are to submit their results by giving a lab report at the end of lab for
evaluation. One lab report per group will be required. However, students may also be
evaluated by oral viva or assignments during the lab.
Software / Tools Requirement
MASM for x86 Assembly Language programming!
RARS simulator for RISC-V Assembly Language programming!
Optional Alternative to MASM: Microsoft Visual Studio 2019
Miscellaneous Matters
Academic Honesty Plagiarism is the unacknowledged use of other’s work, including the copying
and Plagiarism of Assignments and laboratory results from the other students. Plagiarism is
considered a serious offence by the university and severe penalties apply.
Therefore, all the students must display originality of efforts and avoid
plagiarism in any form.
Classroom Etiquettes It is the collective responsibility of all the students to make the class
environment conducive for learning. To create and maintain a friendly
atmosphere, the following standards of classroom behavior will be
observed:
1. Students will be punctual for the class. The teacher considers late
comers disrespectful of those who manage to be on time.
2. If a student decides to attend the class, he or she will not disrupt
class by leaving before the lecture has ended.
All the cell phones must be switched OFF prior to entering the classroom.
National University of Sciences and Technology
School of Electrical Engineering and Computer Science
Department of Electrical Engineering