План Язык программирования Ассемблер и его возможности


Download 95.62 Kb.
bet3/12
Sana17.06.2023
Hajmi95.62 Kb.
#1549318
TuriЛекция
1   2   3   4   5   6   7   8   9   ...   12
Bog'liq
Лекция №17b

Запись числовых констант.
Трансляторы с языка ассемблера позволяют использовать числовые константы в различных системах счисления, поэтому для каждой используемой в тексте программы числовой константы должно быть указано, в какой системе счисления она записана. Способы указания систем счисления зависят от конкретного транслятора и могут существенно отличаться от одного транслятора к другому. Например:

  • Для записи числа в десятичной системе счисления в одних трансляторах требуется представление только в виде цифр (255, 65535), тогда как в других для этого требуется начать число с точки (.255, .65535).

  • Для записи числа в шестнадцатеричной системе требуется начать число с префикса «0x» (0xFF, 0x2000), в других — добавить в конце числа «h» (0FFh, 2000h), в третьих — записывать только цифры (0FF, 2000), при этом в последних двух случаях у чисел, начинающиеся с A…F, для отличия их от символьных имён спереди добавляют ноль.

  • Признаком восьмеричной системы в некоторых трансляторах является ведущий ноль (0377, 0177777), в других требуется добавить префикс в виде буквы «O», а число заключить в апострофы (O’377’, O’177777’).

  • Для записи констант в двоичной системе распространённым является формат вида b'10010111'.

Соответственно, запись числа без явного указания системы счисления раз-ными трансляторами будет воспринята по-разному. Например, 057 в зависи-мости от транслятора может быть прочитано как восьмеричная запись числа 47, десятичная запись числа 57 или шестнадцатеричная запись числа 87.
В некоторых трансляторах система счисления, используемая по умолчанию, может быть определена с помощью директив.
Инструкции процессора
Команды языка ассемблера один к одному соответствуют коман-дам процессора. Фактически, они и представляют собой более удобную для человека символьную форму записи — мнемокоды — команд и их аргумен-тов. При этом одной команде языка ассемблера может соответствовать несколько ва-риантов команд процессора.
Каждая модель (или семейство) процессоров имеет свой набор команд (систему команд) и соответствующий ей язык ассемблера. Используемые мнемо-ники обычно одинаковы для всех процессоров одной архитектуры или семейства архитектур (среди широко известных — мнемоники процессоров и контроллеров x86, ARM, PIC, SPARC, PowerPC, M68k и другие). Возможные исключения из этого правила:

  • Если ассемблер использует кроссплатформенный AT&T-синтаксис (ориги-нальные мнемоники приводятся к синтаксису AT&T). Так, различия между синтаксисом Intel и AT&T касаются в основном порядка перечисления опе-рандов и указания различных методов адресации.

  • Если изначально существовало два стандарта записи мнемоник (система ко-манд была унаследована от процессора другого производителя). Например, процессор Zilog Z80 унаследовал систему команд Intel 8080, расширил её и поменял мнемоники (и обозначения регистров) на свой лад. Процессо-ры Motorola Fireball унаследовали систему команд Z80, несколько её сокра-тив. Вместе с тем, Motorola официально вернулась к мнемоникам In-tel и в данный момент половина ассемблеров для Fireball работает с мнемони-ками от Intel, а половина — с мнемониками от Zilog.

Типичными командами языка ассемблера являются (большинство примеров даны для Intel-синтаксиса архитектуры x86):

  • Команды пересылки данных (mov и др.)

  • Арифметические команды (add, sub, imul и др.)

  • Логические и побитовые операции (or, and, xor, shr и др.)

  • Команды управления ходом выполнения программы (jmp, loop, ret и др.)

  • Команды вызова прерываний (иногда относят к командам управления): int

  • Команды ввода-вывода в порты (in, out)

  • Для микроконтроллеров и микрокомпьютеров характерны также команды, выполняющие проверку и переход по условию, например некоторые из них:

Наборы мнемоник конкретных процессоров описаны в спецификациях этих процессоров, часто известных как «Datasheet».
Типичный формат записи команд:
[метка:] [ [префикс] мнемокод [операнд {, операнд}] ] [;комментарий]
В указанном формате строки:

  • Метка — символьное имя, обозначающее адрес в памяти программ, по кото-рому расположена данная инструкция. Если в строке с меткой не содержится мнемокод, метка обычно будет относиться к следующему мнемокоду, рас-положенному ниже по тексту программы.

  • Мнемокод — непосредственно мнемоника инструкции процессору. Боль-шинство трансляторов предусматривает размещение в одной строке мнемо-кода только одной инструкции процессора.

  • К мнемокоду могут быть добавлены префиксы (повторения, изменения типа адресации и пр.). Возможные префиксы, также как и набор мнемоник, опре-деляются архитектурой процессора. Некоторые процессоры не поддержива-ют префиксы.

  • В качестве операндов могут выступать константы, адреса регистров, адреса в оперативной памяти и пр. Набор операндов, которые можно передать той или иной мнемонике, также определяется архитектурой процессора.

  • Комментарий — произвольный текст, не выполняемый транслятором и слу-жащий для пояснений выполняемых действий программистам. Допускается, что в строке не присутствует ничего кроме комментария.


Download 95.62 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   ...   12




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling