- •1. Представление данных в компьютере: двоичная, шестнадцатиричная системы исчисления, числа со знаком.
- •2.Организация памяти. Модели памяти.
- •3. Регистровая структура процессоров Intel ix86: регистры общего назначения, сегментные регистры, регистр флагов.
- •4. Директивы определения данных
- •5. Способы адресации: регистровая, непосредственная, прямая, косвенная.
- •6. Текстовый и графический режимы видеопамяти. Адресное пространство. Вывод символов и пикселей на экран. Примеры.
- •7. Структура стека. Команды для работы со стеком. Синтаксис. Примеры.
- •8. Прерывания.
- •9. Функции dos: ввод с клавиатуры, печати строки, завершение инициализации.
- •10. Команды двоичной арифметики
- •11. Команды десятичной арифметики языка assembler. Синтаксис. Примеры.
- •12. Логические команды языка ассемблер. Синтаксис. Примеры.
- •13. Команды пересылки данных. Синтаксис. Примеры. Оператор ptr.
- •14. Сдвиговые операторы. Синтаксис.
- •15. Безусловный переход
- •16. Команды сравнения и передачи управления.
- •17. Организация циклов. Синтаксис. Примеры.
- •18. Строковые команды. Синтаксис.
- •19. Расширение mmx
- •20. Структура резидентных программ. Загрузка и выгрузка резидентной программы.
- •21. Драйверы устройств dos. Формат и загрузка драйвера устройства.
- •Символьные устройства осущ-ют послед. Ввод/вывод. Такими устройствами являются console, последовательный порт, часы и принтер.
- •22. Программирование на уровне портов ввода/вывода. Системный таймер.
- •23.Команды ввода-вывода
- •24. Переферийные устройства. Структура fdd, hdd, cd-rom.
3. Регистровая структура процессоров Intel ix86: регистры общего назначения, сегментные регистры, регистр флагов.
Регистровая структура процессоров Intel ix86
EAX 31|_______15|__AH__8|AX|7__AL__|0 аккумулятор |
EBX 31|_______15|__BH__8|BX|7__BL__|0 база | 32- разрядные регистры
ECX 31|_______15|__CH__8|CX|7__CL__|0 счётчик |
EDX 31|_______15|__DH__8|DX|7__DL__|0 регистр данных |
ESI 31|_______15|________|SI|_________|0 Индекс источника | Используються в строковых операциях
EDI 31|_______15|________|DI|_________|0 Индекс приёмника |
EBP 31|_______15|________|BP|_________|0 Указатель базы | Используються при работе со стеком
ESP 31|_______15|________|SP|_________|0 Указатель стека |
AX, BX, CX, DX – 16 разрядные регистры имеют старший и младший байт.
Стек – организованный специальным образом участок памяти для временного хранения данных. Действует по принципу, первый зашёл последний вышел.
Команда Push ax – помещает содержимое AX в стек, Push BX, Push CX, Чтобы получить AX? Необходимо сначала взять CX и BX потом AX. POP CX, POP BX, POP AX – Pop считывание данных из стека
Push a – помещает все регистры общего назначения в стек. Pop – обратная команда.
Пример:
mov AX,3 ; mov BX ,4; mul AX,BX; mov CX,AX; xor AX,AX
Начиная с 386 процессора представляют 16 основных регистров для использования в пользовательских программах. +11 регистров для работы с мультимедиями (MMX multimedia Extension) и числами с плавающей запятой. Помимо основных регистров доступны также: регистры управления памятью CDTR, IDTR, TR, LDTR;
регистры управления CR0,CR1 … CR4, отладочные регистры DR0 … DR7? И регистры общего назначения EAX, EBX, ECE, EDX, ESI, EDI, EBP, ESP.
Сегментные регистры. При использовании сегментированных моделей памяти. Для формирования любого адреса необходимы 2 числа, адрес начала сегмента и смещение начального байта относительно этого сегмента. В без сегментной модели памяти адреса начала всех сегментов равны. Т.к. сегмент способны оказаться где угодно, то программа, обращаясь к ним, применяет вместо настоящего адреса начала сигмента 16-битное число-селектор. В процессорах Intel предусмотрено 6 16-битных регистров: CS, DS, ES, FS, GS,SS. Регистры CS и SS отвечают за сегмент двух типов – сегмент кода и сегмент стека.
Регистр Флагов (FLAGS)
15|_0_|_NT_|_IO PL_|_OF_|_DF_|_IF_|_TF_|_SF_|_ZF_|_0_|_AF_|_0_|_PF_|_1_|_CF_|0
Регистр флагов представляет собой слово, каждый бит которого является флагом и устанавливается в 0 и 1 при определённых условиях, тем самым, изменяя поведение процессора.
CF – флаг переноса, устанавливается в 1 если результат предыдущей операции не изменяется в приёмнике, т.е. произошёл перенос из старшего бита.
PF – флаг четности 1 если младший байт результата предыдущей команды содержит чётное число битов равных 1
AF – флаг полпереноса вспомогательного переноса; 1, – если в результате предыдущее операции произошел перенос из 3-его бита в 4-ый; автоматически используется командами двоичной и десятичной коррекции
ZF – флаг нуля, если 1 то результат предыдущей операции 0.
SF – флаг знака – всегда равен старшему биту результата
ЕА – флаг ловушки, предусмотрен для работы отладчиков не использующих защищённый режим. Установка его в 1 приводит к тому, что после выполнения каждой команды управление временно передается отладчику, вызывается первое прерывание INT 1.
DF - флаг направлений, контролирует поведение команд обработки строк. При единичном его значении обрабатываться 1 сторону уменьшения адресов, при 0 – наоборот.
OF – флаг переполнении, 1 если результат предыдущей арифметической операции над числами со знаком выходит за допустимый для них предел.
IO PL эти два флага обрабатывают уровень привилегий ввода вывода.
NT – означает о вложенной задаче, применяется в защищённом режиме.