Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Определение полей памяти для размещения данных.
Для определения данных в основной памяти и резервирования полей памяти под данные, размещаемые в основной памяти в процессе выполнения программы, используются следующие операторы: D B - определить однобайтовое поле, D W - определить слово (двухбайтовое поле), D D - определить двойное слово (четырехбайтовое поле). Формат команды: DB [<имя поля>] DW [< количество > DU P (]{ <список чисел >}[)] D D ? где <количество >- количество полей памяти указанной длины, которое определяется данной командой (указывается, если определяется не одно поле памяти);? - используется при резервировании памяти. Приведем примеры. 1. Записать в байт памяти десятичное число 23 и присвоить этому байту имя а: a db 23. 2. Зарезервировать 1 байт памяти: db? 3. Записать в слово памяти шестнадцатеричное число 1234: dw 1234 H. 4. Определить 31 байт памяти, повторяя последовательность 1, 2, 3, 4, 5, 1, 2, 3, 4,...: db 31 dup (1,2,3,4,5) Примечание. При записи слов в память младший байт записывается в поле с младшим адресом. Например, в примере 3, если запись выполнялась по адресу 100, то по адресу 100 будет записано 34H, а по адресу 101 - 12H. Операнды команд ассемблера. Операнды команд ассемблера могут определяться непосредственно в команде, находиться в регистрах или в основной памяти, Данные, непосредственно записанные в команде, называются литералами. Так, в команде mov ah, 3 3 - литерал. Если операнды команд ассемблера находятся в регистрах, то в соответствующих командах указываются имена регистров (если используемые регистры особо не оговариваются для данной команды. Например, в приведенном выше примере аh - имя регистра аккумулятора. Адресация операндов, расположенных в основной памяти, может быть прямой и косвенной. При использовании прямой адресации в команде указывается символическое имя поля памяти, содержащего необходимые данные, например: Inc OPND Здесь OPN D - символическое имя поля памяти, определенного оператором ассемблера OPN D dw? При трансляции программы ассемблер заменит символическое имя на исполнительный адрес указанного поля памяти (смещение относительно начала сегмента) и занесет этот адрес на место индексного смещения. Адресация а этом случае выполняется по схеме: B Р + <индексное смещение>, но содержимое регистра ВР при вычислении исполнительного адреса не используется (частный случай).
В отличие от прямого косвенный адрес определяет не местоположение данных в основной памяти, а местоположение компонентов адреса этих данных. В этом случае в команде указываются один или два регистра в соответствии с допустимыми схемами адресации и индексное смещение, которое может задаваться числом или символическим именем. Косвенный адрес заключается в квадратные скобки весь или частично, например: [OPND +SI] OPND [SI] OPND + [SI] [ OPND ] +[ SI ] Приведенные выше формы записи косвенного адреса интерпретируются одинаково. При трансляции программы ассемблер определяет используемую схему адресации и соответствующим образом формирует машинную команду, при этом символическое имя заменяется смещением относительно начала сегмента так же, как в случае прямой адресации. Примечание. При использовании косвенной адресации по схеме ВР + <индексное смещение> индексное смещение не может быть опущено, так как частный случай адресации по данной схеме с нулевой длиной индексного смещения используется для организации прямой адресации. Следовательно, при отсутствии индексного смещения в команде следует указывать нулевое индексное смещение, т.е. [ ВР + 0 ]. Приведем два примера: [ a + bx ] и [ b р ]+[ si ] + 6. В первом случае исполнительный адрес операнда определяется суммой содержимого регистра b х и индексного смещения, заданного символическим именем " а ", а во втором - суммой содержимого регистров bp, si и индексного смещения, равного 6. Длина операнда может определяться: а) кодом команды - в том случае, если используемая команда обрабатывает данные определенной длины, что специально оговаривается; б) объемом регистров, используемых для хранения операндов (1 или 2 байта); в) специальными указателями byte ptr (1 байт) и word ptr (2 байта), которые используются в тех случаях, когда длину операнда нельзя установить другим способом. Например, mov byte ptr x, 255 т. е. операнд пересылается в поле с именем " х " и имеет длину I байт.
Команды пересылки / преобразования данных Команда пересылки данных. MOV <адрес приемника>,< адрес источника> используется для пересылки данных длиной I или 2 байта из регистра в регистр, из регистра в основную память, из основной памяти в регистр, а также для записи в регистр или основную память данных, непосредственно записанных в команде. Приведем примеры: а) mov ax, bx - пересылка содержимого регистра bx в регистр ax; б) mov cx, exword - пересылка 2 байт, расположенных в поле exword, из основной памяти в регистр cx; в) mov si, 1000 - запись числа 1000 в регистр si; г) mov word ptr [ di +515], 4 - запись числа 4 длиной 2 байта в основную память по адресу [ di +515]. Для загрузки "прямого" адреса в сегментный регистр используются две команды пересылки: Mov ax, code Mov ds, ax Команда обмена данных. ХCHG <операнд 1>, <операнд 2> организует обмен содержимого двух регистров (кроме сегментных) или регистра и поля основной памяти. Например: xchg bx, cx - обмен содержимого регистров bx и сх.
|
||||||
Последнее изменение этой страницы: 2021-12-15; просмотров: 24; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.99.7 (0.009 с.) |