Оцените презентацию от 1 до 5 баллов!
Тип файла:
ppt / pptx (powerpoint)
Всего слайдов:
49 слайдов
Для класса:
1,2,3,4,5,6,7,8,9,10,11
Размер файла:
740.10 kB
Просмотров:
64
Скачиваний:
0
Автор:
неизвестен
Слайды и текст к этой презентации:
№1 слайд![Подпрограммы](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img0.jpg)
Содержание слайда: Подпрограммы
№2 слайд![Выполнение подпрограмм](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img1.jpg)
Содержание слайда: Выполнение подпрограмм
№3 слайд![Команды процессора для работы](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img2.jpg)
Содержание слайда: Команды процессора для работы с подпрограммами
Вызов подпрограммы – CALL
Возврат из подпрограммы – RET
команды относятся к командам передачи управления
№4 слайд![Команды процессора для работы](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img3.jpg)
Содержание слайда: Команды процессора для работы с подпрограммами
№5 слайд![Команды процессора для работы](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img4.jpg)
Содержание слайда: Команды процессора для работы с подпрограммами
№6 слайд![Команды процессора для работы](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img5.jpg)
Содержание слайда: Команды процессора для работы с подпрограммами
№7 слайд![Команды процессора для работы](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img6.jpg)
Содержание слайда: Команды процессора для работы с подпрограммами
№8 слайд![Команды процессора для работы](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img7.jpg)
Содержание слайда: Команды процессора для работы с подпрограммами
№9 слайд![Команды процессора для работы](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img8.jpg)
Содержание слайда: Команды процессора для работы с подпрограммами
№10 слайд![Команды процессора для работы](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img9.jpg)
Содержание слайда: Команды процессора для работы с подпрограммами
№11 слайд![Команды процессора для работы](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img10.jpg)
Содержание слайда: Команды процессора для работы с подпрограммами
№12 слайд![Команды процессора для работы](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img11.jpg)
Содержание слайда: Команды процессора для работы с подпрограммами
№13 слайд![Команды процессора для работы](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img12.jpg)
Содержание слайда: Команды процессора для работы с подпрограммами
№14 слайд![Команды процессора для работы](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img13.jpg)
Содержание слайда: Команды процессора для работы с подпрограммами
№15 слайд![Команды процессора для работы](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img14.jpg)
Содержание слайда: Команды процессора для работы с подпрограммами
№16 слайд![Где описываются программы MOV](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img15.jpg)
Содержание слайда: Где описываются программы
MOV …
Procedure:
ADD …
NEG …
RET
SUB …
MULL …
CALL Procedure
CDQ
IDIV …
№17 слайд![Где описываются программы MOV](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img16.jpg)
Содержание слайда: Где описываются программы
MOV …
JMP MainNext
Procedure:
ADD …
NEG …
RET
MainNext:
SUB …
MULL …
CALL Procedure
CDQ
IDIV …
№18 слайд![Где описываются программы](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img17.jpg)
Содержание слайда: Где описываются программы
Перед основной программой
После основной программы
В отдельном модуле
№19 слайд![Где описываются программы](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img18.jpg)
Содержание слайда: Где описываются программы
Перед основной программой
.code
Procedure:
; код подпрограммы
RET
Start:
; код основной программы
CALL Procedure
; код основной программы
end Start
№20 слайд![Где описываются программы](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img19.jpg)
Содержание слайда: Где описываются программы
После основной программы
.code
Start:
; код основной программы
CALL Procedure
; код основной программы
CALL ExitProcess
Procedure:
; код подпрограммы
RET
end Start
№21 слайд![Способы передачи параметров в](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img20.jpg)
Содержание слайда: Способы передачи параметров в подпрограммы
Через регистры общего назначения
Через общую память
Через стек
№22 слайд![Передача параметров через](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img21.jpg)
Содержание слайда: Передача параметров через регистры общего назначения
Factorial:
MOV ECX, EAX
MOV EBX, 2
MOV EAX, 1
Cycle:
CMP EBX, ECX
JG EndFunction
MUL EBX
INC EBX
JMP Cycle
EndFunction:
RET
№23 слайд![Передача параметров через](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img22.jpg)
Содержание слайда: Передача параметров через регистры общего назначения
.data
n dd 5
.data?
result dd ?
.code
Factorial:
; тело функции
RET
Start:
MOV EAX, n
CALL Factorial
MOV result, EAX
№24 слайд![Передача параметров через](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img23.jpg)
Содержание слайда: Передача параметров через регистры общего назначения
Достоинства
легко использовать
большая скорость работы
можно возвращать несколько значений
№25 слайд![Передача параметров через](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img24.jpg)
Содержание слайда: Передача параметров через регистры общего назначения
Недостатки
малое количество параметров
трудности использования регистров в подпрограмме
трудности вложенных и рекурсивных вызовов
№26 слайд![Передача параметров через](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img25.jpg)
Содержание слайда: Передача параметров через общую память
Factorial:
MOV ECX, param
MOV EBX, 2
MOV EAX, 1
Cycle:
CMP EBX, ECX
JG EndFunction
MUL EBX
INC EBX
JMP Cycle
EndFunction: MOV param+4, EAX
RET
№27 слайд![Передача параметров через](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img26.jpg)
Содержание слайда: Передача параметров через общую память
.data
n dd 5
.data?
result dd ?
param dd 2 dup(?)
.code
MOV EAX, n
MOV param, EAX
CALL Factorial
MOV EAX, param+4
MOV result, EAX
№28 слайд![Передача параметров через](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img27.jpg)
Содержание слайда: Передача параметров через общую память
Достоинства
произвольное количество параметров
переменное количество параметров
регистры общего назначения свободны
№29 слайд![Передача параметров через](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img28.jpg)
Содержание слайда: Передача параметров через общую память
Недостатки
низкое быстродействие
трудности рекурсивных вызовов
№30 слайд![Передача параметров через](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img29.jpg)
Содержание слайда: Передача параметров через стек
Команды работы со стеком
push – помещает в вершину стека некоторое значение
pop – извлекает из вершины стека некоторое значение
№31 слайд![Передача параметров через](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img30.jpg)
Содержание слайда: Передача параметров через стек
Команды работы со стеком
pusha – помещает в вершину стека значения всех регистров общего назначения
popa – извлекает из вершины стека значения всех регистров общего назначения
№32 слайд![Передача параметров через](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img31.jpg)
Содержание слайда: Передача параметров через стек
Команды работы со стеком
pushf – помещает в вершину стека значение регистра флагов
popf – извлекает из вершины стека значения регистра флагов
№33 слайд![Передача параметров через](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img32.jpg)
Содержание слайда: Передача параметров через стек
Стек:
Позволяет обрабатывать только 32-разрядные числа
Адрес вершины стека храниться в регистре ESP (смещение относительно сегментного регистра SS)
Вершина стека, это ячейка памяти, содержащая последнее помещённое в стек значение
№34 слайд![Передача параметров через](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img33.jpg)
Содержание слайда: Передача параметров через стек
Алгоритм работы команды push:
add ESP, 4
mov [ESP], <источник>
№35 слайд![Передача параметров через](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img34.jpg)
Содержание слайда: Передача параметров через стек
Алгоритм работы команды pop:
mov <приёмник>, [ESP]
sup ESP, 4
№36 слайд![Передача параметров через](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img35.jpg)
Содержание слайда: Передача параметров через стек
Алгоритм работы команды call:
add EIP, <размер команды call>
add ESP, 4
mov [ESP], EIP
mov EIP, <адрес метки>
№37 слайд![Передача параметров через](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img36.jpg)
Содержание слайда: Передача параметров через стек
Алгоритм работы команды ret:
mov EIP, [ESP]
sub ESP, 4
№38 слайд![Передача параметров через](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img37.jpg)
Содержание слайда: Передача параметров через стек
Factorial:
MOV ECX, [ESP+8]
MOV EBX, 2
MOV EAX, 1
Cycle:
CMP EBX, ECX
JG EndFunction
MUL EBX
INC EBX
JMP Cycle
EndFunction: MOV [ESP+4], EAX
RET
№39 слайд![Передача параметров через](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img38.jpg)
Содержание слайда: Передача параметров через стек
.data
n dd 5
.data?
result dd ?
.code
PUSH n
PUSH 0
CALL Factorial
POP result
ADD ESP, 4
№40 слайд![Передача параметров через](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img39.jpg)
Содержание слайда: Передача параметров через стек
Достоинства
произвольное количество параметров
переменное количество параметров
простота использования
легкая организация рекурсии
№41 слайд![Передача параметров через](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img40.jpg)
Содержание слайда: Передача параметров через стек
Недостатки
трудно отслеживать состояние стека
после вызова подпрограммы основная программа должна выравнивать стек
№42 слайд![Подпрограммы в C параметры](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img41.jpg)
Содержание слайда: Подпрограммы в C
параметры передаются через стек (при этом в стек параметры помещаются с конца)
Результат возвращается в регистрах
1 байт – AL
2 байта – AX
4 байта – EAX
8 байт – (EAX, EDX)
№43 слайд![Функции Windows API после](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img42.jpg)
Содержание слайда: Функции Windows API
после вызова функций с фиксированным числом параметров не нужно выравнивать стек
№44 слайд![Передача параметров с](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img43.jpg)
Содержание слайда: Передача параметров с использование STDCALL
Factorial:
MOV ECX, [ESP+4]
MOV EBX, 2
MOV EAX, 1
Cycle:
CMP EBX, ECX
JG EndFunction
MUL EBX
INC EBX
JMP Cycle
EndFunction:
RET 4
№45 слайд![Передача параметров с](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img44.jpg)
Содержание слайда: Передача параметров с использование STDCALL
.data
n dd 5
.data?
result dd ?
.code
PUSH n
CALL Factorial
MOV result, EAX
№46 слайд![Создание локальных переменных](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img45.jpg)
Содержание слайда: Создание локальных переменных в стеке
[ESP] – точка возврата
[ESP + 4] – первый параметр функции
[ESP + 8] – второй параметр функции
и т. д.
№47 слайд![Создание локальных переменных](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img46.jpg)
Содержание слайда: Создание локальных переменных в стеке
SUB ESP, 4
[ESP] – локальная переменная
[ESP + 4] – точка возврата
[ESP + 8] – первый параметр функции
[ESP + 12] – второй параметр функции
и т. д.
№48 слайд![Пролог функции PUSH EBP MOV](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img47.jpg)
Содержание слайда: Пролог функции
PUSH EBP
MOV EBP, ESP
SUB ESP, 8
[EBP] – исходное значение EBP
[EBP + 4] – точка возврата
[EBP + 8] – первый параметр функции
[EBP + 12] – второй параметр функции
и т. д.
[EBP – 4] – вторая локальная переменная
[EBP – 8] – первая локальная переменная
и т. д.
№49 слайд![Эпилог функции MOV ESP, EBP](/documents_6/d531f27ec9eea6f2013cdc6ddcfa0603/img48.jpg)
Содержание слайда: Эпилог функции
MOV ESP, EBP
POP EBP
RET 12