- •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.
10. Команды двоичной арифметики
add пр, ист - сложение. Рез-т в пр., не изменяя содерж. ист.
adс пр, ист - слож-е с переносом. Аналог. предыд. Вып-т сложение пр, ист и флага CF. Для слож-я чисел повыш. точности.
ех: сложением 2 64-битн. ч-ла.
edx:eax
ebx:ecx
Пусть одно знач-е наход. в паре р-р edx и eax, а др. в паре р-в ebx:ecx
add eax,ecx
adc edx,ebx
Если при слож. младш. двойн. слов произошел перенос из старшего разряда, то он будет учтен командой adc.
xadd пр, ист - обменять между собой и сложить. Вып-т слож-е, а сумму операндов в пр. Ист. всегда р-р, пр. мб р-р или переменная.
sub пр, ист - вычитает. Рез-т в приемник
sbb пр, ист - вычитание с займом. Аналог. пред-й, вычит. из пр. знач-е ист. и доп-но вычитает знач. флага CF. Для вычит. 64бит ч-л.
1) imul ист. - команда умн-я ч-л со знаком. Ист. явл. р-р или перем. умнож. al, ax или eax в завис-ти от разм. опер.
ax, dx:ax
edx:eax
imul bl
2) imul пр, ист - ист. - это число, р-р или перем. умнож на пр. - р-р. Рез-т заносится в пр.
3) imul пр, ист1, ист2 - ист1 умнож. на ист2 только ч-ло, рез-т в пр, только р-ре.
mul ист - умн-е чисел без знака. Сод-е ист-ка, р-р или пер-я, на р-р al, ax или eax
mov ax, 2
mov bx, 3
mul bx
idiv ист - целочисл. деление со знаком р-ра. ae, ax или eax на ист., р-р или пер-ю, а остаток в ah, dx или edx соотв.
div ист. - целочисл. деление без знака
inc пр. - вызывают инкрименты. Увел. пр., р-р или пер-ю на 1. Флаг CI в данной команде не затрагивается. Остальные флаги устан. в соотв. с рез-том.
dec пр. - уменьш. на 1
neg пр. - изменение знака. Выполн. над числом в пр., операцию дополнения до 2х.
cmp пр, ист - сравнение. Сравнить пр. и ист. путем вычитания ист (число, р-р или перем) из пр. (р-р и пер-я)
mov cx, 32
cmp cx, 0
CMPXCH6 пр, ист - сравнить и обменять сравн. знач-е в р-ре al, ax и eax копир. в пр. Флаг СF устан. = в противн. случае содерж. пр. копир. в al, ax или eax и флаг ZF устан. = 0
CMPXCH68B пр. - сравн. и обмен. 8 байт - выполн. сравн-е содерж. edx, eax как 64битн. ч-ла с пр. (8ми байт пер-яв памяти). Если = ecx:ebx как в 4битн. число, помещ. в пр., в противн. случае, пр. копир. в cdx eax.
11. Команды десятичной арифметики языка assembler. Синтаксис. Примеры.
Процессоры поддерживают операции с двумя форматами десятичных чисел:
- неупакованное двоично-десятичное число, т.е. байт принимает значения от 00 до 09h
- упакованное двоичное число (00—99h)
Все обычные арифметические операции над такими числами приводят к неправильным результатам, например если 19h+1, то 1ah, а на самом деле 20h
Коррекция после сложения.
DAA – если эта операция выполняется после ADD и в регистре al находится сумма двух упакованных чисел, то в al записывается упакованное двоично-десятичное число, которое должно стать результатом сложения.
DAS – коррекция после вычитания
AAA – ASCII коррекция после сложения
AAS - ASCII коррекция после вычитания
AAM - -//- после умножения
AAD - -//- после деления
AAA – коррекция суммы двух неупакованных двоично-десятичных чисел.
Example:
mov ax, 5
mov bx, 6
add ax, bx ; ax = 000Bh
aaa; ax = 0101
AAD – выполняет коррекцию неупакованного двоично-десятичного числа в регистре ax так, чтобы последующее деление привело к десятичному результату.
Example:
mov ax, 0205
mov be, 5
aad ; ax = 19h
div be ; ax = 0005