Выполнение работы. 1. Идельчик, В.И. Электрические системы и сети : учебник для электроэнергетических специальностей / В.И
Введение В данной лабораторной работе будет проведена работа в свободном компиляторе NASM. Так как на Unix системах он предустановлен, установка описываться не будет.
Программное обеспечение MacBook Air середина 2011 OS X Yosemite 10.10.5 Microsoft Office 2016 Mac beta version. Консольные пакеты sudo(права root) nasm(свободное ПО) bash(эмулятор терминала) nano(редактирование) screenme(c ключем -all)
Цели работы изучить процессы ассемблирования, компоновки и выполнения программы, а также – научиться решать, тестировать и отлаживать на ЭВМ простейшие типовые задачи как вычислительного, так и не вычислительного характера. Как правило, в самой постановке такой задачи уже определен алгоритм ее решения. Необходимо записать этот алгоритм, используя основные конструкции языка ассемблера. Для проверки правильности работы программы должны быть представлены необходимые тестовые данные. Рабочие задания Написать программу. 1. Вывод сообщения на экран с начала строки. 2. Вывод сообщения на экран с середины экрана. 3. Вывод сообщения на экран с начала строки и в рамке, построенной из любых символов псевдографики. 4. Вывод сообщения в рамке на середину экрана. 5. Вывод на экран символа с помощью функции 2h, для этого запишите в сегменте кодов:
7. Вывод сообщения на экран. Перед выдачей сообщения установить курсор функцией 2 int 10h:
8. Вывод сообщения на экран. Перед выдачей сообщения нарисовать цветное окно функцией 6 int 10h и установить курсор функцией 2 int 10h.
Выполнение работы Для написания первой программы на ассемблере, я буду использовать эмулятор терминала bash. Перед началом работы проверим версию NASM с которой будем работать, и есть ли вообще NASM. Для этого введем команду как показано на рисунке №1 Рисунок №1 После этого введем исходный текст на экран консоли. Для этого будем использовать эмулятор терминала bash. Исходный код программы представлен на рисунке №2 Рисунок №2 После написания исходного кода скомпилируем hello.asm файл в hello.o и соберем исполняемый файл unix, как показано на рисунке №3
Рисунок №3 После успешной сборке файла, даже при показе ошибки nasm о том что данная версия OS X не та что надо, пакет все де соберется и успешно может быть запущен. Результат показан на рисунке №4 Рисунок №4 После этого выведем фразу показанную на рисунке №4 3 раза сверху посередине и снизу. Для этого будет использоваться консольная псевдографика поставляемая с графическим драйвером от kalibri OS- Vesa драйвер. Для этого в исходной директории от куда стартует программа должен быть файл object code vesa_x64-x86lib.o и kernel.asm. Исходный код показан на рисунках №5 и №6 соответственно. Рисунок №5 Продолжение исходного кода представлено на рисунке №6. Изложение исходного кода в картинках обусловлено запретом на копирование данного кода сторонними лицами. Рисунок №6(продолжение исходного кода из рисунка №5) Теперь выполним данный.asm пакет. Для этого введем в консоль все те же команды как и на рисунке №4. Результат выполнения показан на рисунке №7. Хотелось бы заметить что данный метод использования псевдо графики и свободный драйвер vesa будет работать лишь с Unix системами. На OS X работа некорректна из за закрытого ядра Darwin. Но все же этот метод работает в частных случаях. Позиционирование используя псевдографику осуществляется при помощи построчных отступов от искомого значения.
Рисунок №7 Аналогичным методом выводим на экран слово «LABA». Листинг аналогичный, результат показан на рисунке №8 Рисунок №8
Контрольные вопросы 1. Структура программы на языке ассемблера. 2. Этапы выполнения программы. 3. Функции вывода 9h и 2h int 21h. 4. Как создается исходный файл? 5. Расширение исходного файла. 6. Имя транслятора. 7. Что делает транслятор? 8. Какие выходные файлы получаются в результате трансляции? (с какими расширениями) 9. Пример командной строки запуска транслятора. 10. Имя компоновщика. 11. Какие файлы являются входными при компоновке? 12. Какие файлы являются выходными при компоновке? 13. Какое расширение имеет исполняемый файл? 14. Пример командной строки запуска компоновщика. 15. Как можно посмотреть файл листинга? Ответы на вопросы 1.Программы на языке ассемблера состоят из каоманд, макрокоманд, деректив, операнд. Сама программа состоит из модулей: .686p-разрешенные команды Pentium 6 .model flat-плоская модель памяти(только WinNT) .data-сегменты прораммы с данными .code-содержание кода start: метка некая команда end start Каждый блок содержит end дерективу для обозначения конца схемы 2.Этапы выполнения: код.asm---ассемблирование.o---компановка Unix исполняемый файл. 3.int21h прерывание DOS функций большн сотни. Рядом всегда mov ah, 01h-ввод с клавиатуры к примеру. 02h-вывод на дисплей. 9h –функция вывода. 4-15. Устно. Заключение В данной лабораторной работе познакомился с низкоуровневым языком программирования assembler, а именно с его расширенной версией nasm. Также на практике с помощью псевдографики и консольным позиционирования графического свободного драйвера vesa вывел в консоли псевдографику, и 3 раза один и тот же текст в разных местах консоли.
Список литературы 1. wikiTaxi // Assembler NASM 2. wikiTaxi // Основные команды NASM 3. wikiTaxi // Ядро Darwin 4. wikiTaxi // Компиляция пакетов
|