Machine Code and Data

Semestr: Winter

Range: 2+2c


Credits: 4

Programme type:

Study form:

Course language:


The objective of the course is to teach the students the basic operations of a computer, with emphasis on the relationships between the instruction set, architecture, and low-level (assembly) programming. Lectures present a programming model of the computer using building blocks such as registers, ALU, and memory. In the seminars, students will learn the assembly languages of at least two particular processors and practice them on simulators as well as actual microcomputers.


Numeral systems, ISA - Instruction Set Architecture Assembler language, Basic machine operation

Course syllabus:

1. Introduction, von Neumann and Harvard computer architectures.
2. Number systems in computers, operations with numbers, text representations.
3. Representing decimal numbers: fixed point, floating point, IEEE-754
4. Instruction set architectures: registers, accumulator, stack-oriented
5. Basic parts of a simple von-Neumann computer
6. Basic cycle of a simple computer
7. Register and stack architectures
8. Instruction types and structures, addressing modes
9. Symbolic expression of instructions and addressing modes
10. Assembly languages for RISC and CISC processors
11. Assembler, directives, absolute/relative compilation, segments
12. Interrupts, I/O instructions
13. Memory subsystem, memory management
14. Assembler vs. higher-level languages

Seminar syllabus:

The labs take place in the department's laboratories. Students will use 8-bit AVR microcomputers and the AVR Studio development system. The test covers topics from lectures as well as seminars and labs.
1.Seminar: Introduction, credit and exam requirements. Number systems: binary, octal, hexadecimal; conversions.
2.Seminar: Fixed-point and floating-point arithmetic. Problems with rounding, normalization.
3.Seminar: AVR microcomputer architecture, instruction set, simple examples.
4.Lab: TEST. Introduction to AVR Studio: Writing, compiling and debugging a simple program.
5.Lab: Experiments with data transfer and ALU instructions.
6.Lab: Experiments with memory operations, arrays, indexing, tables.
7.Lab: Experiments with subroutines, parameter passing, stack.
8.Lab: Project - controlling a display.
9.Lab: Project - A/D converter, interrupts.
10.Lab: Complex project.
11.Lab: Analysis of a program compiled from a high-level language.
12.Lab: Accumulator-oriented instruction set, simple programs for the 8051 microcontroller.
13.Lab: Floating-point operations in x86 microprocessors.
14.Lab: Credits


1. Slavik, P.: Machine Oriented Languages, Skriptum ČVUT Praha, 2003.
2. Váňa, V.: Mikrokontroléry ATMEL AVR - popis procesoru a instrukční soubor, BEN - tech. literatura, Praha, 2003
3. Váňa, V.: Mikrokontroléry ATMEL AVR - assembler, BEN - tech. literatura, Praha, 2003
4. AVR 8-bit Instruction Set. Technical manual, ATMEL Corporation, 2002.