Материал: Основы программирования на Ассемблере

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Основы программирования на Ассемблере

СОДЕРЖАНИЕ

Введение

. Цифровые узлы комбинационного и последовательностного типа

.1 Моделирование цифровых узлов комбинационного и последовательностного типа electronic work bench

. Основы программирования на Ассемблере

.1 Арифметические команды. Команды передачи

.2 Манипуляции над битами. Строковые операции

. Программирование с использованием MASM

.1 Пакет MASM. Структура программы

.2 Совместное использование языка Ассемблер с другими языками программирования

.3 Команды управления циклами. Команды работы со строками

Заключение

Литература

ВВЕДЕНИЕ

Практика является одной из важнейших составляющих профессиональной подготовки студента, так же является составной частью основной образовательной программы.

С 24 февраля по 1 марта 2014 года я проходил практику по программированию на базе ЧУ ТМК «Мирас» по специальности ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА И ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.

Цели практики по программированию:

.Закрепление и углубление знаний полученных при теоретическом обучении.

.Подготовка к изучению последующих специальных дисциплин и прохождению производственной практики.

.Знакомство с особенностями программирования.

О языке программирования

Ассе́мблер (от англ. assembler - сборщик) - компилятор исходного текста программы, написанной на языке ассемблера, в программу на машинном языке.

Как и сам язык ассемблеры, как правило, специфичны для конкретной архитектуры, операционной системы и варианта синтаксиса языка. Вместе с тем существуют мультиплатформенные или вовсе универсальные (точнее, ограниченно-универсальные, потому что на языке низкого уровня нельзя написать аппаратно-независимые программы) ассемблеры, которые могут работать на разных платформах и операционных системах. Среди последних можно также выделить группу кросс-ассемблеров, способных собирать машинный код и исполняемые модули (файлы) для других архитектур и ОС.

На период практики по программированию передо мной стояли следующие задачи:

.Развитие и укрепление интересов избранной профессии

.Формирование профессиональных знаний, умений, навыков

.Ознакомление с содержанием основных работ

.Формирование умений применять теоретические знания

.Закрепить язык программирования Delphi

.Выполнить практические задания

программирование ассемблер цифровой моделирование

1. ЦИФРОВЫЕ УЗЛЫ КОМБИНАЦИОННОГО И ПОСЛЕДОВАТЕЛЬНОСТНОГО ТИПА

Следующий уровень иерархии вслед за цифровыми элементами занимают функциональные узлы. Они выполняют типовые для цифровых устройств микрооперации, т.е. реализуют низший иерархический уровень внутреннего языка цифрового устройства. Функциональные узлы делятся на комбинационные и последовательностей. Комбинационные узлы (комбинационные цепи) - это устройства, выходные величины которых зависят только от текущих значений входных величин. В отличие от них, последовательностей узлы содержат элементы памяти. Их реакция определяется не только вектором входных сигналов, но и внутренним состоянием. Поэтому их называют автоматами с памятью.

Рассмотрение функциональных узлов начнем с типовых комбинационных цепей.

Дешифратор (Decoder, DC) осуществляет преобразование n-элементного параллельного кода в код «1 из m», у которого только в одной позиции находится единица, все остальные позиции - нулевые. Количество выходов так называемого полного дешифратора должно равняться числу всевозможных n-разрядных кодовых комбинаций, т.е. m = 2 n.

Интегральные счетчики

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

Счетчики - это цифровые автоматы, внутренние состояния которых определяются только количеством сигналов "1", пришедших на вход. Сигналы "0" не изменяют их внутренние состояния.

Триггер Т-типа является простейшим счетчиком, который считает до двух. Счетчик, образованный цепочкой из m триггеров, сможет подсчитывать в двоичном коде 2m входных импульсов. Каждый из триггеров в этой цепочке называют разрядом счетчика.

Основная характеристика счетчика - модуль счета, или емкость счетчика Kсч.. Это количество поступивших входных сигналов, которое возвращает счетчик в исходное состояние.

Количество триггеров, необходимое для реализации счетчика, равно m = log2 Kсч., где m - ближайшее большее целое число.

Классификация счетчиков

Цифровые счетчики классифицируются следующим образом:

по модулю счета: двоичные, двоично-десятичные или с другим основанием счета, недвоичные с постоянным модулем счета, с переменным модулем счета;

Информационные входы дешифратора принято обозначать их двоичными весами. EN (Enable) - вход разрешения работы дешифратора. На выходе дешифратора формируются логические функции в виде системы конъюнкций, которая в случае n информационных входов имеет вид:

Рис.1 Формула

по направлению счета:

суммирующие, вычитающие, реверсивные;

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

Классификационные признаки независимы и могут встречаться в различных сочетаниях: например, суммирующие счетчики бывают как с последовательным, так и с параллельным переносом и могут иметь двоичный, десятичный и иной модуль счета.

В суммирующем счетчике каждый входной импульс увеличивает число, записанное в счетчик, на единицу (для счетчиков с естественным порядком счета) и на единицу и более для счетчиков с произвольным порядком счета.

Вычитающий счетчик действует обратным образом: двоичное число, хранящееся в счетчике, с каждым поступающим импульсом уменьшается. Переполнение счетчика наступает при поступлении на его вход количества импульсов большего Kсч...

Реверсивный счетчик может работать в качестве суммирующего и вычитающего.

.1 МОДЕЛИРОВАНИЕ ЦИФРОВЫХ УЗЛОВ КОМБИНАЦИОННОГО И ПОСЛЕДОВАТЕЛЬНОСТНОГО ТИПА ELECTRONIC WORK BENCH

Система схемотехнического моделирования Electronics Workbench предназначена для моделирования и анализа электрических схем.Workbench может проводить анализ схем на постоянном и переменном токах. При анализе на постоянном токе определяется рабочая точка схемы в установившемся режиме работы. Результаты этого анализа не отражаются на приборах, они используются для дальнейшего анализа схемы. Анализ на переменном токе использует результаты анализа на постоянном токе для получения линеаризованных моделей нелинейных компонентов. Анализ схем в режиме АС может проводиться как во временной, так и в частотной областях.

В Electronics Workbench можно исследовать переходные процессы при воздействии на схемы входных сигналов различной формы. Программа также позволяет производить анализ цифро-аналоговых и цифровых схем большой степени сложности. Имеющиеся в программе библиотеки включают в себя большой набор широко распространенных электронных компонентов. Есть возможность подключения и создания новых библиотек компонентов.

Широкий набор приборов позволяет производить измерения различных величин, задавать входные воздействия, строить графики. Все приборы изображаются в виде, максимально приближенном к реальному, поэтому работать с ними просто и удобно.

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

Программа Electronics Workbench совместима с программой P-SPICE, т.е. предоставляет возможность экспорта и импорта схем и результатов измерений в различные ее версии.Workbench позволяет разместить схему таким образом, чтобы были четко видны все соединения элементов и одновременно вся схема целиком.

Программа использует стандартный интерфейс Windows, что значительно облегчает ее использование.

Для установки программы необходимы:

− IBM-совместимый компьютер с модификацией процессора не ниже 486;

− не менее 4 МВ свободного пространства на жестком диске;

− операционная система Microsoft Windows 3.1 или более поздние версии;

− манипулятор типа мышь.

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

В программе используется большой набор приборов для проведения измерений: амперметр, вольтметр, осциллограф, мультиметр, Боде-плоттер (графопостроитель частотных характеристик схем), функциональный генератор, генератор слов, логический анализатор и логический преобразователь.

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

В программе используется большой набор приборов для проведения измерений: амперметр, вольтметр, осциллограф, мультиметр, Боде-плоттер (графопостроитель частотных характеристик схем), функциональный генератор, генератор слов, логический анализатор и логический преобразователь.Workbench позволяет использовать результаты, полученные в программах P-SPICE, PCB, а также передавать результаты на Electronics Workbench в эти программы. Можно вставить схему или ее фрагмент в текстовый редактор и напечатать в нем пояснения или замечания по работе схемы.

Путем настройки приборов можно:

− изменять школы приборов в зависимости от диапазона измерений;

− задавать режим работы прибора.

2. ОСНОВЫ ПРОГРАММИРОВАНИЯ НА АССЕМБЛЕРЕ ЗАДАНИЕ

Запуск Debug.exe, программы для проверки и отладки исполнительных файлов MS-DOS.

Рис.2 главное окно Debug.exe

Получил и зафиксировал дампы характерных областей RAM и ROM

Рис. 2.1 Дампы характерных областей RAM и ROM

Посмотрел области памяти

Рис. 2.2 Области памяти

Проверил состояние регистра клавиатуры:

Рис. 2.3 Состояние регистра клавиатуры

Проверка даты производства BIOS.

Рис. 2.4 Проверка даты производства BIOS

Скопировал BIOS (С000:0 ... FFFF: F) в файл и сохранил файл для последующего анализа.

Рис.2.5 BIOS (С000:0 ... FFFF: F)

.1 АРИФМЕТИЧЕСКИЕ КОМАНДЫ. КОМАНДЫ ПЕРЕДАЧИ

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

Формальная логика работает на уровне утверждений истинно и ложно. Для микропроцессора это, как правило, означает 1 и 0 соответственно. Для компьютера язык нулей и единиц является родным, но минимальной единицей данных, с которой работают машинные команды, является байт. Однако на системном уровне часто необходимо иметь возможность работать на предельно низком уровне - на уровне бит.

К средствам логического преобразования данных относятся логические команды и логические операции. Операнд команды ассемблера в общем случае может представлять собой выражение, которое, в свою очередь, является комбинаций операторов и операндов. Среди этих операторов могут быть и операторы, реализующие логические операции над объектами выражения.

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

Теоретической базой для логической обработки данных является формальная логика. Существует несколько систем логики. Одна из наиболее известных - это исчисление высказываний. Высказывание - это любое утверждение, о котором можно сказать, что оно либо истинно, либо ложно.

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

Исчисление высказываний очень гармонично сочетается с принципами работы компьютера и основными методами его программирования. Все аппаратные компоненты компьютера построены на логических микросхемах. Система представления информации в компьютере на самом нижнем уровне основана на понятии бита. Бит, имея всего два состояния (0 (ложно) и 1 (истинно)), естественным образом вписывается в исчисление высказываний.

.2 МАНИПУЛЯЦИИ НАД БИТАМИ. СТРОКОВЫЕ ОПЕРАЦИИ

Строковые операции называют цепочечными или операциями над цепочками байтов.

Строка-это цепочка байтов, для которой известен алгоритм определения ее длины. В языках программирования прописывают процедуру определения длины строки, а также вводят ограничение на то, какие байты могут содержаться в строке, а также в какой кодировке должны интерпретироваться строки- сколько байтов кодирует символ, и какая таблица будет использоваться для сопоставления байтов и символов. В языке Си под строкой понимается последовательность байтов, заканчивающаяся байтом со значением 0.

Строковые операции работают с одним элементом строки: байтом, словом, двойным словом. Для того чтобы команда манипулировала последовательностью таких элементов, используются команды-префиксы:повторять, пока содержимое ECX не обратится в 0/REPZ-повторять пока равно/нуль. Данный префикс заставляет выполнять строковую команду до тех пор, пока содержимое ECX не обратится в 0/REPZ-повторять пока не равно/не нуль. Данный префикс заставляет выполнять строковую команду до тех пор, пока содержимое ECX не обратится в 0

Строковые команды считают, что строка -источник находится по адресу DS: ESI (для нас это просто ESI), а строка-приемникпо адреса ES: EDI (для нас просто EDI). Все строковые команды можно разделить на шесть групп:

. Команды пересылки- копирование строки байтов.- копирование строки слов.- копирование строки двойных слов

Возможен также формат MOVS приемник, источник-в этом случае

ассемблер по типу операндов сам определяет, какую из трех форм команд следует выбрать. Команда копирует элемент строки из адреса, определяемого ESI, в адрес, определяемый EDI. После выполнения такой команды содержимое ESI и EDI увеличивается (флаг DF=0) или уменьшается (флаг DF=1) на размерах элемента строки

. Команды сравнения- сравнение строк байтов.- сравнение строк слов.- сравнение строк двойных слов

. Команды поиска(сканирования)- сканирование строки байтов.- сканирование строки слов- сканирование строки двойных слов

. Команды чтения из строки- чтение байта из строки.- чтение слова из строки.- чтение двойного слова из строки.

Возможен также формат LODS источник-в этом случае ассемблер по типу операндов сам определяет, какую из трех форм команд следует выбрать. Команда осуществляет копирование из памяти, которая адресуется ESI, элемента в AL, AX или EAX. После выполнения такой команды содержимое EDI увеличивается на размер элемента строки

. Команда записи в строку- запись байта в строку.

Возможен также формат STOS приемник, источник-в этом случае ассемблер по типу операндов сам определяет, какую из трех форм команд следует выбрать. Команда осуществляет копирование в память, которая адресуется EDI, элемента из AL, AX или EAX. После выполнения такой команды содержимое EDI увеличивается на размер элемента строки.

Предикаты сравнения представляют собой функции, которые сравнивают две величины и возвращают однобитовый результат, равный 1, если проверяемое отношение истинно, и 0, если ложно. В этом разделе приводится несколько методов вычисления результата сравнения с размещением его в бите знака (эти методы не используют команд ветвления). Чтобы получить значение 1 или 0, используемое в некоторых языках (например, в C), после вычисления следует использовать команду сдвига вправо на 31 бит. Для получения результата -1/0, используемого в некоторых других языках (например, Basic), выполняется команда знакового сдвига вправо на 31 бит.