This course provides fundamental understanding of programming acomputer hardware by teaching a low-level programming language, knownas the assembly language programming. Assembly language structures,operators, macros and directives are covered. The hardware context isbased on Intel and AMD processors and their architectures. The courseteaches better manipulation of the hardware using assembly languageprogramming; teaches real versus protected mode programming,interaction between assembly language and operation systems as well asapplication programs. The course also teaches, how to use assemblylanguage to develop system level efficient software modules.
This course establishes a relation between hardware and software. With the recent switch from uniprocessor to multicore processors the compliers writers, operating system designers, database programmers, softwareengineers, programmers for the faster program and efficient programming need a firm understanding of processor and multicore design and performance evaluation; instruction set design, and addressing having implicit parallelism; data path design and pipelining; control structures and microprogramming; memory management, caches, and memory hierarchies; interrupts and I/O structures; parallel processing, GPU and so on. Hardware designers also need to clearly know the effect of their work on software applications. This course will help achieve these goals.