460-4083/04 – Assembly Languages (SOJ)
Gurantor department | Department of Computer Science | Credits | 6 |
Subject guarantor | Ing. Petr Olivka, Ph.D. | Subject version guarantor | Ing. Petr Olivka, Ph.D. |
Study level | undergraduate or graduate | Requirement | Compulsory |
Year | 1 | Semester | summer |
| | Study language | English |
Year of introduction | 2018/2019 | Year of cancellation | 2022/2023 |
Intended for the faculties | FEI | Intended for study types | Master, Follow-up Master |
Subject aims expressed by acquired skills and competences
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.
Teaching methods
Lectures
Tutorials
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.
Compulsory literature:
Recommended literature:
[1] NASM compiler documentation, http://www.nasm.us
Additional study materials
Way of continuous check of knowledge in the course of semester
Students will be fullfill asigned task during labs. The results of these tasks will form the basis for the final evaluation.
Theoretical knowledges are verified by a written exam.
E-learning
Other requirements
Experiences with programming in C/C++ language.
Prerequisities
Subject has no prerequisities.
Co-requisities
Subject has no co-requisities.
Subject syllabus:
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.
Conditions for subject completion
Occurrence in study plans
Occurrence in special blocks
Assessment of instruction