Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовик.docx
Скачиваний:
1
Добавлен:
21.09.2019
Размер:
531.2 Кб
Скачать

Введение

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

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

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

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

Знание ассемблера дает глубокое понимание работы компьютера и операционной системы. Даже если вы пишете программу на языке высокого уровня, знание ассемблера поможет понять, как будет выполняться программа, как хранятся переменные, как вызываются функции. А это позволит избежать многих очень неприятных ошибок. Есть такие люди, которые знают программирование только на уровне языка. То есть знают, что надо написать, чтобы получить какой-то результат. А как оно работает, для них остается тайной, покрытой мраком. Человек, владеющий ассемблером, будет лучше программировать и на других языках.

ЦЕЛИ КУРСОВОГО ПРОЕКТА

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

Текст индивидуального задания по варианту:

Найти скалярное произведение двух векторов.

Алгоритм решения на ЯВУ(java):

class asm1 {

int[] vec1 = {1, 2, 3};

int[] vec2 = {1, 2, 3};

public int scalMul() {

int res = 0

for(int i = 0; i < vec1.length; i++)

res += vec1[i]*vec2[i];

return res;

}

}

Схема алгоритма решения задачи: (i – индекс (сдвиг), res – результат)

начало

vec1 = {1, 2, 3}; vec2 = {4, 5, 6}; i = 0

да

нет

i < 9

конец

res = vec1[i]*vec2[i] i = i+3;

Текст программы на языке ассемблера:

H Laba | Laba start 0

T 000 04003B | ldx null

T 003 100020 | stx res

T 006 008023 | m1 lda vec1,x

T 009 20802C | mul vec2,x

T 00C 180020 | add res

T 00F 0C0020 | sta res

T 012 AC10 | rmo x,a

T 014 180035 | add i

T 017 AC01 | rmo a,x

T 019 280038 | comp c9

T 01C 380006 | jlt m1

T 01F FF | hlt

| ;

T 020 | res resb 3

T 023 000001 | vec1 word 1

T 026 000002 | word 2

T 029 000003 | word 3

T 02C 000004 | vec2 word 4

T 02F 000005 | word 5

T 032 000006 | word 6

T 035 000003 | i word 3

T 038 000009 | c9 word 9

T 03B 000000 | null word 0

E 000 | end Laba