Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Идентификаторы в выражениях

 

 

Когда вы используете в выражении идентификатор, возвращаемое

значение зависит от типа идентификатора. Вы можете использовать

идентификатор сам по себе или в сочетании с определенными унарны-

ми операциями, которые созданы для выделения другой информации из

величины, представляемой идентификатором.

41) Метка в языке ассемблера может содержать следующие символы:

Буквы: от A до Z и от a до z

Цифры: от 0 до 9

Спецсимволы: знак вопроса (?)

точка (.) (только первый символ)

знак "коммерческое эт" (@)

подчеркивание (_)

доллар ($)

Первым символом в метке должна быть буква или спецсимвол

  • near. Переход на такую метку возможен только в пределах того сегмента кода, в котором она описана
  • far. Переход на метку возможен в результате межсегментной передачи управления

Определить метку можно двумя способами:

  • с помощью директивы LABEL
  • с помощью оператора ":" (двоеточие).

Используя оператор ":", можно определить метку только ближнего типа (near). Например:

m:

mov eax,1

Используя оператор LABEL, можно определить метку любого типа. Например:

m label near

mov eax,1

или

m label far

mov eax,1

Применение меток оправдано во многих случаях. В одних лучше использовать метки ближнего типа, в других - дальнего. В следующих уроках мы рассмотрим эти случаи и научимся правильно выбирать тип метки.

Синтаксис команды безусловного перехода такой:

jmp [модификатор] адрес_перехода

Существует несколько кодов машинных команд, соответствующих JMP. Они отличаются дальностью перехода и способом задания целевого адреса. Операнд адрес_перехода может находиться в текущем сегменте(близкий переход) кода или в другом (дальний переход). Адресом перехода может являться имя метки:

jmp m

m:

mov eax,1

Есть еще такой вариант (указывается не адрес перехода, а место, где он хранится):

lea eax,m

jmp eax

m:

mov eax,1

Теперь перейдем к командам условного перехода. В таких командах решение о том, какая команда будет выполняться следующей, принимается в зависимости от некоторых условий, различных для разных команд перехода. Таких команд 18, они позволяют проверить:

  • отношение операндов со знаком (больше либо меньше)
  • отношение операндов без знака (выше или ниже)
  • состояние арифметических флагов ZF, SF, CF, OF, PF(но не AF)

Все команды условного перехода имеют одинаковый синтаксис:

jcc метка_перехода

Любая из них начинается с символа "j" (от слова jump), а вместо "cc" указывается конкретное условие, которое должна проанализировать программа. Метка перехода может находиться только в пределах текущего сегмента! Поэтому необходимость в модификаторе отпадает (всегда near). Условие обязательно должно быть сформировано до команды передачи управления. Его источником может служить любая команда, изменяющая состояние арифметических флагов или регистра ECX/CX.

В большинстве случаев Вы будете пользоваться командой CMP. Поэтому сейчас я немного расскажу вам о ней. Команда CMP производит практически те же действия, что и команда SUB, только она не записывает результат вычитания на место первого операнда, а просто устанавливает флаги (нас интересует флаг знака результата, и флаг нулевого результата). Вот ее синтаксис:

cmp операнд_1, операнд_2

Флаги, устанавливаемые командой CMP, можно проанализировать командами условного перехода. Понимание принципа формирования названий команд условного перехода облегчит их запоминание и дальнейшее практическое использование (см. табл. 1).

 

codesg segment

lodsw; cчитать слово из строки,

cmp ax,7; если это 7 - выйти из цикла

codesg ends

имя - необязательный параметр. Имя (идентификатор) переменной может содержать цифры, буквы латинского алфавита, символ подчеркивания в любом порядке, но начинаться должно обязательно с буквы. Длина имени переменной допускается в MASM32 одиннадцатой версии до 247 символов включительно. Если значение переменной при старте программы не определено, вместо числа или символьного значения после указания типа записывают знак вопроса.

42)числа символьные данные

Данные – числа и закодированные символы, используемые в качестве операндов команд.
Основные типы данных в ассемблере

Бит (bit) - двоичный разряд.
Байт (byte) - последовательность из 8 бит.
Слово (word) - последовательность из двух байт (16 бит).
Двойное слово (double word) - последовательность из четырех байт (32 бита).

Символьные данные

Символьные данные задаются в кодах и имеют длину, как правило, 1 байт (для кодировки ASCII) или 2 байта (для кодировки Unicode)



<== предыдущая | следующая ==>
 | 





Date: 2016-05-24; view: 268; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию