План Язык программирования Ассемблер и его возможности
Download 95.62 Kb.
|
Лекция №17b
- Bu sahifa navigatsiya:
- Инструкции процессора
Запись числовых констант.
Трансляторы с языка ассемблера позволяют использовать числовые константы в различных системах счисления, поэтому для каждой используемой в тексте программы числовой константы должно быть указано, в какой системе счисления она записана. Способы указания систем счисления зависят от конкретного транслятора и могут существенно отличаться от одного транслятора к другому. Например: Для записи числа в десятичной системе счисления в одних трансляторах требуется представление только в виде цифр (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) Для микроконтроллеров и микрокомпьютеров характерны также команды, выполняющие проверку и переход по условию, например некоторые из них: cjne — перейти, если не равно djnz — декрементировать, и если результат ненулевой, то перейти cfsneq — сравнить, и если не равно, пропустить следующую команду Наборы мнемоник конкретных процессоров описаны в спецификациях этих процессоров, часто известных как «Datasheet». Типичный формат записи команд: [метка:] [ [префикс] мнемокод [операнд {, операнд}] ] [;комментарий] В указанном формате строки: Метка — символьное имя, обозначающее адрес в памяти программ, по кото-рому расположена данная инструкция. Если в строке с меткой не содержится мнемокод, метка обычно будет относиться к следующему мнемокоду, рас-положенному ниже по тексту программы. Мнемокод — непосредственно мнемоника инструкции процессору. Боль-шинство трансляторов предусматривает размещение в одной строке мнемо-кода только одной инструкции процессора. К мнемокоду могут быть добавлены префиксы (повторения, изменения типа адресации и пр.). Возможные префиксы, также как и набор мнемоник, опре-деляются архитектурой процессора. Некоторые процессоры не поддержива-ют префиксы. В качестве операндов могут выступать константы, адреса регистров, адреса в оперативной памяти и пр. Набор операндов, которые можно передать той или иной мнемонике, также определяется архитектурой процессора. Комментарий — произвольный текст, не выполняемый транслятором и слу-жащий для пояснений выполняемых действий программистам. Допускается, что в строке не присутствует ничего кроме комментария. Download 95.62 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling