בשחמה תונכתו ןוגרא /computer structure and programming · the 8086/8088 family:...

3
1 of 3 Course Name ארגון ותכנות המחשב/Computer Structure and Programming Code: 3501808 Year and semester: 1 st 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

Upload: others

Post on 31-Oct-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

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.