Cтраница 1
Организация ссылок вперед с использованием псевдооперации EQU. [1] |
Программа простого двухпрсходного ассемблера для микро - ЭВМ Н6809 представлена на рис. 6.5. Во время первого прохода просматривается каждая строка и в таблицу символов вводятся встречающиеся метки. Каждая строка классифицируется согласно типу псевдооперации или машинной команды, указываемыми в поле Код операции. Машинные команды классифицируются согласно их длине, выражаемой в байтах. Условные переходы представляют особый случай, когда ассемблер должен вычислить смещение от указанного адреса в поле операнда. [2]
Одной из функций программы ассемблера является распознавание исходного языка, с которым он может работать. В общем случае конкретный ассемблер будет распознавать и принимать только один язык, при этом принципиальную роль играют определения слов и семантические правила. И если мы нарушим эти определения и правила, ассемблер будет нас информировать об этом и может указать на непонятные места. Доступность, число и качество распознавания подобных нарушений - существенные факторы, от которых зависит разработка программ. [3]
Одной из функций программы ассемблера является преобразование исходной программы на языке ассемблера в программу на машинном языке. Можно предположить, что для выполнения указанного преобразования ассемблеру необходимо просматривать некоторую таблицу, содержащую мнемонические обозначения команд. Какого рода данные должны быть также включены в такую таблицу. [4]
Операции трансляции исходного модуля выполняются программой ассемблера однократно, при этом исходный модуль должен быть представлен на языке ассемблера. Выражения операндов всегда вычисляются во время процесса трансляции. Когда встречаются операторы и - помните, что операции сложения и вычитания выполняются на этапе трансляции, а не при прогоне программы. [5]
Из каких трех элементов состоит строка программы ассемблера. [6]
При трансляции с языка ассемблера на машинный язык программа ассемблера выполняет также и некоторые дополнительные функции. Она отводит ячейки памяти на основе символических адресов, задаваемых программистом, и компонует цифровой код операции по символическому или мнемоническому ее коду, задаваемому программистом. [7]
На языке МС-16 это делается с помощью программы 10.1. Программа ассемблера преобразует этот набор мнемонических символов в команды на машинном языке, используя для каждой строки одно или два машинных слова. Перед выполнением программы результирующий машинный код записывается в последовательные ячейки памяти. [8]
Язык ассемблера - язык, содержащий символические команды, которые программа ассемблера переводит в команды процессора. [9]
Разумеется, промежутки между группами цифр в вышеприведенной последовательности нужны только для того, чтобы в целях иллюстрации отделить друг от друга четыре части команды при изображении их на бумаге. Программа ассемблера интерпретирует символический код операций LD и строит соответствующий числовой код операций 11000 и соответствующий флаговый разряд 0, указывающий на то, что команда состоит из одного слова. Численный адрес 2062 операнда SUM слишком велик, чтобы поместиться в восьми разрядах, отведенных в команде под смещение. Поэтому предварительно в регистр № 2, заданный признаком 10, загружается число, позволяющее адресовать SUM и другие величины, нужные программисту. [10]
Резюмируя сказанное, отметим, что язык ассемблера дает возможность производить как бы стенографическую запись, применяя мнемонические символы, и пользоваться им значительно проще, чем машинным языком. Программа ассемблера обычно обеспечивает перевод символических команд языка ассемблера в команды машинного языка по принципу один к одному. Хотя ассемблеры значительно снижают затраты труда на запись программы, все же использование языка ассемблера трудоемко и сопровождается ошибками. Поэтому часто желательны более простые методы записи программы; об этом и идет речь в следующем разделе. [11]
Это инструкция программе ассемблера о том, что нужно прекратить трансляцию. END, хотя и выглядят в программе как команды, предназначенные для ЦП, на самом деле-управляют процессом трансляции и называются псевдооперато-рами. [12]
Здесь рассматриваются синтаксис языка ассемблера и выполнение программы ассемблера. [13]
На следующем уровне иерархии крайне важная идея о том, что сами компьютеры можно заставить переводить программы с высших на низшие уровни, развивается еще далее. В начале 1950 - х годов, когда программа ассемблера уже использовалась в течение нескольких лет, было подмечено, что существуют несколько характерных структур, появляющихся в программе за программой. По-видимому, так же как и в шахматах, это были некие характерные структуры, естественно возникающие тогда, когда люди пытаются найти алгоритмы - точные описания процессов, которые они хотят осуществить. Иными словами, кажется, что в алгоритмах есть некие компоненты высшего уровня, при помощи которых они могу г быть описаны с большей легкостью и эстетизмом, нежели на весьма ограниченном машинном языке или языке ассемблера Обычно такой компонент высшею уровня в алгоритме представляет собой не одну-две машинных команды, но целый конгломерат; при этом эти команды не обязательно соседствуют в памяти Подобный компонент может быть представлен на языке высшего уровня как некое единство, или блок. [14]
На рис. 3.7 показана таблица псевдоопераций. Каждая псевдооперация представлена в таблице вместе с соответствующим указанием на программу ассемблера, предназначенную для выполнения этой псевдооперации. [15]