Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




Переполнения

Читайте также:
  1. Переполнения и прерывания

Сложение и вычитание

Обработка двоичных данных

Операции

Арифметические

Лекция 4.

С (Перенос)

Р (Контроль четности)

А (Внешний перенос)

Содержит перенос из 3-го бита для 8-битных данных использует­ся для специальных арифметических операций.

Показывает четность младших 8-битовых данных (1 — четное и О — нечетное число).

Содержит перенос из старшего бита, после арифметических опе­раций, а также последний бит при сдвигах или циклических сдвигах. При программировании на Ассемблере наиболее часто используются флаги О, S, Z, и С для арифметических операций и операций сравнения, а флаг D для обозначения направления в операциях над строками.

 

Несмотря на то, что мы привыкли к десятичной арифметике (база 10), компьютер работает только с двоичной арифметикой (база 2). Кроме того, ввиду ограничения, накладываемого 16-битовыми регистрами, большие величины требуют специальной обработки.

Команды ADD и SUB выполняют сложение и вычитание байтов или слов, содержащих двоичные данные. Вычитание выполняется в ком­пьютере по методу сложения с двоичным дополнением: для второго опе­ранда устанавливаются обратные значения бит и прибавляется 1, а затем происходит сложение с первым операндом. Во всем, кроме первого ша­га, операции сложения и вычитания идентичны.

Поскольку прямой операции память-память не существует, дан­ная операция выполняется через регистр. В следующем примере к содер­жимому слова WORDB прибавляется содержимое слова WORDA, опи­санных как DW:

MOV AX.WORDA ADD AX,WORDB MOV WORDB,AX

Опасайтесь переполнений в арифметических операциях. Один байт содержит знаковый бит и семь бит данных, то есть, значения от -128

до+127.

 

Результат арифметической операции может легко превзойти ем­кость однобайтового регистра. Например, результат сложения в регистре AL, превышающий его емкость, автоматически не переходит в регистр АН.

Предположим, что регистр AL содержит шест.60, тогда результат команды

ADD AL.20H

генерирует в AL сумму — шест.80. Но операция также устанавли­вает флаг переполнения и знаковый флаг в состояние «отрицательно». Причина заключается в том, что шест.80 или двоичное 1000 0000 являет­ся отрицательным числом, то есть, в результате, вместо +128, мы полу­чим -128.

Так как регистр AL слишком мал для такой операции и следует воспользоваться регистром АХ.

В следующем примере команда CBW (Convert Byte to Word — пре­образовать байт в слово) преобразует шест.60 в регистре AL в шест.0060 в регистре АХ, передавая при этом знаковый бит (0) через регистр АН.

Команда ADD генерирует теперь в регистре АХ правильный ре­зультат: шест.0080, или +128:

CBW ;Расширение AL до АХ ADD AX.20H прибавить к АХ

Но полное слово имеет также ограничение: один знаковый бит и 15 бит данных, что соответствует значениям от -32768 до +32767.


<== предыдущая страница | следующая страница ==>
Z (Ноль) | Слово на слово

Дата добавления: 2014-03-11; просмотров: 458; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.004 сек.