🗊Презентация Язык Ассемблер

Нажмите для полного просмотра!
Язык Ассемблер, слайд №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

Содержание

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

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


Слайд 1





Лекция 16
Язык Ассемблер, трансляция программ с языка Ассемблер в машинный код, структура программы, описание сегментов, указание констант, объявление данных
Описание слайда:
Лекция 16 Язык Ассемблер, трансляция программ с языка Ассемблер в машинный код, структура программы, описание сегментов, указание констант, объявление данных

Слайд 2





Трансляторы языка Ассемблер
Основные представители:
TASM – Turbo Assembler
MASM – Macro Assembler
FASM – Flat Assembler
NASM – Native Assembler
Описание слайда:
Трансляторы языка Ассемблер Основные представители: TASM – Turbo Assembler MASM – Macro Assembler FASM – Flat Assembler NASM – Native Assembler

Слайд 3





Процесс разработки программ на Ассемблере
Описание слайда:
Процесс разработки программ на Ассемблере

Слайд 4





Язык Ассемблер
Язык Ассемблер является символическим аналогом машинного языка. Программа, написанная на Ассемблере, должна отражать все особенности архитектуры микропроцессора: организацию памяти, способы адресации операндов, правила использования регистров и т.д.
Программа на Ассемблере представляет собой совокупность блоков памяти, называемых сегментами памяти. Программа может состоять из одного или нескольких таких блоков.
Сама программа состоит из предложений Ассемблера.
Описание слайда:
Язык Ассемблер Язык Ассемблер является символическим аналогом машинного языка. Программа, написанная на Ассемблере, должна отражать все особенности архитектуры микропроцессора: организацию памяти, способы адресации операндов, правила использования регистров и т.д. Программа на Ассемблере представляет собой совокупность блоков памяти, называемых сегментами памяти. Программа может состоять из одного или нескольких таких блоков. Сама программа состоит из предложений Ассемблера.

Слайд 5





Язык Ассемблер
Предложения языка Ассемблер бывают четырех типов:
Команды (или инструкции) – символические аналоги машинных команд.
Макрокоманды – оформляемые определенным образом предложения текста программы, замещаемые во время трансляции другими предложениями.
Директивы – указания транслятору на выполнение некоторых действий.
Строки комментариев – текст, игнорирующийся транслятором.
Описание слайда:
Язык Ассемблер Предложения языка Ассемблер бывают четырех типов: Команды (или инструкции) – символические аналоги машинных команд. Макрокоманды – оформляемые определенным образом предложения текста программы, замещаемые во время трансляции другими предложениями. Директивы – указания транслятору на выполнение некоторых действий. Строки комментариев – текст, игнорирующийся транслятором.

Слайд 6





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

Слайд 7





Формат директив
Описание слайда:
Формат директив

Слайд 8





Формат команд и макрокоманд
Имя метки – идентификатор, значением которого является адрес первого байта того предложения исходного текста программы, которое он обозначает.
Имя – идентификатор, отличающий данную директиву от других директив.
Код операции или директива – это мнемоническое обозначения соответствующей машинной команды, макрокоманды или директивы транслятора.
Операнды – части команды, макрокоманды или директивы ассемблера, обозначающие объекты, над которыми производятся действия.
Описание слайда:
Формат команд и макрокоманд Имя метки – идентификатор, значением которого является адрес первого байта того предложения исходного текста программы, которое он обозначает. Имя – идентификатор, отличающий данную директиву от других директив. Код операции или директива – это мнемоническое обозначения соответствующей машинной команды, макрокоманды или директивы транслятора. Операнды – части команды, макрокоманды или директивы ассемблера, обозначающие объекты, над которыми производятся действия.

Слайд 9





Синтаксис языка Ассемблер
Допустимыми символами при написании текста программ являются:
 
все латинские буквы;
цифры;
знаки: ?, @, $, _, &;
разделители: , . [ ] ( ) < > { } + / * % ! ‘ “ ? \ = # ^
Описание слайда:
Синтаксис языка Ассемблер Допустимыми символами при написании текста программ являются: все латинские буквы; цифры; знаки: ?, @, $, _, &; разделители: , . [ ] ( ) < > { } + / * % ! ‘ “ ? \ = # ^

Слайд 10





Синтаксис языка Ассемблер
Предложения Ассемблера формируются из лексем, представляющих собой синтаксически неразделимые последовательности допустимых символов языка, имеющие смысл для транслятора. Лексемами являются:
Идентификаторы – последовательности допустимых символов, использующиеся для обозначения таких объектов программы, как коды операций, имена переменных и названия меток.
Цепочки символов – последовательности символов, заключенные в одинарные или двойные кавычки.
Целые числа в двоичной, десятичной или шестнадцатеричной системах счисления:
10000011b – двоичная система счисления
123 – десятичная система счисления
2Ah – шестнадцатеричная система счисления
0D4h – шестнадцатеричная система счисления
Описание слайда:
Синтаксис языка Ассемблер Предложения Ассемблера формируются из лексем, представляющих собой синтаксически неразделимые последовательности допустимых символов языка, имеющие смысл для транслятора. Лексемами являются: Идентификаторы – последовательности допустимых символов, использующиеся для обозначения таких объектов программы, как коды операций, имена переменных и названия меток. Цепочки символов – последовательности символов, заключенные в одинарные или двойные кавычки. Целые числа в двоичной, десятичной или шестнадцатеричной системах счисления: 10000011b – двоичная система счисления 123 – десятичная система счисления 2Ah – шестнадцатеричная система счисления 0D4h – шестнадцатеричная система счисления

Слайд 11





Виды операндов
Постоянные (непосредственные) операнды
Адресные операнды.
Перемещаемые операнды.
Счетчик адреса.
Регистровый операнд.
Базовый и индексный операнды.
Структурные операнды.
Записи.
Описание слайда:
Виды операндов Постоянные (непосредственные) операнды Адресные операнды. Перемещаемые операнды. Счетчик адреса. Регистровый операнд. Базовый и индексный операнды. Структурные операнды. Записи.

Слайд 12





Постоянные (непосредственные) операнды
Постоянным (непосредственным) операнд – число, строка, имя или выражение имеющее некоторое фиксированное значение. Имя должно быть определено операторами equ или =.
val equ 10
num = val – 5
		mov		ax, val	;mov	ax, 10
		mov		ax, num	;mov	ax,5
		mov		ax, 10
Описание слайда:
Постоянные (непосредственные) операнды Постоянным (непосредственным) операнд – число, строка, имя или выражение имеющее некоторое фиксированное значение. Имя должно быть определено операторами equ или =. val equ 10 num = val – 5 mov ax, val ;mov ax, 10 mov ax, num ;mov ax,5 mov ax, 10

Слайд 13





Адресные операнды
mov	ax, ds:0000h
Описание слайда:
Адресные операнды mov ax, ds:0000h

Слайд 14





Перемещаемые операнды
Перемещаемые операнды – любые символьные имена, представляющие некоторые адреса в памяти. Эти адреса могут обозначать местоположение в памяти некоторой инструкции (если операнд – метка) или данных (если операнд – имя области памяти в сегменте данных).
Data SEGMENT
values		db	10 dup(0)
…
Code SEGMENT
…
		jmp	next
…
next:	lea	si, values
…
Описание слайда:
Перемещаемые операнды Перемещаемые операнды – любые символьные имена, представляющие некоторые адреса в памяти. Эти адреса могут обозначать местоположение в памяти некоторой инструкции (если операнд – метка) или данных (если операнд – имя области памяти в сегменте данных). Data SEGMENT values db 10 dup(0) … Code SEGMENT … jmp next … next: lea si, values …

Слайд 15





Счетчик адреса
Счетчик адреса – специфический вид операнда, обозначаемый знаком $. Когда транслятор встречает в исходной программе этот символ, то он подставляет вместо него текущее значение счетчика адреса.
		jmp		$+3
		nop
		mov		al, 10
Описание слайда:
Счетчик адреса Счетчик адреса – специфический вид операнда, обозначаемый знаком $. Когда транслятор встречает в исходной программе этот символ, то он подставляет вместо него текущее значение счетчика адреса. jmp $+3 nop mov al, 10

Слайд 16





Остальные операнды
Регистровый операнд – это просто имя регистра.
Базовый и индексный операнды – используются при реализации косвенной, индексной или их комбинаций и расширений.
Структурные операнды – используются для доступа к конкретному элементу структуры.
Записи (аналогично структурному типу) используются для доступа к битовому полю некоторой записи.
Описание слайда:
Остальные операнды Регистровый операнд – это просто имя регистра. Базовый и индексный операнды – используются при реализации косвенной, индексной или их комбинаций и расширений. Структурные операнды – используются для доступа к конкретному элементу структуры. Записи (аналогично структурному типу) используются для доступа к битовому полю некоторой записи.

Слайд 17





Операторы языка Ассемблер
Делятся на следующие виды:
Арифметические операторы,
Операторы сдвига,
Операторы сравнения,
Логические операторы,
Индексный оператор,
Оператор переопределения типа,
Оператор переопределения сегмента,
Оператор именования типа
Оператор получения сегментной составляющей адреса
Оператор получения смещения выражения
Описание слайда:
Операторы языка Ассемблер Делятся на следующие виды: Арифметические операторы, Операторы сдвига, Операторы сравнения, Логические операторы, Индексный оператор, Оператор переопределения типа, Оператор переопределения сегмента, Оператор именования типа Оператор получения сегментной составляющей адреса Оператор получения смещения выражения

Слайд 18





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

Слайд 19





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

Слайд 20





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

Слайд 21





Операторы языка Ассемблер
Оператор переопределения типа ptr
val	dd	0
…
		mov	al, byte ptr val+1
Описание слайда:
Операторы языка Ассемблер Оператор переопределения типа ptr val dd 0 … mov al, byte ptr val+1

Слайд 22





Операторы языка Ассемблер
	Оператор переопределения сегмента:
.code
		jmp	metka
val	dw	100
metka:
…
		mov	al, cs:val
Описание слайда:
Операторы языка Ассемблер Оператор переопределения сегмента: .code jmp metka val dw 100 metka: … mov al, cs:val

Слайд 23





Операторы языка Ассемблер
Оператор получения сегментной составляющей адреса seg
Оператор получения смещения выражения offset
.data
value		dw		5
…
.code
…
		mov	ax, seg value
		mov	es, ax
		mov	bx, offset value
		mov	ax, es:[bx]
Описание слайда:
Операторы языка Ассемблер Оператор получения сегментной составляющей адреса seg Оператор получения смещения выражения offset .data value dw 5 … .code … mov ax, seg value mov es, ax mov bx, offset value mov ax, es:[bx]

Слайд 24





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

Слайд 25





Описание сегментов
Выравнивание сегмента:
BYTE – выравнивание не выполняется
WORD – сегмент начинается по адресу, кратному двум
DWORD - сегмент начинается по адресу, кратному четырем
PARA – сегмент начинается по адресу, кратному шестнадцати (по умолчанию)
PAGE - сегмент начинается по адресу, кратному 256
MEMPAGE - сегмент начинается по адресу, кратному 4Кбайт
Описание слайда:
Описание сегментов Выравнивание сегмента: BYTE – выравнивание не выполняется WORD – сегмент начинается по адресу, кратному двум DWORD - сегмент начинается по адресу, кратному четырем PARA – сегмент начинается по адресу, кратному шестнадцати (по умолчанию) PAGE - сегмент начинается по адресу, кратному 256 MEMPAGE - сегмент начинается по адресу, кратному 4Кбайт

Слайд 26





Описание сегментов
Атрибут комбинирования сегментов:
PRIVATE – сегмент не будет объединятся с другими сегментами с тем же именем вне данного модуля
PUBLIC – заставляет компоновщик соединить все сегменты с одинаковым именем
COMMON – располагает все сегменты с одним и тем же именем по одному адресу
AT XXXX – располагает сегмент по абсолютному адресу параграфа
STACK – определение сегмента стека
Атрибут класса сегмента – это заключенная в кавычки строка, помогающая компоновщику определить соответствующий порядок следования сегментов при сборке программы из сегментов нескольких модулей.
Описание слайда:
Описание сегментов Атрибут комбинирования сегментов: PRIVATE – сегмент не будет объединятся с другими сегментами с тем же именем вне данного модуля PUBLIC – заставляет компоновщик соединить все сегменты с одинаковым именем COMMON – располагает все сегменты с одним и тем же именем по одному адресу AT XXXX – располагает сегмент по абсолютному адресу параграфа STACK – определение сегмента стека Атрибут класса сегмента – это заключенная в кавычки строка, помогающая компоновщику определить соответствующий порядок следования сегментов при сборке программы из сегментов нескольких модулей.

Слайд 27





Описание сегментов
Атрибут размера сегмента:
USE16 – это означает, что сегмент допускает 16-разрядную адресацию.
USE32 – сегмент будет 32-ухразрядным
Директива SEGMENT не содержит информации о функциональном назначении сегмента (код, данные или стек). Указание этого назначения осуществляется с помощью директивы ASSUME в следующем виде:
ASSUME <имя-сегментного-регистра> ‘:’ <имя-сегмента>
Пример:
	ASSUME cs:Code, ds:Data, ss:Stack
Описание слайда:
Описание сегментов Атрибут размера сегмента: USE16 – это означает, что сегмент допускает 16-разрядную адресацию. USE32 – сегмент будет 32-ухразрядным Директива SEGMENT не содержит информации о функциональном назначении сегмента (код, данные или стек). Указание этого назначения осуществляется с помощью директивы ASSUME в следующем виде: ASSUME <имя-сегментного-регистра> ‘:’ <имя-сегмента> Пример: ASSUME cs:Code, ds:Data, ss:Stack

Слайд 28





Директива MODEL
Директива MODEL предназначена для управления моделью памяти программы. Эта директива позволяет использовать упрощенные директивы сегментации.
Описание слайда:
Директива MODEL Директива MODEL предназначена для управления моделью памяти программы. Эта директива позволяет использовать упрощенные директивы сегментации.

Слайд 29





Упрощенные директивы определения сегмента
Описание слайда:
Упрощенные директивы определения сегмента

Слайд 30





Идентификаторы, создаваемые директивой MODEL
Описание слайда:
Идентификаторы, создаваемые директивой MODEL

Слайд 31





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

Слайд 32





Простые типы данных
Описание слайда:
Простые типы данных

Слайд 33





Простые типы данных
Обозначения:
? – показывает, что значение не определено;
Значение инициализации – значение элемента данных, которое будет занесено после загрузки программы;
Выражение – итеративная конструкция;
Имя – некоторое символическое имя метки или ячейки данных.
Типы данных:
db – 1 байт
dw – 2 байта
dd – 4 байта
dq – 8 байт
df – 6 байт
dp – 6 байт
dt – 10 байт
Описание слайда:
Простые типы данных Обозначения: ? – показывает, что значение не определено; Значение инициализации – значение элемента данных, которое будет занесено после загрузки программы; Выражение – итеративная конструкция; Имя – некоторое символическое имя метки или ячейки данных. Типы данных: db – 1 байт dw – 2 байта dd – 4 байта dq – 8 байт df – 6 байт dp – 6 байт dt – 10 байт

Слайд 34





Простые типы данных
Примеры:
Mess		db	‘Hello world!’, 0
Value	dw	1400
Array		dd	20	dup(?)
Описание слайда:
Простые типы данных Примеры: Mess db ‘Hello world!’, 0 Value dw 1400 Array dd 20 dup(?)

Слайд 35





Пример COM программы для MS-DOS
.386
model tiny			;Указание модели памяти
Code segment use16		;Начало описания сегмента кода
ASSUME cs:Code, ds:Code	;Ассоциация регистров с сегментом
	org	100h			;Генерация смещения на 256 байт
start:				;Метка начала программы
	push	cs			;Запись регистра CS в стек
	pop	ds			;Загрузка регистра DS значением из стека
	mov	dx, offset mess		;Помещение в DS смещения строки mess
	mov	ah, 09h			;Запись в AH номера функции вывода строки
	int	21h			;Вызов сервиса MS-DOS
	int	20h			;Завершение COM программы в MS-DOS
mess	db	'Hello world!','$‘	;Объявление строки
Code ends			;Завершение описания строки
end start
Описание слайда:
Пример COM программы для MS-DOS .386 model tiny ;Указание модели памяти Code segment use16 ;Начало описания сегмента кода ASSUME cs:Code, ds:Code ;Ассоциация регистров с сегментом org 100h ;Генерация смещения на 256 байт start: ;Метка начала программы push cs ;Запись регистра CS в стек pop ds ;Загрузка регистра DS значением из стека mov dx, offset mess ;Помещение в DS смещения строки mess mov ah, 09h ;Запись в AH номера функции вывода строки int 21h ;Вызов сервиса MS-DOS int 20h ;Завершение COM программы в MS-DOS mess db 'Hello world!','$‘ ;Объявление строки Code ends ;Завершение описания строки end start

Слайд 36





Пример EXE программы для MS-DOS
.386
model small			;Указание модели памяти
Stack SEGMENT STACK use16		;Объявление сегмента стека
	ASSUME ss:Stack			;Ассоциация регистра SS с сегментом стека
	DB	100h dup(?)		;Резервирование 256 байт под стек
Stack ENDS			;Завершение описания сегмента стека
Data SEGMENT use16		;Объявление сегмента данных
	ASSUME ds:Data			;Ассоциирование регистра DS с сегментом данных
mess	db	'Hello world!','$‘	;Объявление строки
Data ENDS			;Завершение описания сегмента данных
Code SEGMENT use16		;Объявление сегмента кода
	ASSUME cs:Code			; Ассоциирование регистра CS с сегментом кода
start:				;Метка начала программы
	mov	ax, seg mess		;Загрузка в AX адреса сегмента строки mess
	mov	ds, ax			;Запись в DS значения AX
	mov	dx, offset mess		;Запись в DX смещения строки mess
	mov	ah, 09h			;Запись в AH номера функции вывода строки
	int	21h			;Вызов сервиса MS-DOS
	mov	ax, 4c00h			;Запись в AX функции завершения программы
	int	21h			;Завершение EXE программы в MS-DOS
Code ENDS			;Завершение описания сегмента данных
end start
Описание слайда:
Пример EXE программы для MS-DOS .386 model small ;Указание модели памяти Stack SEGMENT STACK use16 ;Объявление сегмента стека ASSUME ss:Stack ;Ассоциация регистра SS с сегментом стека DB 100h dup(?) ;Резервирование 256 байт под стек Stack ENDS ;Завершение описания сегмента стека Data SEGMENT use16 ;Объявление сегмента данных ASSUME ds:Data ;Ассоциирование регистра DS с сегментом данных mess db 'Hello world!','$‘ ;Объявление строки Data ENDS ;Завершение описания сегмента данных Code SEGMENT use16 ;Объявление сегмента кода ASSUME cs:Code ; Ассоциирование регистра CS с сегментом кода start: ;Метка начала программы mov ax, seg mess ;Загрузка в AX адреса сегмента строки mess mov ds, ax ;Запись в DS значения AX mov dx, offset mess ;Запись в DX смещения строки mess mov ah, 09h ;Запись в AH номера функции вывода строки int 21h ;Вызов сервиса MS-DOS mov ax, 4c00h ;Запись в AX функции завершения программы int 21h ;Завершение EXE программы в MS-DOS Code ENDS ;Завершение описания сегмента данных end start

Слайд 37





Пример EXE программы для Windows
include \masm32\include\masm32rt.inc	;Подключение библиотеки
			;Объявление сегмента неинициализированных данных
.data?				
	value dd ?			;Объявление переменной без инициализации
			;Объявление сегмента инициализированных данных
.data
	item dd 0			; Объявление переменной с инициализацией
.code				;Объявление сегмента кода
start:				;Метка начала программы
	call	main			;вызов процедуры main
	inkey				;вызов макроса ожидания нажатия клавиши
	exit				;вызов макроса завершения программы
main proc				;объявление процедуры main
	cls				;вызов макроса очистки экрана
	print "Hello World!",13,10		;вызов макроса вывода сообщения
	ret				;команда выхода из процедуры
main endp				;конец описания процедуры
end start
Описание слайда:
Пример EXE программы для Windows include \masm32\include\masm32rt.inc ;Подключение библиотеки ;Объявление сегмента неинициализированных данных .data? value dd ? ;Объявление переменной без инициализации ;Объявление сегмента инициализированных данных .data item dd 0 ; Объявление переменной с инициализацией .code ;Объявление сегмента кода start: ;Метка начала программы call main ;вызов процедуры main inkey ;вызов макроса ожидания нажатия клавиши exit ;вызов макроса завершения программы main proc ;объявление процедуры main cls ;вызов макроса очистки экрана print "Hello World!",13,10 ;вызов макроса вывода сообщения ret ;команда выхода из процедуры main endp ;конец описания процедуры end start



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