Computer Organization and Assembly Language Lab

COE 301 - Computer Organization and Assembly Language


Assembly language is the link between high-level languages and the hardware. Compilers translate high-level language programs into assembly language, operating systems include critical components written in assembly language, and even embedded and mobile device programming often requires knowledge of assembly language. A good understanding of assembly language proves to be a valuable asset, as it gives full access to the features of the hardware and provides valuable insight into the fundamentals of CPU design, datapath operation, and program execution.

In the COE301 lab students learn and practice assembly language programming. The lab has two main components; assembly language programming and CPU design. There are thirteen experiments in total; nine experiments dedicated to assembly programming and four to the design of a pipelined CPU. Students test the designed CPU by running a program on their CPU.

Toward the end of the course, students should be able to, describe the instruction set architecture of a MIPS processor, analyze, write, and test MIPS assembly language programs describe the organization and operation of integer and floating-point arithmetic units, and design the datapath and control of a pipelined processor and handle hazards


Equipment and Tools:
  • Personal Computers, though the use of laptops is allowed.
  • MIPS simulation tool for program and debugging
  • Logisim, a digital design simulator
  • Online C/C++ to MIPS compiler


Lab Safety:

Safety is a priority at KFUPM, and during the first lab at the beginning of the lab, students are taught how to avoid accidents in the lab, and to respond promptly and appropriately in case of any emergency.