рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Команды сложения и вычитания

Команды сложения и вычитания - раздел Компьютеры, Практическая работа №1 Архитектура ЭВМ и вычислительных систем В Пк Имеется Несколько Команд Сложения И Вычитания. Основными Из Них Являются...

В ПК имеется несколько команд сложения и вычитания. Основными из них являются следующие:

Сложение: ADD op1, op2Вычитание (subtract): SUB op1, op2

В этих командах допустимы следующие комбинации операндов:

ор1 ор2r8 i8, r8, m8 сложение/вычитание байтов m8 i8, r8 r16 il6, rl6, ml6 сложение/вычитание слов m1б il6, rl6

Команда ADD складывает операнды и записывает их сумму на место первого операнда: ор1:=ор1+ор2. По команде SUB из первого операнда вычитается второй операнд и полученная разность записывается вместо первого операнда: ор1:=ор1-ор2.

Например:

ADD АН, 12 ;АН:=АН+12 SUB SI, Z ;SI:=SI-Z ADD Z,-300 ;Z:=Z+(-300)

Команды ADD и SUB работают как с числами размером в байт, так и с числами размером в слово; нельзя, чтобы один операнд был байтом, а другой - словом. При этом числа могут быть как знаковыми, так и беззнаковыми. В этих командах меняются флаги переноса CF, переполнения OF, знака SF и нуля ZF.

Следующая пара команд сложения и вычитания:

Увеличение на 1 (increment): INC op

Уменьшение на 1 (decrement): DEC op

В этих командах допустимы следующие типы операнда: r8, m8, rl6, ml6.

Примеры:

INC BL

DEC WORD PTR A

Команда INC аналогична команде ADD op, l , т. е. увеличивает свой операнд на 1: ор1:=ор1+1, а команда DEC аналогична команде SUB op, l , т. е. уменьшает операнд на 1: ор1:=ор1-1 (единственное отличие: команды INC и DEC не меняют флаг переноса CF). Выгода от команд INC и DEC в том, что они занимают меньше места в памяти и выполняются быстрее, чем соответствующие команды ADD и SUB.

Еще одна команда из группы сложения и вычитания:

Изменение знака (negative): NEG op

Допустимые типы операнда этой команды: r8, m8, rl6, ml6. Команда NEG рассматривает свой операнд как число со знаком и меняет его знак на противоположный: ор:=-ор. Например:

MOV АН, 1

NEG АН ; АН:=-1 (0FFh)

Здесь есть особый случай: если ор=-128 (80h), то операнд не меняется, т. к. нет знакового числа +128. Аналогично для чисел-слов: если значение операнда равно минимальному отрицательному числу -32768 (8000h), то команда не меняет операнд.

В этом особом случае флаг OF получает значение 1 (при других операндах OF=0). При нулевом операнде флаг CF равен 0, при других - 1. Флаги SF и ZF меняются как обычно.

И, наконец, рассмотрим еще пару команд сложения и вычитания:

Сложение с учетом переноса (add with carry): ADC op1, op2

Вычитание с учетом заема (subtract with borrow): SBB op1, op2

Допустимые типы операндов - как в командах ADD и SUB. Эти команды аналогичны командам обычного сложения и вычитания (ADD и SUB) за одним исключением - в команде ADC к сумме операндов еще прибавляется значение флага переноса CF: opl:=opl+op2+CF, а в команде SBB из разности операндов еще вычитается значение этого флага: opl:=opl-op2-CF.

Зачем это нужно? В ПК одной командой можно сложить (вычесть) только числа размером в байт или слово. Сложение же (вычитание) чисел других размеров, например двойных слов, приходится реализовывать нам самим через сложение (вычитание) чисел размером в слово или байт. Здесь-то и оказываются полезными команды ADC и SBB.

Рассмотрим, для примера, как можно сложить следующие два числа размером в двойное слово: X=1204F003h и Y=8052300Fh. Условно разбиваем каждое число на два слова. Сначала складываем младшие (правые) части их, используя команду ADD. Может получиться единица переноса, которую надо учесть при сложении старших (левых) частей чисел. Как это сделать? Вспомним, что единица переноса попадает во флаг CF, поэтому к сумме старших частей надо добавить и значение этого флага (если единицы переноса не было, то CF=0, поэтому и здесь можно прибавлять CF), а такое сложение как раз и осуществляет команда ADC. Следовательно, старшие части чисел надо складывать по команде ADC.

Если для определенности считать, что число Х размещается в двух регистрах АХ (старшие цифры) и ВХ (младшие), а число Y - в регистрах СХ (старшие цифры) и DX (младшие), и если сумму этих двух чисел надо записать вместо числа X, т. е. надо реализовать (AX,BX):=(AX,BX)+(CX,DX), тогда это делается так:

ADD BX, DX ; ВХ: =Xмл+Yмл, CF=перенос

ADC AX, CX ; AX:=Xст+Yст+CF

(Отметим, что при сложении старших частей также может появиться единица переноса, однако мы ее уже не будем учитывать.)

Аналогичным образом реализуется вычитание беззнаковых чисел размером в двойное слово, для чего используется команда SBB. Например, вычитание (AX,BX):=(AX,BX)-(CX,DX) реализуется так:

SUB BX, DX ; ВХ: =Xмл-Yмл, CF=заем еденицы

SBB АХ, СХ ; AX:=Xст-Yст-CF

С помощью команд ADC и SBB можно реализовать сложение и вычитание чисел любого размера, причем эти операции для беззнаковых и знаковых чисел реализуются одинаково.

– Конец работы –

Эта тема принадлежит разделу:

Практическая работа №1 Архитектура ЭВМ и вычислительных систем

Архитектура ЭВМ и вычислительных систем... Тема Выполнение операций сложения и вычитания в обратном и дополнительном... Цель работы Научиться производить операции сложения и вычитания в дополнительных и обратных кодах...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Команды сложения и вычитания

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Особенности сложения чисел в обратном и дополнительном кодах.
При сложении чисел в дополнительном коде возникающая единица переноса в знаковом разряде отбрасывается. При сложении чисел в обратном коде возникающая единица переноса в знаковом разряде п

Числа с фиксированной точкой.
Запись числа с фиксированной точкой обычно имеет знаковый и цифровой разряды. Фиксированная точка означает, что на этапе конструирования ЭВМ было определено, сколько и какие разряды машинного слова

Числа с плавающей точкой.
Для представления чисел с плавающей точкой (ЧПТ) используется полулогарифмическая форма записи числа: N = ± mq ± p где q- основание системы счисления,

Умножение двоичных чисел
Применительно к двоичной ПСС наиболее известны следующие основные способы выполнения операций умножения: умножение начиная с младших разрядов множителя:

Проверка состава оборудования
В программе, предназначенной для тиражирования, очень важной характеристикой является переносимость. Поскольку ПЭВМ разных пользователей могут иметь существенные отличия в конфигурации оборудования

Тип ПЭВМ
В конце ПЗУ BIOS по адресу FF00:0FFE записан байт типа ПЭВМ. Специфицированы следующие 4 значения этого байта для машин фирмы IBM: 0xFF - IBM PC; 0xFE - XT; 0xFD - PCjr; 0xFC - AT. Для ПЭВМ других

Состав оборудования
Опеределять состав оборудования следует только после того, как мы определили тип ПЭВМ. Это обусловлено тем, что способы получения информации о составе оборудования различны для XT и для AT. Рассмот

Определение объема оперативной памяти
Методика определения объема памяти - такая же, как и определения списка оборудования. Объем ОЗУ (в Кбайтах) находится в области памяти BIOS по адресу 0040:0013 (2-байтное слово) и может быть получе

Команды умножения
Если сложение и вычитание беззнаковых и знаковых чисел производятся по одним и тем же алгоритмам, то умножение чисел этих двух классов выполняется по разным алгоритмам, в связи с чем в ПК имеются д

Команды деления
Как и умножение, деление чисел без знака и со знаком также реализуется двумя командами: Деление целых без знака (divide): DIV ор Деление целых со знаком (integer

Изменение размера числа
Рассмотрим такую задачу. Пусть к числу из регистра ВХ надо прибавить число из регистра AL: BX:=BX+AL. Здесь требуется сложить слово с байтом, но в ПК нет команды сложения слова с байтом. Поэтому, п

Расширение байта до слова(convert byte to word): CBW
У этой команды местонахождение операнда и результата фиксировано: операнд всегда берется из AL, а результат всегда записывается в АХ. Команда записывает в регистр АН число 00h или 0FFh в зависимост

Логические команды
Логическим командам, которые, как следует из их названия, выполняют логические операции - отрицание, конъюнкцию и дизъюнкцию, присущ ряд общих черт. Во-первых, все они реализуют, как говор

Ор1 ор2
r8 i8, r8, m8 m8 i8,r8 r16 il6, rl6, ml6 m16 il6, rl6 Команда производит поразрядное логическое умножение операндов и записы-вает результат на место первого опер

Проверка: TEST opl,op2
Это аналог команды AND, но результат логического умножения никуда не записывается. Главное в команде TEST - установка флагов. Как уже было сказано, в логических командах интерес представляет только

Исключающее ИЛИ (exclusive OR): XOR opl,op2
Допустимые типы операндов - как в команде AND. И здесь результат записывается на место первого операнда, причем i-й бит результата равен 0, если i-e биты операндов совпадают, и равен 1, ес

Прямой переход
В данном случае в качестве ор указывается метка той команды, на которую надо передать управление: JMP <метка> Пример: JMP L ;следующей будет выполняться команда с м

Косвенный переход
Теперь рассмотрим другую разновидность безусловного перехода - косвенный переход. В этом случае в команде перехода указывается не сам адрес перехода, а то место, где находится этот адрес. Таким мес

Команды сравнения и условного перехода
Если переход осуществляется только при выполнении некоторого условия и не осуществляется в противном случае, то такой переход называется условным. Условный переход обычно реализуется в два шага: сн

Команды управления циклом
С помощью команд перехода можно реачизовать любые разветвления и циклы. Например, следующие операторы языка Паскаль а) if X>0 then S1 else S2 б) while X>0 do S в) r

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги