Автор работы: Пользователь скрыл имя, 18 Марта 2015 в 02:52, шпаргалка
Ответы на вопросы к экзамену по предмету "Основы информатики".
код |
обозначение |
операция |
01 |
ADD |
Сложение |
02 |
SUB |
Вычитание |
03 |
MUL |
Умножение |
04 |
MUL |
Деление |
СТРУКТУРА ПРОГРАММЫ: программа на языке Ассемблер содержит такие блоки: - ДЕКЛАРАТИВНАЯ часть - описание символических имен данных и адресов, которые используют в программе, а также директивы выделения памяти для переменных и указания значений констант (посредством директивы Ассемблера); - блок ИНИЦИАЛИЗАЦИИ - настройка портов и блоков периферийных функций на необходимые режимы работы, инициализация стека (посредством команд); - блок РЕАЛИЗАЦИИ алгоритмов и функций управления (посредством команд).
Модель памяти SMALL.
Small (малая). Эта модель хорошо подходит для небольших прикладных программ. Сегменты кода и данных расположены отдельно друг от друга и не перекрываются, что позволяет иметь 64К кода программы и 64К данных и стека. Используются только указатели near.
Модель small поддерживает один сегмент кода и один сегмент данных. Данные и код при использовании этой модели адресуются как near (ближние).
SMALL — код
размещается в одном сегменте,
а данные и стек — в другом
(для их описания могут
Предложения ассемблера бывают четырех типов:
1) команды
или инструкции, представляющие
собой символические аналоги
машинных команд. В процессе трансляции
инструкции ассемблера
2) макрокоманды.
Это оформляемые определенным
образом предложения текста
3) директивы,
являющиеся указанием
4) строки комментариев, содержащие любые символы, в том числе и буквы русского алфавита. Комментарии игнорируются транслятором.
рограмма на ассемблере состоит из предложений, каждое из которых записывается на отдельной строке. <предложение>... Переносить предложение на следующую строку или записывать два предложения на одной строке нельзя. Если более 131 символа, то 132-й и далее - игнорируются. Правила расстановки пробелов:
¾ пробел обязателен между стоящими рядом идентификаторами и/или числами,
¾ внутри идентификаторов и чисел пробелы недопустимы,
¾ там где допустим один пробел, допустимо и несколько пробелов подряд. Предложения в ассемблере делятся на три группы по смыслу: комментарии, команды, директивы (приказы ассемблеру). Рассмотрим.
комментарии. Не отражаются на ходе выполнения программы, игнорируются компилятором и предназначены для людей. Могут быть любые символы. Комментарием считается любая строка, начинающаяся со знака ; или пустая строка. Возможен многострочный комментарий COMMENT <маркер> <текст>. В качестве комментария берется первый за словом COMMENT символ, отличный то пробела COMMENT * бред* бред.
Команды. Это символьная форма записи машинных команд.
[<метка>:] <мнемокод> [<операнды>] [;<комментарий>]
Метка с двоеточием, а также точка с запятой и комментарий могут отсутствовать.
метка синтаксически - имя команды, ее можно использовать в командах перехода на данную команду.. Если метка есть то после нее обязательно двоеточие нужна для ссылок, например для перехода на эту команду. В строке может стоять только метка, метит следующую строку. Если длинная метка или если необходимо пометить строку несколькими метками.
Мнемокод (мнемонический код) является обязательной частью команды и указывает ту операцию, которую должна выполнить команда. Записывается в символьной форме.
Операнды, если они есть отделяются друг от друга запятыми.
Комментарий - после знака ; не влияет на смысл команды, а лишь поясняет ее. Действителен для данной строки.
Регистры указываются своими именами, например:
MOV AX,SI ;оба операнда - регистры
Непосредственные операнды задаются константными выражениями (их значениями являются константы-числа), например:
MOV BH,5 ;5 - непосредственный операнд
MOV DI,SIZE X ;SIZE X (число байтов, занимаемых переменной X) - ;непосредственный операнд
Адреса описываются адресными выражениями (например, именами переменных), которые могут быть модифицированы по одному или двум регистрам; например, в следующих командах первые операнды задают адреса:
MOV X,AH
MOV X[BX][DI],5
MOV [BX],CL
13.Ассемблер. Описание сегмента данных. Способы адресации памяти.
Ассемблер - это программное средство, предназначенное для преобразования исходного текста программы, содержащего мнемонические имена команд и операндов, в последовательность двоичных кодов, которые представляют собой исполняемые команды для процессора.
Язык ассемблера (автокод) — язык программирования низкого уровня. В отличие от языка машинных кодов, позволяет использовать более удобные для человека мнемонические (символьные) обозначения команд. При этом для перевода программы с языка ассемблера в понимаемый процессором машинный код требуется специальная программа, называемая ассемблером.
Содержание языка
Команды языка
ассемблера один к одному соответствуют
командам процессора, фактически, они
представляют собой более удобную для
человека символьную форму записи (мнемокод)
команд и их аргументов. При этом одной
команде языка ассемблера может соответствовать
несколько команд процессора. (http://www.samvel.net/text/
Кроме того, язык ассемблера позволяет использовать символические метки вместо адресов ячеек памяти, которые при ассемблировании заменяются на автоматически рассчитываемые абсолютные или относительные адреса, а также так называемые директивы (команды, не переводящиеся в процессорные инструкции, а выполняемые самим ассемблером).
Директивы ассемблера позволяют, в частности, включать блоки данных, задать ассемблирование фрагмента программы по условию, задать значения меток, использовать макроопределения с параметрами.
Каждая модель (или семейство) процессоров имеет свой набор команд и соответствующий ему язык ассемблера. Наиболее популярные синтаксисы — Intel-синтаксис и AT&T-синтаксис.
Существуют компьютеры, реализующие в качестве машинного язык программирования высокого уровня (Forth, Lisp, Эль-76); фактически, в них он является языком ассемблера.
Описание сигмента данных
Сегмент данных
Сегмент данных содержит определенные данные, константы и рабочие области, необходимые программе. Регистр сегмента данных (DS) адресует данный сегмент.
Для хорошего понимания, как работает программа на ассемблере, нужно очень четко представлять себе организацию сегментов. Применительно к процессорам Intel Pentium термин “сегмент” имеет два значения:
Область физической памяти заранее определенного размера. Для 16-разрядных процессоров размер сегмента физической памяти не может превышать 64 Кбайт, в то время как для 32-разрядных может достигать 4 Гбайт.
Область памяти переменного размера, в которой могут находиться программный код, данные или стек.
Физический сегмент может располагаться только по адресу, кратному 16, или, как иногда говорят, по границе параграфа. Логические сегменты тесно связаны с физическими. Каждый логический сегмент ассемблерной программы определяет именованную область памяти, которая адресуется селектором сегмента, содержащимся в сегментном регистре. Сегментированная архитектура создает определенные трудности в процессе разработки программ. Для небольших программ, меньших 64 Кбайт, программный код и данные могут размещаться в отдельных сегментах, поэтому никаких особых проблем не возникает.
Для больших программ, занимающих несколько сегментов кода или данных, необходимо правильно адресовать данные, находящиеся в разных сегментах данных. Кроме того, если программный код находится в нескольких сегментах, то усложняются реализация переходов и ветвлений в программе, а также вызовы процедур. Во всех этих случаях требуется задавать адреса в виде сегмент:смещение.
При использовании 32-разрядного защищенного режима эти проблемы исчезают. Например, в плоской модели памяти (о ней мы поговорим чуть позже) для адресации программного кода и данных достаточно 32-разрядного эффективного адреса внутри непрерывной области памяти.
Логические сегменты могут содержать три основных компонента программы: программный код, данные и стек. Макроассемблер MASM обеспечивает правильное отображение этих компонентов на физические сегменты памяти, при этом сегментные регистры CS, DS и SS содержат адреса физических сегментов памяти.
Способы адресации памяти.
Задача адресации заключается в указании на текущую ячейку памяти, к которой происходит обращение процессора. Адрес текущей ячейки как правило записывается в один или несколько регистров процессора. Методы адресации памяти имеют особое значение при программировании на языке низкого уровня (языке ассемблера). Существует два вида адресации: прямая и косвенная
Прямая адресация Адрес указывается непосредственно в виде некоторого значения, все ячейки располагаются на одной странице. Преимущество этого способа в том, что он самый простой, а недостаток — в том, что разрядность регистров общего назначения процессора должна быть не меньше разрядности шины адреса процессора.
Косвенная адресация. Адресный код команды в этом случае указывает адрес ячейки памяти, в которой находится адрес операнда или команды. Косвенная адресация широко используется в малых и микроЭВМ, имеющих короткое машинное слово, для преодоления ограничений короткого формата команды (совместно используются регистровая и косвенная адресация)
14.Ассемблер. Команды пересылки данных. Арифметические команды
Язык ассемблера (автокод) — язык программирования низкого уровня. В отличие от языка машинных кодов, позволяет использовать более удобные для человека мнемонические (символьные) обозначения команд. При этом для перевода программы с языка ассемблера в понимаемый процессором машинный код требуется специальная программа, называемая ассемблером.
Ассемблер - это программное средство, предназначенное для преобразования исходного текста программы, содержащего мнемонические имена команд и операндов, в последовательность двоичных кодов, которые представляют собой исполняемые команды для процессора.
Команды пересылки данных.
Команды пересылки данных осуществляют обмен данными и адресами между регистрами и ячейками памяти или портами ввода-вывода.
Эти команды в свою очередь могут быть разделены на четыре подгруппы:
– команды общего назначения,
– команды ввода-вывода,
– команды пересылки адреса,
– команды пересылки флагов.
Основная команда общего назначения MOV (move - переслать) может пересылать байт или слово между регистром и ячейкой памяти или между двумя регистрами. Она может также пересылать непосредственно адресуемое значение в регистр или в ячейку памяти.
Команда обмена XCHG (exchange - обменять) меняет между собой значения двух регистров или регистра и ячейки памяти. Однако она не может выполнить обмен значений регистров сегмента.
Команды ввода-вывода используются для взаимодействия с периферийными устройствами системы. Они имеют формат
IN аккумулятор, порт
OUT порт, аккумулятор, где аккумулятор — регистр AL при обмене байтами или регистр АХ при обмене словами. Операндом порт может быть десятичное значение от 0 до 255, что позволяет адресоваться к 256 устройствам.
Информация о работе Шпаргалка по предмету "Основы информатики"