Домашнее задание для ПО 1.11 системное программирование на 06.02.19
план-конспект занятия

Склемин Алексей Анатольевич
Предложения языка Ассемблера 
Предложения языка Ассемблера описывают команды или псевдокоманды (директивы). Предложения-команды задают машинные команды вычислительной системы; обработка Ассемблером команды приводит к генерации машинного кода. Обработка псевдокоманды не приводит к непосредственной генерации кода, псевдокоманда управляет работой самого Ассемблера. Для одной и той же аппаратной архитектуры могут быть построены разные Ассемблеры, в которых команды будут обязательно одинаковые, но псевдокоманды могут быть разные.  Во всех языках Ассемблеров каждое новое предложение языка начинается с новой строки. Каждое предложение, как правило, занимает одну строку, хотя обычно допускается продолжение на следующей строке/строках. Формат записи предложений языка м.б. жесткий или свободный. При записи в жестком формате составляющие предложения должны располагаться в фиксированных позициях строки. (Например: метка должна располагаться в позициях 1-8, позиция 9 — пустая, позиции 10-12 — мнемоника команды, позиция 13 — пустая, начиная с позиции 14 — операнды, позиция 72 — признак продолжения). Обычно для записи программ при жестком формате создаются бланки. Жесткий формат удобен для обработки Ассемблером (удобен и для чтения).  Свободный формат допускает любое количество пробелов между составляющими предложения.  В общих случаях предложения языка Ассемблера состоят из следующих компонент:  u  метка или имя; u  мнемоника;  
u  операнды;  u  комментарии.  Метка или имя является необязательным компонентом. Не во всех языках Ассемблеров эти понятия различаются. Если они различаются (например, MASM), то метка — точка программы, на которую передается управление, следовательно, метка стоит в предложении, содержащем команду; имя — имя переменной программы, ячейки памяти, следовательно, имя стоит в предложении, содержащем псевдокоманду резервирования памяти или определения константы. В некоторых случаях метка и имя могут отличаться даже синтаксически, так, в MASM/ TASM после метки ставится двоеточие, а после имени — нет.  Однако, физический смысл и метки, и имени — одинаков, это — адрес памяти. Во всех случаях, когда Ассемблер встречает в программе имя или метку, он заменяет ее на адрес той ячейки памяти, к которую имя/метка именует.  Правила формирования имен/меток совпадают с таковыми для языков программирования. В некоторых Ассемблерах (HLAM S/390) не делается различия между меткой и именем.  В языке должны предусматриваться некоторые специальные правила, позволяющие Ассемблеру распознать и выделить метку/имя, например:  u  метка/имя должна начинаться в 1-й позиции строки u  если метки/имени нет, то в 1-й позиции должен быть пробел, или за меткой/именем должно следовать двоеточие, и т.п.  Мнемоника — символическое обозначение команды/псевдокоманды.  Операнды — один или несколько операндов, обычно разделяемые запятыми. Операндами команд являются имена регистров, непосредственные операнды, адреса памяти (задаваемые в виде констант, литералов, символических имен или сложных выражений, включающих специальный синтаксис). Операнды псевдокоманд могут быть сложнее и разнообразнее.  Комментарии — любой текст, который игнорируется Ассемблером. Комментарии располагаются в конце предложения и отделяются от текста предложения, обрабатываемого Ассемблером, каким-либо специальным символом (в некоторых языках — пробелом). Всегда предусматривается возможность строк, содержащих только комментарий, обычно такие строки содержат специальный символ в 1-й позиции.  Константы — могут представлять непосредственные операнды или абсолютные адреса памяти. Применяются 10-е, 8-е, 16-е, 2-е, символьные константы.  Непосредственные операнды — записываются в сам код команды.  Имена — адреса ячеек памяти. При трансляции Ассемблер преобразует имена в адреса. Способ преобразования имени в значение зависит от принятых способов адресации. Как правило, в основным способом адресации в машинных языках является адресация относительная: адрес в команде задается в виде смещения относительно какого-то базового адреса, значение которого содержится в некотором базовом регистре. В качестве базового могут применяться либо специальные регистры (DS, CS в Intel) или регистры общего назначения (S/390).  Литералы — записанные в особой форме константы. Концептуально литералы — те же имена. При появлении в программе литерала Ассемблер выделяет ячейку памяти и записывает в нее заданную в литерале константу. Далее все появления этого литерала Ассемблер заменяет на обращения по адресу этой ячейки. Таким образом, литеральные константы, хранятся в памяти в одном экземпляре, независимо от числа обращений к ним.  Специальный синтаксис — явное описание способа адресации (например, указание базового регистра и смещения).
 

Скачать:

ВложениеРазмер
PDF icon sistemnoe_programmirovanie.pdf2.15 МБ

Предварительный просмотр:

По теме: методические разработки, презентации и конспекты

Домашнее задание для ПО 1.11 системное программирование на 05.02.19

Ассемблеры Программирование на языке Ассемблера Язык Ассемблера — система записи программы с детализацией до отдельной машинной команды, позволяющая использовать мнемоническое обозначение к...

Домашнее задание для ПО 1.11 системное программирование на 08.02.19

Регистры Программа в машинном коде состоит из различных сегментов для определения данных, для машинных команд и для сегмента, названного стеком, для хранения адресов. Для выполнения арифметически...

Домашнее задание для ПО 2.11 системное программирование на 05.02.19

Написать программу преобразования десятичного числа в шестнадцатеричное....

Домашнее задание для ПО 2.11 системное программирование на 07.02.19

Составить программу, которая будет печатать ромб одним из значков (* или + или #) Выбор значков организовать оператором switch....

Домашнее задание для ПО 2.11 системное программирование на 08.02.19

Программа должна, в качестве входных данных, принимать пятизначные числа и определять, является ли введенное пятизначное число палиндромом....

Домашнее задание для ПО 2.11 системное программирование на 09.02.19

Составить программу, которая на входе должна получать последовательность цифр, после чего  программа показывает цифру, порядковый номер которой ввел пользователь....

Домашнее задание для ПО 2.11 системное программирование на 12.02.19

Написать программу преобразования десятичного числа в шестнадцатеричное....