A simulator to support assembly language teaching - Pegoraro, Rene (2022)
This article describes a simulator of a simple hypothetical processor used for introducing assembly language concepts to high school and university students.  The simulator, developed to be used as a didactic tool, offers to students, in a graphical interface, a model of how a computer works from the point of view of low-level programming.  In this tool, users load the program in machine language and visualize the changes resulting from its execution in the processor's memory and registers.  Considering the importance of understanding the difference between assembly language and machine language, students are instructed to write their code in assembly language and then to obtain the machine language. The assembly process begins manually and then it is done through an assembler program.  Manual assembly helps to explain some concepts related to the generation of executable code hidden in integrated development environments.  Although the tool simulates a simple hypothetical processor, it was built following the instruction syntax used in Intel's 32-bit architecture (IA-32), allowing students to use the concepts learned to understand other assembly languages on real computers.  This tool is used at the beginning of the Assembly Language course in the Computer Science Program at Sao Paulo State University, located in Bauru/SP/BR. Data collected over eight years, four of them using the simulator, suggest the pass rate of students has increased significantly.