jcc - условный переход или переход по условию.
Команда передает управление в указанную точку программы, если выполнено соответствующее условие (если условие истинно). Для каждой конкретной команды проверяется условие конкретных флагов. Команда не сохраняет информацию для возврата. В качестве метки может быть указан непосредственный удрес, регистр или переменная, содержащая адрес. В команде используется прямая адресация. Допускается только коротки и ближний переходы. Не изменяет флаги. Используется совместно с коммандами cmp или test.
Реализация сложного условия. 39. Язык ассемблера. Команды (группы команд). Команды передачи управления (JMP, LOOP, CALL, RET). Команда loop. Уменьшает значение регистра ecx на 1, и, если ecx!=0 выполняет коротки переход на указанную метку. В комманде используется не явная адресация - регистр ecx. Не изменяет флаги. Используется для реализации циклов. в которых счётчиком выступает регистр ecx.
Замена команды LOOP. Одну команду LOOP можно заменить эквивалентной парой команд.
DEC ecx JNZ метка
Второй вариант позволяет совершать не только короткий переход short(max 128 байт), но и ближний near(в х32 бит = 4гб).
Команда CALL. Вызов процедуры\фукнции. Формат CALL метка. Команда сохраняет в стеке адрес следующей команды и передает управление в указанную точку программы. В качестве метки может быть указан непосредственный адрес, регистр или переменная, содержащая адрес. В команде используется прямая адресация (абсолютная) - ближний и дальний переходы
1) кладет в стек адрес следующий за командой CALL - адрес возтавра далее используется командой ret
Команда ret. Возврат из процедуры\функции.
ret ret число
Команда считывает из стека адрес возврата и загружает его в регистр EIP(таким образом выполняется возврат из процедуры)
Если в команде указано число, то, после считывания адреса возврата, из стека бужет удалено указанное количество байт. REt с числом используется для удаления из стека параметров, с которыми вызывалась функция. Не изменяет флаги. 40. Процедуры. Передача параметров и возврат результата (регистры, сегмент данных, сегмент стека, сегмент кода). 1. Передача параметров и возврат результата
Исторически существует 4 способа: - через регистры - через сегмент данных - через сегмент стека - через сегмент кода
Через регистры. Для передачи парамметров исходное значение заносится в заранее определенные регистры общего назначения перед вызовом команды CALL для возврата результата в функции перед вызовом в заранее определенный регистр заносится результат.
Через сегмент данных. В области глобальных переменных(сегмент данных) резервируется память для передачи парамметров и возврата результата. Перед вызовом комманды CALL в память заносятся значения параметров. В процедуре перед вызовом команды ret в память заносится возвращаемый результат. Функция f() принимает 2 параметра в массиве mass. mass[0] - параметр 1, mass[1] - параметр 2. В mass[2] функция сохр результат.
Ндостатки - невозможно выполнить рекурсивный вызовов. Невозможно вызвать функцию состоящую из двух и более нитей.
Через сегмент стека. Параметры функции - перед вызовом команды CALL заносятся в стек с использованием команды push. В функции значение параметров извлекается из стека через регистр esp. Возвращаемое значение может быть возвращено через стек, только если предварительно в стеке будет зарезервировано место. Для этого вызывающая функция должна выполнить команду push с любым значением. Пример: В функции main в стек заносится 3 числа. Первое - резервирование места для результата, два других - параметры.
Функция f() вынимает из стека параметры, суммирует их, результат заносит в стек на заранее зарезервированное место. Потом add esp+8 и читается результат.
Через сегмент кода. Параметры и возвр знач располагаются в сегменте кода. Перед командой CALL. Доступен только в реальном режиме работы DB DW DD
В функции значение параметров получается через регистр esp. В стеке располагается адрес возврата. Отступив от него требуемое кол-во байт, можно получить параметры. Результат сохр аналогично. Передача параметров и получение результата через сегмент кода в защищенном режиме запрещена. Доступен только в реальном режиме работы процессора. 41. Процедуры. Передача параметров и возврат результата. Типы вызова процедур (__cdecl, __stdcall, __fastcall). Вызов стандартных функций Си.
42. Программное обеспечение ЭВМ. Классификация по назначению. Виды ограничений на программное обеспечение. Программное обеспечение – совокупность приложений разных уровней, установленных на компьютере, повышающих интерактивность и удобство работы с его аппаратной частью
Существует три вида ПО: 1. Системное ПО 2. Служебное ПО 3. Прикладное ПО Системное ПО реализует связь аппаратного и программного обеспечения В состав системного ПО входит: 1. ОС 2. Загрузчик ОС 3. Драйверы устройств 4. Программные кодеки 5. Утилиты и др. Прикладное ПО – комплекс программ, созданных для решения прикладных задач В состав прикладного ПО входит: 1. Офисные программы 2. Корпоративные информсистемы (бух. системы, системы документооборота и т.д.) 3. САПР 4. Научное ПО 5. Интернет программы 6. Мультимедиа Виды ограничений на ПО 1. Ограничение на коммерческое использование Разрешение дается частным лицам, медицинским и учебным заведениям, различные некоммерческие организации, требуется оплата в случае использования программ с целью извлечения прибыли. Такое ПО популярно и широко используется. Имеет хорошую техподдержку 2. Ограничение на распространение Обычно сопровождает крупные программные проекты, когда правообладатель требует оплату за каждую копию ПО. Обычно ПО ориентировано на узкий сегмент рынка 3. Ограничение на модификацию.
Используется в продуктах с закрытым исходным кодом 4. Ограничение на восстановление исходного кода Запрет на анализ машинного кода ПО с целью составление алгоритма работы данного ПО 43. Этапы решения задачи с использованием ЭВМ. Жизненный цикл программы. В процессе разработки и решения выделяют следующие этапы: 1. Постановка задачи 1.1. Сбор информации о задаче 1.2. Формулировка условия 1.3. Определение конечных целей 1.4. Определение формы выдачи результатов 1.5. Описание данных 2. Анализ и исследование 2.1. Анализ существующих аналогов 2.2. Анализ технических и программных средств 2.3. Разработка матмодели 2.4. Разработка структуры данных 3. Алгоритмизация 3.1. Выбор метода проектирования алгоритма 3.2. Выбор форм записи алгоритма 3.3. Выбор тестов и методов тестирования 3.4. Проектирование алгоритмов 4. Программирование 4.1. Выбор языка 4.2. Уточнение способов организации данных 4.3. Запись алгоритма на языке программирования 5. Тестирование и отладка 5.1. Синтаксическая отладка 5.2. Отладка семантики и логической структуры 5.3. Тестовые расчеты и анализ результатов тестирования 5.4. Совершенствование 6. Анализ результатов решения задачи и уточнение в случае необходимости матмодели с повторением этапов 2-5 7. Сопровождение программы 7.1. Доработка программ для решения конкретной задачи 7.2. Составление документации Жизненный цикл программы Под жизненным циклом понимается период, начиная с момента замысла программы, и заканчивая полным прекращением всякого его использования (удаление последней копии программы)
1. Анализ предметной области и формулировка требований к программе 2. Разработка программы 3. Внедрение и сопровождение 4. Отказ от использования Все этапы называются циклом, поскольку после каждой итерации возможен возврат к предыдущей фазе 1. Осуществляется поиск функций, которые должна выполнять программа, также конкретизируется предметная область 2. Состоит из подэтапов: a. Анализ требований к программе b. Проектирование
c. Кодирование d. Тестирование e. Документирование 3. Связан с настройкой и конфигурированием среды программы, а также с устранением ошибок 4. Снятие продукта с продажи и отказ от сопровождения Длительность жизненного цикла различных программ неодинаковая. Для большинства современных программ – 2-3 года
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|