- •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.
7. Структура стека. Команды для работы со стеком. Синтаксис. Примеры.
Стек – это некоторая область ОП, которая использует механизм безадресной записи и выборки элементов данных.
Эти механизмы полагают, что элемент, который записан последним, будет всегда прочитан первым.
Адрес сегмента памяти, в котором находится стек, определяется значением в регистре SS. Размер стека задается первоначальным значением регистра SP.
Пара регистров SS:SP всегда указывает на текущую величину стека.
Для занесения слова в стек используется команда push. При этом сначала смещение в SP уменьшается на 2, а затем проверяется запись слова.
Для извлечения – pop. Сначала производится чтение слова, а затем смещение в SP увеличивается на 2.
Стек растет в направлении к началу памяти и уменьшается в направлении к ее концу.
Пример: push ax
pop bx
Эти 2 команды позволяют переписать слово из регистра ax в регистр bx.
Особенности работы со стеком:
1. Значение можно произвольно изменять в программе, но этого делать не следует.
2. Необходимо обратить внимание на выделение достаточного объема памяти для стека.
Язык Ассемблер допускает упрощение команды для работы со стеком.
push ax |
push bx |
push cx | push ax bx cx
| =
pop ax | pop ax bx cx
pop bx |
pop cx |
pusha – все регистры общего назначения в стек.
popa – считывание данных из стека.
8. Прерывания.
Прерывание – изменение текущей последовательности команд. По происхождению делится на программное, внутреннее и аппаратное. Процессор может выполнять 256 типов прерываний, каждому из которых соответствует свой вектор прерывания – дв. слово, сод-е дальний адрес в ряде регистров CS:IP, выз-й подпр-й. Под векторы прерываний в общ. пр-и адресов памяти зарезервирована область 0-3FFh
Программные прерывания. Вызываются исп-м пр-мы INT XX
Когда вып-ся прерывания, сначала адрес прерываний программы сохраняется в прер. Программе в паре регистров CS:IP. После обработки прерываний считается значение адреса, которое было сохранено ранее и возвр. на место прер. команды.
Внутренние прерывания. Возникают при работе процессора по особым условиям. При переполнении также возможно внутреннее прерывание.
Аппаратные прерывания. Инициируются клавиатурой. К ним можно отнести прерывания мыши.
9. Функции dos: ввод с клавиатуры, печати строки, завершение инициализации.
1) Печать строки 09h ah=09h ds:dx – адрес выводимой строки.
mov ah,09h
mov dx,offset x
int 21h
В ah заносится номер функции DOS, реализующей вывод на экран строки текста. DOS, получив управление с помощью int 21h определяет номер функции именно по содержимому ah, поэтому другим регистром здесь пользоваться нельзя.
Функция DOS 09h извлекает адрес выводимой строки из dx.
2) Завершение инициализации. 4ch
Завершает текущую программу. В процессе завершения освобождает всю выделенную процессу память.
При вызове ah=4ch
al – код возврата
mov ah,4ch
int 21h
end.
3) Ввод с клавиатуры 01h – ввод символа с эхом.
Вводит символ с клавиатуры и отображает его на экран. При отсутствии символа ждет ввода. Допустимо перенаправление ввода на другое устройство.
При вызове ah=01h
mov ah,01h
int 21h
Пример: Программа-диалог, где встречаются все три функции.
.model tiny
.data
txt1 DB ‘This is time am – [y/n]$’
txt2 DB 13,10 ‘Good morning’,13,10,’$’
txt3 DB 13,10 ‘Good afternoon’,13,10,’$’
.code
.startup
mov dx, offset txt1 ‘ вывод строки txt1
mov ah,09h
int 21h
mov ah,01h ‘ ввод с клавиатуры y или n
int 21h
cmp al,’y’
jnz m1
cmp al,’n’
jnz m2
m1: mov dx, offset txt3
jmp m3
m2: mov dx, offset txt2
jmp m3
m3: mov ah,09h ‘ вывод строки txt2 или txt3
jmp m3
mov ah,4ch ‘ завершение инициализации
int 21h
end.