- •5. Назначение и основные функции операционной системы.
- •6. Управление процессами.
- •1.Классификация программного обеспечения
- •2.Системное программное обеспечение.
- •7. Файловая система.
- •12.Режим прямой адресации.
- •2.Системное программное обеспечение.
- •13. Режим косвенной адресации.
- •19.Организация работы с клавиатурой.
- •20.Организация работы с манипулятором мышь.
- •24.Антивирусное программное обеспечение.
- •3.Прикладное программное обеспечение
- •17. «Организ. Циклов»
- •11.Регистры общего назначения (рон)
- •8. Организация файловых систем.
- •10.Математические операции.
- •I. Сложение и вычитание.
- •II. Команды корректировки представления чисел в двоичном / десятичном коде.
- •III. Команды вычитания.
- •IV. Умножение и деление целых чисел.
- •9.Язык программирования Assembler
- •II.Процедура формирования программы.
- •III.Структура использования ассемблера в делфи.
- •VI. Команды Ассемблера.
- •16.Оператор условного перехода.
- •15.Оператор безусловного перехода.
- •II. Команды межсегментового перехода.
- •14. Программирование ветвлений
- •18. Видеопамять. Организация работы с видеопамятью.
- •15.Оператор безусловного перехода.
- •II. Команды межсегментового перехода.
10.Математические операции.
I. Сложение и вычитание.
Сложение и вычитание N целых чисел осуществляется следующими командами:
ADD опер1, опер2 ADD приёмник, источник
Опер1=опер1+опер2 приёмник = приёмник + источник.
ADC опер1, опер2
Опер1 = опер1 + опер2 + CF
Опернады могут быть 8миричными, 16, 32 битовыми переменными. Если результат операции не помещается в приёмник, то микропроцессор фиксирует данную ситуацию и устанавливает в единицу флаг переноса, при этом действие программы может быть следующее:
1) прекратить выполнение программы по переполнению разрядной сетки.
2) увеличить разрядность операндов.
Рассмотрим процесс увеличения разрядности.
ADD AL, BL
JNC @ m1
m1: ADC AH, 0
В итоге результат перейдет в AX.
Команды ADD и ADC могут воздействовать на 6 флагов:
CF – флаг переноса. (равен 1, если сложение не помещается в приемнике, иначе = 0)
PF – флаг четности. (равен 1, если результат сложения имеет четное число битов со значениями 1, в противном случае =0)
AF – флаг вспомогательного переноса. (равен 1, если результат сложения десятичных чисел требует корректировки.)
ZF – флаг нуля. (если результат сложения = 0, то флаг = 1)
SF – знак флага. (равен 1, если результат суммы отрицательный)
OF – знак переполнения. (если сложение чисел одного знака приводит к результату, который превышает диапазон допустимых значений приёмника в дополнительном коде, а сам приёмник при этом меняет знак.
II. Команды корректировки представления чисел в двоичном / десятичном коде.
1) AAA – преобразует содержимое регистра AL в правильную неупакованную десятичную цифру в младший (4 бита) регистр, а старший (4бита) – нули.
ADD AL, BL
AAA
Если результат операции превышает «9», то команда добавляет единицу в содержимое регистра AH и устанавливает флаг CF в единицу, в противном случае флаг CF=0.
2) DAA – преобразует содержимое регистра AL в 2 десятичные цифры.
4 младш. разряда – 1 число.
4 старш разряда – 2 число.
Если результат превышает предельное значение, то команда добавляет единицу к регистру AH и флаг CF устанавливается в единицу.
III. Команды вычитания.
SUB опер1, опер2
опер1 = опер1 – опер2
SBB опер1, опер2
опер1 = опер1 – опер2 – перенос заёма.
Операция вычитания заменяется операцией сложения, поэтому осуществляется в 2 этапа:
1) меняется знак у вычитаемого.
2)складываются 1 и 2 операнд.
Для обращения операнда к системе команд используется команда:
NEG опер1
Эта команда вычитает значения операнда из нуля, тем самым формирует дополнительный код.
Команды вычитания взаимодействуют с флагами точно так же, как и команды сложения, только при вычитании флаг CF понимается как признак заёма. При вычитании существуют ограничения: нельзя вычесть значения регистра или ячейки памяти из const, т.е. команда SUB 100,AL – недопустима.
NEG AL
ADD AL, 100
Для работы с десятичными числами используется следующая команда:
AAS – корректирует результат вычитания в десятичный код цифры. Команда не имеет опреандов и работает с регистром AL по следующему алгоритму:
1)если значения в регистре < или = 9, то флаг CF устанавливается в «0», и управление передаёт к следующей команде.
2) если значения в регистре >9, то из содержимого регистра вычитается 6 ( т.к. разница 15 – 9 = 6). Старшая часть регистра обнуляется, флаг CF устанавливается в 1, фиксируя наличие заёма из предыдущего воображаемого заёма.
DAS – корректирует младшую и старшую части регистра AL в десятичный код.