A Teaching Approach for Bridging the Gap Between Low-Level and High-Level Programming Using Assembly Language Learning for Small Microcontrollers DIMOSTHENIS E. BOLANAKIS, 1,2 GEORGIOS A. EVANGELAKIS, 3 EURIPIDIS GLAVAS, 1 KONSTANTINOS T. KOTSIS 2 1 Department of Communications, Informatics and Management, Epirus Educational Institute of Technology, Arta, Greece 2 Department of Primary Education, University of Ioannina, Ioannina, Greece 3 Department of Physics, University of Ioannina, Ioannina, Greece Received 12 November 2008; accepted 2 February 2009 ABSTRACT: Assembly language programming has been for long used as a teaching tool for computer systems. However, this approach suffers from the difficulties that are inherent to its low-level instructions. The present teaching approach merges the assembly language course with microcomputers technology by means of structured pseudo-coding. The method is based on a classification of the assembly instructions in a novel inventory, which is subsequently used for the composition of the basic high-level programming possibilities, thus overcoming the limited assembly abilities. The proposed methodology aims at helping the students to make the parallelization between the assembly language programming for 8-bit microcontrollers and a higher level programming. ß 2009 Wiley Periodicals, Inc. Comput Appl Eng Educ 19: 525537, 2011; View this article online at wileyonlinelibrary.com/ journal/cae; DOI 10.1002/cae.20333 Keywords: assembly-level programming; microcontrollers INTRODUCTION Assembly language programming allows basic knowledge improvement of the most elementary aspects of the processor, emphasizing the particularities of its internal registers, main memory, and control unit [1]. However, due to the lack of structures, assembly is not considered as a friendly teaching tool for the students. This disadvantage in conjunction with the new trends in operating systems and programming tools that tend to hide the underlying hardware from the user resulted, during the last years, in the tendency of eliminating the assembly language course from the required computer science curriculum [2]. Consequently, there is nowadays an ongoing faculty discussion on the choice of either keeping the assembly language programming as a separate course [3] or merging it into other courses [4]. Both aspects defend resonant arguments that can be summarized in the following: (a) since the assembly language is thought to be a tough teaching tool, students should take a full course in order to gain a better understanding of the model of actual central processing unit (CPU) and become better high-level language programmers, (b) as the technology in the computing discipline advances, educational departments should keep pace and make room in the curriculum for new courses. Concerning the later suggestion, Sparkes [5] observes that the rapidly changing technology requires more flexibility and less special- ization in graduates, together with an increased capability for Correspondence to D. E. Bolanakis (dbolanis@cc.uoi.gr). ß 2009 Wiley Periodicals Inc. 525