TEE 403
Assembly Language Programming
3
Course Description
At the end of this course, the students should be able to:
1. describe the underlying principle in machine-level data representations, computing, and
programming;
2. gain proficiency in assembly programming for the x86 architecture, including register
operations, control structures, bitwise operations, and subprograms;
3. perform tasks like compiling, linking, loading, and debugging;
4. build a program on a microprocessor using arithmetic and logical instruction set of 8086;
5. analyse abstract problems and apply a combination of hardware and software to address
the problem; and
6. review design issues when generating complex digital systems (including microprocessors)
and resolve them.
Course Outline
Introduction: language level of abstraction and effect on machine, characteristics of machine
code, advantages, justifications of machine code programming, instruction set and
dependency on underlying processor. Intel 8086 microprocessor assembly language
programming: programming model as resources available to programmer, addressing modes,
instruction format, instruction set- arithmetic, logical, string, branching, program control,
machine control, input/output , etc; assembler directives, hand-assembling, additional
80x86/Pentium instructions. Modular programming. Interrupt and service routine. Interfacing
of assembly language to C. Intel 80x87 floating point programming. Introduction to MMX and
SSE programming. Motorola 680x0 assembly language programming. Extensive practical
engineering problems solving in assembly language using MASM for Intel, and cross-assembler
for Motorola.