====== Programming in Assembler for PCs ====== | **Study level** | Bachelor | | **ECTS credits** | 4 | | **Study forms** | Hybrid or fully online | | **Module aims** | To give detailed description on programming of x86 and x64 microprocessors in assembly language. | | **Pre-requirements** | Basic knowledge on PC computers architecture and programming. | | **Learning outcomes** | After completing this module, the student:\\ - knows the instruction set of x86 and x64 processors\\ - knows the principles of writing assembler programs for x86 and x64 platforms\\ - understand the rules of calling conventions in modern operating systems\\ - can write simple assembler program\\ - can write assembler spftware module for high-level programming language | | **Topics** | - x86 and x64 processors architecture\\ - addressing modes\\ - instruction set including floating point and vector extensions\\ - assembler programs, MASM, NASM, directives\\ - procedures, argument passing, functions\\ - macros | | **Type of assessment** | Evaluation test | | **Blended learning** | Student can attend classes or self-learn with video and reading materials provided. | | **References to literature** | 1. Randall Hyde, „The Art of 64-Bit Assembly”, No Starch Press; 2021\\ 2. Jo Van Hoey, „Beginning x64 Assembly Programming: From Novice to AVX Professional”, Apress, 2019\\ 3. Daniel Kusswurm, „Modern X86 Assembly Language Programming: Covers x86 64-bit, AVX, AVX2, and AVX-512”. Apress, 2018\\ 4. Kip Irvine, „Assembly Language for x86 Processors”, 7th edition, Pearson India, 2018 | | **Lab equipment** | A PC platform with Windows OS installed (eventually Linux platform with Virtual Machine with Windows), Visual Studio Community Edition (or higher version). Local or remote access with GUI (RDP, VNC). | | **Virtual lab** | n/a | | **MOOC course** | https://multiasm.eu/mooc/course/view.php?id=15 |