====== Programming in Assembler for Mobiles and ARM ====== | **Study level** | Bachelor | | **ECTS credits** | 4 | | **Study forms** | Hybrid | | **Module aims** | The aims of this course are to introduce students to programming ARM and Mobile devices in the closest language to computer hardware. \\ This is about programming at assembly language to form a complete programs or modules for higher level programming languages. \\ Introduce students to debugging and stepping through assembly instructions while examining processor register values and parts of memory. \\ This will enable students to apply the concepts learned in this course on any mobile device and ARM devices. | | **Pre-requirements** | Basic knowledge on PC computers architecture and programming. | | **Learning outcomes** | At the end in successfully completing the course, students will be able to:\\ 1. Enumerate the functional components of an ARM and Mobile devices; explain trade-offs in devices architecture as they relate to cost and function and performance.\\ 2. Create, compile, execute and debug an assembler program\\ 3. Evaluate and use a subroutine library within an assembler program; Explain the basic operation of interrupts and microcode.\\ 4. Design and write syntactically and semantically correct assembler programs that are solutions to problems expressed with algorithms. \\ This includes high-level language concepts such as variables, data types, repetition, selection, and objects including conditional and looping structures within the assembler program.\\ 5. Convert symbolic assembler code into machine code and convert machine code into symbolic assembler code.\\ 6. Explain Floating-Point architecture and program the Floating-Point co-processor\\ 7. Identify a problem, break it down into its component parts, develop and implement a solution using assembly language | | **Topics** | 1. Introduction to ARM Architecture and Assembly Language:\\ a. Overview of ARM Architecture\\ b. ARM Assembly Language Basics\\ c. Development Environments and Tools\\ 2. ARM Assembly Language Programming:\\ a. Basic Instructions and Operations\\ b. Control Flow in Assembly\\ c. Advanced Assembly Programming\\ d. Peripheral Management\\ 3. Mobile Device Architecture and Assembly Programming\\ a. Introduction to Mobile Device Architectures\\ b. Developing Assembly for Mobile Devices\\ c. Assembly Code optimization\\ 4. Interfacing ARM Assembly with Mobile Development\\ a. Cross-Platform Development\\ b. Mobile App Integration\\ c. Security and Cryptography | | **Type of assessment** | Evaluation test | | **Blended learning** | On-site or Off-site learning with materials provided. | | **References to literature** | Kusswurm, D. (2020). Modern Arm Assembly Language Programming: Covers armv8-A 32-bit, 64-bit, and simd. Apress. \\ Hohl, W., & Hinds, C. (2015). ARM Assembly Language: Fundamentals and Techniques, Second Edition. CRC Press.\\ Smith, S. (2019). Raspberry Pi Assembly Language Programming: ARM Processor Coding. Apress. | | **Lab equipment** | Raspberry Pi with Debian/Rasbian/Ubuntu Linux installed, with VNC or SSH (or both) access. | | **Virtual lab** | n/a | | **MOOC course** | https://multiasm.eu/mooc/course/view.php?id=14 |