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




1. Постановка задачи. Написать программу, которая выводит на экран строчку "Привет!".

2. Разработка алгоритма программы. Алгоритм линейный, разработки не требует.

3. Формализация (запись) алгоритма

В текстовом редакторе создаем файл privet.asm и записываем в него следующий код (без номеров строк):

 

    data segment ;описание сегмента данных
      mes db 'Привет!$' ;строка для вывода на экран. '$' - признак конца строки
    data ends ;конец сегмента данных
         
    code segment ;начало сегмента кода
    start: ;метка start - начало нашей программы
      assume cs:code, ds: data ;директива компилятора
      mov ax, data ;настройка сегмента данных
      mov ds, ax  
         
      mov ah, 9 ;функция №9 - вывод строки на экран
      lea dx, mes ;берём адрес строки
      int 21h ;вызов прерывания для вывода строки
         
      mov ax, 4c00h ;функция завершения программы
      int 21h ;завершаем программу
    code ends ;конец сегмента кода
    end start ;конец программы с точкой входа start
  1. Компиляция программы
    masm privet.asm
  2. Компоновка программы
    link privet.obj
  3. Запуск и тестирование
    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, 'Выводим с новой строки...$'

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

Написать программу, которая выводит одно под другим следующие сообщения.

Создать EXE-файл.

 

Привет!

Меня зовут компьютер!

До свидания!

 

 

Критерии оценок:

5 – работа выполнена полностью (решена поставленная задача). В тексте программы нет синтаксических ошибок. Разработан оптимальный алгоритм решенной задачи.

4 – работа выполнена полностью (решена поставленная задача). В тексте программы нет синтаксических ошибок. Разработан не оптимальный алгоритм решенной задачи.

3 – работа выполнена полностью (решена поставленная задача). В тексте программы допущены синтаксические ошибки. Разработан не оптимальный алгоритм решенной задачи.

2 – поставленная задача не была реализована.

 

 


Практическая работа №3

Разработка COM-программ.

Цель занятия: научиться разрабатывать программы, написанные на языке программирования низкого уровня Assembler и формировать com-файлы.

 

Ассемблирование

Программа-ассемблер (MASM, TASM, WASM, NASM и пр.) создает объектный файл с расширением OBJ. Данный файл является переходным между ассемблерным файлом (ASM) и программой (COM).

Компоновка

Если в процессе ассемблирования не было выявлено ошибок в ассемблерном листинге, то программа-ассемблер создаст объектный файл (с расширением OBJ).

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

Именно компоновщик создает готовый к запуску файл (программу) с расширением COM или EXE из объектного файла (OBJ). Оба типа имеют отличия в структуре ассемблерной программы. Первый тип (COM) не может превышать 64 Кбайт и используется только в MS-DOS (и для совместимости поддерживается в Windows), однако он очень компактный и удобный для написания небольших программ и резидентов. В большинстве случаев, если программа написана на чистом ассемблере под MS-DOS, нет необходимости создавать EXE-файлы.

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

Линковщик также проверяет, нет ли каких-либо ошибок в объектном файле, но не грамматических, а логических. Например, отсутствие необходимой объектной библиотеки, указанной в самом файле либо в командной строке (программа-ассемблер этого не делает).

Если ошибки не были обнаружены, компоновщик создает машинный код (программу типа COM или EXE), которую можно запускать на выполнение.

ПРИМЕЧАНИЕ

Исходя из всего вышеизложенного, делаем вывод, что для создания машинного кода необходимо воспользоваться как минимум двумя программами: программой-ассемблером и компоновщиком. Однако для MASM версий 6.00—6.13 достаточно запустить файл ml.exe, указав в командной строке параметр /AT в процессе ассемблирования. В таком случае MASM (если не было ошибок в ассемблерном листинге) автоматически запустит компоновщик (LINK.EXE), который создаст файл типа COM.

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-10-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: