Course detail

Machine Level Programming

FIT-ISUAcad. year: 2017/2018

Numeral systems. Unsigned and signed numbers representations, arithmetic in binary system. Machine language, assembly language, assembler. Intel Pentium processors architecture (registers, main memory organization, interrupt system). Integer instruction set. Programming in machine language. NASM assembly language, symbolic instruction, directives, macroinstructions. Assembling and linking. Standard control transfer and passing of parameters in procedures and functions. Operation system services. Programming of PC peripherals (videoRAM, mouse, speaker). Real numbers representation, IEEE standard. FPU architecture and instruction set. FPU programming. Introduction to FITkit.

Language of instruction

Czech

Number of ECTS credits

6

Mode of study

Not applicable.

Learning outcomes of the course unit

Students acquaint with architecture of Intel Pentium processors (real mode) including FPU unit and learn to use the most important integer and FPU instructions. Further they learn assembly language NASM and they will be able to create programs in this language and to compile these programs into executable ones. Students acquire basic knowledge of control transfer and parameters passing and of operation system services and they will be able to apply this knowledge in practice.

Students acquire basic knowledge of principles of processor architecture and operation that belongs to basic knowledge of all IT specialists. They learn to solve simple problems in assembly language and maintain proper documentation of elementary computer programs.

Prerequisites

None.

Co-requisites

Not applicable.

Planned learning activities and teaching methods

Not applicable.

Assesment methods and criteria linked to learning outcomes

At least 15 points earned during semester.

Course curriculum

    Syllabus of lectures:
    1. Introduction, numerical systems, arithmetic. 
    2. Machine code (language), assembly language, assembler.
    3. Real mode of Pentium processors: registers, operands, instruction formats, memory addressing, interrupts.
    4. Pentium processor instruction set. Integer instructions.
    5. Integer instructions, continuation.
    6. Integer instructions, continuation.
    7. Principles of programming in machine language, typical control constructions.
    8. Assembly language.
    9. Assembly language, continuation.
    10. Modules, libraries, operational system services. Procedures and functions, standard control transfer and passing of parameters.
    11. FPU of Pentium processors.
    12. FPU instruction set.

    13. Syllabus of computer exercises:
      1. Principles of symbolic language programming.
      2. Simple programs in assembly language.
      3. NASM assembler and LINK linker.
      4. Operation system services. Programming of PC peripherals.
      5. Standard control transfer and passing of parameters in procedures and functions.
      6. Individual more complex programs.
      7. FPU programming.

Work placements

Not applicable.

Aims

To acquaint students with assembly programming directed at PC with Intel Pentium Processors, namely with numeral systems, representations of unsigned and signed numbers, with arithmetic in binary system and with real numbers representation. Further with Intel Pentium basic architecture, types of operands and their references in registers and memories, integer and FPU instruction set, assembly language and typical programming constructions.

Specification of controlled education, way of implementation and compensation for absences

  • Mid-Term written test
  • Evaluation of activity in computer exercises

Recommended optional programme components

Not applicable.

Prerequisites and corequisites

Not applicable.

Basic literature

Intel® 64 and IA-32 architectures software developer’s manual combined volumes: 1, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D, and 4. Webové stránky společnosti Intel [online]. [cit. 2022-01-06]. Dostupné z: https://www.intel.com/content/dam/develop/public/us/en/documents/325462-sdm-vol-1-2abcd-3abcd.pdf
The Netwide Assembler: NASM, Quick reference Guide [online]. [cit. 2022-01-06]. Dostupné z: https://www.nasm.us/xdoc/2.15.05/nasmdoc.pdf

Recommended reading

Duntemann, Jeff. Assembly language step-by-step: programming with linux. 3rd ed. Indianapolis: Wiley, 2009. ISBN 978-0470497029.
Intel® 64 and IA-32 architectures software developer’s manual combined volumes: 1, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D, and 4. Webové stránky společnosti Intel [online]. [cit. 2022-01-06]. Dostupné z: https://www.intel.com/content/dam/develop/public/us/en/documents/325462-sdm-vol-1-2abcd-3abcd.pdf
Irvine, Kip R. Assembly language for x86 processors. Seventh edition. Boston: Pearson, 2015. ISBN 978-0133769401.
Marek, R.: Assembler pro PC - učíme se programovat v jazyce, Computer Press, 2003, ISBN 80-7226-843-0
The Netwide Assembler: NASM, Quick reference Guide [online]. [cit. 2022-01-06]. Dostupné z: https://www.nasm.us/xdoc/2.15.05/nasmdoc.pdf

Classification of course in study plans

  • Programme IT-BC-3 Bachelor's

    branch BIT , 1 year of study, summer semester, compulsory

Type of course unit

 

Lecture

39 hod., optionally

Teacher / Lecturer

Syllabus

  1. Introduction, numerical systems, arithmetic. 
  2. Machine code (language), assembly language, assembler.
  3. Real mode of Pentium processors: registers, operands, instruction formats, memory addressing, interrupts.
  4. Pentium processor instruction set. Integer instructions.
  5. Integer instructions, continuation.
  6. Integer instructions, continuation.
  7. Principles of programming in machine language, typical control constructions.
  8. Assembly language.
  9. Assembly language, continuation.
  10. Modules, libraries, operational system services. Procedures and functions, standard control transfer and passing of parameters.
  11. FPU of Pentium processors.
  12. FPU instruction set.

Exercise in computer lab

26 hod., optionally

Teacher / Lecturer

Syllabus

  1. Principles of symbolic language programming.
  2. Simple programs in assembly language.
  3. NASM assembler and LINK linker.
  4. Operation system services. Programming of PC peripherals.
  5. Standard control transfer and passing of parameters in procedures and functions.
  6. Individual more complex programs.
  7. FPU programming.