![](/user_photo/2706_HbeT2.jpg)
- •5. Преобразование двоичных чисел в десятичные
- •Преобразование десятичных чисел в двоичные
- •1H ;Перенос от предыдущей операции.
- •10. Общая структура программы на языке Ассемблер. Сегмент кода. Сегмент данных.
- •11. Подготовка, компиляция, компоновка ассемблерных программ
- •12. Отладка ассемблерных программ. Выполнение ассемблерных программ.
- •13. Формат директив и машинных команд. Директивы инициализации данных. Директивы описания данных на языке Ассемблера.
- •14. Простейшие директивы сегментации. Модели памяти. Сегменты данных.
- •15. Стандартные директивы сегментации. Команды пересылки данных.
- •16. Организация стека. Команды работы со стеком.
- •17. Команды двоичной арифметики (сложение, вычитание). Влияние на регистр флагов
- •18. Команды двоичной арифметики (умножение, деление). Влияние на регистр флагов.
- •19. Логические операции
- •23. Команды передачи управления. Команды условной передачи управления для операндов без знака. Дальность адресации.
- •24. Команды передачи управления. Команды условного перехода и флаги.
- •25.Организация цикла
- •29.Обработка массивов
- •30.Вызов подпрограмм
- •32. Повторяющиеся блоки и макросы
- •35.Обработка прерываний в реальном режиме.
- •36.Ввод информации с клавиатуры
- •1. Средства dos
- •2. Средства bios
- •37. Использование функций Int 21h (01h, 06h, 07h) для ввода информации.
- •Использование функций Int 21h (08h, 0Ah, 0Bh) для ввода информации.
- •Использование функций Int 21h (0Ch, 3Fh) для ввода информации.
- •Использование функций Int 16h bios для ввода информации
- •Использование функций Int 21h (02h, 06h, 09h) для вывода информации на экран.
- •Использование функций Int 21h для ввода, вывода информации в файл.
- •Использование функций Int 10h bios (00h,4Fh,02h).
- •Использование функций Int 10h bios (03h,08h,09h).
- •Использование функций Int 10h bios (0Ah,0Eh,13h).
- •Вывод графической информации на экран. Видеорежимы.
- •47. Ассемблер и языки высокого уровня. Вызов процедур.
- •48. Создание встраиваемого ассемблерного кода. Ассемблер, встроенный в программу на языке Pascal.
- •49. Создание встраиваемого ассемблерного кода. Ассемблер, встроенный в программу на языке с.
- •50. Охарактеризуйте системные средства управления памятью. Опишите структуру и образ памяти программ .Exe и .Com.
- •51. Трансляторы и интерпретаторы - общая схема работы.
- •Формат командных операторов
- •Формат директив ассемблера и операторов распределения данных
- •Имя Директива Операнды ;Комментарий
- •Элементы операторов
- •Регистры
- •Переменные
- •Числовые константы
- •Символьные константы
- •Сегменты и процедуры
- •Segment (начало сегмента) и ends (конец сегмента).
- •Система команд микропроцессора 8086
- •Команды передачи данных
- •Общие команды передачи данных
- •Команда mov
- •Команда обмена xchg
- •Команда xlat
- •Команды lea, lds и les
- •Команды lahf и sahf
- •Стековые команды
- •Команды ввода-вывода
- •In ac,port out port,ac (прямая укороченная адресация)
- •In ac,dx out dx,ac (косвенная адресация) команды арифметических операций
- •Команды сложения Команда add
- •Команда imul
- •Команды деления
- •Команда div
- •Команда idiv
- •Команды преобразования
- •Команды десятичной арифметики
- •Команды для формата bcd
- •Команды для формата ascii
- •Команды логических операций и команды сдвигов команды логических операций
- •Команды сдвигов
- •Команды передачи управления
- •Команды безусловных переходов
- •Команды условных переходов
- •Команды вызова подпрограмм
- •Команды возврата из подпрограмм
- •Команды управления циклами
- •Команды прерываний
- •Int type - вызов прерывания с номером type (от 0 до 255),
- •Цепочечные команды
- •Префикс повторения
- •Команда movs
- •Команда cmps
- •Команда scas
- •Команда lods
- •Команда stos
Команды безусловных переходов
Команды безусловного перехода имеют общую мнемонику JMP. Команда короткого безусловного перехода содержит во втором байте смещение, которое интерпретируется как знаковое целое. Диапазон значений байта смещения составляет -128 - +127. Если смещение положительное, осуществляется переход вперед, а если отрицательное - переход назад.
Команда ближнего безусловного перехода может либо непосредственно содержать 16-битное смещение, либо косвенный адрес 16-битного смещения. Диапазон смещения составляет -32768 - +32767 байт относительно адреса команды, находящейся после команды JMP.
Команда дальнего безусловного перехода реализует прямой и
косвенный межсегментнные переходы.
Форматы команд:
JMP dispL - короткий переход
JMP disp - ближний прямой переход
JMP mem/reg - ближний косвенный переход
JMP addr - дальний прямой переход
JMP mem - дальний косвенный переход
Команды условных переходов
В системе команд процессора 8086 имеется 19 двухбайтных команд условных переходов. При выполнении этих команд анализируется некоторое условие, закодированное текущими состояниями флагов, и если оно выполняется, то осуществляется переход, а если нет, то выполняется следующая по побядку команда.
Все условные переходы являются короткими. Некоторые команды для удобства программирования могут иметь несколько различных мнемонических обозначения.
Мнемонические обозначения команд:
1) Команды для работы с беззнаковыми числами:
JA/JNBE - переход, если больше;
JAE/JNB/JNC - переход, если больше или равно;
JB/JNAE/JC - переход, если меньше;
JBE/JNA - переход, если меньше или равно.
2) Команды для работы со знаковыми числами:
JG/JNLE - переход, если больше;
JGE/JNL - переход, если больше или равно;
JL/JNGE - переход, если меньше;
JLE/JNG - переход, если меньше или равно;
JNS - переход, если больше нуля;
JS - переход, если меньше нуля.
3) Команды, общие для знаковых и беззнаковых чисел:
JE/JZ - переход, если равно / переход, если ноль;
JNE/JNZ - переход, если не равно / переход, если не ноль;
JNO - переход, если нет переполнения;
JO - переход, по переполнению.
4) Прочие команды:
JCXZ - переход, если содержимое регистра CX равно нулю;
JNP/JPO - переход при отсутствии четности;
JP/JPE - переход по четности.
Форматы команд такие же, как у короткого безусловного перехода.
Команды вызова подпрограмм
Команда вызова подпрограммы CALL передает управление с автоматическим сохранением адреса возврата в стеке. В поле операнда этой команды находится метка первой команды вызываемой подпрог-
раммы.
При переходе к подпрограмме необходимо временно запомнить адрес команды, находящейся после команды CALL. Этот адрес называется адресом возврата. После того, как подпрограмма закончит свои действия, завершающая ее команда возврата RET передает управление по запомненному адресу возврата. Адрес возврата запоминается в стеке.
Вызовы могут быть внутрисегментными (тип NEAR) или межсегментными (тип FAR). В первом случае вызываемая подпрограмма находится в текущем сегменте кода, а во втором - в произвольном.
Команды внутрисегментного перехода производят декремент SP на 2, включают в стек содержимое IP, а затем прибавляют к IP 16-битное смещение, которое интерпретируется как знаковое целое.
Команды межсегментного перехода производят декремент SP на 2, включают в стек содержимое CS, снова производят декремент SP на 2, включают в стек содержимое IP, затем в IP загружается значение смещения, а в CS - сегментный адрес.
Формат команды:
CALL disp - непосредственный ближний вызов;
CALL mem/reg - косвенный ближний вызов;
CALL addr - непосредственный дальний вызов;
CALL mem - косвенный дальний вызов.