Главная » Просмотр файлов » Попов И.И., Матвеев А.А., Максимов Н.В. Архитектура электронно-вычислительных машин и систем (2004)

Попов И.И., Матвеев А.А., Максимов Н.В. Архитектура электронно-вычислительных машин и систем (2004) (1186255), страница 92

Файл №1186255 Попов И.И., Матвеев А.А., Максимов Н.В. Архитектура электронно-вычислительных машин и систем (2004) (Попов И.И., Матвеев А.А., Максимов Н.В. Архитектура электронно-вычислительных машин и систем (2004)) 92 страницаПопов И.И., Матвеев А.А., Максимов Н.В. Архитектура электронно-вычислительных машин и систем (2004) (1186255) страница 922020-08-27СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 92)

Пример:G DB 200, -5, 10h, ?, 'F'Имя, указанное в директиве, считается именующим первую изконстант.Для ссылок на остальные в MASM используются выражения вида<имя>+<целое>; например, для доступа к байту с числом -5 надо указатьвыражение G+1, для доступа к байту с 10h - выражение G+2 и т.д.Если в директиве DB перечислены только символы, например:S DB 'a','+','b'тогда эту директиву можно записать короче, заключив все этисимволы в одни кавычки:S DB 'a+b'И, наконец, если в директиве описывается несколько одинаковыхконстант (переменных), то можно воспользоваться конструкциейповторенияk DUP(a,b,...,c)которая эквивалентна повторенной k раз последовательностиa,b,...,c.Например, директивыV1 DB 0,0,0,0,0V2 DW ?,?,?,?,?,?,?,?,?,'a',1,2,1,2,1,2,1,2можно записать более коротко таким образом:V1 DB 5 DUP(0)V2 DW 9 DUP(?), 'a', 4 DUP(1,2)468Представление команд.

Модификация адресовСтруктура команд. Исполнительные адресаМашинные команды I80Х86 занимают от 1 до 6 байтов.Код операции (КОП) занимает один или два первых байтакоманды. В I80Х86 столь много различных операций, что для них нехватает 256 различных КОПов, которые можно представить в одномбайте. Поэтому некоторые операции объединяются в группу и им даетсяодин и тот же КОП, во втором же байте этот КОП уточняется. Крометого, во втором байте указываются типы и способ адресации операндов.Остальные байты команды указывают на операнды.Команды могут иметь от 0 до 3 операндов, у большинства команд- один или два операнда.

Размер операндов - байт или слово (редко двойное слово). Операнд может быть указан в самой команде (это т.н.непосредственный операнд), либо может находиться в одном изрегистров I80Х86 и тогда в команде указывается этот регистр, либоможет находиться в ячейке памяти и тогда в команде тем или инымспособом указывается адрес этой ячейки.

Некоторые команды требуют,чтобы операнд находился в фиксированном месте (например, в регистреAX), тогда операнд явно не указывается в команде. Результатвыполнения команды помещается в регистр или ячейку памяти, изкоторого (которой), как правило, берется первый операнд. Например,большинство команд с двумя операндами реализуют действиеop1 := op1 - op2где op1 - регистр или ячейка, а op2 - непосредственный операнд,регистр или ячейка.469Адрес операнда разрешено модифицировать по одному или двумрегистрам. В первом случае в качестве регистра-модификатораразрешено использовать регистр BX, BP, SI или DI (и никакой иной).

Вовтором случае один из модификаторов обязан быть регистром BX илиBP, а другой - регистром SI или DI; одновременная модификация поBX и BP или SI и DI недопустима.Регистры BX и BP обычно используются для хранения базы(начального адреса) некоторого участка памяти (скажем, массива) ипотому называются базовыми регистрами, а регистры SI и DI частосодержат индексы элементов массиваи потому называютсяиндексными регистрами.Однако такое распределение ролей необязательно, и, например, вSI может находиться база массива, а в BX - индекс элемента массива.В MASM адреса в командах записываются в виде одной изследующих конструкции:A, A[M] или A[M1][M2],где A - адрес, M - регистр BX, BP, SI или DI, M1 - регистр BX или BP, аM2 - регистр SI или DI.

Во втором и третьем варианте A можетотсутствовать, в этом случае считается, что A=0.470При выполнении команды процессор прежде всего вычисляет т.н.исполнительный (эффективный) адрес - как сумму адреса, заданного вкоманде, и текущих значений указанных регистров-модификаторов,причем все эти величины рассматриваются как неотрицательные исуммирование ведется по модулю 216 ([r] означает содержимое регистраr):A: Aисп = AA[M] : Aисп = A+[M] (mod 216)A[M1][M2]: Aисп = A+[M1]+[M2] (mod 216)Полученный таким образом 16-разрядный адрес определяет т.н.смещение - адрес, отсчитанный от начала некоторого сегмента (области)памяти. Перед обращением к памяти процессор еще добавляет ксмещению начальный адрес этого сегмента (он хранится в некоторомсегментном регистре), в результате чего получается окончательный 20разрядный адрес, по которому и происходит реальное обращение кпамяти (см.

1.4).Форматы командВ I80Х86 форматы машинных команд достаточно разнообразны.Для примера приведем лишь основные форматы команд с двумяоперандами.1) Формат "регистр-регистр" (2байта):КОП7 2d1w01176471reg15 3reg22 0Командыэтого формата описывают обычно действиеreg1:=reg1-reg2 или reg2:=reg2-reg1. Поле КОП первого байта указываетна операцию (-), которую надо выполнить.Бит w определяет размер операндов, а бит d указывает, в какой изрегистров записывается результат:w= 1=0– слова– байтыd= 1=0reg1:=reg1-reg2reg2:=reg2-reg1Во втором байте два левых бита фиксированы (для данногоформата), а трехбитовые поля reg1 и reg2 указывают на регистры,участвующие в операции, согласно следующей таблицы:reg000001010011100101110111w=1AXCXDXBXSPBPSIDIw=0ALCLDLBLAHCHDHBH2) Формат "регистр-память" (2-4 байта):КОПwmodregmemадрес (0 - 2 байта)Эти команды описывают операцииreg:=reg-memилиmem:=mem-reg.

Бит w первого байта определяет размер операндов (см.выше), а бит d указывает, куда записывается результат: в регистр (d=1)или в ячейку памяти (d=0). Трехбитовое поле reg второго байтауказываетоперанд-регистр (см. выше),двухбитовое поле modопределяет, сколько байтов в команде занимает операнд-адрес (00 - 0байтов, 01 - 1 байт, 10 - 2 байта), а трехбитовое поле mem указываетспособ модификации этого адреса. В следующей таблице указаныправила вычисления исполнительного адреса в зависимости от значенийполей mod и mem (a8 - адрес размером в байт, a16 - адрес размером вслово):mem \ mod00000101001110010111011100[BX]+[SI][BX]+[DI][BP]+[SI][BP]+[DI][SI][DI]a16[BX]01[BX]+[SI]+a8[BX]+[DI]+a8[BP]+[SI]+a8[BP]+[DI]+a8[SI]+a8[DI]+a8[BP]+a8[BX]+a847210[BX]+[SI]+a16[BX]+[DI]+a16[BP]+[SI]+a16[BP]+[DI]+a16[SI]+a16[DI]+a16[BP]+a16[BX]+a16Замечания.

Если в команде не задан адрес, то он считаетсянулевым.Если адрес задан в виде байта (a8), то он автоматическирасширяется со знаком до слова (a16). Случай mod=00 и mem=110указывает на отсутствие регистров-модификаторов, при этом адресдолжет иметь размер слова (адресное выражение [BP] ассемблертранслирует в mod=01 и mem=110 при a8=0). Случай mod=11соответствует формату "регистр-регистр".3) Формат "регистр-непосредственный операнд" (3-4 байта):КОПsw11КОП’regнепосред. операнд(1 - 2 б)Команды этого формата описывают операции reg:=reg-immed(immed - непосредственный операнд).

Бит w указывает на размероперандов, а поле reg - на регистр-операнд (см. выше). Поле КОП впервом байте определяет лишь класс операции (например, класссложения), уточняет же операцию поле КОП’ из второго байта.Непосредственный операнд может занимать 1 или 2 байта - взависимости от значения бита w, при этом операнд-слово записываетсяв команде в "перевернутом" виде. Ради экономии памяти в I80Х86предусмотрен случай, когда в операции над словами непосредственныйоперанд может быть задан байтом (на этот случай указывает1 в бите s при w=1), и тогда перед выполнением операции байтавтоматически расширяется (со знаком) до слова.4) Формат "память-непосредственный операнд" (3-6 байтов):КОПswmod КОП" memадрес(0 2б)непоср.оп (1 2б)Командыэтогоформатаописываютоперациитипаmem:=mem-immed.

Смысл всех полей - тот же, что и в предыдущихформатах.Помимо рассмотренных в I80Х86 используются и другие форматыкоманды с двумя операндами; так, предусмотрен специальный форматдля команд, один из операндов которых фиксирован (обычно эторегистр AX). Имеют свои форматы и команды с другим числомоперандов.473Запись команд в MASMИз сказанного ясно, что одна и та же операция в зависимости оттипов операндов записывается в виде различных машинных команд:например, в I80Х86 имеется 28 команд пересылки байтов и слов.

В тоже время в MASM все эти "родственные" команды записываютсяединообразно: например, все команды пересылки имеют одну и ту жесимвольную форму записи:MOV op1,op2 (op1:=op2)Анализируя типы операндов,ассемблер сам выбираетподходящую машинную команду.В общем случае команды записываются в MASM следующимобразом:МЕТКА: МНЕМОКОД ОПЕРАНДЫ ;КОММЕНТАРИЙМетка с двоеточием, а также точка с запятой и комментарий могутотсутствовать. Метка играет роль имени команды, ее можноиспользовать в командах перехода на данную команду.

Комментарий невлияет на смысл команды, а лишь поясняет ее. Операнды, если есть,перечисляются через запятую. Основные правила записи операндовследующие.Регистры указываются своими именами, например:MOV AX,SI ;оба операнда - регистрыНепосредственные операндызадаютсяконстантнымивыражениями (их значениями являются константы-числа), например:MOV BH,55 - непосредственный операндMOV DI,SIZE XSIZE X (число байтов, занимаемых переменной X)- непосредственный операндАдреса описываются адресными выражениями(например,именами переменных), которые могут быть модифицированы поодному или двум регистрам; например, в следующих командах первыеоперанды задают адреса:MOV X,AHMOV X[BX][DI],5MOV [BX],CLПри записи команд в символьной форменеобходимовнимательно следить за правильным указанием типа (размера)операндов, чтобы не было ошибок. Тип обычно определяется повнешнему виду одного из них, например:MOV AH,5MOV AX,5MOV[BX],300пересылка байта, т.к. AH - байтовый регистрпересылка слова, т.к.

AX – 16-битовый регистр операнд 5 можетбыть байтом и словом, по нему нельзя определить размерпересылаемой величины)пересылка слова, т.к. число 300 не может быть байтом474Если по внешнему виду можно однозначно определить тип обоихоперандов, тогда эти типы должны совпадать, иначе ассемблерзафиксирует ошибку. Примеры:MOV DS,AXMOV CX,BHMOV DL,300оба операнда имеют размер словаошибка: регистры CX и BH имеют разные размерыошибка: DL байтовый регистр, а число 300 неможет быть байтомВозможны ситуации, когда по внешнему виду операндов нельзяопределить тип ни одного из них, как, например, в командеMOV [BX],5Здесь число 5 может быть и байтом, и словом, а адрес из регистраBX может указывать и на байт памяти, и на слово.

В подобныхситуациях ассемблер фиксирует ошибку. Чтобы избежать ее, надоуточнить тип одного из операндов с помощью оператора с названиемPTR:MOV BYTE PTRпересылка байта[BX],5MOV WORD PTRпересылка слова[BX],5(Операторы - это разновидность выражений языка MASM,аналогичные функциям.)Оператор PTR необходим и в том случае, когда надо изменитьтип, предписанный имени при его описании.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6551
Авторов
на СтудИзбе
299
Средний доход
с одного платного файла
Обучение Подробнее