Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Arkhitektura_EVM.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
465.73 Кб
Скачать
  1. Символьный ввод/вывод, функции.

Int 21h AH=01h– ввод с клавиатуры с эхо-выводом

06h - ввод без эхо-вывода

05h – вывод на принтер

02h – прокрутка вверх-вниз

09h – отобразить страницу которая заканчивается «$»

  1. Прерывание и функции работы с мышью

Все общение с мышью в DOS выполняется через прерывание 33h.

INT 33h, AX = 0— Инициализация мыши

AX = 1— Показать курсор

AX = 2— Спрятать курсор

AX = 3 — Определить состояние мыши

ВХ = :

0 — нажата левая кнопка

1 — нажата правая кнопка

2 — нажата средняя кнопка

СХ = Х-координата

DX = Y-координата

AX = 0Ch— Установить обработчик событий

ES:DX = адрес обработчика СХ = условие вызова

0 — любое перемещение мыши

1 — нажатие левой кнопки

2 — отпускание левой кнопки

3 — нажатие правой кнопки

4 — отпускание правой кнопки

5 — нажатие средней кнопки

6 — отпускание средней кнопки

СХ = 0000h — отменить обработчик

  1. Прерывание и функции системного таймера

Int 21h AX = 2Ah - Определить дату

СХ = год

DH = месяц

DL = день

AL = день недели (0 — воскресенье, 1 — понедельник...)

AX = 2Ch

СН = час

CL = минута

DH = секунда

DL = сотая доля секунды

2Bh— Установить дату

2Dh— Установить время

  1. Команды передачи управления

  2. Команды безусловного перехода: синтаксис и область использования

Команды машинной программы выполняются в том порядке, как они записаны в памяти. Но время от времени этот естественный порядок выполнения команд приходится нарушать с тем, чтобы следующей выполнялась не очередная команда программы, а какая-то иная. Такую возможность обеспечивают команды перехода.

Если переход делается только тогда, когда выполнено некоторое условие, то такой переход называется условным, а если он делается независимо от каких-либо условий, то это безусловный переход.

Формат команды: JMP имя

Имя (метка) может иметь атрибут NEAR (близкая, т.е. в пределах одного и того же сегмента кода) или FAR (дальняя, т.е. такая, на которую можно переходить из других сегментов кода),short (короткий, Исп-ся, если адрес перехода находится в пределах со значением -128 to +127 от к-ды).

  1. Команды условного перехода: мнемоника и таблица условных переходов, операнд команд

Команды перехода начинаются с j и работают в связке с cmp.

Пример:

Cmp eax, 42h

Jz metka2

Если регистр eax равен 42, то управление передастся первой команде после метки metka2.

код

Значение(переход,если...)

Условие

JA

(X > Y)

CF=0 & ZF=0

JAE

(X >= Y)

CF=0

JB

(X<Y)

CF=1

JBE

(X <= Y)

CF=1 or ZF=1

JC

Если оба сущ.

CF=1

JCXZ

Jump if CX=0

регистр CX=0

JE (то же, что и JZ)

(X = Y)

ZF=1

JG

(X > Y) с учетом знака

ZF=0 SF=OF

JL

(X <Y) с учетом знака

SF != OF

JMP

прыгает всегда

-

JNA

X не больше Y (для чисел без знака)

CF=1 or ZF=1

JNAE

X не больше или равно Y (для чисел без знака)

CF=1

JNC

Если нету

CF=0

JP

Если четное

PF=1

JPO

Если нечетное

PF=0

Все команды перехода имеют один операнд: смещение для перехода

  1. Организация циклов в ассемблере

Циклом называется любая многократно исполняемая последовательность инструкций

Этапы циклов:

1)Выборка команды

2)Формирование адреса следующей команды

3)Декодирование

4)Вычисление адресов операндов

5)Выборка операндов из ОП

6)Исполнение операции

7)Запись результатов в память

  1. Передача параметров и процедур

  2. Переменные и константы в программах

  3. Правила написания программ на языке ассемблера

1.Порядок

а) Инструкции для пользователя

б) К созданному описанию добавьте вслед за каждым абзацем блоки кода, реализующие функции, описанные в этом абзаце.

Работа программиста состоит из двух частей: разработать приложение и сделать возможным дальнейшее сопровождение программы.

2. Подходы при написании комментариев:

  1. перед каждой функцией или методом размещается одно или два предложения со следующей информацией:

  • что делает программа;

  • возникающие предположения о программе;

  • содержание входных параметров;

  • содержание выходном параметров в случае успешного или неудачного завершения;

  • все возможные выходные значения;

  1. перед каждой не очевидной частью функции поместить объяснение действия;

  2. любой алгоритм нужно подробно описать;

  3. любая нетривиальная ошибка, устраненная в коде, должна комментироваться;

  4. правильно размещенные операторы диагностики, проверки условий, а также соглашения об именах переменных являются комментариями сами по себе;

  5. писать комментарии так, будто сами собираетесь заниматься его поддержкой через пять лет;

  6. если возникла мысль «это хитро сделано» нужно переписать данную функцию;

3. Читайте код

4. Разлагайте сложные проблемы на задачи меньшего размера

5. Используйте язык ассемблера полностью

6. Проблема должна быть хорошо продумана перед тем, как она сможет быть решена

7. Программа должна писаться не менее двух раз

8. Оптимизация программ на языке ассемблера

  • Подбор оптимального алгоритма

  • Подстройка программы под конкретное оборудование;

  • Замена ассемблерных команд на машинный код.

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

9. Повышение читаемости, удобства и красоты программы.

  1. После каждой строки, где меняется значение регистра, указывать в комментарии, что в этом регистре

  2. Отступы делать не просто для циклов и ветвлений, но и для выделения любых ресурсов.

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

  4. В отдельные функции выделять логически связанные куски кода.

  5. Давать осмысленные имена всему. Никогда не использовать числовые константы и безымянные метки

  6. Структуризация проекта. Проект нужно делить на функции, модули (файлы), пакеты (папки) и подсистемы.

  7. инкапсуляция

  8. не использовать прописные буквы с мнемониками инструкций и именами регистров.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]