- •Системы счисления, используемые на компьютере. Десятичная система, двоичная и 16-ричная системы счисления. Правила перевода.
- •Арифметические операции в двоичной системе счисления. Понятие прямого, обратного и дополнительного кода. Сложение и вычитание целых чисел в двоичной системе счисления.
- •Арифметические операции в двоичной системе счисления. Представление вещественных чисел в компьютере. Сложение и вычитание вещественных чисел в двоичной системе счисления.
- •Основные логические операции: and, or, not, xor. Таблицы истинности для этих операций. Основные тождества булевой алгебры.
- •Понятие об информации и науке информатике. Исторические этапы способов обработки, хранения и передачи информации.
- •Функции компьютера. Их краткая характеристика.
- •Структура компьютера. Основные компоненты компьютера и их характеристика. Состав центрального процессора.
- •Язык блок-схем. Основные типы блоков. Понятие структуры. Виды структур.
- •17. Основные типы алгоритмов и способы их записи на языке блок-схем.
- •18. Архитектура эвм. Особенности фон Неймановской архитектуры.
- •Оперативная память компьютера. Понятие бита, байта, слова, двойного слова. Понятие адреса байта и слова.
- •Регистры центрального процессора. Краткая характеристика регистров общего назначения.
- •Регистры центрального процессора. Сегментные регистры и указатель команд. Регистр флагов.
- •Представление данных на компьютере. Представление целых чисел без знака и со знаком.
- •23 Представление данных на компьютере. Представление символьных данных и представление команд.
- •Понятие о языке Ассемблера. Этапы разработки программы на ассемблере.
- •Windows api функция для вывода символов на экран. Ее основные параметры и их назначение.
- •Windows api функция для ввода символов с консоли. Ее основные параметры и их назначение.
- •Особенности сложения и вычитания целых (в том числе и знаковых) чисел на Ассемблере.
- •29. Команды умножения и деления на Ассемблере.
- •30. Директивы определения данных.
- •33. Модификация адресов на ассемблере. Индексирование в одномерном массиве.
- •34. Модификация по нескольким регистрам на ассемблере. Обработка двумерных массивов.
- •Процедуры на Ассемблере. Правила оформления процедуры и обращения к ней.
- •36. Процедуры на Ассемблере. Передача параметров в процедуру. Рекурсивные процедуры.
- •Работа с файлами на Ассемблере. Открытие и закрытие файлов. Windows api процедуры открытия и закрытия файлов, их параметры.
- •38. Чтение из файла и запись в файл. Windows api процедуры записи и чтения файлов, их параметры.
- •39. Работа с вещественными числами на Ассемблере. Математический сопроцессор и его регистры. Форматы записи вещественных чисел.
- •40. Работа с вещественными числами на Ассемблере. Команды передачи данных и арифметические команды математического сопроцессора.
Регистры центрального процессора. Сегментные регистры и указатель команд. Регистр флагов.
Регистр — ячейки, расположенные в центральном процессоре и доступные из машинных команд.
Доступ к регистрам осуществляется намного быстрее, чем к ячейкам памяти, поэтому использование регистров заметно уменьшает время выполнения программ.
Все регистры имеют размер двойного слова (32 разряда), за каждым из них закреплено определенное имя
Сегментные регистры cs — code segment, сегмент команд
ds — data segment, сегмент данных
ss — stack segment, сегмент стека
es, fs, gs — дополнительный сегмент
Сегментные регистры ни в каких арифметических, логических и т.п. операциях учавствовать не могут. Эти регистры используются для сегментирования адресов, которое является разновидностью модификации адресов. Для 32 разрядных процессоров эти регистры почти не используются.
Указатель команд eip/ip — intruction pointer register
Имеет разрядность 32/16 и содержит смещение следующей команды относительно содержимого сегментного регистра CS. Этот регистр недоступен программисту и меняется командами управления в программе. Мы с ним так же не будем непосредственно работать.
Регистр флагов eflags/flags
Содержит 32 разряда. Классификация флагов:
Флаги условий авт.меняются при выполнении команд и фиксируют те или иные свойства результата
Флаги состояний - сами по себе они не меняются, и менять их должна программа; состояние этих флагов оказывает влияние на дальнейшее поведение процессора.
Флаги условий:
CF (carry flag) – флаг переноса. Наиболее полезен в арифметических операциях над числами без знака; например, при сложении беззнаковых чисел получилась слишком большая сумма – с единицей переноса, которой нет места в ячейке, тогда флаг CF принимает значение 1, а если сумма укладывается в размер ячейки, то значение CF - 0.
OF (overlow flag) – флаг переполнения. Полезен в арифметических операциях над числами со знаком; например, если при сложении или вычитании знаковых чисел получился результат, по модулю превосходящий допустимую величину (произошло переполнение мантиссы), тогда флаг OF получает значение 1, а если переполнения мантиссы не было – значение 0
ZF (zero flag) – флаг нуля. Устанавливается в 1, если результат команды оказался нулевым.
SF (sign flag) – флаг знака. Устанавливается в 1, если в операции над знаковыми числами получился отрицательный результат.
PF (parity flag) – флаг четности. Равен 1, если в 8 младших битах результата очередной команды содержится четное количество двоичных единиц. Учитывается обычно только в операциях ввода-вывода.
AF (auxiliary carry flag) – флаг дополнительного переноса. Фиксирует особенности выполнения операций над двоично-десятичными числами.
Флаги состояний:
DF (direction flag) – флаг направления. Устанавливает направление просмотра строк в строковых командах: при DF=0 строки просматриваются «вперед» (от начала к концу), при DF=1 – в обратном направлении.
IF (interrupt flag) – флаг прерываний. При IF=0 процессор перестает реагировать на поступающие к нему прерывания, а при IF=1 блокировка прерываний снимается.
TF (trap flag) – флаг трассировки. При TF=1 после выполнения каждой команды процессор делает прерывание, чем можно воспользоваться при отладке программы – для ее трассировки
Мнемокоды значений флагов |
|||
Имя флага |
Назначение |
Установлен |
Сброшен |
OF |
Переполнение (да/нет) |
OV |
NV |
DF |
Направление (уменьшение/увеличение) |
DN |
UP |
IF |
Прерывания (включены/отключены) |
EI |
DI |
SF |
Знак (отрицательный/положительный) |
NG |
PL |
ZF |
Нуль (да/нет) |
ZR |
NZ |
AF |
Вспомогательные перенос (да/нет) |
AC |
NA |
PF |
Четность (чет/нечет) |
PE |
PO |
CF |
Перенос (да/нет) |
CY |
NC |