בשחמה תונכתו ןוגרא /Computer Structure and Programming · The 8086/8088 Family:...
Transcript of בשחמה תונכתו ןוגרא /Computer Structure and Programming · The 8086/8088 Family:...
1 of 3
Course Name המחשב ארגון ותכנות /Computer Structure and Programming
Code: 3501808
Year and semester: 1st year Semester B
Credits & Hours 3 2 + 2
Prerequisites Introduction to Computer Science course 3501860 מבוא למדעי המחשב
Digital systems course 3501801 מערכות ספרתיות
Lecturers Details
Lecturer Name Dr Yigal Hoffner Office hours: before and after
lecture
Teaching Assistant Dr Yigal Hoffner Office hours:
Course Details
Course Objectives To understand the basic structure of a computer system and be able to program it in Assembly language.
Course Description
An assembly language is a low-level symbolic representation of the machine codes needed for program execution in a computer. It defines the interface between the computer hardware and software and is specific to the Central Processing Unit (CPU) of the computer. The course introduces the concepts that are necessary to program in assembly language: the basic internal organisation of the CPU, memory and I/O devices, machine-code, the CPU instruction cycle, the way instructions and data are represented in memory and the programmer interface.
The entire range of basic programming constructs and topics of high-level languages are covered through programming in a specific assembly language (the Mano CPU with references to the 8086 CPU). Throughout the course, the relationship between assembly and high-level language constructs is discussed and emphasised.
The course will be used as the basis for the 2nd year course: תכן לוגי/From Digital to Computer Systems.
Introduction 1. Computer architecture from the programmer’s point of view: overview
of main CPU parts and functionality, relation to storage & I/O 2. CPU instructions, data and the instruction cycle 3. The software development process: compilers, assemblers, linkers and
loaders The Mano computer system & Simulator
4. The Mano system hardware structure 5. The Mano CPU Programmer Interface 6. The Mano CPU Simulator
Programming in assembly 7. Variables & Conditionals (& simple algorithm transformations) 8. Basic computer arithmetic functionality 9. Basic computer logic functionality
2 of 3
10. Iterations (loops) 11. Arrays, linked lists 12. Subroutines (parameter passing, recursion, re-entrant code) 13. The Stack 14. Basic and advanced Input/output routines (& interrupts) 15. Interrupts, the Interrupt Service Routine (ISR) and basic kernel
programming Advanced topics (depending on progress)
16. The assembler, linker and loader 17. Basic Monitor/Kernel design 18. Interfacing to operating-system functionality.
Learning Methods
The course will consist of: Frontal lectures accompanied by slides. Laboratory sessions in which the students will be programming the Mano
CPU Simulator.
Homework to be done using the Mano CPU Simulator.
Learning Outcomes A basic understanding of the programmer interface and the instruction set of a single-register CPU with basic I/O functionality
Ability to translate most of the basic high-level constructs into assembly language
Ability to solve basic problems by programming in assembly language.
Course Requirements
At least 60 in the course assignment and in the total final calculated grade.
Grading The calculated course grade consists of the following:
13 Exercises: Students are expected to hand in at least 12 of them. The exercises may contribute 0 - 10% (at the lecturer's discretion) towards the final grade. The lecturer reserve the right to mark only part of the homework.
Mid-term Quiz: Depending on progress and time constraints there may be a Quiz during the lectures. Attendance is compulsory. The Quiz will contribute 10% towards the final grade.
Final assignment: It will contribute 80% towards the final grade.
Class Attendance Attendance is mandatory according to the Shankar’s regulations.
3 of 3
Course Plan- List of Topics
Week Topic Reading/Assignment
1 Assembly programming primer
2 Basic variable types
3 Conditional statements
4 Signed & unsigned integer arithmetic
5 Boolean logic and vars
6 Iterative constructs
7 Loops and arrays
8 Linked lists
9 Subroutines (functions in C)
10 Subroutines and the Stack
11 Basic Input Output
12 Input-output routines
13 Interrupt basics
Bibliography
Although the course does not adhere to any specific book, it will be based on material from the
following books: Mano, M. M., Computer System Architecture, Prentice Hall, Third edition, 1993. Uffenbeck J., The 8086/8088 Family: Design, Programming and Interfacing, Third edition, Prentice
Hall, 2002. Open University, Microprocessor Families and the 8086. Open University, 8086/88 Assembler guide: 8086/88 מדריך לאסמבלר Lungu, V., Assembly Language Programming for Intel Processors Family, Teora Usa, 2005.
Cohen E., Assembly language for the PC, Hod-Ami publications.