Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет ОМТ 123.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
478.21 Кб
Скачать

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

3

  1. ОБЩАЯ ЧАСТЬ

4-5

1.1 История появления ассемблера

4-5

1.2 TASM,MASM и др.

6-7

1.3 Получение исполняемого файла

8-9

1.4 Регистры модели Х86

1.5 Организация цикла

1.6 Условный и безусловный переход

1.7 Особенности работы с графикой

10-14

15-18

19-21

22-23

  1. СПЕЦИАЛЬНАЯ ЧАСТЬ

24

2.1 Постановка задачи №1

24

2.1.1 Выходная форма задачи №1

24

2.1.2 Листинг задачи №1

25-26

2.2 Постановка задачи №2

27

2.2.1 Выходная форма задачи №2

27

2.2.2 Листинг задачи №2

28-29

2.3 Постановка задачи №3

30

2.3.1 Выходная форма задачи №3

30

2.3.2 Листинг задачи №3

31-32

2.4 Постановка задачи №4

33

2.4.1 Выходная форма задачи №4

33

2.4.2 Листинг задачи №4

34-35

Заключение

36

Список литературы

37

Стр.

ВВЕДЕНИЕ

Ассе́мблер (от англ. assembler — сборщик) — транслятор исходного текста программы, написанной на языке ассемблера, в программу на машинном языке.

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

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

  1. Общая часть

    1. История появления ассамблера

Системы команд даже самых современных автоматических устройств, в том числе компьютеров, очень примитивны и часто ограничиваются набором элементарных команд (например, сложить два числа, записать число в заданную ячейку памяти и т.д.). Каждая команда имеет собственный двоичный код. Именно по двоичному коду автоматическое устройство распознает и выполняет команду.

Представление алгоритма в виде последовательности двоичных кодов называется программой. Программа записывается в отдельном исполняемом файле ( например exe для windows-систем ) . Таким образом, программа – это алгоритм, предназначенный для выполнения компьютером. Двоичное представление команд компьютера называется машинным кодом. Первая программа на компьютере, написанная в машинных кодах, была запущена в 1948 году в Англии. До 1950 года все программы для компьютеров составлялись исключительно в машинных кодах. Такой способ составления программ был очень трудоемким, так как алгоритм необходимо было детализировать до элементарных действий, которым отвечали команды компьютера. Как следствие, программы были громоздкими, содержали большое количество ошибок, для выявления и удаления которых, в свою очередь, требовалась кропотливая и продолжительная работа.

Довольно скоро стало понятно, что процесс формирования машинного кода можно автоматизировать. Уже в 1950 году для записи программ начали применять мнемонический язык – язык assembly. Язык ассемблера позволил представить машинный код в более удобной для человека форме: для обозначения команд и объектов, над которыми эти команды выполняются, вместо двоичных кодов использовались буквы или сокращенные слова, которые отражали суть команды. Например, на языке ассемблера команда сложения двух чисел обозначается словом add, тогда как ее машинный код может быть таким: 000010. Запись программы на языке ассемблера фактически является тем же машинным кодом, только представленным с помощью специальных обозначений.

Ассемблер можно отнести к языкам второго поколения, если за первый принять машинный код. Появление этого языка на свет, очень облегчало жизнь программистов. Теперь вместо рябящих в глазах нулей и единиц, они могли писать программу командами, состоящими из символов приближенных к обычному языку. Для того времени этот язык был новшеством и пользовался популярностью т.к. позволял писать программы небольшого размера, что при тех машинах критерий значительный. Но сложность разработки в нём больших программных комплексов привела к появлению языков третьего поколения – языков высокого уровня. Но на этом жизнь ассемблера не закончилась, он жив и посей день и не только жив, но и пользуется популярностью в узких кругах. Сейчас его используют в написании отдельных фрагментов программ или иногда в написании самих программ. Примеров может быть много, но самые яркие это использование ассемблера в написании драйверов, игр и загрузчиков ОС.

    1. TASM, MASM и др.

Turbo Assembler (TASM) — программный пакет компании Borland, предназначенный для разработки программ на языке ассемблера для архитектуры x86. Кроме того, TASM может работать совместно с трансляторами с языков высокого уровня фирмы Borland, такими как Turbo C и Turbo Pascal. Как и прочие программные пакеты серии Turbo, Турбо Ассемблер больше не поддерживается.

TASM до сих пор используется для обучения программированию на ассемблере под архитектуру x86. Многие находят его очень удобным и продолжают его использовать, расширяя набором дополнительных макросов.

По умолчанию TASM работает в режиме совместимости с другим распространённым ассемблером — Microsoft Macro Assembler, то есть TASM умеет транслировать исходники, разработанные под MASM. Кроме того, TASM имеет режим IDEAL, улучшающий синтаксис языка и расширяющий его функциональные возможности. Последнее развитие компилятор получил благодаря современной среде разработки TASM Visual. С ее помощью работа с компилятором многократно упрощается.

Macro Assembler (MASM) — ассемблер для процессоров семейства x86. Первоначально был произведён компанией Microsoft для написания программ в операционной системе MS-DOS и был в течение некоторого времени самым популярным ассемблером, доступным для неё. Это поддерживало широкое разнообразие макросредств и структурированность программных идиом, включая конструкции высокого уровня для повторов, вызовов процедур и чередований (поэтому MASM — ассемблер высокого уровня). Позднее была добавлена возможность написания программ для Windows. MASM — один из немногих инструментов разработки Microsoft, для которых не было отдельных 16- и 32-битных версий.

Flat Assembler (fasm) — свободно распространяемый многопроходной ассемблер, написанный Томашем Грыштаром (польск. Tomasz Grysztar). fasm самодостаточен, изначально компилировался TASM`ом и стал способен собираться из собственных исходных кодов начиная с версии 0.90 (4 мая 1999). fasm обладает небольшими размерами и очень высокой скоростью компиляции, имеет богатый и ёмкий макро-синтаксис, позволяющий автоматизировать множество рутинных задач. Поддерживаются как объектные форматы, так и форматы исполняемых файлов. Это позволяет в большинстве случаев обойтись без компоновщика. В остальных случаях нужно использовать сторонние компоновщики, поскольку таковой вместе с fasm не распространяется.

Помимо базового набора инструкций процессора и сопроцессора fasm поддерживает наборы инструкций MMX, SSE, SSE2, SSE3, SSSE3,SSE4.1, SSE4.2, SSE4a, AVX и 3DNow!, а также EM64T и AMD64(включая AMD SVM и Intel SMX).

Компиляция программы в fasm состоит из 2 стадий: препроцессирование и ассемблирование.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]