Skip to main content
Engineering LibreTexts

1.3: What you need and should know

  • Page ID
    76095
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    This book is about ARM assembly language, but unlike many other introductory books in a number of ways. First it is not designed to just cover the assembly language, like many books on assembly that use simulators. This textbook was written to cover the entire life cycle of assembly language programming, including creating object and executable files.

    This textbook was written to run on a real OS, Raspberry Pi OS (previously called Raspbian) with tools used by real programmers. As such, it requires that the user have a computer that runs the OS on an ARM computer, such as a Raspberry Pi. The book is written for what is believed to be the lowest common denominator processor board, a Raspberry Pi Zero W, which can be currently obtained from any number of retailers for less than $35 US. The Pi Zero W is a minimum configuration that is needed, and any more capable implementation of a board with an ARM CPU should work, including any Pi higher than a zero.

    The material in this textbook will apply to using ARM assembly using the GNU assembler and linker, both of which are run with the gcc command. There are other assemblers and linkers available for ARM assembly, and Raspberry Pi comes with the as and ld commands that also do assembly and linking. However, the gcc command allows input and output to be easily implemented using the printf and scanf functions and so was chosen for this text.

    This textbook also does not cover basic background material that is not germane to the topic of understanding assembly language. The following skills are strongly suggested for anyone reading this book, and there are any number of good textbooks that cover these topics.

    1. A working ARM board, as suggested above at least at the level of a Raspberry Pi Zero W. There are many web sites that do an excellent job of explaining how to boot a Raspberry Pi, and the configuration you choose to use is up to the individual user. All that is required for this textbook is that a shell prompt can be opened.
    2. A basic understanding of Linux shell commands and the Linux file system. How to use a command prompt is a clear advantage to anyone intending to make a career in nearly any IT field, and studying assembly with this text is a good start at understanding the shell prompt.
    3. A knowledge of a Linux editor such as Vim or Emacs. If for some reason the reader does not know or want to learn Vim or Emacs, it is possible to use an editor like nano, a GUI editor using X-windows on the ARM computer, or by transferring the files from the PI to a Windows or MAC based computer with a text editor. But a working knowledge of a Unix editor is a skill that most IT professionals should have, so the use of Vim or Emacs is highly recommended.
    4. At least a minimum of one semester of knowledge of programming in some language. The language is not of concern, but the reader should understand branching using if-else logic, looping using for and while looping, and some form of function abstraction.

    While it is possible to succeed in this class while learning skills, this textbook will not cover this information, and the reader not conversant in these skills should plan for extra time to learn them. In the long run though, the extra time learning the skills will be time well spent.


    This page titled 1.3: What you need and should know is shared under a CC BY 4.0 license and was authored, remixed, and/or curated by Charles W. Kann III via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.

    • Was this article helpful?