ZU/WI/7/11
DEPARTMENT OF INT AND ENGINEERING
Unit Code: BSD 221
Unit Title: Assembly Language Programming
Program(s): Bachelor of Science in Computer Science
Lecturer Name: Dr. -Ing Wilfred G. Gikaru
Lecturer Contacts: Email:
[email protected] Mob. No. 0723620899
Consultation time: Day: Thursdays Time 8:00 am to 11:00 am (F2F) and 17:00 hrs to 20:00 hrs (online)
UNIT DESCRIPTION/ OBJECTIVES OF THE UNIT
The main objectives of the course are to:
Introduce Assembly Language Programming.
Approach programming problems with a machine-level mind set.
Think of the CPU as an interactive tool, and to learn to monitor its operations as directly
as possible.
Understand that a debugger is a programmer’s best friend, not only for catching errors
but to comprehend the operations of the CPU as well.
EXPECTED LEARNING OUTCOMES
At the end of this course, Learners will be able to:
Demonstrate the relationship between programming statements and
the fundamental capabilities of a central processor
Identify the challenges faced by compilers for high-level languages
Distinguish areas where assembly language is most useful, and
conversely, where it is least useful
Identify some basic principles of computer organization and
architecture
Demonstrate how data is represented, stored, and managed (including
addressing) at a very basic level
Use an assembly language to create working programs on an actual
computer
Course Content
Topics include: Introduction to assembly language: Why learn Assembly
Language?
Page 1 of 4
Data Representation & Numbering Systems: Binary Numbering Systems,
Octal Numbering Systems, Decimal Numbering Systems, Hexadecimal
Numbering Systems.
Mode of Data Representation: Integer Representation, Floating Point
Representation Types of encoding: American Standard Code for Information
Interchange (ASCII), Binary Coded Decimal (BCD), Extended Binary Coded
Decimal Interchange Code (EBCDIC).
Basic Concepts, Basic Computer Organization, Processor Architecture;
Registers: General Purpose Registers, Segment Registers, Special Purpose
Registers; Instruction Sets: The 80x86 instruction sets, The control transfer
instruction, The standard input routines, The standard output routines,
Macros.
Assemble Language Fundamentals: Assembly Language Syntax and Program
Structure;
Writing an Assembly Program; The linker: Examples of common Assemblers,
A simple Hello World Program using FASM, NASM or MASM.
Data Transfer and Arithmetic: Addressing: Direct and Indirect Addressing;
Data-Related Operators and Directives; Procedures; Conditional Processing;
Integer Arithmetic; Strings and Arrays; Structures and Macros; Job Control
Language: Introduction, Basic syntax of JCL statements, Types of JCL
statements,; Interfacing with High Level Languages.
COURSE SYLLABUS AND SCHEDULE
Class/ Week Topic Sub-topic
Introduction to
1 Why learn Assembly Language?
assembly language Basic Concepts
Data Representation & Data Representation
2 Numbering Systems,
Numbering Systems
Integers and Operations on Integers
Von Neuman’s structure
Processor Architecture
3 Basic Computer Organization Registers: General Purpose Registers, Segment
Registers, Special Purpose Registers;
Systems Calls
Memory Structure
Instruction Sets: The 80x86 instruction sets,
4 Basic Computer Organization The control transfer instruction,
The standard input routines, The standard
output routines, Macros.
5 Assembly Language Program Structure;
Fundamentals Assembly level instructions
Page 2 of 4
ASSIGNMENT ONE
Assembly Language Assembly Language Statements;
6 Assembly Language Syntax
Fundamentals
Writing an Assembly Program
CAT ONE Examples of common Assemblers,
7 A simple Hello World Program using FASM,
The linker: NASM or MASM.
Data Transfer and Data Transfer Modes
Addressing Modes Addressing Modes
8
o Direct Addressing
o Indirect Addressing
Arithmetic Instructions
9 Data Instructions Logic Instruction
Variables and Constants
Data-Related Procedures;
10 Operators and Conditional Processing
Directives
Defining Structures
ASSIGNMENT TWO Declaring Structure Variables
11 Referencing Structure Variables
Structures
Nested Structure
CAT TWO Numbers (Integer)
Strings and Arrays
12 Arithmetic and
Conditions, Loops and Recursion
Structures
Introduction
Basic syntax of JCL statements
13 Job Control Language Types of JCL statements
The JOB statement
The EXEC statement
The DD statement
14 Interfacing Interfacing with High Level Languages.
MODE OF DELIVERY
The course unit will be delivered through face to face and blended learning.
TEACHING/LEARNING METHODOLOGY
Page 3 of 4
Lecturers, group discussions, class Presentations, Videos, Blended learning.
INSTRUCTIONAL MATERIALS & EQUIPMENT
Course texts, Handouts, Presentation slides, laboratory, Computer software
and hardware, LMS, Video Conference Facility, Database IDE, Xampp, GitLab,
JamBoard
ASSESSMENT CRITERIA
Assessment Type Frequency Percentage
Assignment &Labs 2&4 @5 = 30%
CATs 2 @10=20%
Final Examination 1 50%
Total 100%
REFERENCE TEXTBOOKS
Core Reading Materials for the Course
1. Kusswurm, D. (2014). Modern X86 Assembly Language Programming. Springer.
2. Kip R. Irvine (2015). Assembly language for x86 processors, 7 th Edition. Pearson
3. Education
Recommended Reference Materials for the Course
1. Belal Hashmi and Junaid Haroon Assembly Language Programming Lecture Notes
James, L.A. (2017).
2. Randall, H. (2016). The Art of Assembly Language. Second Edition, 2016,
3. Dandamudi, S. P. (2013). Introduction to assembly language programming For Pentium
and RISC Processors. Springer Science & Business Media.
Course Journals & Periodicals
1.
.Approval for circulation by:
Unit lecture name: Dr. -Ing Wilfred G. Gikaru PhD…… signature: ………………………………
H.O.D name: David Kanyi …… signature: …………………………………
Page 4 of 4