Skip to main content
Skip header

Assembly Languages

* Exchange students do not have to consider this information when selecting suitable courses for an exchange stay.

Course Unit Code460-4083/01
Number of ECTS Credits Allocated4 ECTS credits
Type of Course Unit *Choice-compulsory
Level of Course Unit *Second Cycle
Year of Study *First Year
Semester when the Course Unit is deliveredSummer Semester
Mode of DeliveryFace-to-face
Language of InstructionCzech
Prerequisites and Co-Requisites Course succeeds to compulsory courses of previous semester
Name of Lecturer(s)Personal IDName
OLI10Ing. Petr Olivka, Ph.D.
Summary
Students will learn in this course the assembly programming under Linux OS on x86 hardware. They will be familiar with technical capabilities of a processor and the using ALU, FPU and SSE units. They will learn some programming techniques which are not possible in high-level programming languages.
Learning Outcomes of the Course Unit
The main goal of this course is to introduce usage of computer technical resources in assembly language. Students will be able to eliminate the shortcomings of higher programming language code after completing the course. Students will also be able to combine modules from multiple programming languages ​​into one program.
Course Contents
Lecture:

1. Intel processor, operands, registers, addressing, index and base registers.
2. Data moving instructions, direct and indirect addressing.
3. Arithmetical and logical instructions.
4. Jumps and conditional instructions. String instructions.
5. Instruction set extensions during Intel processors history.
6. Linking assembly language with C language.
7. Argument passing to functions. Passing of return values.
8. 64-bit extensions of modern CPUs.
9. Static and dynamic linking, implementation of OOP and some C++ features.
10. Calculations with large numbers - basics.
11. Calculations with large numbers - without size limitation.
12. Format of float and fixed point numbers, computing with float and fixed point numbers.
13. FPU, SSE unit.

Labs:

1. Registers, addressing modes,
2. Linking assembly and C language. Public, private and extern symbols.
3. Jumps and conditional instructions.
4. Logical and arithmetical instructions.
5. String instructions.
6. Argument passing using stack.
7. Manipulation with base data types in functions.
8. Calculations with large numbers using registers.
9. Computing with N-bits numbers, adding, shifting, rotating.
10. Computing with N-bits numbers, multiplication, division, square root.
11. 64-bits mode programming.
12. Float and fixed number computing.
13. FPU and SSE unit usage.
Recommended or Required Reading
Required Reading:
[1] Barry B. Brey, The Intel Microprocessors, Prentice Hall; 8 edition (June 28, 2008), ISBN: 0135026458
[2] Benjamin Ray Seyfarth, Introduction to 64 Bit Intel Assembly Language Programming for Linux, CreateSpace Independent Publishing Platform; 2 edition (June 23, 2012), ISBN: 1478119209
[3] http://www.intel.com and http://www.amd.com - Programming Manuals for the lates CPU.
[1] Barry B. Brey, The Intel Microprocessors, Prentice Hall; 8 edition (June 28, 2008), ISBN: 0135026458
[2] Benjamin Ray Seyfarth, Introduction to 64 Bit Intel Assembly Language Programming for Linux, CreateSpace Independent Publishing Platform; 2 edition (June 23, 2012), ISBN: 1478119209
[3] http://www.intel.com, http://www.amd.com - technická a programátorská specifikace procesorů.

Recommended Reading:
[1] NASM compiler documentation, http://www.nasm.us
[1] Brandejs,M.: Mikroprocesory INTEL 8086-80486, GRADA a.s., 1991.
[2] Dokumentace překladače NASM, http://www.nasm.us
Planned learning activities and teaching methods
Lectures, Tutorials
Assesment methods and criteria
Task TitleTask TypeMaximum Number of Points
(Act. for Subtasks)
Minimum Number of Points for Task Passing
Credit and ExaminationCredit and Examination100 (100)51
        CreditCredit45 (45)23
                Tasks in exercisesOther task type45 23
        ExaminationExamination55 (55)28
                ExamWritten examination55 28