Course detail
Machine Level Programming
FIT-ISUAcad. year: 2018/2019
Numeral systems: signed and unsigned integer binary representation, binary arithmetic, real numbers in the IEEE-754 format. Assembly language: assembler, basic functions of a central processing unit (CPU). Specific CPU architecture: registers, memory organization, addressing, interrupt system, coprocessors, instruction set and instruction format. Programming in assembler: common control structures, compilation and linking of the code. Relation to the high level programming languages: calling conventions, operating system services. Coprocessor: real number format, instruction set, programming of the floating point unit.
Language of instruction
Number of ECTS credits
Mode of study
Guarantor
Department
Learning outcomes of the course unit
Students learn about processor architecture form the low level programming point of view, which is one of the very basic skills of an IT professional. They learn how to develop simple applications or libraries in assembler and how to connect them to high level programming language applications.
Prerequisites
Co-requisites
Planned learning activities and teaching methods
Assesment methods and criteria linked to learning outcomes
- mid-term written test
- tests in computer exercises
Exam prerequisites:
At least 20 points earned during semester.
To successfully pass the course students must earn at least 25 points from the final examination.
Course curriculum
Work placements
Aims
Specification of controlled education, way of implementation and compensation for absences
- tests in the computer exercises missed by a valid proved reason (health issues or other valid reasons) will be compensated within the next computer exercise or another date set by the guarantor of the course
Recommended optional programme components
Prerequisites and corequisites
- compulsory prerequisite
Introduction to Programming Systems
Basic literature
The Netwide Assembler: NASM, Quick reference Guide [online]. [cit. 2022-01-06]. Dostupné z: https://www.nasm.us/xdoc/2.15.05/nasmdoc.pdf
Recommended reading
Intel® 64 and IA-32 architectures software developer’s manual combined volumes: 1, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D, and 4. Webové stránky společnosti Intel [online]. [cit. 2022-01-06]. Dostupné z: https://www.intel.com/content/dam/develop/public/us/en/documents/325462-sdm-vol-1-2abcd-3abcd.pdf
Irvine, Kip R. Assembly language for x86 processors. Seventh edition. Boston: Pearson, 2015. ISBN 978-0133769401.
Marek, R.: Assembler pro PC - učíme se programovat v jazyce, Computer Press, 2003, ISBN 80-7226-843-0
The Netwide Assembler: NASM, Quick reference Guide [online]. [cit. 2022-01-06]. Dostupné z: https://www.nasm.us/xdoc/2.15.05/nasmdoc.pdf
Classification of course in study plans
Type of course unit
Lecture
Teacher / Lecturer
Syllabus
- Introduction, numeral systems, number specification, binary arithmetic.
- Basic functions of a processor, machine language, symbolic language, assembler.
- Processor architecture - registers, operand, instruction format, memory addressing, interrupts.
- Processor architecture - transfers, arithmetical and logical instructions.
- Processor architecture - shifts and rotations, control transfer.
- Processor architecture - other instructions.
- Mid-term written test.
- Basics of low level programming, elementary control structures.
- Functions and calling conventions.
- Modular programming, libraries, operating system services.
- Coprocessor FPU - architecture, real number format, instruction set.
- Coprocessor FPU - instruction set, programming, examples.
- Compiler for assembler - pseudoinstructions, directives, expressions, operators, operands and macros.
Exercise in computer lab
Teacher / Lecturer
Syllabus
- Numeral systems (numeral system conversions), number representation (signed integers).
- Compilation, linking and execution of an application in a command line environment. Debugging in an Integrated Development Environment (IDE) and in a standalone debugger.
- Working with registers and memory (variables, arrays).
- Arithmetical instruction.
- Logical instructions, shifts and rotations, jump instructions.
- Test.
- Function calling and parameter passing via registers. Library for basic input/output operations.
- Basic control structures (if-then-else, while, do-while, for, switch-case).
- String instructions for array manipulation.
- Test.
- Function calling and calling conventions. Calling of services and functions of the operating system, calling of functions from the high level language libraries.
- Programming of the FPU coprocessor.
- Test.