Перечислите составляющие процедуры формирования исполняемой программы и укажите их функциональное назначение
У большинства существующих реализаций ассемблера нет интегрированной среды, подобной Turbo Pascal или Turbo C. Поэтому для выполнения функций по вводу кода программы, ее трансляции и редактирования и отладке необходимо использовать отдельные служебные программы. На рис. 3 приведена общая схема процесса разработки программы на ассемблере, в которой выделено 4 этапа: - ввод кода программы текстовым редактором, - трансляция программы с применением программы MASM, - создание загрузочного модуля программой LINK.EXE, - отладка программой TD.EXE. Текст программы на языке ассемблер пишется при помощи любого редактора, сохраняющего текст в виде стандартных кодов ASCII. Проще всего в нашем варианте воспользоваться редактором ЕDIT (клавиши Shift-F4 и F4). Затем транслятор MASM (“Макроассемблер” фирмы Microsoft) переводит исходный файл с расширением *.asm в файл, содержащий машинные коды команд ассемблера, так называемый объектный файл (*.obj). Естественно перевод состоится лишь в том случае, если исходный файл содержит программу, написанную без ошибок. Одновременно с объектным файлом могут быть созданы файлы листинга (*.lst) и перекрестных ссылок (*.crf). Чтобы операционная система, например MS-DOS, смогла считать программу и поместить ее в подходящее место памяти, необходимо создать перемещаемый исполняемый файл. Этим занимается программа компоновщик (загрузчик),она может объединять несколько объектных файлов в один исполняемый файл (расширение exe).
60. Команды организации циклов: особенности выполнения. При организации циклов широко используются команды INC (инкремент) и DEC (декремент), что означает добавление или вычитание единицы из целого числа, помещенного в ячейку памяти, РОН или индексный регистр. Команды имеют формат: INC операнд DEC операнд
46.Какие типы адресации операндов используются при работе со структурами данных? При работе со структурами данных для доступа к элементам структуры необходимо указывать смещение элемента относительно начала структуры. Для этих целей удобны такие типы адресации, в которых исполнительный адрес вычисляется как сумма смещения начала структуры и смещения элемента структуры относительно ее начала. Такую возможность обеспечивают адресация по базе, адресация по базе с индексированием и прямая адресация с индексированием. Например, в случае двумерного массива базовый адрес может содержать начальный адрес массива, а значения сдвига и индексного регистра могут содержать смещения по строке и столбцу, вследствие чего команда пересылки может быть следующей: MOV AX, [BX+2+DI] 55. Условные переходы при использовании операндов без знака. Какие флаги используются, и при каких значениях флагов происходит переход? В этой таблице отражается действие команд условного перехода при использовании операндов без знака по значениям анализируемых этими командами флагов: 49. Команда пересылки данных: возможности и ограничения. К этой группе команд относятся команды: Mov <Операнд назначения (приемник)>, <операнд- источник> Xchg <Операнд1>, <операнд2>. Mov – это основная команда пересылки данных. В ней допустимо большинство из возможных сочетаний операндов: Mov ax, table; пересылка из памяти в регистр Mov table, ax; и наоборот Mov ds, ax; пересылка между 16-битовыми регистрами Mov bl, al; пересылка между 8-битовыми регистрами Mov cl,-30; пересылка константы в регистр Mov table, word ptr 25h; пересылка константы в память Если в команде пересылки одним из операндов является регистр, то ассемблер пересылает столько байтов, каков размер регистра. При отсутствии в команде регистра ассемблер не знает, одну, двух или четырехбайтовую константу необходимо пересылать в память. В таком случае подсказкой для ассемблера должны быть модификаторы BYTE PTR (пересылка одного байта), WORD PTR (пересылка слова – двух байтов), DWORD PTR (пересылка двойного слова – четырех байтов). В команде Mov исключаются следующие сочетания операндов: - сегментный регистр-память. Нельзя загрузить в сегментный регистр значение непосредственно из памяти. Поэтому для такой загрузки используют обычно 2 команды пересылки – через регистр общего назначения или через стек; - ячейка памяти-ячейка памяти. Нельзя осуществлять непосредственную пересылку данных из одной ячейки памяти в другую. - сегментный регистр-сегментный регистр. Нельзя пересылать содержимое одного сегментного регистра в другой сегментный регистр, однако при необходимости такой пересылки поступают так же, как и в предыдущих случаях: пересылку осуществляют через регистр общего назначения; - нельзя использовать сегментный регистр CS в качестве операнда назначения (приемника). Команда Xchg (exchange) меняет между собой значения двух регистров общего назначения или регистра ОН и ячейки памяти. Необходимое требование к операндам – чтобы они имели один тип. Например: Xchg AX, BX; обменять значения двух регистров (слова Xchg AL, BH; или байты) Xchg WORD1, DX; обменять значения регистра и Xchg DL, BYTE1; ячейки памяти.
50. Логические команды: правила установки флагов. Логические операции, кроме NOT, устанавливают флаги SF (знака), ZF (нуля) и PF(четности), флаг переноса устанавливается в 0. Все команды, за исключением TEST, сохраняют результат логической операции в приемнике. Команда TEST выполняет такую же операцию, что и AND. Различие только в том, что результат операции TEST не сохраняется в приемнике, а используется для следующей команды перехода по нулю. Поскольку логические команды устанавливают флаги, их можно применять для проверки значений регистров. Например, OR DX, DX; проверить значение в регистре. При проверке четности или нечетности значения в регистре, можно воспользоваться командой AND DX, 1H; выделить младший бит, учитывая, что двоичное представление четных чисел имеет нулевой последний бит. Следует отметить, что при использовании команды AND значение в регистре будет этой командой изменено. Если необходимо оставить значение в регистре DX без изменений, то следует воспользоваться командой TEST, например, таким образом: TEST DX, 00000001B; проверить младший бит.
|