Меню Закрыть

Как писать программы на ассемблере

Введение
Теоретическая часть
1Архитектура компьютера
Лабораторный практикум
1Создание программы на языке ассемблера
2Применение функций DOS и BIOS
3Линейные алгоритмы
4Десятичная арифметика
5Команды передачи управления
6Циклы с условием
7Циклы со счетчиком
8Работа с массивами
9Цепочечные команды
Приложения
1Таблица кодов символов ASCII
2Функции DOS и BIOS
Гостевая книга

Лабораторная работа №1

Создание программы на языке ассемблера

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

  1. Постановка задачи (точное и подробное описание функциональности будущей программы, а также описание всех входных и выходных данных и способа их передачи программе);
  2. Разработка алгоритма программы (построение блок схемы, граф-схемы или текстовое или математическое описание решения);
  3. Формализация алгоритма (запись алгоритма на языке программирования).
    Создание текстового файла программы с расширением .asm (например my.asm ). Отсутствие среды разработки позволяет программисту самостоятельно выбрать текстовый редактор для написания кода программы. Для этой цели подойдет любой текстовый редактор с нумерацией строк, мы рекомендуем редактор, встроенный в оболочку "FAR Manager".
  4. Компиляция программы;
    Компиляция – процесс перевода программы из текстового вида в машинный код. При использовании компилятора фирмы Borland необходимо выполнить:
    tasm my.asm
    т.е. запускаем компилятор tasm и передаем с командной строки имя файла, содержащего программу. Если программа имеет синтаксические ошибки, компилятор выдаст сообщение об ошибке с указанием номера строки и описанием для каждой ошибки (нужно вернуться на этап №3 и исправить синтаксические ошибки).
    В случае успешной компиляции будет создан файл, содержащий объектный код программы my.obj , который ещё не является исполняемым модулем.
  5. Компоновка программы;
    Компоновка – создание из файла объектного кода исполняемого модуля.
    tlink my.obj
    В качестве параметра компоновщик tlink принимает имя файла содержащего объектный код программы (в нашем случае – my.obj ). В случае успешной компоновки будет создан исполняемый модуль my.exe
  6. Запуск и тестирование исполняемого модуля программы.
    На данном этапе необходимо проверить, соответствует ли написанная программа постановке задачи, сделанной нами на этапе №1. Неправильная работа программы говорит об алгоритмической ошибке (семантическая ошибка), поэтому для успешного её устранения нужно вернуться на этап разработки алгоритма (этап №2).
Читайте также:  Сброс счетчика отработки памперса в принтерах epson

Написание первой программы на языке ассемблера

  1. Постановка задачи. Написать программу, которая выводит на экран строчку "Привет!".
  2. Разработка алгоритма программы. Алгоритм линейный, разработки не требует.
  3. Формализация (запись) алгоритма
    В текстовом редакторе создаем файл privet.asm и записываем в него следующий код (без номеров строк) :
1data segment;описание сегмента данных2mes db ‘Привет!$’;строка для вывода на экран. ‘$’ – признак конца строки3data ends;конец сегмента данных45code segment;начало сегмента кода6start:;метка start – начало нашей программы7assume cs:code, ds: data;директива компилятора8mov ax, data;настройка сегмента данных9mov ds, ax1011mov ah, 9;функция №9 – вывод строки на экран12lea dx, mes;берём адрес строки13int 21h;вызов прерывания для вывода строки1415mov ax, 4c00h;функция завершения программы16int 21h;завершаем программу17code ends;конец сегмента кода18end start;конец программы с точкой входа start

  • Компиляция программы
    tasm privet.asm
  • Компоновка программы
    tlink privet.obj
  • Запуск и тестирование
    privet.exe
  • Описание программы privet.asm

    Строки 1 – 3 программы privet.asm содержат описание сегмента данных. Сегмент данных – область память, в которой будут храниться данные для наших программ.
    Строки 5 – 17 — это код программы, её исполняемая часть.
    В 8 и 9 строках выполняется настройка сегмента данных программы.
    Строки 11 – 13 — вывод строки на экран при помощи функции №9 прерывания 21h (подробнее о функциях и работе с ними на следующей лабораторной работе).
    15 и 16 строки — стандартное завершение программы.
    После символа ‘;’ пишутся комментарии, они не обрабатываются компилятором.

    Переход на новую строку

    Для организации перехода на новую строку достаточно вывести на экран символы перевода строки и возврата каретки (CR/LF). Эти символы имеют коды 10 и 13. Если в нашей программе необходимо после вывода строки перейти на новую, то для этого достаточно переписать вторую строку программы:

    mes2 db ‘Выводим строку и переходим на новую. ‘, 10 , 13 , ‘$’

    Переход на новую строку можно выполнить и до вывода сообщения на экран:

    mes3 db 10 , 13 , ‘Выводим с новой строки. $’

    Задание для выполнения

    Написать программу, которая выводит одно под другим следующие сообщения:
    Привет!
    Меня зовут компьютер!
    До свидания!

    Наша первая программа на ассемблере.

    Наша первая программа на ассемблере будет в формате *.COM — как мы уже знаем, исполняемые файлы указанного формата очень крохотные (tiny) по размеру и состоят из одного сегмента, в котором размещаются код, данные и стек.

    Читайте также:  Что такое digital tv tuner

    Ещё мы знаем, что в указанном формате пишутся резидентные программы, драйверы и вирусы.

    Резидентная (TSR-программа, от англ. Terminate and Stay Resident) — это программа, которая после запуска передает управление операционной системе, но сама не завершается, а остаётся в оперативной памяти, реагируя на определённые действия пользователя. Например, при нажатии сочетания горячих клавиш делает снимок экрана.

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

    Наша первая программа выведет на экран монитора (консоль) надпись «Hello, World!». Итак, как говорил Юрий Алексеевич, поехали!

    Создаём исполняемый файл PRG.COM.

    Для достижения нашей цели делаем следующее.

    • Скачиваем с нашего сайта архив (DOS-1.rar) с предустановленными DOSBox и программами. Запускаем DOSBox. Стартует эмулятор MS-DOS и Norton Commander пятой версии.
    • В папке D:TASM.2_0TASM находим текстовый файл PRG.ASM. Это обычный текстовый файл, который можно создать
      с помощью любого текстового редактора, с расширением ASM вместо TXT.
    • В файл вносим код:
    • В папке D:TASM.2_0TASM находим «батник» ASM-COM.BAT со следующим текстом:

    Первая сторка — запуск транслятора с названием нашего файла с кодом, расположенного в одной директории с транслятором.

    Вторая строка — запуск компилятора с параметрами /t /x и название объектного файла — prg.obj, получившегося в результате выполнения первой команды.

    Чтобы посмотреть список всех возможных параметров с пояснениями для файлов tasm.exe и tlink.exe необходимо запустить эти программы без параметров. Если вы сделаете это, не выходя из оболочки NC, то, чтобы просмотреть чистое окно DOS нажмите Ctrl+O, чтобы вернуться в NC, нажмите сочетание клавиш повторно.

    • После запуска ASM-COM.BAT в этой же директории появится файл prg.com. Запустив его мы увидим сообщение «Hello World!» в окне MS-DOS (при необходимости просмотра, снова применяем Ctrl+O).

    Батник ASM-EXE.BAT предназначен для создания исполняемого файла формате *.EXE (предусматривает раздельную сегментацию для кода, данных и стека — наиболее распространённый формат исполняемых файлов DOS).

    Батник COMPLEX.BAT предназначен для создания исполняемых файлов из двух файлов кода (названия обязательно должны быть prg.asm, prg1.asm).

    Наша первая программа на ассемблере прекрасно работает!

    TASMED (Tasm Editor) — среда разработки приложений DOS на ассемблере.

    Выше мы рассмотрели стандартный подход к программированию на TASM в системе MS-DOS. Указанным алгоритмом создания программ можно пользоваться и далее.

    Читайте также:  Pocketcam для windows 10

    Для более удобной работы с кодом целесообразно применять какую-либо среду разработки. Среда разработки — это громко сказано для времён MS-DOS, правильнее сказать — специфический редактор.

    Можете попробывать TASMED в папке D:UTILSTASMED. Программа уже настроена и готова к использованию.

    Первая программа на ассемблере в среде разработки TASMED.

    • подсветка ассемблерного синтаксиса;
    • возможность сохранения проектов под любым именем и в любой директории;
    • работа как с TASM, так и MASM.
    • только английский язык интерфейса, но английский программист должен знать лучше русского;
    • слишком много настроек для текстового редактора.
      Хотя, в принципе, настройки — не проблема. Основное, что необходимо настроить — это соответствующие пути:
      Options->External->Assembler
      Options->External->Linker
      В общем, разобраться не сложно.

    Практические советы: группирование проектов, русский язык в MS-DOS.

    Для удобства группирования создаваемых программ можно создать отдельную папку (мы создали папку PROJECTS) в которой создавать папки названий проектов, куда копировать соответствующие файлы. Пока у нас — это PRG.ASM, PRG.OBJ, PRG.EXE. Однако, в зависимости от параметров и наших программ их может быть больше (PRG.MAP, PRG.SYM и др.).

    В нашем случае, все программы, рассматриваемые в курсе обучения будут группироваться в директории D:WORK в соответствующих папках. Например, наша первая программа в папке D:WORKPRGCOM (файлы prg.asm и prg.com). Папку D:TASM.2_0PROJECTS оставляем пустой для ваших проектов и экспериментов.

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

    1. Запустить драйвер русской раскладки клавиатуры. В нашей запущенной MS-DOS системе на базе DOSBox это файл C:KEYRUSkeyrus.com. Впрочем, при запуске MS-DOS согласно нашим настройкам DOSBox, он запустится автоматически. При этом будет обеспечено не только отображение русского текста в текстовых редакторах, но и русскоязычная раскладка клавиатуры. Переключение раскладки Eng->Rus и наоборот — горячая клавиша «правый CTRL».
    2. Текст исходников необходимо писать в текстовых редакторах или средах разработки DOS.
    3. Если исходники пишутся в Windows редакторах, должна быть обеспечена русскоязычная кодировка текста — ASCII для DOS (CP866 или OEM866).

    Русскоязычная кодировка текста — программа просмотра файлов Total Commander. Русскоязычная кодировка текста — используем Notepad++.

    Конечно вопрос снимается сам собой, если комментарии писать на английском.

    В следующей статье мы разберём код нашей первой программы на ассемблере.

    Рекомендуем к прочтению

    Добавить комментарий

    Ваш e-mail не будет опубликован. Обязательные поля помечены *

    *

    code

    Adblock
    detector