Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Что такое язык ассемблера?






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

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

Программы, написанные на языке ассемблера, требуют значительно меньшего объема памяти и времени выполнения. Знание программистом языка ассемблера и машинного кода дает ему понимание архитектуры машины. Несмотря на то, что большинство специалистов в области программного обеспечения разрабатывают программы на языках высокого уровня, таких, как Object Pascal или C, наиболее мощное и эффективное программное обеспечение полностью или частично написано на языке ассемблера.

Языки высокого уровня были разработаны для того, чтобы освободить программиста от учета технических особенностей конкретных компьютеров, их архитектуры. В противоположность этому, язык ассемблера разработан с целью учесть конкретную специфику процессора. Сдедовательно, для того, чтобы написать программу на языке ассемблера для конкретного компьютера, важно знать его архитектуру [57].

В качестве примера приведем программу на языке ассемблера для IBM PC. Программа вычисляет значение a = b + c для целых a, b и c:

.MODEL SMALL.DATA b DW 5 c DW 3 a DW?.CODE begin MOV AX, @DATA MOV DS, AX MOV AX, B ADD AX, C MOV A, AX MOV AH, 4CH INT 21H END begin Директива.MODEL задает механизм распределения памяти под данные и команды. Директива.DATA определяет начало участка программы с данными. Директивы DW задают типы переменных и их значения. Директива.CODE определяет начало участка программы с командами. Команды MOV AX, @DATA и MOV DS, AX записывают адрес сегмента данных в регистр DS (Data Segment). Для вычисления a используются команды MOV AX, B, ADD AX, C и MOV A, AX. В директиве END задана метка первой выполняемой программы программы begin.
 

 

Перевод программы с языка ассемблера на машинный язык осуществляется специальной программой, которая называется ассемблером и является, по сути, простейшим транслятором.

Билет №3

 

Для каких целей используются подпрограммы?

Подпрограммы

При составлении программ для решения задач часто приходится в различных местах программы выполнять одну и туже последовательность операторов, но с разными значениями переменных. В том случае указанную последовательность операторов следует оформить в виде подпрограммы.

Подпрограмма – это выделенный в самостоятельную единицу участок программы, имеющий собственное имя, которое позволяет вызвать подпрограмму из основной программы.

Такими подпрограммами в ЯП Pascal являются процедуры и функции.

В программе описание процедур и функций должно располагаться между разделами описания переменных и основной программой. Структура процедур и функций аналогична структуре полной программы.

Процедура – особым образом оформленный фрагмент программы, имеющий собственное имя и выполняющий некую последовательность дей ствий.

Общий вид процедуры:

Procedure < имя процедуры > (< параметр 1: тип;...; параметр N: тип >); < описательная часть >; 
 begin

< тело процедуры >

end;

Параметры, используемые в заголовке процедуры, являются формальными.

Формальные параметры – это наименования переменных, через которые передается информация из программы в процедуру (функцию) либо из процедуры (функции) в программу.

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

Общий вид оператора вызова процедуры:

< имя процедуры > (параметр 1, параметр 2,...); 
 Здесь параметр 1, параметр 2,... - фактические параметры.
 Фактические параметры – это наименования переменных, значения которых при

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

вызывающей программе на оператор, следующий за оператором вызова процедуры.
 Между фактическими и формальными параметрами должно быть взаимно однозначное

соответствие по количеству, порядку следования и типу.

Функция – особым образом оформленный фрагмент программы, имеющий собственное имя и вычисляющий единственное значение функции. Результат работы функции возвращается в виде значения этой функции.

Общий вид функции:

Function < имя функции > (< параметр 1: тип;...; параметр N: тип >): < тип результата >;

< описательная часть >;

begin

end;

В теле функции нужно осуществить присваивание ей вычисленного значения. < имя функции >: = < результат >;

Параметры, используемые в заголовке функции, являются формальными.

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

< тело функции >

Общий вид оператора вызова функции:

< имя функции > (параметр 1, параметр 2,...); 
 Здесь параметр 1, параметр 2,... - фактические параметры.
 Пример, составить программу нахождения суммы максимальных чисел из a и b и c и d.

Program Summa; 
 Var a, b, c, d, S: integer;

Function Max (x, y: integer): integer; begin

If x> y Then Max: = x Else Max: = y;

end; begin

Write (‘Введите a, b, c, d ‘); ReadLn (a, b, c, d); S: = Max (a, b) + Max (c, d); 
 Write (‘S=‘, S); 
 End.


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

mylektsii.su - Мои Лекции - 2015-2024 год. (0.012 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал