Computer Organization and Assembly Language

Learn assembly language and its role in turning your code into a safe, optimized running application

Computer Organization and Assembly Language
Computer Organization and Assembly Language

Computer Organization and Assembly Language free download

Learn assembly language and its role in turning your code into a safe, optimized running application

This course presents in a simple manner the assembly language - intel syntax - for the x86 32-bits architecture and places this in the context of a computing system.  We start with a short presentation of the hardware components on which assembly code is highly reliant, how they work and what is their purpose in relation to the software. We continue with some higher level notions - data, variables, pointers, functions - as we understand them in languages such as C/C++ and we show all the steps that lead to the assembly language. By using a lot of demos and animations, we go through all the assembly language notions - registers, static memory, the stack, function calling, instructions - side by side with the more familiar concepts in higher level languages. In this process, we make use of multiple tools, both for static and dynamic analysis of binaries: GDB, objdump, nm. Towards the end, we touch on the security side of assembly. We do a deep dive into one of the most common vulnerabilities, buffer overflow and show how programs can be exploited. While on this topic, we present a binary analysis tool that is the bleeding edge in the domain of security: Ghidra.


This course is for people of any level and is the direct result of a desire to explain the concepts that were most useful to my career path in the simplest manner.