Основы программирования на Ассемблере
Процесс преобразования программы на ассемблере в машинные коды называется
-компиляцией
-загрузкой
-компоновкой
-ассемблированием
Для создания программы на Ассемблере последовательно выполняются этапы
Отладка 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)