Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 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; просмотров: 67; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.196 (0.007 с.) |