Основы программирования на Ассемблере

Процесс преобразования программы на ассемблере в машинные коды называется

-компиляцией

-загрузкой

-компоновкой

-ассемблированием

Для создания программы на Ассемблере последовательно выполняются этапы

Отладка 4

Компоновка 3

Создание исходного модуля 1

Трансляция 2

Непосредственную загрузку регистра можно выполнить с помощью команды

-MOV dst, data

-MOV dst, src

-LEA reg, mem

-XCHG reg, mem

Внутрисегментное смещение переменной var_1 может быть загружено в регистр DX командами

-MOV DX, var_1

-MOV var_1, DX

-MOV DX, offset var_1

-LEA DX, var_1

Переменную var_1 можно загрузить в регистр AL командой

-MOV AL, var_1

-MOV var_1, AL

-MOV AL, offset var_1

-LEA AL, var_1

Операндом команды работы со стеком PUSH src может быть

-Любой 16 битовый регистр или двухбайтовая ячейка памяти

-Любой регистр или ячейка памяти

-Любой 16 битовый регистр кроме сегментного или двухбайтовая ячейка памяти

-Любой 16 битовый регистр кроме сегментного

Операндом команды работы со стеком POP dst может быть

-Любой 16 битовый регистр кроме сегментного

-Любой 16 битовый регистр кроме сегментного или двухбайтовая ячейка памяти

-Любой 16 битовый регистр или двухбайтовая ячейка памяти

-Любой 16 битовый регистр кроме сегментного регистра CS или двухбайтовая ячейка памяти

При прямой адресации к портам ввода-вывода используются команды

-IN ac, port

-IN ac, DX

-OUT DX, ac

-OUT port, ac

При косвенной адресации к портам ввода-вывода в качестве указателя адреса порта используется регистр

-DS

-CS

-CX

-DX

При прямой адресации к портам ввода-вывода используются команды IN ac, port и OUT port, acв которых операнд port является

-Числом в диапазоне 0..255

-Числом в диапазоне –128…-127

-Числом в диапазоне 0…65535

-Числом в диапазоне 0…220

Ошибочными являются ассемблерные команды

-MOV AL, CH

-MOV CX, 3Eh

-MOV SI, AH

-MOV DS, 8EEEAh

-MOV DX, var_1

Операндами команды MOV dst, src могут быть

-Регистр – регистр

-Сегментный регистр – сегментный регистр

-Память – регистр

-Память – память

-Регистр – непосредственные данные

-Непосредственные данные – регистр

-Регистр – память

-Сегментный регистр – непосредственные данные

Длина операндов в командах передачи данных должна быть

-Равна 1 байту

-Разной

-Одинаковой

-Равна 2 байтам

Операнды логических команд являются

-Целыми Числами без знака

-Целыми Числами со знаком

-Вещественными числами со знаком

-Вещественными числами без знака

При выполнении команд логических операций флаг переноса CF

-Формируется

-Всегда равен 1

-Всегда равен 0

-Не формируется

Если содержимое AL = 0Fh , то результатом выполнения команды NOT AL, будет

-11110000b

-00001111b

-10101010b

-00000000b

Формат директив Ассемблера предусмативает следующие поля

-имя

-метка

-директива

-комментарий

-мнемоника

-операнд(ы)

-префикс

Формат команд Ассемблера предусматривает следующие поля

-метка

-мнемоника

-имя

-префикс

-директива

-операнд(ы)

-комментарий

Каждая команда при трансляции формирует код длиной

-1 байт

-4 байта

-длина зависит от способов адресации операнда

-2 байта

В каждой программе на Ассемблере обязательно должен быть

-сегмент стека

-сегмент кода

-сегмент адреса

-сегмент данных

Команды Ассемблера могут быть

-адресными

-безоперандными

-двухоперандными

-безадресными

-однооперандными

.Code это директива

-закрытия сегмента кода

-открытия сегмента кода

-объявления данных

-резервирования памяти под сегмент кода

. Data - это директива

-объявления данных в программе

-резервирования памяти под данные, используемые в программе

-открытия сегмента данных

-объявления констант, используемых в программе

.Model <модель памяти> - это директива предполагает использования

-организацию дополнительного сегмента данных в программе

-упрощенных директив описания сегментов .Data, .Stack, .Code

-стандартных директив SEGMENT и ENDS

-директивы ASSUME для связывания сегментов программы с сегментными регистрами

Директива ASSUME связывает

-метку команды с командой

-сегментные регистры с логическими сегментами программы

-точку входа в программу с командой

-точку выхода из программы с командой

Для исполняемых модулей типа .COM справедливо

-(DS)>(SS)>(CS)

-(DS)<(SS)<(CS)

-(DS)=(SS)=(CS)

-(DS)(SS)(CS)

В исполняемых модулях типа .COM

-логические сегменты программы увеличиваются на 64 Кбайт

-стек отсутствует

-данные, стек и команды размещаются в одном сегменте

-логические сегменты программы равны 16 Кбайт

Сегменты исходного модуля должны располагаться в порядке

-данные, стек, код

-произвольном

-код, данные, стек

-стек, данные, код

Результат операции умножения операндов размером byte MUL srcпомещается в

-ячейку памяти

-в регистр DX

-регистр-аккумулятор АХ

-в стек

Результатом выполнения команды MUL CL будет

-AX:=(AX)*(CX)

-DX:=(DL)*(CL)

-AX:=(AL)*(CL)

-AL:=(AL)*(CL)

Наши рекомендации