Программирование на языке ассемблера — КиберПедия 

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

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

2022-11-24 23
Программирование на языке ассемблера 0.00 из 5.00 0 оценок
Заказать работу

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ АССЕМБЛЕРА

С ИСПОЛЬЗОВАНИЕМ КОМПИЛЯТОРА TASM

 

Орёл

ОГУ имени И.С. Тургенева

2020

УДК

ББК

К 655        

Рецензенты:

кандидат технических наук, доцент кафедры «Программная инженерия»

федерального государственного бюджетного

образовательного учреждения высшего образования

«Орловский государственный университет имени И.С. Тургенева»

А.П. Гордиенко,

 

доктор технических наук, директор ООО

«Научно-производственное предприятие «Энергия»

С.П. Петров

 

 

Конюхова, О.В.

Программирование на языке ассемблера с использованием компилятора TASM/ О.В. Конюхова, Э.А. Кравцова. – Орёл: ОГУ имени И.С. Тургенева, 2020. – 35 с.

 

К 655 Учебное пособие содержит сведения о процессе разработки программ на языке ассемблера с использованием программного пакета TASM, что позволяет закрепить теоретические знания об организации и функционировании фон-неймановских вычислительных машин на практике путем разработки ассемблерных программ.

Учебное пособие соответствует содержанию программ учебных дисциплин «Архитектура ЭВМ и систем» для студентов направлений 09.03.01 «Информатика и вычислительная техника», 09.03.02 «Информационные системы и технологии», 09.03.04 «Программная инженерия»; «Вычислительные системы, сети и телекоммуникации» для студентов направления 09.03.03 «Прикладная информатика».

Предназначено для студентов направлений 09.03.01 «Информатика и вычислительная техника», 09.03.04 «Программная инженерия», 09.03.02 «Информационные системы и технологии», 09.03.03 «Прикладная информатика». Может быть полезно студентам других специальностей при изучении информатики и программирования.

 

УДК

ББК

© ОГУ имени И.С. Тургенева, 2020

Содержание

 

ВВЕДЕНИЕ 4

1. СТРУКТУРА ПРОГРАММЫ НА ЯЗЫКЕ АССЕМБЛЕРА 5

1.1 Общее описание программы 5

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

1.3 Общий формат ассемблерной команды 7

1.4 Определение данных 8

1.5 Программа сложения двух чисел 11

2. РАЗРАБОТКА ПРОГРАММЫ В КОМПИЛЯТОРЕ TASM 14

2.1 Компиляторы языка ассемблера 14

2.2 Процесс разработки программы на языке ассемблера 17

2.3 Подготовка к исполнению программы на языке ассемблера с 19

использованием TASM и DosBox 19

2.4 Отладка программы на языке ассемблера в Turbo debugger 26

ЛИТЕРАТУРА 33


ВВЕДЕНИЕ

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

Успешное освоение теоретических знаний об организации и принципах работы современных компьютеров подкрепляется решением практических задач, в частности, разработки программ на языке ассемблера.

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

Данное учебное пособие соответствует содержанию программ учебных дисциплин «Архитектура ЭВМ и систем» для студентов направлений 09.03.01 «Информатика и вычислительная техника», 09.03.02 «Информационные системы и технологии», 09.03.04 «Программная инженерия»; «Вычислительные системы, сети и телекоммуникации» для студентов направления 09.03.03 «Прикладная информатика». Может быть полезно студентам других направлений при изучении информатики и программирования.

 

Общее описание программы

Программа на языке ассемблера представляет собой совокупность блоков памяти – сегментов. Сегменты программы имеют определенное назначение, соответствующее типу сегментов: кода, данных и стека. Названия типов сегментов отражают их назначение. Каждый сегмент содержит совокупность предложений языка, каждое из которых занимает отдельную строку кода программы.

Можно выделить четыре типа предложений языка ассемблера [4, 14, 16, 17]:

1. Команды или инструкции, представляющие собой символические аналоги машинных команд. В процессе трансляции инструкции ассемблера преобразуются в соответствующие команды системы команд процессора.

2. Макрокоманды – оформляемые определенным образом предложения текста программы, замещаемые во время трансляции другими предложениями.

3. Директивы, являющиеся указанием транслятору ассемблера на выполнение некоторых действий. У директив нет аналогов в машинном представлении.

4. Комментарии, содержащие любые символы, в том числе и буквы русского алфавита. Комментарии игнорируются транслятором.

Для распознавания этих предложений компилятором их нужно записывать в соответствии с определёнными синтаксическими правилами.

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

Общепринятого стандарта для синтаксиса языков ассемблера не существует. При написании программ можно придерживаться общих традиционных подходов. Наиболее распространенные варианты синтаксиса: AT & T и Intel [4, 7, 8, 13]. Кратко рассмотрим основные особенности и отличия между ними.

1. Комментарий по правилам AT&T начинается с символа «#», а не «;» как в Intel. В свою очередь символ «;» разделяет команды и позволяет записывать несколько команд в одной строке.

2. По правилам AT&T имена регистров процессора начинаются с символа «%». Например,

Синтаксис AT&T Синтаксис Intel
%ax, %bh, %dl ax, bh, dl

3. Числовые константы в синтаксисе AT&T записываются с символом «$». Например,

Синтаксис AT&T Синтаксис Intel
$0x20 20h

4. Размер операнда определяется как суффикс в имени команды (инструкции):

b (от byte) – операнды размером 1 байт;

w (от word) – операнды размером 2 байта (слово);

l (от long) – операнды размером 4 байта (двойное слово).

5. По правилам AT&T в командах порядок операндов следующий: вначале источник (src), затем приемник (dst).

В Intel наоборот – сначала приемник (dst), затем источник (src). Например,

 

Синтаксис AT&T Синтаксис Intel
movb %al,%ah mov ah,al
subw $0x25,%ax sub ax,25h
movw $1,%dx mov dx,1

6. Отсутствие префикса операнда в синтаксисе AT&T указывает на адрес в памяти. Например, приведенная ниже команда пересылает значение, хранящееся в памяти по адресу a, в регистр bx.

Синтаксис AT&T Синтаксис Intel
movw a,%bx mov bx,a

А следующая команда помещает адрес ячейки a в регистр bx.

Синтаксис AT&T Синтаксис Intel
movw $a,%bx lea bx,a

7. При использовании режимов адресации c косвенной адресацией операндов по правилам Intel используются квадратные скобки, а по правилам AT&T – круглые скобки. Например, указанная ниже команда помещает в регистр al значение, хранящееся в памяти по адресу, указанному в регистре si.

Синтаксис AT&T Синтаксис Intel
movb (%si),%al mov al,[si]

Также отличаются мнемоники некоторых команд.

Более подробные сведения об особенностях синтаксисов AT&T и Intel можно найти в документации для компиляторов языка ассемблера, поддерживающих соответствующий формат.

В дальнейшем описание структуры программ, команд, примеры фрагментов программного кода будут приводиться в формате Intel.

Определение данных

В сегменте данных можно зарезервировать определённое количество байтов для размещения исходных данных или результатов работы программы, а также указать их начальные значения. Формат операторов резервирования и инициализации данных в общем случае имеет вид:

Метка Мнемоника Операнд [,Операнд… ]   [; Комментарий ]

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

Мнемоника определяет длину каждого операнда (табл. 1.1) [16, 18]:

Таблица 1.1. Основные типы данных

Тип Мнемоника Количество байт Диапазон

Байт

DB

1

0..255
-128..127

Слово

DW

2

0..65535
-32768…32767

Двойное слово

DD

4

0...4294967295
-2147483648…2147483647

 

Операнды показывают инициализируемые данные или объем резервируемого пространства. Выражение может содержать константу или символ? для неопределенного значения.

Числовые константы используются для обозначения арифметических операндов и адресов памяти. Для числовых констант в языке ассемблера могут использоваться следующие числовые форматы.

1. Десятичный формат – допускает использование десятичных цифр от 0 до 9 и обозначается конечной буквой d, которую можно не указывать. Например, 45 или 45d.

2. Шестнадцатеричный формат – допускает использование шестнадцатеричных цифр от 0 до F и обозначается последней буквой h, например 3Fh. Если шестнадцатеричное число начинается с буквы (A, B, C, D, E, F),  то первым символом такой константы должна быть цифра от 0 до 9. Например, 0Eh.

3. Двоичный формат – допускает использование цифр 0 и 1 и обозначается в конце буквой b. Например, 00001100b.

Символьные константы могут быть представлены кодами ASCII или самими символами, заключенными в апострофы, и имеют длину один байт. Например, 4Dh или ‘M’.

Приведем несколько примеров определений данных.

a1 db 104

По адресу a 1 зарезервирована байтовая ячейка, в которую помещается число 104 в десятичной системе счисления.

 

bw dw 0FFH

По адресу bw зарезервирована двухбайтовая ячейка, в которую помещается шестнадцатеричное число 0 FF.

sym1 db ‘L’     

По адресу sym 1 зарезервирована байтовая ячейка, в которую помещается символ ‘ L ’.

По некоторому адресу можно резервировать несколько ячеек инициированных разными или одинаковыми значениями. Например, определение

arr db 2, 8, 5, 7, 3

резервирует по адресу arr 5 однобайтовых смежных ячеек со значениями, соответственно, 2, 8, 5, 7 и 3.

При инициализации массива ячеек символьными значениями также через запятую перечисляются ASCII-коды символов или сами символы в апострофах (следует помнить, что каждый символ занимает один байт). Например,

str db ‘a’, ‘s’, ‘s’, ‘e’, ‘m’, ‘b’, ‘l’, ‘e’, ‘r’

Также можно задать массив символов в виде строки, в которой слева направо перечисляются символы. Строка заключается в апострофы и для ее корректной обработки (в частности, вывода на экран) в конце указывается символ « – признак конца последовательности. Например,

str1 db ‘assembler’, ‘$’

str1 db ‘assembler$’

Данные определения резервируют 9 однобайтовых ячеек: в которых сначала перечисляются последовательно символы до знака «$», а потом символ «$».

Следует отметить, что символ «$» может использоваться в качестве признака конца не только символьной, но и числовой последовательности. Например,

arr db 2, 8, 5, 7, 3, ‘$’

Для определения большого числа ячеек с одинаковыми или повторяющимися значениями можно применять оператор повторения:

Метка Мнемоника Размер DUP (Операнд [, Операнд … ])

Метка, мнемоника и Операнды идентичны описанию аналогичных компонент, приведённых выше.

Размер – константа, характеризующая количество резервируемых ячеек. Например, определение

mas db 30 dup (1,2)

резервирует по адресу mas 30 однобайтовых ячеек с начальными значениями 1 в нечетных и 2 в четных байтах.

Согласно следующему определению,

mm1 db 15 dup (0ch)

в памяти по адресу mm 1 резервируется 15 байтовых ячеек, содержащих шестнадцатеричную цифру 0СH.

Если необходимо выделить ячейки памяти, но не инициализировать их начальными значениями, то в качестве поля Операнд используется символ?. Например, определение

arg dw 4 dup (?)

резервирует по адресу arg 4 ячейки, содержащие произвольные значения.

Далее рассмотрим подробное описание ассемблерной программы на примере программы сложения двух чисел.

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

ЛИТЕРАТУРА

1. DOSBox [Электронный ресурс]. – Режим доступа: https://ru.wikipedia.org/ wiki/ DOSBox. – Систем. требования: P IV; 64 Мб ОЗУ; Windows 98 и выше; SVGA 32768 и более цветов; 640×480; мышь; IE 4.0 и выше. – Загл. с экрана.

2. DOSBox 0.74 – эмулятор DOS-окружения на современных компьютерах [Электронный ресурс]. – Режим доступа: https://softclipper.net/utility-i-soputstvuyuschie-programmy/dosbox-0-74-emulyator-dos-okruzheniya-na-sovremennykh-kompyuterakh.html. – Систем. требования: P IV; 64 Мб ОЗУ; Windows 98 и выше; SVGA 32768 и более цветов; 640×480; мышь; IE 4.0 и выше. – Загл. с экрана.

3. MASM, TASM, FASM, NASM под Windows и Linux [Электронный ресурс]. – Режим доступа: https://habr.com/ru/post/326078/. – Систем. требования: P IV; 64 Мб ОЗУ; Windows 98 и выше; SVGA 32768 и более цветов; 640×480; мышь; IE 4.0 и выше. – Загл. с экрана.

4. Андриенко Д. Погружение в ассемблер [Электронный ресурс]. – Режим доступа: https://xakep.ru/2017/09/11/asm-course-1/#xakepcut. – Систем. требования: P IV; 64 Мб ОЗУ; Windows 98 и выше; SVGA 32768 и более цветов; 640×480; мышь; IE 4.0 и выше. – Загл. с экрана.

5. Ассемблер с нуля [Электронный ресурс]. – Режим доступа: http://assembler-code.com/. – Систем. требования: P IV; 64 Мб ОЗУ; Windows 98 и выше; SVGA 32768 и более цветов; 640×480; мышь; IE 4.0 и выше. – Загл. с экрана.

6. Выполнение программ на языке ассемблера [Электронный ресурс].– Режим доступа: http://stilus-doctus.narod.ru/tasm/ tasm_2.html. – Систем. требования: P IV; 64 Мб ОЗУ; Windows 98 и выше; SVGA 32768 и более цветов; 640×480; мышь; IE 4.0 и выше. – Загл. с экрана.

7. Записки программиста. Написание и отладка кода на ассемблере x86/x64 в Linux [Электронный ресурс].– Режим доступа: https://eax.me/linux-assembler/. – Систем. требования: P IV; 64 Мб ОЗУ; Windows 98 и выше; SVGA 32768 и более цветов; 640×480; мышь; IE 4.0 и выше. – Загл. с экрана.

8. Использование GNU ассемблера as.: Архитектурные особенности [Электронный ресурс].– Режим доступа: https://www.opennet.ru/docs/RUS/gas/gas-8.html. – Систем. требования: P IV; 64 Мб ОЗУ; Windows 98 и выше; SVGA 32768 и более цветов; 640×480; мышь; IE 4.0 и выше. – Загл. с экрана.

9. Конюхова, О.В. Программное обеспечение вычислительных машин и систем. Программирование на языке ассемблера: Практикум [Текст]/ О.В. Конюхова, Э.А. Кравцова.- Орёл: Изд-во ОГУ имени И.С. Тургенева, 2016. – 130 с.

10. Национальная библиотека имени Н.Э. Баумана. Ассемблер [Электронный ресурс]. – Режим доступа: https:// https://ru.bmstu.wiki/Ассемблер. – Систем. требования: P IV; 64 Мб ОЗУ; Windows 98 и выше; SVGA 32768 и более цветов; 640×480; мышь; IE 4.0 и выше. – Загл. с экрана.

11. Обзор языков ассемблера и макроассемблера [Электронный ресурс].– Режим доступа: https://vuzlit.ru/977980/ obzor_yazykov_ assemblera_makroassemblera. – Систем. требования: P IV; 64 Мб ОЗУ; Windows 98 и выше; SVGA 32768 и более цветов; 640×480; мышь; IE 4.0 и выше. – Загл. с экрана.

12. Пирогов, П.Ю. ASSEMBLER. Учебный курс [Текст]/ П.Ю. Пирогов. – М.: Издатель Молгачева С.В. – Нолидж, 2001. – 848 с. – ил.

13. Синтаксис команд (Intel, AT&T) [Электронный ресурс].– Режим доступа: https://stepik.org/lesson/20059/step/1?unit=4746. – Систем. требования: P IV; 64 Мб ОЗУ; Windows 98 и выше; SVGA 32768 и более цветов; 640×480; мышь; IE 4.0 и выше. – Загл. с экрана.

14. Структура программы на ассемблере [Электронный ресурс].– Режим доступа: http://kit.znu.edu.ua/eDoc/Arch/assembl/guide/Text/ Structur.htm – Систем. требования: P IV; 64 Мб ОЗУ; Windows 98 и выше; SVGA 32768 и более цветов; 640×480; мышь; IE 4.0 и выше. – Загл. с экрана.

15. Установка и настройка FASM [Электронный ресурс].– Режим доступа: http://www.manhunter.ru/assembler/ 31_ustanovka_i_nastroyka_ flat_assembler_fasm.html.– Систем. требования: P IV; 64 Мб ОЗУ; Windows 98 и выше; SVGA 32768 и более цветов; 640×480; мышь; IE 4.0 и выше. – Загл. с экрана.

16. Юров, В.И. Assembler [Текст]/ В.И. Юров.- Учебник для вузов.- 2-е издание.- СПб.: Питер, 2006.- 637 с.: ил.- ISBN: 5-94723-581-1

17. Юров, В.И. Assembler. Практика [Текст]/ В.И. Юров.- Учебник для вузов.- 2-е издание.- СПб.- Питер, 2006.- 399 с.: ил.- ISBN: 5-94723-671-0

18. Язык ассемблера [Электронный ресурс].- Режим доступа: https://prog-cpp.ru/category/asm-posts/. – Систем. требования: P IV; 64 Мб ОЗУ; Windows 98 и выше; SVGA 32768 и более цветов; 640×480; мышь; IE 4.0 и выше. – Загл. с экрана.


 

Учебное издание

 

Конюхова Оксана Владимировна

 

Кравцова Эльвира Александровна

 

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ АССЕМБЛЕРА


Поделиться с друзьями:

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.066 с.