Конспект лекций Системное программирование (семестр 2) Возле названия каждой лекции написано число пар, в течение которых она будет читаться (+ ср обозначает
Вид материала | Конспект |
Схема команды Состояние флагов после выполнения команды (если старшая половина результата ненулевая) См. также Состояние флагов после выполнения команды (если результат ненулевой) См. также |
- 8Б класс Химия Пар. 30 (№1-3), Пар. 31 (№1-5), рабочая тетрадь эти же темы Биология, 8.14kb.
- Рабочая программа учебной дисциплины (модуля) Системное программирование, 108.12kb.
- Смирнягин курс США население Лекция население США этой теме будут посвящены три лекции, 288.75kb.
- Инструкция подумайте о ситуациях, в которых Ваши желания отличаются от желаний другого, 98.01kb.
- Лекция 8 Системное программирование. Системное проектирование взаимодействия процессов., 225.21kb.
- Программа лекций Будущее начинается сегодня! После каждой лекции конкурс с розыгрышем, 75.64kb.
- Программа лекций Будущее начинается сегодня! После каждой лекции конкурс с розыгрышем, 73.71kb.
- Конспект лекций по курсу "Информатика и использование компьютерных технологий в образовании", 1797.24kb.
- Календарно-тематический план лекций по факультетской терапии 4 курс (8 семестр) специальность, 119.31kb.
- Программа вступительного экзамена по специальности 05. 13. 18 Математическое моделирование,, 115.33kb.
MUL
(MULtiply)
Умножение целочисленное без учета знака
Схема команды: | mul множитель_1 |
Назначение: операция умножения двух целых чисел без учета знака.
Синтаксис
Алгоритм работы:
Команда выполняет умножение двух операндов без учета знаков. Алгоритм зависит от формата операнда команды и требует явного указания местоположения только одного сомножителя, который может быть расположен в памяти или в регистре. Местоположение второго сомножителя фиксировано и зависит от размера первого сомножителя:
- если операнд, указанный в команде — байт, то второй сомножитель должен располагаться в al;
- если операнд, указанный в команде — слово, то второй сомножитель должен располагаться в ax;
- если операнд, указанный в команде — двойное слово, то второй сомножитель должен располагаться в eax.
Результат умножения помещается также в фиксированное место, определяемое размером сомножителей:
- при умножении байтов результат помещается в ax;
- при умножении слов результат помещается в пару dx:ax;
- при умножении двойных слов результат помещается в пару edx:eax.
Состояние флагов после выполнения команды (если старшая половина результата нулевая):
11 | 07 | 06 | 04 | 02 | 00 |
OF | SF | ZF | AF | PF | CF |
0 | ? | ? | ? | ? | 0 |
Состояние флагов после выполнения команды (если старшая половина результата ненулевая):
11 | 07 | 06 | 04 | 02 | 00 |
OF | SF | ZF | AF | PF | CF |
1 | ? | ? | ? | ? | 1 |
Применение:
Команда mul выполняет целочисленное умножение операндов без учета их знаковых разрядов. Для этой операции необходимо наличие двух операндов-сомножителей, размещение одного из которых фиксировано, а другого задается операндом в команде. Контролировать размер результата удобно используя флаги cf и of.
mn_1 db 15 mn_2 db 25 ... mov al,mn_1 mul mn_2 |
См. также: урок 8 и команду imul
NEG
(NEGate operand)
Изменить знак операнда
Схема команды: | neg источник |
Назначение: изменение знака (получение двоичного дополнения) источника.
Синтаксис
Алгоритм работы:
- выполнить вычитание (0 – источник) и поместить результат на место источника;
- если источник=0, то его значение не меняется.
Состояние флагов после выполнения команды (если результат нулевой):
11 | 07 | 06 | 04 | 02 | 00 |
OF | SF | ZF | AF | PF | CF |
r | r | r | r | r | 0 |
Состояние флагов после выполнения команды (если результат ненулевой):
11 | 07 | 06 | 04 | 02 | 00 |
OF | SF | ZF | AF | PF | CF |
r | r | r | r | r | 1 |
Применение:
Команда используется для формирования двоичного дополнения операнда в памяти или регистре. Операция двоичного дополнения предполагает инвертирование всех разрядов операнда с последующим сложением операнда с двоичной единицей. Если операнд отрицательный, то операция neg над ним означает получение его модуля.
mov al,2 neg al ;al=0feh — число -2 в дополнительном коде |
См. также: уроки 6, 8 и команду not