Правильные ответы отмечены символом "+"
Тест по ассемблеру (углублённый). Часть 1.
1. Двумерный массив array в программе описан следующим образом array dw 10 dup (?), где элементы массива имеют размерность в 2 байта. Двумерный массив имеет размерность 2х5. При этом при обращении к элементу массива используются регистры esi – столбцы в матрице и ebx –строки в матрице. Чтобы записать в регистр еах нулевой элемент третьей строки матрицы необходимо выполнить команды (см. рис. 1.1):
А) а);
Б) б);
В) в);
Г) г); +
Д) д);
Е) е);
Ж) ж); +
З) з);
И) и);
2. Двумерный массив array в программе описан следующим образом array dw 15 dup (?), где элементы массива имеют размерность в 2 байта. Двумерный массив имеет размерность 3х5. При этом при обращении к элементу массива используются регистры esi – столбцы в матрице и ebx –строки в матрице. Чтобы записать в регистр еах второй элемент третьей строки матрицы необходимо выполнить команды (см. рис. 1.2):
А) а); +
Б) б);
В) в); +
Г) г);
Д) д);
Е) е); +
Ж) ж);
З) з);
3. Двумерный массив array в программе описан следующим образом array dw 20 dup (?), где элементы массива имеют размерность в 2 байта. Двумерный массив имеет размерность 4х5. При этом при обращении к элементу массива используются регистры esi – столбцы в матрице и ebx –строки в матрице. Чтобы записать в регистр еах третий элемент третьей строки матрицы необходимо выполнить команды (см. рис. 1.3):
А) а);
Б) б); +
В) в); +
Г) г);
Д) д);
Е) е);
Ж) ж);
З) з); +
4. Двумерный массив array в программе описан следующим образом array dw 16 dup (?), где элементы массива имеют размерность в 2 байта. Двумерный массив имеет размерность 4х4. При этом при обращении к элементу массива используются регистры esi – столбцы в матрице и ebx –строки в матрице. Чтобы записать в регистр еах второй элемент третьей строки матрицы необходимо выполнить команды (см. рис. 1.4):
А) а);
Б) б); +
В) в); +
Г) г);
Д) д);
Е) е);
Ж) ж);
З) з); +
5. Двумерный массив array в программе описан следующим образом array dw 6 dup (?), где элементы массива имеют размерность в 2 байта. Двумерный массив имеет размерность 2х3. При этом при обращении к элементу массива используются регистры esi – столбцы в матрице и ebx –строки в матрице. Чтобы записать в регистр еах первый элемент второй строки матрицы необходимо выполнить команды (см. рис. 1.5):
А) а);
Б) б);
В) в); +
Г) г);
Д) д);
Е) е);
Ж) ж); +
З) з);
6. Двумерный массив array в программе описан следующим образом array dw 18 dup (?), где элементы массива имеют размерность в 2 байта. Двумерный массив имеет размерность 6х3. При этом при обращении к элементу массива используются регистры esi – столбцы в матрице и ebx –строки в матрице. Чтобы записать в регистр еах четвёртый элемент второй строки матрицы необходимо выполнить команды (см. рис. 1.6):
А) а);
Б) б);
В) в);
Г) г); +
Д) д);
Е) е);
Ж) ж); +
З) з);
И) и);
7) TASM поддерживает следующие сложные типы данных:
А) массивы; +
Б) структуры; +
В) объединения; +
Г) записи; +
Д) объекты;
Е) директивы;
8) Если описать одномерный массив следующим образом: mas dd 5 dup (0). Какой объём памяти в данном случае будет выделен под массив?
А) 5 байт;
Б) 4 байта;
В) 10 байт;
Г) 9 байт;
Д) 20 байт; +
Е) 19 байт;
9) Задать двумерный массив в ассемблере можно следующим образом:
А) mas array [0..m,0..n];
Б) mas array [1..m,1..n];
В) mas db [ebx][esi];
Г) mas db 23,4,5,67,5,6,7,99,67,8,9,23,87,9,0,8; +
Д) mas dw 5 dup (?); +
10) Адрес элемента (i,j) в двумерном массиве можно определить следующим образом:
А) (база + количество_элементов_в_строке * размер_элемента * i+j*размер элемента); +
Б) (база+смещение + количество_элементов_в_строке * размер_элемента * i+j**размер элемента);
В) (смещение + количество_элементов_в_строке * размер_элемента * i+j);
Г) (база + количество_элементов_в_строке+смещение * размер_элемента * i+j*размер элемента);
Д) (смещение + количество_элементов_в_строке +база* размер_элемента * i+j);
Е) я не знаю;
11) Для использования структур в программе необходимо обязательно выполнить:
А) задать шаблон структуры; +
Б) определить экземпляр структуры; +
В) организовать обращение к элементам структуры; +
Г) удалить экземпляр структуры после использования его в программе;
Д) удалить шаблон структуры;
12) С помощью оператора type можно:
А) определить объём памяти, выделяемый под один элемент структуры; +
Б) определить объём памяти, выделяемый под массив структур;
В) организовать индексацию в массиве структур; +
Г) обратиться к элементу структуры в виде (адресное_выражение) type (имя_поля_структуры);
13) Для того, чтобы объявить транслятору о том, что в программе имеется процедура, которая используется в другом модуле необходимо использовать директивы:
А) extrn и public; +
Б) enter и leave;
В) far и near;
Г) забыл(а);
14) Если необходимо собрать два модуля, например modul1.asm и modul2.asm в один исполняемый модуль, необходимо:
А) выполнить трансляцию модуля modul1.asm и получить объектный модуль modul1.obj; +
Б) выполнить трансляцию модуля modul2.asm и получить объектный модуль modul2.obj; +
В) cкомпановать программу утилитой TLINK командной строкой вида tlink /v modul1.obj+ modul2.obj; +
Г) cкомпановать программу утилитой TLINK командной строкой вида tlink /С modul1.obj+ modul2.obj;
Д) cкомпановать программу утилитой TLINK командной строкой вида tlink /C modul1.obj and modul2.obj;
15) Пролог в процедуре необходим для:
а) инициализации регистра bp; +
б) инициализации регистра sp;
в) для доступа к переданным в процедуру аргументам через стек; +
г) для того, чтобы правильно записать эпилог в конце процедуры;
16) Если в процедуру типа near были переданы через стек аргументы, то для доступа в процедуре к последнему переданному аргументу необходимо:
А) сместиться от содержимого bp на 4 байта; +
Б) сместиться от содержимого bp на 6 байта;
В) сместиться от содержимого bp на 8 байта;
Г) сместиться от содержимого bp на 2 байта;
17) Команда ret n необходима для:
А) очистки стека от аргументов, которые передавались в процедуру; +
Б) обращения к n-ому аргументу, который передавался через стек;
В) передачи аргументов в процедуру по их адресу;
Г) забыл(а)!
18) Передача параметров по имени в процедуру предполагает:
А) использование механизма макроопределений; +
Б) использование общей области памяти;
В) использование другой специальной функции-заглушки;
Г) работу с прерываниями DOS и BIOS;
19) При передаче аргументов в процедуру через стек «параметры в стеке», «адрес возврата» и «старое значение ВР» вместе называются:
А) прологом;
Б) эпилогом;
В) активационной записью функции; +
Г) макроопределением процедуры;
Д) параметры процедуры;
20) Задать первую локальную переменную p_l внутри процедуры можно следующим образом:
А) p_l equ [bp-2]; +
Б) p_l equ [bp-4];
В) p_l equ [bp-6];
Г) p_l equ [bp+2];
Д) p_l equ [bp+4];
Е) p_l equ [bp+6];
Ж) p_l equ [bp];
21) Если в программе определена структура worker, которая имеет 6 полей и занимает 76 байт, то запись в программе типа sotr worker<> означает, что:
А) все значения полей для структуры sotr заданы по умолчанию; +
Б) все значения полей для структуры sotr равны 0;
В) все значения полей для структуры sotr занимают 1 байт;
Г) в программе определен шаблон для структуры с именем sotr;
22) При работе с цепочечными командами адрес цепочки - источника должен находиться в регистрах:
А) ds:esi/si; +
Б) ds:edi/di;
В) es:edi/di;
Г) es:esi/si;