Перечислите группы директив Ассемблера, укажите их функциональное назначение
В директивах Ассемблера выделяют следующие группы: - Определения данных – директивы этой группы описывают имена (идентификаторы) переменных программы и их размер (байт, слово (2 байта), двойное слово (4 байта); - Определение сегмента или процедуры – директивы этой группы предписывают Ассемблеру назначить адрес начала сегмента для переменных (программы, стека или процедуры) в программе и сообщают, какой регистр сегмента связывается с соответствующим сегментом данных, программы или стека; - Внешних ссылок – директивы этой группы обеспечивают связь между модулями программы, делая некоторые данные доступными для разных модулей или указывая, что данные определяются в других модулях; - Определение идентификаторов – директива назначает заданному имени (идентификатору) постоянное значение; - Управление трансляцией – директива означает конец транслируемой программы. 38.Как могут задаваться операнды машинных команд Ассемблера и где в памяти ЭВМ они могут располагаться? Операнды команды могут задаваться по-разному: 1) неявно на микропроцессорном уровне. Такие команды работают либо с регистрами, либо с флагами и в конкретной команде объект определяется кодом команды, например: PUSHF – команда пересылки флагов в стек. Источник (откуда берутся данные) и приемник (куда пересылаются) определяются кодом команды; Или CLD – обнуление флага направления DF; 2) явно в самой команде (непосредственный операнд), например: MOV AX,0; одним из регистров общего назначения (РОН) или сегментным регистром; 3) идентификатором переменной (меткой переменной, описанной в сегменте данных). В этом случае операнд располагается в ОЗУ. При косвенной адресации адрес-смещение переменной в ОЗУ помещается в РОН или индексный регистр и в команде используется ссылка на этот регистр; 4) номером порта ввода-вывода. В этом случае номер задается шестнадцатеричной константой; 5) регистром стека, когда используются команды работы со стеком и в этом случае операнд либо заносится в вершину стека, либо считывается из вершины стека.
36Поясните правило формирования физического адреса в памяти ЭВМ для 16-битового микропроцессора. Какие регистры используются при этом? Изучаемый микропроцессор имеет 1 Мбайт памяти ОЗУ. Следовательно, для указания адреса информации в команде микропроцессора должен был иметь 20 разрядов. Однако такое количество разрядов микропроцессора не может обработать за 1 операцию 16-битового процессора. Чтобы разрешить это противоречие, было решено формировать физический адрес из 2-х 16-битовых слагаемых: базы (содержимое регистра сегмента) и смещения по правилу: Физический Адрес = смещение (IP) +16*(регистр сегмента - CS). В действительности длинная операция умножения при вычислении физического адреса не выполняется по той причине, что микропроцессор использует содержимое 16-битового регистра так, как если бы оно имело 4 дополнительных нулевых бита 0010->0100(*2)->1000(*4)->10000(*8)->100000(*16). Например, пусть смещение будет 10Н (в шестнадцатеричной системе счисления), а номер блока (содержимое регистра сегмента) равно 2000Н. Тогда, 0000 0000 0001 0000 (смещение) + 0010 0000 0000 0000 0000 (номер блока) 0010 0000 0000 0001 0000 (физический адрес) Помимо удобства обработки, описанный метод адресации обусловлен тем, что команды программы и обрабатываемые ею данные располагаются в разных частях памяти или в разных сегментах. Если процессору потребуются данные, то процессор использует адрес, с которого начинается сегмент данных, и смещение искомой переменной в этом сегменте.
|