Tomasz Grysztar - Flat Assembler 1.64. Мануал программера

Тут можно читать онлайн Tomasz Grysztar - Flat Assembler 1.64. Мануал программера - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-db. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Flat Assembler 1.64. Мануал программера
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4.25/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Tomasz Grysztar - Flat Assembler 1.64. Мануал программера краткое содержание

Flat Assembler 1.64. Мануал программера - описание и краткое содержание, автор Tomasz Grysztar, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Flat Assembler 1.64. Мануал программера - читать онлайн бесплатно полную версию (весь текст целиком)

Flat Assembler 1.64. Мануал программера - читать книгу онлайн бесплатно, автор Tomasz Grysztar
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Глава 2. Описание инструкций

Эта глава содержит детальную информацию об инструкциях и директивах, поддерживаемых FASMом. Директивы определения констант и меток уже описаны в 1.2.3, все остальные директивы будут описаны ниже в этой главе.

2.2 Директивы управления

Этот параграф описывает директивы, которые управляют процессом ассемблирования. Эти директивы выполняются во время ассемблирования и могут делать так, чтобы некоторые блоки инструкций ассемблировались по-разному или не ассемблировались вовсе.

2.2.1 Условное ассемблирование

С помощью директивы « if» можно ассемблировать или не ассемблировать блок инструкций в зависимости от выполнения условия. За ней должно следовать логическое выражение, определяющее условие. Инструкции на следующих строках ассемблируются, только если это условие выполняется, иначе они пропускаются. Опциональная директива « elseif» со следующим за ней логическим выражением, определяющим дополнительное условие, начинает следующий блок инструкций, который ассемблируется, если предыдущие условия не выполняются, а данное дополнительное условие выполняется. Опциональная директива « else» начинает блок инструкций, которые ассемблируются, если не выполняется ни одно из условий. « end if» заканчивает последний блок инструкций.

Вы должны помнить, что директива « if» обрабатывается на стадии ассемблирования и поэтому не влияет на директивы препроцессора, такие как определения символьных констант и макроинструкции — когда ассемблер распознает директиву « if», весь препроцессинг уже закончен.

Логическое выражение состоит из логических значений и логических операторов. Логические операторы выглядят так: « ~» для логического отрицания, « &» для логического И, « |» для логического ИЛИ. Отрицание имеет высший приоритет. Логическое значение может быть числовым выражением, оно будет считаться ложным в случае равенства нулю, иначе оно будет истинным. Для создания логического значения можно сравнить два числовых выражения, используя один из следующих операторов: « =» (равно), « <» (меньше), « >» (больше), « <=» (меньше или равно), « >=» (больше или равно), « <>» (не равно).

« used» со следующим за ним символом имени, это логическое значение, которое проверяет, использовался ли где-нибудь данный символ (он возвращает правильный результат даже если символ используется только после этой проверки). За оператором « defined» может следовать любое выражение, обычно это только одно символьное имя; этот оператор проверяет, содержит ли данное выражение исключительно символы, определенные в коде, и доступные из текущей позиции.

Следующий простой пример использует константу « count» которая должна быть определена где-то в коде:

if count>0

mov cx,count

rep movsb

end if

Эти две инструкции будут ассемблированы только если константа « count» больше нуля. Следующий пример показывает более комплексную условную структуру:

if count & ~ count mod 4

mov cx,count/4

rep movsd

else if count>4

mov cx,count/4

rep movsd

mov cx,count mod 4

rep movsb

else

mov cx,count

rep movsb

end if

Первый блок инструкций ассеблируется, если константа «count» не равна нулю и кратна четырем, если это условие не выполняется, оценивается второе логическое условие, следующее за « else if», и если оно верно, ассемблируется второй блок инструкций, иначе ассемблируется последний блок, который следует за строкой, содержащей только « else».

Также есть операторы, которые позволяют сравнивать значения, которые представляют собой последовательности символов. « eq» проверяет такие значения на тождественность. Оператор « in» проверяет, принадлежит ли данное значение к списку значений, следующему за оператором. Список должен быть заключен между символами « <» и « >», а его члены должны быть разделены запятыми. Символы считаются одинаковыми, если они имеют одно и то же значение для ассемблера — например, « pword» и « fword» для ассемблера одинаковы поэтому не различаются вышеуказанными операторами. Так же « 16 eq 10h» является истиной, однако « 16 eq 10+4» нет.

Оператор « eqtype» имеют ли сравниваемые значения одинаковую структуру, и принадлежат ли структурные элементы одному типу. Различаемые типы включают в себя числовые выражения, строки, заключенные в кавычки, значения с плавающей точкой, адресные выражения (выражения в квадратных скобках или предваренные оператором « ptr»), мнемоники инструкций, регистры, операторы размера, операторы перехода и операторы типа кода. И каждый из специальных символов, действующих как разделители, такой как запятая или двоеточие, это отдельный тип сам по себе. Например, два значения, каждое из которых состоит из имени регистра и числового выражения, разделенных запятой, будут распознаны как один тип, независимо от вида регистра и сложности числового выражения; за исключением строк, заключенных в кавычки и значений с плавающей точкой, которые относятся к специальным видом числовых выражений и распознаются как разные типы. Поэтому условие « eax,16 eqtype fs,3+7» является истиной, но « eax,16 eqtype eax,1.6» — ложь.

2.2.2 Повторение блоков инструкций

« times» повторяет одну инструкцию указанное количество раз. За ней должно следовать числовое выражение, определяющее количество повторений, и инструкция, которую нужно повторять (опционально для того, чтобы отделить число и инструкцию, можно использовать двоеточие). Специальный символ « %», использующийся внутри инструкции, эквивалентен номеру текущего повтора. Например, « times 5 db %» определит пять байтов со значениями 1, 2, 3, 4, 5. Поддерживается также рекурсивное использование директивы « times», например, « times 3 times % db %» определит шесть байтов со значениями 1, 1, 2, 1, 2, 3.

« repeat» повторяет целый блок инструкций. За ней должно следовать числовое выражение, определяющее количество повторений. Инструкции для повторения предполагаются на следующих строках, а заканчиваться блок должен директивой « end repeat», например:

repeat 8

mov byte [bx],%

inc bx

end repeat

Сгенерированный код сохраняет байты со значениями от одного до восьми в памяти, адресованной регистром BX.

Количество повторений может быть равным нулю, и в таком случае инструкции не будут ассемболироваться вовсе.

« break» позволяет остановить повторение раньше и продолжить ассемблирование с первой строки после « end repeat». В сочетании с директивой « if» она позволяет остановить повторение при выполнении некоторого особого условия, например:

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Tomasz Grysztar читать все книги автора по порядку

Tomasz Grysztar - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Flat Assembler 1.64. Мануал программера отзывы


Отзывы читателей о книге Flat Assembler 1.64. Мануал программера, автор: Tomasz Grysztar. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x