- •Системы счисления, используемые на компьютере. Десятичная система, двоичная и 16-ричная системы счисления. Правила перевода.
- •Арифметические операции в двоичной системе счисления. Понятие прямого, обратного и дополнительного кода. Сложение и вычитание целых чисел в двоичной системе счисления.
- •Арифметические операции в двоичной системе счисления. Представление вещественных чисел в компьютере. Сложение и вычитание вещественных чисел в двоичной системе счисления.
- •Основные логические операции: and, or, not, xor. Таблицы истинности для этих операций. Основные тождества булевой алгебры.
- •Понятие об информации и науке информатике. Исторические этапы способов обработки, хранения и передачи информации.
- •Функции компьютера. Их краткая характеристика.
- •Структура компьютера. Основные компоненты компьютера и их характеристика. Состав центрального процессора.
- •Язык блок-схем. Основные типы блоков. Понятие структуры. Виды структур.
- •17. Основные типы алгоритмов и способы их записи на языке блок-схем.
- •18. Архитектура эвм. Особенности фон Неймановской архитектуры.
- •Оперативная память компьютера. Понятие бита, байта, слова, двойного слова. Понятие адреса байта и слова.
- •Регистры центрального процессора. Краткая характеристика регистров общего назначения.
- •Регистры центрального процессора. Сегментные регистры и указатель команд. Регистр флагов.
- •Представление данных на компьютере. Представление целых чисел без знака и со знаком.
- •23 Представление данных на компьютере. Представление символьных данных и представление команд.
- •Понятие о языке Ассемблера. Этапы разработки программы на ассемблере.
- •Windows api функция для вывода символов на экран. Ее основные параметры и их назначение.
- •Windows api функция для ввода символов с консоли. Ее основные параметры и их назначение.
- •Особенности сложения и вычитания целых (в том числе и знаковых) чисел на Ассемблере.
- •29. Команды умножения и деления на Ассемблере.
- •30. Директивы определения данных.
- •33. Модификация адресов на ассемблере. Индексирование в одномерном массиве.
- •34. Модификация по нескольким регистрам на ассемблере. Обработка двумерных массивов.
- •Процедуры на Ассемблере. Правила оформления процедуры и обращения к ней.
- •36. Процедуры на Ассемблере. Передача параметров в процедуру. Рекурсивные процедуры.
- •Работа с файлами на Ассемблере. Открытие и закрытие файлов. Windows api процедуры открытия и закрытия файлов, их параметры.
- •38. Чтение из файла и запись в файл. Windows api процедуры записи и чтения файлов, их параметры.
- •39. Работа с вещественными числами на Ассемблере. Математический сопроцессор и его регистры. Форматы записи вещественных чисел.
- •40. Работа с вещественными числами на Ассемблере. Команды передачи данных и арифметические команды математического сопроцессора.
Процедуры на Ассемблере. Правила оформления процедуры и обращения к ней.
Часто в программах приходится несколько раз решать одну и ту же подзадачу. И поэтому приходится многократно выписывать одинаковую группу команд, решающую эту подзадачу. Такую группу команд рекомендуется оформить отдельной процедурой и ее просто вызывать в нужных местах основной программы.
Размещают процедуры, как правило, в конце сегменте команд(за последней командой основной программы).
Причем оформляют ее специальным образом:
<имя процедуры> PROC <параметры>
<тело процедуры>
<имя процедуры> ENDP
Параметры и вызов процедуры
При этом <имя процедуры> своего рода метка, именно по этому имени и вызывается процедура.
Обращаться к процедуре следует по команде
CALL <имя процедуры>
Завершаться процедура должна командой возврата RET
По команде вызова запоминается в стеке адрес возврата(команда следущая в основной программе за вызовом CALL). По команд возврата RET и происходит переход на этот адрес возврата.
36. Процедуры на Ассемблере. Передача параметров в процедуру. Рекурсивные процедуры.
Часто в программах приходится несколько раз решать одну и ту же подзадачу. И поэтому приходится многократно выписывать одинаковую группу команд, решающую эту подзадачу. Такую группу команд рекомендуется оформить отдельной процедурой и ее просто вызывать в нужных местах основной программы.
Размещают процедуры, как правило, в конце сегменте команд(за последней командой основной программы).
Причем оформляют ее специальным образом:
<имя процедуры> PROC <параметры>
<тело процедуры>
<имя процедуры> ENDP
Процедура называется рекурсивной, если она обращается сама к себе либо непосредственно (прямая рекурсия), либо через другие процедуры (косвенная рекурсия).
При обращении процедуры к самой себе лучше рассматривать обращение к копии, т.е. как будто к другой такой же процедуре. Но сразу возникает вопрос: не произойдет ли зацикливания? Нет, если в ней есть нерекурсивная ветвь, т.е. такой путь вычисления, на котором рекурсивный вызов обходится. Надо также позаботится о том, чтобы рекурсивная процедура обязательно сохраняла значения всех регистров, которыми она пользуется.
Работа с файлами на Ассемблере. Открытие и закрытие файлов. Windows api процедуры открытия и закрытия файлов, их параметры.
На языке Ассемблера существуют возможности работы с файлами, размещенными на диске. Причем, возможности эти представлены в полном объеме:
- можно открыть файл и читать из него информацию (причем, неважно, какой тип файла открывается – текстовый, исполняемый и т.п.)
- можно открыть файл для записи и соответственно дописывать в него
- можно открыть файл одновременно для записи и чтения.
- по окончании работы с файлом в программе – файл нужно закрыть!
ОТКРЫТИЕ ФАЙЛА
Итак, чтобы прочитать содержимое файла, необходимо вначале открыть его. Это делается (как и другие операции с файлами) с помощью API-функции CreateFile . При этом:
Первый параметр у функции содержит адрес имени файла, состоящего из символов. Признаком окончания имени служит нулевой байт. Например, ADDR fName (в сегменте данных должно быть, например:
fName BYTE "simple",0 )
Второй параметр показывает процедуре, для чего открывается или создается файл. Параметр GENERICWRITE означает, что разрешена запись в файл, GENERICREAD разрешает только чтение. Можно позволить и чтение и запись: GENERIC_READ or GENERIC_WRITE
Третий параметр показывает, может ли файл использоваться другими программами (не забывайте, что Windows — многоза-дачная операционная система!). Нас пока многозадачность не интересует, поэтому выбираем параметр, равный нулю, что открывает доступ к файлу только нашей программе.
Четвертый параметр тоже имеет отношение к многозадачности. Он содержит адрес области данных, в которой указано, может ли файл использоваться программами, порожденными данной. Любая программа в системе Windows может запускать другие программы или, как говорят, процессы. Мы пока не доросли до запуска «дочерних» программ, поэтому полагаем этот параметр равным нулевому адресу NULL, что разрешает использовать файл только основной программе.
Пятый параметр показывает, что делать, если файл уже существует. Значение CREATE_ALWAYS приказывает уничтожить уже существующий файл и создать на его месте пустой файл с тем же именем. В нашем случае это значит, что если в папке, где запущена программа, нет файла simple, то он будет создан. Если же такой файл уже есть, он будет уничтожен, и на его месте появится файл с тем же именем simple, но совершенно пустой.
Другие значения этого параметра:
CREATENEW (не трогает уже существующий файл),
OPENEXISTING (открывает только уже существующий файл, сохраняя его содержимое),
OPEN_ALWAYS (если файл существует, открывает его, не трогая содержимое, если не существует, создаем новый файл с указанным именем).
Шестой параметр задает атрибут файла: архивный, скрытый, только для чтения, системный и т. д. Например, если параметр равен FILEATTRIBUTEARCHIVE — соотвествует обычному для большинства файлов атрибуту (архивный)
Седьмой параметр будем считать всегда равен нулю.
Как бы ни сочетались между собой эти семь параметров, процедура CreateFile возвращает всего одно число в регистре еах. Это дескриптор файла, используемый аналогично дескриптору экрана или клавиатуры mov fHandle, eax
ЗАКРЫТИЕ ФАЙЛА
Завершает работу с файлом API-функция CloseHandle, у которой всего один параметр — дескриптор файла. Эта процедура отсоединяет файл от дескриптора, и после ее выполнения файл снова должен быть открыт, чтобы стали возможными чтение или запись.