🗊Презентация Основные директивы Ассемблера

Нажмите для полного просмотра!
Основные директивы Ассемблера, слайд №1Основные директивы Ассемблера, слайд №2Основные директивы Ассемблера, слайд №3Основные директивы Ассемблера, слайд №4Основные директивы Ассемблера, слайд №5Основные директивы Ассемблера, слайд №6Основные директивы Ассемблера, слайд №7Основные директивы Ассемблера, слайд №8Основные директивы Ассемблера, слайд №9Основные директивы Ассемблера, слайд №10Основные директивы Ассемблера, слайд №11Основные директивы Ассемблера, слайд №12Основные директивы Ассемблера, слайд №13Основные директивы Ассемблера, слайд №14Основные директивы Ассемблера, слайд №15Основные директивы Ассемблера, слайд №16Основные директивы Ассемблера, слайд №17Основные директивы Ассемблера, слайд №18Основные директивы Ассемблера, слайд №19Основные директивы Ассемблера, слайд №20Основные директивы Ассемблера, слайд №21Основные директивы Ассемблера, слайд №22Основные директивы Ассемблера, слайд №23Основные директивы Ассемблера, слайд №24Основные директивы Ассемблера, слайд №25Основные директивы Ассемблера, слайд №26Основные директивы Ассемблера, слайд №27Основные директивы Ассемблера, слайд №28Основные директивы Ассемблера, слайд №29Основные директивы Ассемблера, слайд №30Основные директивы Ассемблера, слайд №31Основные директивы Ассемблера, слайд №32Основные директивы Ассемблера, слайд №33Основные директивы Ассемблера, слайд №34Основные директивы Ассемблера, слайд №35Основные директивы Ассемблера, слайд №36Основные директивы Ассемблера, слайд №37Основные директивы Ассемблера, слайд №38

Содержание

Вы можете ознакомиться и скачать презентацию на тему Основные директивы Ассемблера. Доклад-сообщение содержит 38 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


Основные директивы Ассемблера, слайд №1
Описание слайда:

Слайд 2





Директивы сегментации
Процессор может одновременно работать:
с одним сегментом кода;
с одним сегментом стека;
с одним сегментом данных;
с тремя дополнительными сегментами данных.
Описание слайда:
Директивы сегментации Процессор может одновременно работать: с одним сегментом кода; с одним сегментом стека; с одним сегментом данных; с тремя дополнительными сегментами данных.

Слайд 3





Директивы сегментации
Описание слайда:
Директивы сегментации

Слайд 4





Директивы сегментации
Атрибут выравнивания сегмента (тип выравнивания) сообщает компоновщику о том, что нужно обеспечить размещение начала сегмента на заданной границе.  Допустимые значения атрибута:
BYTE — выравнивание не выполняется. Сегмент может начинаться с любого адреса памяти;
WORD — сегмент начинается по адресу, кратному двум (выравнивание по границе слова);
DWORD — сегмент начинается по адресу, кратному четырем, (выравнивание по границе двойного слова);
PARA — сегмент начинается по адресу, кратному 16 (выравнивание по границе параграфа);
PAGE — сегмент начинается по адресу, кратному 256 (выравнивание по границе страницы размером 256 байт);
MEMPAGE — сегмент начинается по адресу, кратному 4 Кбайт (адрес следующей страницы памяти размером 4 Кбайт).
По умолчанию тип выравнивания имеет значение PARA
Описание слайда:
Директивы сегментации Атрибут выравнивания сегмента (тип выравнивания) сообщает компоновщику о том, что нужно обеспечить размещение начала сегмента на заданной границе. Допустимые значения атрибута: BYTE — выравнивание не выполняется. Сегмент может начинаться с любого адреса памяти; WORD — сегмент начинается по адресу, кратному двум (выравнивание по границе слова); DWORD — сегмент начинается по адресу, кратному четырем, (выравнивание по границе двойного слова); PARA — сегмент начинается по адресу, кратному 16 (выравнивание по границе параграфа); PAGE — сегмент начинается по адресу, кратному 256 (выравнивание по границе страницы размером 256 байт); MEMPAGE — сегмент начинается по адресу, кратному 4 Кбайт (адрес следующей страницы памяти размером 4 Кбайт). По умолчанию тип выравнивания имеет значение PARA

Слайд 5





Директивы сегментации
Атрибут комбинирования сегментов (комбинаторный тип) сообщает компоновщику, как нужно комбинировать сегменты различных модулей, имеющие одно и то же имя. Допустимые значения атрибута:
PRIVATE — сегмент не будет объединяться с другими сегментами с тем же именем вне данного модуля;
PUBLIC — заставляет компоновщик объединить все сегменты с одинаковым именем. Новый объединенный сегмент будет целым и непрерывным;
COMMON — располагает все сегменты с одним и тем же именем по одному адресу, то есть все сегменты с данным именем перекрываются;
AT xxxx — располагает сегмент по абсолютному адресу параграфа 0). Абсолютный адрес параграфа задается выражением хххх;
STACK — определение сегмента стека. Заставляет компоновщик объединить все одноименные сегменты и вычислять адреса в этих сегментах относительно регистра SS.
По умолчанию тип выравнивания имеет значение PRIVATE
Описание слайда:
Директивы сегментации Атрибут комбинирования сегментов (комбинаторный тип) сообщает компоновщику, как нужно комбинировать сегменты различных модулей, имеющие одно и то же имя. Допустимые значения атрибута: PRIVATE — сегмент не будет объединяться с другими сегментами с тем же именем вне данного модуля; PUBLIC — заставляет компоновщик объединить все сегменты с одинаковым именем. Новый объединенный сегмент будет целым и непрерывным; COMMON — располагает все сегменты с одним и тем же именем по одному адресу, то есть все сегменты с данным именем перекрываются; AT xxxx — располагает сегмент по абсолютному адресу параграфа 0). Абсолютный адрес параграфа задается выражением хххх; STACK — определение сегмента стека. Заставляет компоновщик объединить все одноименные сегменты и вычислять адреса в этих сегментах относительно регистра SS. По умолчанию тип выравнивания имеет значение PRIVATE

Слайд 6





Директивы сегментации
Атрибут класса сегмента (тип класса) — это заключенная в кавычки строка, помогающая компоновщику определить нужный порядок следования сегментов при сборке программы из сегментов нескольких модулей. Компоновщик объединяет вместе в памяти все сегменты с одним и тем же именем класса. 
Атрибут размера сегмента. Для процессоров i80386 и выше сегменты могут быть 16- или 32-разрядными. Это влияет прежде всего на размер сегмента и порядок формирования физического адреса внутри него. 
Возможные значения атрибута:
USE16 — сегмент допускает 16-разрядную адресацию. При формировании физического адреса может использоваться только 16-разрядное смещение;
USE32 — сегмент должен быть 32-разрядным. При формировании физического адреса может использоваться 32-разрядное смещение.
Описание слайда:
Директивы сегментации Атрибут класса сегмента (тип класса) — это заключенная в кавычки строка, помогающая компоновщику определить нужный порядок следования сегментов при сборке программы из сегментов нескольких модулей. Компоновщик объединяет вместе в памяти все сегменты с одним и тем же именем класса. Атрибут размера сегмента. Для процессоров i80386 и выше сегменты могут быть 16- или 32-разрядными. Это влияет прежде всего на размер сегмента и порядок формирования физического адреса внутри него. Возможные значения атрибута: USE16 — сегмент допускает 16-разрядную адресацию. При формировании физического адреса может использоваться только 16-разрядное смещение; USE32 — сегмент должен быть 32-разрядным. При формировании физического адреса может использоваться 32-разрядное смещение.

Слайд 7





Директивы сегментации
Описание слайда:
Директивы сегментации

Слайд 8





Директивы сегментации
Все сегменты сами по себе равноправны, так как директивы SEGMENT и ENDS не содержат информации о функциональном назначении сегментов. Для того чтобы использовать их как сегменты кода, данных или стека, необходимо предварительно сообщить транслятору об этом с помощью специальной директивы ASSUME. Привязка сегментов к сегментным регистрам осуществляется с помощью операндов этой директивы, в которых имя_сегмента должно быть именем сегмента, определенным в исходном тексте программы директивой SEGMENT или ключевым словом NOTHING. Если в качестве операнда используется только ключевое слово NOTHING, то предшествующие назначения сегментных регистров аннулируются, причем сразу для всех шести сегментных регистров.
Описание слайда:
Директивы сегментации Все сегменты сами по себе равноправны, так как директивы SEGMENT и ENDS не содержат информации о функциональном назначении сегментов. Для того чтобы использовать их как сегменты кода, данных или стека, необходимо предварительно сообщить транслятору об этом с помощью специальной директивы ASSUME. Привязка сегментов к сегментным регистрам осуществляется с помощью операндов этой директивы, в которых имя_сегмента должно быть именем сегмента, определенным в исходном тексте программы директивой SEGMENT или ключевым словом NOTHING. Если в качестве операнда используется только ключевое слово NOTHING, то предшествующие назначения сегментных регистров аннулируются, причем сразу для всех шести сегментных регистров.

Слайд 9





Директивы сегментации
Описание слайда:
Директивы сегментации

Слайд 10





Директивы сегментации
Описание слайда:
Директивы сегментации

Слайд 11





Директивы сегментации
Описание слайда:
Директивы сегментации

Слайд 12





Директивы сегментации
Описание слайда:
Директивы сегментации

Слайд 13





Директива Model
Язык — необязательный операнд, принимающий значения C, PASCAL, BASIC, FORTRAN, SYSCALL и STDCALL. Если он указан, подразумевается, что процедуры рассчитаны на вызов из программ на соответствующем языке высокого уровня, следовательно, если указан язык C, все имена ассемблерных процедур, объявленных как PUBLIC, будут изменены так, чтобы начинаться с символа подчеркивания, как это принято в C.
Модификатор — необязательный операнд, принимающий значения NEARSTACK (по умолчанию) или FARSTACK. Во втором случае сегмент стека не будет объединяться в одну группу с сегментами данных.
Описание слайда:
Директива Model Язык — необязательный операнд, принимающий значения C, PASCAL, BASIC, FORTRAN, SYSCALL и STDCALL. Если он указан, подразумевается, что процедуры рассчитаны на вызов из программ на соответствующем языке высокого уровня, следовательно, если указан язык C, все имена ассемблерных процедур, объявленных как PUBLIC, будут изменены так, чтобы начинаться с символа подчеркивания, как это принято в C. Модификатор — необязательный операнд, принимающий значения NEARSTACK (по умолчанию) или FARSTACK. Во втором случае сегмент стека не будет объединяться в одну группу с сегментами данных.

Слайд 14





Директивы сегментации
Описание слайда:
Директивы сегментации

Слайд 15





Директивы сегментации
Описание слайда:
Директивы сегментации

Слайд 16





Директива END
Директива ENDS завершает сегмент, а директива ENDP завершает процедуру. Директива END отмечает конец исходной программы и указывает Ассемблеру, где завершить трансляцию. Поэтому директива END должна присутствовть в каждой исходной программе. Она имеет формат:
               END            [метка точки входа]
Операнд может быть опущен, если программа не предназначена для выполнения, например, если ассемблируются только определения данных, или эта программа должна быть скомпонована с другим (главным) модулем. Для обычной программы с одним модулем oперанд содержит имя, указанное в директиве PROC, которое было обозначено как FAR.
Описание слайда:
Директива END Директива ENDS завершает сегмент, а директива ENDP завершает процедуру. Директива END отмечает конец исходной программы и указывает Ассемблеру, где завершить трансляцию. Поэтому директива END должна присутствовть в каждой исходной программе. Она имеет формат: END [метка точки входа] Операнд может быть опущен, если программа не предназначена для выполнения, например, если ассемблируются только определения данных, или эта программа должна быть скомпонована с другим (главным) модулем. Для обычной программы с одним модулем oперанд содержит имя, указанное в директиве PROC, которое было обозначено как FAR.

Слайд 17





Директивы определения идентификаторов
Псевдооператоры (EQU и =)  присваивают выражению символическое имя (идентификатор). Выражение может быть 16-битовой константой, ссылкой на адрес, другим символическим именем, префиксом сегмента и операндом, меткой команды.
1. Определенные знаком = идентификаторы можно переопределять, а определенные директивой EQU – нельзя.
2. Директиву EQU можно использовать как с числовыми, так и с текстовыми выражениями, а знак = только с числовыми.
K				EQU	1024			; Присвоить имя константе
TABLE	EQU	DS:[BP][SI]	; Присвоить имя комбинации адресов
SPEED	EQU	RATE		      ;Определить синоним
count		EQU	CX			      ;Присвоить имя регистру
Описание слайда:
Директивы определения идентификаторов Псевдооператоры (EQU и =) присваивают выражению символическое имя (идентификатор). Выражение может быть 16-битовой константой, ссылкой на адрес, другим символическим именем, префиксом сегмента и операндом, меткой команды. 1. Определенные знаком = идентификаторы можно переопределять, а определенные директивой EQU – нельзя. 2. Директиву EQU можно использовать как с числовыми, так и с текстовыми выражениями, а знак = только с числовыми. K EQU 1024 ; Присвоить имя константе TABLE EQU DS:[BP][SI] ; Присвоить имя комбинации адресов SPEED EQU RATE ;Определить синоним count EQU CX ;Присвоить имя регистру

Слайд 18





Выражения
Выражение — это набор чисел, меток или строк, связанных друг с другом операторами. Результатом вычисления выражения может быть адрес некоторой ячейки памяти или некоторое константное (абсолютное) значение.
Описание слайда:
Выражения Выражение — это набор чисел, меток или строк, связанных друг с другом операторами. Результатом вычисления выражения может быть адрес некоторой ячейки памяти или некоторое константное (абсолютное) значение.

Слайд 19





Операторы Ассемблера
Описание слайда:
Операторы Ассемблера

Слайд 20





Арифметические операторы
Описание слайда:
Арифметические операторы

Слайд 21





Операторы сдвига
Описание слайда:
Операторы сдвига

Слайд 22





Операторы сравнения
Описание слайда:
Операторы сравнения

Слайд 23





Логические операторы
Описание слайда:
Логические операторы

Слайд 24





Индексный оператор
Описание слайда:
Индексный оператор

Слайд 25





Оператор переопределения типа
Описание слайда:
Оператор переопределения типа

Слайд 26





Оператор переопределения сегмента
Описание слайда:
Оператор переопределения сегмента

Слайд 27





Операторы получения составляющих адреса
SEG expression 
Выдает значение сегмента, в котором расположено expression. Выражение может быть переменной, меткой, именем сегмента, именем группы либо другим символом.
OFFSET expression
Выдает число байт между выражением и началом сегмента, в котором оно определено. Выражение может быть меткой, именем сегмента или переменной.
.data
pole dw 5
. . .
.code
. . .
   		mov ax,seg pole
  		mov es,ax
  		mov dx,offset pole 	;теперь в паре es:dx полный адрес pole
Описание слайда:
Операторы получения составляющих адреса SEG expression Выдает значение сегмента, в котором расположено expression. Выражение может быть переменной, меткой, именем сегмента, именем группы либо другим символом. OFFSET expression Выдает число байт между выражением и началом сегмента, в котором оно определено. Выражение может быть меткой, именем сегмента или переменной. .data pole dw 5 . . . .code . . . mov ax,seg pole mov es,ax mov dx,offset pole ;теперь в паре es:dx полный адрес pole

Слайд 28





Операторы получения байтов выражения
HIGH 	expression .
Этот оператор возвращает старшие 8 бит выражения expression. 
mov  bl, high 1234h ;Эта команда поместит 12h в bl.
LOW 	expression .
Этот оператор возвращает старшие 8 бит выражения expression. 
mov  al, low 1234h ;Эта команда поместит 34h в al.
Описание слайда:
Операторы получения байтов выражения HIGH expression . Этот оператор возвращает старшие 8 бит выражения expression. mov bl, high 1234h ;Эта команда поместит 12h в bl. LOW expression . Этот оператор возвращает старшие 8 бит выражения expression. mov al, low 1234h ;Эта команда поместит 34h в al.

Слайд 29





Операторы получения размера переменной
LENGTH переменная .
Возвращает число единиц типа BYTE, WORD, DWORD, QWORD или TBYTE, занимаемых переменной. Тип переменной определяет, в каких единицах измерения возвращается ее длина.
TYPE	выражение .
Выдает число байт, необходимых для хранения переменной того типа, каким является выражение; для метки NEAR выдает 0FFFFh, а для метки FAR - 0FFFEh.
SIZE переменная .
Выдает число байт, занимаемых переменной. Значение, возвращаемое  этим  оператором,  равно длине (LENGTH) переменной, повторенной TYPE (тип) раз:
SIZE переменная=(LENGTH переменная)*(TYPE переменная)
C	dw	23,   45   dup   (24)
T	equ	 length   C 			; Значение T равно 46.
R	equ	 type   C 				; Значение R равно 2.
D	equ	 size   C 				; Значение D равно 92.
Описание слайда:
Операторы получения размера переменной LENGTH переменная . Возвращает число единиц типа BYTE, WORD, DWORD, QWORD или TBYTE, занимаемых переменной. Тип переменной определяет, в каких единицах измерения возвращается ее длина. TYPE выражение . Выдает число байт, необходимых для хранения переменной того типа, каким является выражение; для метки NEAR выдает 0FFFFh, а для метки FAR - 0FFFEh. SIZE переменная . Выдает число байт, занимаемых переменной. Значение, возвращаемое этим оператором, равно длине (LENGTH) переменной, повторенной TYPE (тип) раз: SIZE переменная=(LENGTH переменная)*(TYPE переменная) C dw 23, 45 dup (24) T equ length C ; Значение T равно 46. R equ type C ; Значение R равно 2. D equ size C ; Значение D равно 92.

Слайд 30





Процедуры
Процедура (подпрограмма) — основная функциональная единица декомпозиции задачи. Варианты размещения в программе:
в начале программы (до первой исполняемой команды)
в конце
внутри другой процедуры или основной программы
в другом модуле
Описание слайда:
Процедуры Процедура (подпрограмма) — основная функциональная единица декомпозиции задачи. Варианты размещения в программе: в начале программы (до первой исполняемой команды) в конце внутри другой процедуры или основной программы в другом модуле

Слайд 31





Процедуры
Описание слайда:
Процедуры

Слайд 32





Процедуры
model small
.stack 100h
.data
.code
my_proc  proc   near
ret
my_proc  endp
start:
end start
Описание слайда:
Процедуры model small .stack 100h .data .code my_proc proc near ret my_proc endp start: end start

Слайд 33





Процедуры
model small
.stack 100h
.data
.code
start:
mov ax,4c00h
int 21h        ;возврат управления операционной 
                   ;системе
my_proc proc  near
ret
my_proc endp
end start
Описание слайда:
Процедуры model small .stack 100h .data .code start: mov ax,4c00h int 21h ;возврат управления операционной ;системе my_proc proc near ret my_proc endp end start

Слайд 34





Процедуры
model small
.stack 100h
.data
.code
start:
jmp ml
my_proc proc near
ret
my_proc endp
ml:
mov ax,4c00h
int 21h ;возврат управления операционной
            ;системе
end start
Описание слайда:
Процедуры model small .stack 100h .data .code start: jmp ml my_proc proc near ret my_proc endp ml: mov ax,4c00h int 21h ;возврат управления операционной ;системе end start

Слайд 35





Процедуры. Команды работы с контекстом
Контекст - информация о состоянии программы в точке вызова процедуры.
call [модификатор] имя_процедуры
ret [число] 
Необязательный параметр [число] обозначает количество элементов, удаляемых из стека при возврате из процедуры. Размер элемента определяется параметрами директивы SEGMENT — use16 и use32 (или соответствующим параметром упрощенных директив сегментации). Если указан параметр usel6, то [число] — это значение в байтах; если use32 — в словах.
Описание слайда:
Процедуры. Команды работы с контекстом Контекст - информация о состоянии программы в точке вызова процедуры. call [модификатор] имя_процедуры ret [число] Необязательный параметр [число] обозначает количество элементов, удаляемых из стека при возврате из процедуры. Размер элемента определяется параметрами директивы SEGMENT — use16 и use32 (или соответствующим параметром упрощенных директив сегментации). Если указан параметр usel6, то [число] — это значение в байтах; если use32 — в словах.

Слайд 36





Процедуры. Внутрисегментный вызов
Описание слайда:
Процедуры. Внутрисегментный вызов

Слайд 37





Процедуры. Межсегментный вызов
Описание слайда:
Процедуры. Межсегментный вызов

Слайд 38





Оператор USES
 Позволяет перечислить имена всех регистров, значение которых изменяется в процедуре. При его обработке компилятор ассемблера выполняет две вещи. Во-первых, в начале процедуры автоматически генерируется последовательность команд PUSH, с помощью которых в стеке сохраняются значения регистров, указанных в операторе USES. Во-вторых, при выходе из процедуры (точнее, перед каждой командой RET, если в процедуре их несколько) автоматически восстанавливаются значения этих регистров. Имена регистров разделяются пробелом или символом табуляции (не запятой!).
Описание слайда:
Оператор USES Позволяет перечислить имена всех регистров, значение которых изменяется в процедуре. При его обработке компилятор ассемблера выполняет две вещи. Во-первых, в начале процедуры автоматически генерируется последовательность команд PUSH, с помощью которых в стеке сохраняются значения регистров, указанных в операторе USES. Во-вторых, при выходе из процедуры (точнее, перед каждой командой RET, если в процедуре их несколько) автоматически восстанавливаются значения этих регистров. Имена регистров разделяются пробелом или символом табуляции (не запятой!).



Похожие презентации
Mypresentation.ru
Загрузить презентацию