Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Записи (аналогично структурному типу) используются для доступа к битовому полю некоторой записи.Содержание книги
Поиск на нашем сайте
18.. Оператори мови асемблер. Оператори зсуву, порівняння та отримання Оператор LENGTH TABLEA DW 10 DUP(?) Если операнд DUP отсутствует, то оператор LENGTH возвращает значение OFFSET переменная или метка Например, команда MOV DX,OFFSET TABLEA устанавливает в регистре DX относительный адрес (смещение) поля TABLEA в тип PTR выражение В поле "тип" указывается новый атрибут, например BYTE. Выражение имеет FLDB DB 22H Директива LABEL, описанная в следующем разделе, выполняет функцию, Оператор SEG SEG переменная или метка Примеры применения оператора SEG в командах MOV: MOV DX,SEG FLOW;Адрес сегмента данных JMP SHORT метка В результате ассемблер сокращает машинный код операнда от двух до SIZE переменная См. пример для оператора TYPE. Определение Число байтов DB 1 Формат оператора TYPE: TYPE переменная или метка Ниже приведены примеры, иллюстрирующие применение операторов TYPE, LENGTH FLDB DB? Так как область TABLEA определена как DW, то оператор TYPE возвращает 19.. Мітки даних. Символьні мітки. Приклади використання. Переходи. Умовні та безумовні переходи. Цикли. Організація циклів. Приклади Для условной пересылки данных используется команда: CMOVcc <приёмник><источник> Набор команд, которые копируют содержимое источника в приемник, если удовлетворяется то или иное условие. Можно использовать команды CMOVcc сразу после команды СМР (сравнение) с теми же операндами, например: Cmp ах,bх; сравнить ах и bх cmovl ax,bx; если ах < bх, скопировать bх в ах Слова «выше» и «ниже» в таблице 1 относятся к сравнению чисел без знака, слова «больше» и «меньше» учитывают знак. Метка – это символическое имя, обозначающее определённую ячейку памяти, предназначенное для использования в качестве операнда в командах передачи управления. Транслятор ассемблера присваивает метке три атрибута:– имя сегмента кода, где эта метка описана;– смещение – расстояние в байтах от начала сегмента кода, в котором описана метка; – тип метки или атрибут расстояния. Тип метки может принимать два значения:– near (ближняя метка) – переход на эту метку возможен только в пределах сегмента кода, где эта метка описана. Физически это означает, что для перехода на метку достаточно изменить только содержимое регистра eip/ip. – far (дальняя метка) – переход на эту метку возможен только в результате межсегментной передачи управления, для осуществления которой требуется изменения содержимого как регистра eip/ip так и регистра cs. Метку можно определить двумя способами:– оператором: (двоеточие);– директивой label. Синтаксис первого способа таков: Символическое имя: Команда ассемблера С помощью данного способа можно определить метку только ближнего типа – near. Синтаксис второго способа таков: Символическое имя label тип метки При этом тип метки может принимать значения как near так и far. Пример эквивалентного описания метки ближнего типа:m1:mov ax,pole_1 и m1 label nearmov ax,pole_1 Организация циклов В системе команд микропроцессора существует три команды для работы с циклами. Данные команды: 1) loop метка_перехода – повторить цикл. Работа команды заключается в выполнении следующих действий: а) декремента регистра есх/сх; б) сравнение регистра есх/сх с нулём; если (есх/сх)>0, то управление передаётся на метку перехода; если (есх/сх)=0, то управление передаётся на следующую после loop команду;
2) loope/loopz метка_перехода – повторить цикл пока сх<>0 или zf=0. Команды loope и loopz – абсолютные синонимы. Работа команд заключается в выполнении следующих действий: а) декремента регистра есх/сх; б) сравнение регистра есх/сх с нулём; в) анализа состояния флага нуля zf; если (есх/сх)>0, и zf=1, управление передаётся на метку перехода; если (есх/сх)=0, или zf=0, управление передаётся на следующую после loop команду;
3) loopne/loopnz метка_перехода – повторить цикл пока сх<>0 или zf=1. Команды loope и loopz – абсолютные синонимы. Работа команд заключается в выполнении следующих действий: а) декремента регистра есх/сх; б) сравнение регистра есх/сх с нулём; в) анализа состояния флага нуля zf; если (есх/сх)>0, и zf=0, управление передаётся на метку перехода; если (есх/сх)=0, или zf=1, управление передаётся на следующую после loop команду;
Команды loop loope/loopz и loopne/loopnz реализуют только короткие переходы (от -128 до _127 байтов). Для работы с длинными циклами необходимо использовать команду jmp. При работе с вложенными циклами возникает проблема сохранения значения счётчика внешнего цикла есх/сх на время выполнения внутреннего цикла. Для этого можно использовать регистры, ячейки памяти или стек. Пример программы, содержащей три цикла вложенных один в другой.
Микропроцессор имеет 18 команд условного перехода, позволяющие проверить: – отношение между операндами со знаком (больше-меньше); – отношение между операндами без знака (выше-ниже); – состояние арифметических флагов zf,sf, cf, of, pf. Команды условного перехода имеют одинаковый синтаксис: Jcc метка_перехода
Межсегментной передачи управления в условных переходах не допускается (максимальный переход равен размеру сегмента). Источниками условия для перехода могут быть: – любая команда, изменяющая состояние арифметических флагов; – команда сравнения cmp; – состояние регистра ecx/cx.
|
||||
Последнее изменение этой страницы: 2016-09-13; просмотров: 283; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.75.6 (0.008 с.) |