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

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

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

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

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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