Разработка программного обеспечения на языке низкого уровня - ассемблер
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
ассмотрим характеристики этого языка. Конструкциями машинного языка являются константы и команды. Команды содержат код команды и адреса данных, которые используются в командах. Структура 4-х адресной команды
Код операции1 данное2 данноеРезультатАдрес следующей команды
Большинство команд выполняется в том порядке, в котором они записаны в памяти (естественный порядок выполнения команды), поэтому задание четвертого адреса в большинстве команд не требуется. Так как переменная адресность для первых компьютеров не поддерживалась, вместо 4-х адресных стали использовать команды 3-х адресные. Структура 3-х адресной команды
Код команды1 данное2 данноеРезультат
Для реализаций разветвлений в программе в систему команд машины должны быть добавлены команды безусловного и условного перехода, т.е. уменьшение длины команды привело к необходимости увеличения числа команд. С увеличением общей памяти увеличивается размер адреса, т.к. необходимо под адрес отводить место, достаточное для записи максимального адреса. В этом случае увеличивается размер команды и всей программы. Кроме того при составлении программ очень часто результат записывается вместо одного из исходных данных. В этом случае адреса результата и одного из данных совпадают и можно задать только один адрес.
Получаем 2-х адресную структуру команды.
Структура 2-х адресной команды
Код операции1 данное ( результат)2 данное
Или
Код операции1 данное2 данное (результат)
В литературе есть обоснование и первого и второго форматов команд. В настоящее время используются оба формата для разных типов процессоров. Т.к. результат помещается вместо одного из данных, могут потребоваться команды пересылки данных для создания их копии.
Заметим, что операторы языка С вида программируется несколькими командами (почему?).
Доступ к памяти требует значительно больше времени, чем выполнение операции процессором. Для уменьшения потерь памяти используется фиксированная ячейка, называемая Accumulator, доступ к которой значительно быстрее, чем к обычной ячейке памяти за счет того, что она одна и за счет аппаратной реализации. В этом случае в команде задается только один адрес, второе данное и результат получаются в фиксированной ячейке.
Структура 1 адресной команды.
Код операцииАдрес данного
Заметим, что некоторые команды требуют задать только один адрес без использования аккумулятора, например, команда увеличения на 1 содержимого памяти.
Так оператор С x++ означает использование одноадресной команды вместо двухадресной сложения (x+=1) или нескольких команд в случае x=x+1.
В систему команд должны быть добавлены команды для обмена данными между аккумулятором и памятью. Недостаток одноадресных команд - основную часть программы составляют команды пересылки данных.
В современных процессорах вместо одной фиксированной ячейки (регистра) используется несколько, в этом случае в команде задается адрес данного и регистр, т.е. опять возвращаемся к двух адресной структуре команды.
Структура безадресных команд
Некоторые из команд не требуют задания адреса, например, команда СТОП (Halt) для процессора. В случае использования команд с данными можно использовать стек для хранения данных, в этом случае адреса данных можно не задавать. Стек - это массив, заполнение и извлечение данных для которого выполняется по правилу "Первый вошел, последний вышел". В этом случае данные для операции записываются в стек. Результат помещается вместо этих данных.
Для упрощения распределения памяти и запоминания кодов команд вместо машинных кодов используются их обозначения, а вместо конкретных адресов - символические адреса. Символические коды для основных операций заданы в табл. 4.1
Таблица 4.1 Мнемонические коды арифметических команд
КодОбозначение01 (+)ADD02 (-)SUB03 (*)MUL04 (/)DIVПусть данные занимают ячейки
+ 0 : X+ 1: Y+ 2 : Z+ 3 : U+ 4 : V + 5 : W
Пусть программа занимает ячейки P + 0, P + 1, …
Пусть в качестве ячеек для промежуточных данных используются R + 0, R + 1, …
Текст программы с учетом принятых обозначений задан в табл. 5.1.
Таблица 5.1. Текст программы
АдресКод1 данное2 данное РезультатКомментарийP+0ADDD+0D+1R+0X + Y R+0P+1SUBR+0D+2R+1X+Y-ZR+1P+2MULR+1D+3R+1(X+Y-Z)*UR+1P+3ADDR+!D+4R+1(X+Y-Z)*U + VR+1P+4DIVR+1R+0D+5Результат
Пусть D= 0. В этом случае программа начинается с ячейки после D + 5, т.е. с ячейки 6. (P = 6). Промежуточные данные можно располагать, начиная с P + 5, т.е. R = 11. Преобразование кодов и адресов в машинные коды и адреса выполняется специальной программой.
Язык, в котором вместо машинных кодов используются их символические обозначения, а вместо абсолютных - относительные адреса, называется языком символического кодирования или ассемблером.
3. Определения которые будут встречаться в программе
язык ассемблер программа алгоритм
Tiny (файл *.com). модель памяти. При этом регистры CS, DS, SS содержат одинаковых значений. Это наиболее компактная модель памяти. Размер памяти не может превышавать 63Кб. Адресация происходит с помочью смещения и меток . Так как программы на ассемблере не большая, то это не есть большим ограничением . Эта модель широко используется, особливо в резидентных программах.-- длина строки ввода (5 символов