Материалы -> Первая программа на Ассемблере

# Лабораторная работа № 1
(системное программирование и ОС)

# Введение в язык Ассемблера

## Цель работы - изучить процесс получения рабочей программы, написанной на языке программирования ассемблер. Подготовить "рабочее место" программиста. Ознакомится с синтаксисом языка программирования ассемблер.

## Работа рассчитана на два часа (одна пара)

Введение

Ассемблер - низкоуровневый язык программирования. Для написания программы на этом языке (как и на других) требуется знание синтаксиса языка.

## Синтаксис Ассемблера

Общий формат строки программы на ассемблере

<Метка>: <Оператор> <Операнды> ; <Комментарий>

Поле метки. Метка может состоять из символов и знаков подчёркивания. Метки используются в операциях условного и безусловного перехода.

Поле оператора. В этом поле содержится мнемоника команды. Например мнемоника mov

Поле операндов. Операнды могут присутствовать только если присутствует оператор (поле оператора). Операндов может не быть, а может быть несколько. Операндами могут быть данные, над которыми необходимо выполнить какие-то действия (переслать, сложить и т.д.).

Поле комментария. Комментарий нужен для словесного сопровождения программы. Всё, что стоит за символом ; считается комментарием.

Будем использоваться ассемблер для i80x86 процессора:

- TASM - Borland Turbo Assembler - компилятор
- TLINK - Borland Turbo Linker - редактор связей ( компоновщик )
- TD - Turbo Debuger - диалоговый отладчик
- TLIB - Borland Turbo Lib - "библиотекарь" (программа создания и управления библиотекой объектных модулей)

Процесс получения рабочей программы.

Кратко рассмотрим процесс получения (и загрузки для выполнения) загрузочного модуля (рабочей программы).
(здесь и далее предполагается выполнении работы в режиме "командная строка" или в "консольном" режиме. Вызов этого режима можно, например, выполнить вызвав консоль операционной системы - "ПУСК - ВЫПОЛНИТЬ - CMD").

1 шаг. Создают файл исходной программы (SOURCE файл). Обычно для этого применяют программу, называемую редактором текста (например EDIT имя_файла.ASM).
Редактор текста (или текстовый редактор) выбирается исходя из удобства работы. "Классический" текстовый редактор консоли - EDIT. Текстовый редактор, интегрированный в файловый менеджер FAR превосходит "классический" редактор по ряду параметров и может быть рекомендован для подготовки исходных файлов. Вызов менеджера FAR производится аналогично "консоли". Редактирование существующего файла - F4, создание НОВОГО файла - Shift - F4

2 шаг. Транслируют исходную программу (файл), используя программу - компилятор языка программирования ассемблер. Компилятор языка программирования "читает" исходную программу из SOURCE файла. Переводит текст программы в набор машинных команд, которые записываются в выходной файл. Полученный таким образом файл представляет собой файл объектной программы (OBJ файл). Протокол процесса перевода команд исходной программы компилятор помещает в специальный "протокольный" файл, обычно называемый "листингом" (файл «листинг» - LST файл).
Например можно использовать следующую командную процедуру
c:\tasm\bin\tasm.exe /c /r /la /ml /os /w2 /x /z /zi %1.asm,%1.obj,%1.lst

3 шаг. Связывают (или преобразовывают внутренний формат объектного файла) файл объектной программы с библиотечными программами и другими программами с помощью редактора связей, и таким образом формируют файл загрузочного модуля ( EXE файл). Этот файл содержит "полный" набор машинных команд в такой форме, при которой сразу возможна их загрузка в оперативную память и выполнение. Обычно протокол "связывания" объектных модулей помещается в файл протокола, или в файл "карты памяти" (MAP - файл)
Например можно использовать следующую командную процедуру
C:\TASM\BIN\TLINK /m /M /s /l /i /Tde /v %1.obj,%1.exe,%1.map,MY_LIB.LIB;

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

Схема работы редактора текста, ассемблера, редактора связей.

В приведенном выше примере вызова редактора связей - файл MY_LIB.LIB - файл библиотеки объектных модулей.

## Подготовка "рабочего места"

1. Создайте на указанном преподавателем или лаборантом дисплейного класса диске
   в корневом каталоге папку с именем "шифр_группы" (английскими буквами). Если методика работы в компьютерном классе предполагает у вас наличие индивидуальной папки, то возможно работать в ней.

2. Вызовите новое окно "Интернет браузера" по следующей ссылке

3. Сохраните файлы TASM.zip, a.bat, l.BAT, proba.asm, asm-help.zip, HELP.zip (правая кнопка мышки на имя файла, выбор из меню - "сохранить как...")
   в созданной Вами папке "шифр_группы"

4. Разархивируйте сохраненные архивы:
   TASM.zip - в корень диска С:
   asm-help.zip, HELP.zip - в папку "шифр_группы"
   Будьте внимательны - в указанных папках не должна появляться папка с именем архива,
   а должен быть записан набор файлов и папок с другими именами)

5. Вызовите консоль ("сеанс MSdos" - command.com или "Командная строка" - CMD).
   Настройте удобное для Вас разрешение экрана и величину шрифта.

6. Сделайте папку "шифр_группы" текущей (X: - смена диска, CD \имя_папки - смена текущей директории).

7. Создайте (или проверьте наличие в Вашей рабочей папке) двух командно - процедурных файлов:
   файл a.bat:
   echo on
   <буква_диска>:\tasm\bin\tasm.exe /c /r /la /ml /os /w2 /x /z /zi %1.asm,%1.obj,%1.lst
   файл l.bat:
   echo on
   <буква диска>:\TASM\BIN\TLINK /m /M /s /l /i /Tde /v %1.obj,%1.exe,%1.map;

8. Эти файлы уже есть в Вашей папке, и если Вы разместили систему программирования ассемблера не на диске С:, то их необходимо откорректировать.

9. Создайте (или проверьте его наличие) файл proba.asm:
   STK SEGMENT STACK
   DW 64 DUP (?)
   STK ENDS
   CODE SEGMENT PUBLIC
   ASSUME CS:CODE
   START PROC FAR
   PUSH DS ; СЕГМЕНТ АДРЕСА ВОЗВРАТА
   MOV AX,0 ; СМЕЩЕНИЕ АДРЕСА ВОЗВРАТА
   PUSH AX
   CLD ; УСТАНОВКА НАПРАВЛЕНИЯ
   MOV AX,CS ; УСТАНОВКА СЕГМЕНТНОГО РЕГИСТРА
   MOV DS,AX
   ASSUME DS:CODE
   LEA DX,MESSAGE
   MOV AH,9H
   INT 21H
   RET
   MESSAGE db 'Hello...ххххххх.',10,13, '$'
   START ENDP
   CODE ENDS
   END START

10. Выполните компиляцию программы, используя команду
    a proba
    и ее сборку
    l proba.

11. Изучите и объясните что находится в файлах *.lst, *.map, *.obj?
    Какие программы создали эти файлы? Это наиболее удобно выполнить с использованием FAR менеджера.

12. Выполните программу proba.

13. Измените программу так, что бы они выводили другой текст - например Ваше имя и фамилия.

14. Изучите файлы *.lst.

15. Вызовите и ознакомитесь с "справочными" программами HELP, asm-help
    программами - справочниками по операционной системе и assembler.

Оформите отчет по проделанной работе используя MicrosoftWORD.

Требование к оформлению отчета.

Отчет подготавливается на машинном носителе в формате Microsoft Word.
Титульная страница оформляется по обще принятым правилам. На ней в обязательном порядке указывается тема работы.
В текст отчета необходимо включить постановку задачи, листинг (снимок экрана, текст файла и т.п.) разработанного файла и результат тестирования.

Файл, содержащий текст отчета, именуется по следующему шаблону:

шифр_группы-фамилия_студента-дисциплина-номер_работы.doc

где - дисциплина указывается SP_OS (системное программирование и ОС)
и сохраняется до конца семестра.

В отчет включите описание

1. проделанных шагов работы,
2. листинги ваших программ и
3. "снимки" сеанса командной строки с результатами выполнения программ.

Примечание - все указанные в задании файлы Вы можете найти на странице

Основные контрольные вопросы.

- Что содержит файл исходного модуля?

- что содержит файл объектного модуля?

- что содержит файл загружаемого (абсолютного) модуля?

- что содержит файл листинга?

- какие программы используются для создания выше перечисленных файлов?

- какие системные программы и в какой последовательности используются для получения рабочей программы?

УСПЕХОВ В РАБОТЕ