- •Главы 3 - 4 Ирвин, Кип.
- •Вместо ответов (Да/Нет) – приводить объяснение или подтверждение (из учебника)!.!.!.
- •Основы ассемблера
- •3.1.. Основные элементы языка ассемблера 17
- •3.2.. Пример: сложение трех целых чисел 9
- •3.3.. Трансляция, компоновка и запуск программ 10
- •7. Какой ключ нужно указать в командной строке при вызове ассемблера, чтобы тот
- •3.4.. Определение данных 9
- •3.5.. Символические константы 7
- •4.1.. Команды пересылки данных 10
- •4.2.. Сложение и вычитание 12
- •4.3.. Операторы и директивы для работы с данными 12
- •4.4.. Косвенная адресация 8
- •4.5.. Команды jmp и loop 10
- •4.7.6. Числа Фибоначчи
3.3.. Трансляция, компоновка и запуск программ 10
1. Какие типы файлов создаются ассемблером?
2. (Да/Нет). Компоновщик извлекает копии скомпилированных процедур из
библиотеки объектных файлов.
3. (Да/Нет). После внесения изменений в исходный текст программы на ассемблере
ее нужно заново оттранслировать и скомпоновать, чтобы внесенные изменения
возымели действие.
4. Как называется компонент операционной системы, который считывает
исполняемый файл и передает ему управление?
5. Какие типы файлов создаются компоновщиком?
Прежде чем ответить на следующие вопросы, прочтите приложение Г, "Справочник
пo MASM".
6. Какой ключ нужно указать в командной строке при вызове ассемблера, чтобы тот
сгенерировал файл листинга?
7. Какой ключ нужно указать в командной строке при вызове ассемблера, чтобы тот
сгенерировал файл с отладочной информацией?
8. Что означает опция компоновщика /SUBSYSTEM: CONSOLE?
9. Задача повышенной сложности. Назовите как минимум четыре функции из
библиотеки kernel32.lib.
10. Задача повышенной сложности. Какая из опций компоновщика позволяет указать
точку входа в программу?
……………………………………………………………………………………………………………………………………….
3.4.. Определение данных 9
1. Напишите операторы определения для перечисленных ниже переменных:
а) неинициализированной 16-разрядной целой переменной со знаком;
б) неинициализированной 8-разрядной целой переменной без знака;
в) неинициализированной 8-разрядной целой переменной со знаком;
г) неинициализированной 64-разрядной целой переменной;
2. Какой тип данных подходит для хранения 32-разрядной целой переменной со
знаком?
3. Объявите 32-разрядную целую переменную со знаком и присвойте ей
минимальное отрицательное число. (Подсказка. Чтобы узнать о допустимых диапазонах
значений переменных разных типов, обратитесь к главе 1, "Основные понятия".)
4. Объявите 16-разрядную целую переменную без знака с тремя инициализаторами,
которая называется wArray.
5. Объявите строковую переменную, в которой будет храниться название вашего
любимого цвета. Проинициализируйте ее какнуль-завершенную строку.
6. Объявите массив, состоящий из 50 неинициализированных двойных слов без
знака и присвойте ему имя dArray.
7. Объявите строковую переменную, в которой слово "ТЕСТ" повторяется 500 раз.
8. Объявите массив, состоящий из 20 байтов без знака, присвойте ему имя ЬАггау и
присвойте всем его элементам нулевые значения.
9. Опишите порядок расположения в памяти (от младшего к старшему) отдельных
байтов приведенной ниже переменной типа двойного слова:
vail DWORD 87654321b
……………………………………………………………………………………………………………………………………….
3.5.. Символические константы 7
1. Объявите с помощью директивы присваивания (=) символическую константу,
соответствующую ASCII-коду клавиши <Backspace> (08h).
2. Объявите с помощью директивы присваивания (=) символическую константу
SecondslnDay и назначьте ей результат вычисления арифметического
выражения, в котором определяется количество секунд в сутках.
3. Покажите, как можно определить размер приведенного ниже массива в байтах и
присвойте это значение символической константе ArraySize.
myArray WORD 20 DUP(?)
4. Покажите, как можно определить количество элементов в приведенном ниже
массиве, и присвойте это значение символической константе Array-Elements:
myArray DWORD 30 DUP(?)
5. С помощью директивы TEXTEQU переопределите оператор PROC как PROCEDURE.
6. С помощью директивы TEXTEQU определите символ Sample для строковой
константы, а затем воспользуйтесь этим символом при определении строковой
переменной MyString.
7. С помощью директивы TEXTEQU определите символ SetupESl для следующей
строки кода:
mov esi, OFFSET myArray
……………………………………………………………………………………………………………………………………….
……………………………………………………………………………………………………………………………………….