Реферат: Арифметические операции с BCD числами - текст реферата. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Реферат

Арифметические операции с BCD числами

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Реферат
Язык реферата: Русский
Дата добавления:   
 
Скачать
Microsoft Word, 173 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникального реферата

Узнайте стоимость написания уникальной работы

16 П о курсу: “ Системное программирование и в ычислительные системы ” На тему: “ Арифметические операции с BCD числами ” Содержание: 1. ДВОИ ЧНО-ДЕСЯТИЧНЫЙ ФОРМАТ (BCD) ………………………. 3 2. Ариф метические инструкции ………………………………………….. 4 2.1. Форматы арифметических данных ………………………………….. 4 2.2. Ариф метические операции и флаги ………………………………… 5 2.3. Слож ение ……………………………………………………………… 6 2.4. Вычи тание …………………………………………………………….. 7 2.5. Умно жение ……………………………………………………………. 8 2.6. Деле ние ………………………………………………………………… 9 3. ЛИТЕРАТУРА …………………………………………………………. 12 1. ДВОИЧНО-ДЕСЯТИЧНЫЙ ФОРМАТ (BCD) Пусть в некотором примере деления в ASCII-формате было получено частное 00090204. Если сжать это значение, сохраняя только правые циф ры каждого байта, то получим 0924. Такой формат называется двоично-десятичн ым (BCD - Binary Coded Decimal) (или упакованным). Он сод ержит только десятичные цифры от 0 до 9. Длина двоично-десятичного предста вления в два раза меньше ASCII-представления. Заметим, однако, чт о десятичное число 0924 имеет основание 10 и, будучи преобразованным в основа ние 16 (т.е. в шест. представление), даст шест.039C. ПРЕОБРАЗОВАНИЕ ASCII- ФОРМАТА В ДВОИЧНЫЙ ФОРМАТ Выполнение арифметических операций над числами в ASCII или BCD форматах удобно лишь для коротких полей. В большинст ве случаев для арифметических операций используется преобразов ание в двоичный формат. Практически проще преобразование из ASCII-формата непосредственно в двоич ный формат, чем преобразование из ASCII- в BCD-формат и, затем, в двоичный формат: Метод преобразования базируется на том, что ASCII-формат имеет основание 10, а компьютер выполняет арифметические операции только над числами с осно ванием 2. Процедура преобразования заключается в следующем: 1. Начинают с самого правого байта числа в ASCII-формате и обрабатывают справа налево. 2. Удаляют тройки из левых шест. цифр каждого ASCII-байта. 3. Умножают ASCII-цифры на 1, 10, 100 (шест.1, A, 64) и т.д. и складывают результаты. Для примера рассмотрим преобразование числа 1234 из ASCII-формата в двоичный ф ормат: Десятичное Шес тнадцатеричное H 4 х 1 = 4 4 3 х 10 = 30 1E 2 х 100 = 200 C8 1 х 1000 = 1000 - 3E8 – Результат: 04D2 Из этого примера в идно, что шестнадцатеричное число .04D2 действительно соответствует десят ичному 1234. 2. Арифметические инструкции. 2. 1. Форматы арифметических данных. Арифметические операции процессоров 8086/8088 могут вып олняться над операндами 4-х типов (таблица 2. 1): 1. Двоичные без знака. 2. Двоичные со знаком (целые). 3. Упакованные десятичные без знака. 4. Распакованные десятичные без знака. Таблица 2. 1. Арифметическая интерпретация 8-битовых чисел. 16-ричное битовое дв. без знака дв. со знаком распак. десятич. упак. десят. 07 89 C5 00000111 10001001 11000101 7 137 197 +7 -119 -59 7 некорр. некорр. 7 89 некор. Двоичные числа могут занимать 1 или 2 байта. Десятичн ые числа хранятся побайтно по 2 десятичной цифре на байт для упакованног о формата или по 1 десятичной цифре на байт для распакованного формата. Пр оцессор предполагает, что определенные в арифметических инструкциях о перанды содержат данные, представляющие корректные для данной инструк ции числа. Некорректные данные могут привести к непредсказуемым резуль татам. Двоичные числа без знака могут занимать 8 или 16 бит; все биты значимы. Диапа зон значений 8-битового числа - от 0 до 255, 16-битового - от 0 до 65535. Над двоичными чи слами без знака можно выполнять операции сложения, вычитания, умножения и деления. Двоичные числа со знаком (целые) могут занимать также 8 или 16 бит. Значение с таршего бита (самого левого) задает знак числа : 0 - положительное, 1 - отрицат ельное. Отрицательные числа представляются стандартным дополнением до 2. Поскольку один разряд отведен под знак, диапазон изменения 8-битового ч исла - от -127 до +127, 16-битового -от -32768 до +32767. Число 0 имеет положительный знак. Над двоичными числами со знаком могут быть выполнены операции умножения и деления. Сложение и вычитание выполняются без учета знака. Для обнаружения переноса в знаковый разряд в результате беззнаковой операции можно использовать инст рукции условного перехода . Упакованные десятичные числа хранятся как беззнаковые байтовые величи ны. Каждый байт содержит 2 десятичные цифры, занимающие по 4 бита каждая. Ци фра в старшем полубайте более значима. В каждом полубайте допустимы толь ко 16-ричные значения от 0 до 9; соответственно пределы изменения десятично го числа - от 0 до 99. Сложение и вычитание таких чисел выполняются в 2 стадии. С начала применяется обычная беззнаковая двоичная инструкция, которая ф ормирует в регистре AL промежуточный результат. Затем выполняется операц ия настройки (инструкция DAA или DAS), преобразующая содержимое AL в корректный упакованный десятичный результат. Умножение и деление упакованных дес ятичных чисел невозможно. Распакованные десятичные числа хранятся как беззнаковые байтовые вели чины. Десятичная цифра располагается в младшем полубайте. Допустимы и ин терпретируются как десятичные числа 16-ричные значения от 0 до 9. Для выполн ения операций умножения и деления старший полубайт должен быть заполне н нулями; для сложения и вычитания он может содержать любое значение. Ари фметические операции над распакованными десятичными числами выполняю тся в 2 стадии. Сначала используются обычные беззнаковые инструкции слож ения, вычитания или умножения, которые формируют в регистре AL промежуточ ный результат. Затем выполняется операция настройки (инструкция AAA,AAS или AAM), преобразующая содержимое AL в результирующее корректное распакованно е десятичное число. Деление выполняется аналогично, за исключением того , что сначала следует настроить числитель в AL (инструкция AAD), а затем выполн ить инструкцию беззнакового двоичного деления, результатом которого б удет корректное распакованное десятичное число. Формат десятичных распакованных чисел подобен представлению десятичн ых цифр в коде ASCII. При этом для числа в коде ASCII старший полубайт содержит 16-ри чное значение 3. Возможное содержимое старшего полубайта для распакован ного формата приведено выше. Преобразование из одного вида в др угой сложности не представляет. 2. 2. Арифм етические операции и флаги. Арифметические инструкции процессоров 8086/8088 оставля ют после своего выполнения некоторые характеристики результатов опера ций в виде значений 6 флагов. Большинство из них могут анализироваться последующими инструкци ями условного перехода; может также использоваться инс трукция прерыв ания по переполнению INTO . Влияние каждой инструкции на флаги указано п ри описании инструкции. Однако имеются следующие общие правила: 1. Флаг переноса CF устанавливается в 1, если в результате операции сложения был перенос из старшего бита или в результате операции вычитания был зае м в старший бит результата. Если же переноса или заема не было, CF устанавли вается в 0. Заметим, что знаковый перенос характеризуется различными зна чениями флагов CF и OF. Флаг CF может использоваться для обнаружения беззнако вого переполнения. Следует помнить, что 2 инструкции, ADC (сложение с перенос ом) и SBB (вычитание с заемом) вовлекают CF в свои операции и могут быть поэтому использованы для мультибайтного (32-, 64-разрядного) сложения и вычитания. 2. Флаг промежуточного переноса AF устанавливается в 1 при переносе из млад шего полубайта результата во время сложения или при заеме в младший полу байт результата во время вычитания. Если же переноса или заема не было, AF у станавливается в 0. Флаг AF введен для выполнения десятичной настройки и об ычно в других целях не используется. 3. Флаг знака SF устанавливается арифметическими и логическими инструкци ями равным старшему (7-му или 15-му) биту результата. Для двоичных чисел со зн аком SF будет равен 0 в случае положительного результата и 1 - в случае отрица тельного (если нет переполнения). Значение флага SF может анализироваться после сложения или вычитания инструкциями условного перехода. Програм мы, выполняющие беззнаковые операции, обычно игнорируют SF, т.к. старший би т результата в этом случае интерпретируется как двоичная цифра, а не как знак. 4. Флаг нуля ZF устанавливается в 1, если результат арифметической или логич еской операции равен 0, и устанавливается в 0, если результат отличен от 0. Зн ачение флага может анализироваться инструкциями условного перехода. 5. Флаг паритета PF устанавливается в 1, если младшие 8 бит результата арифмет ической или логической операции содержат четное число единиц, и устанав ливается в 0, если число единиц нечетно. Флаг PF введен для совместимости с п роцессорами 8080/8085; он может также использоваться для контроля символов в к оде ASCII на корректность паритета. 6. Флаг переполнения OF устанавливается в 1, если результат слишком велик дл я положительного числа или слишком мал для отрицательного и не помещает ся в операнд-приемник (не считая знаковый разряд). В противном случае значение OF -0. Состояние этого флага отражает наличие арифметического переполнения со знаком. Он может анал изироваться инс трукциями условного перехода или инструкцией INTO . В беззнаковых операциях OF обычно игн орируется. 2. 3. Сложе ние. ADD приемник,источник СЛОЖЕНИЕ БАЙТОВ ИЛИ СЛОВ Арифметическая су мма 2-х операндов, которыми могут быть байты или слова, замещает операнд-пр иемник. Оба операнда могут содержать двоичные числа со знаком или без не го (см. AAA и DAA). ADD модифицирует флаги AF, CF, OF, PF, SF и ZF. ADC приемник,источ ник СЛОЖЕНИЕ С ПЕРЕНОСОМ Эта инструкция вы полняет арифметическую сумму своих операндов, добавляет 1, если установл ен в 1 флаг CF, и помещает результат на место операнда-приемника. Оба операнд а могут содержать двоичные числа со знаком или без него (см. AAA и DAA). ADC модифиц ирует флаги AF, CF, OF, PF, SF и ZF. Поскольку ADC использует перенос от предыдущей операц ии, она может применяться для с ложения чисел длинне е 2 байтов. INC приемник УВЕЛ ИЧЕНИЕ БАЙТА ИЛИ СЛОВА НА 1 К содержимому при емника прибавляется 1. Операнд может быть байтом или словом и рассматрив ается как двоичное число без знака (см. AAA и DAA). INC модифицирует флаги AF, OF, PF, SF и ZF и н е влияет на CF. AAA ASCII-НАСТРОЙКА Д ЛЯ СЛОЖЕНИЯ Эта инструкция пр еобразует содержимое регистра AL в корректное распакованное десятичное число; старший полубайт обнуляется. AAA модифицирует флаги AF и CF; состояния ф лагов OF, PF, SF и ZF после AAA не определены. DAA ДЕСЯТИЧНАЯ НА СТРОЙКА ДЛЯ СЛОЖЕНИЯ Эта инструкция ко рректирует результат предшествующего сложения 2-х правильных упакован ных десятичных чисел, содержащийся в регистре AL. Содержимое AL преобразует ся в пару корректных упакованных десятичных чисел. DAA модифицирует флаги AF, CF, PF, SF и ZF; состояние флага OF после DAA не определено. 2. 4. Вычит ание. SUB приемник, источник ВЫЧИТАНИЕ БАЙТОВ ИЛИ СЛОВ Содержимое источн ика вычитается из содержимого приемника, и результат помещается на мест о приемника. Операнды могут быть байтами или словами и содержать двоичны е числа со знаком или без него (см. AAS и DAS). SUB модифицирует флаги AF, CF, OF, PF, SF и ZF. SBB приемник, источник ВЫЧИТАНИЕ С ЗАЕМОМ По этой инструкци и содержимое источника вычитается из содержимого приемника, из результ ата вычитается еще 1, если установлен в 1 флаг CF, и окончательный результат п омещается на место приемника. Оба операнда могут быть байтами или словам и и содержать двоичные числа со знаком или без него (см. AAS и DAS). SBB модифицируе т флаги AF, CF, OF, PF, SF и ZF. Поскольку SBB использует заем предыдущей операции, она мож ет применяться для вы читания чисел длиннее 2 байтов. DEC приемник УМЕН ЬШЕНИЕ БАЙТА ИЛИ СЛОВА НА 1 Содержимое приемн ика уменьшается на 1. Приемник может быть байтом или словом. DEC модифицируе т флаги AF, OF, PF, SF и ZF и не влияет на состояние CF. NEG приемник ОТРИ ЦАНИЕ БАЙТА ИЛИ СЛОВА По этой инструкци и содержимое приемника, который может быть байтом или словом, вычитается из 0, и результат помещается на место приемника. Эта форма дополнения до 2 и спользуется для изменения знака целого числа. Если операнд равен 0, его зн ак не изменяется. Попытка отрицания байта, содержащего -128, или слова, содер жащего -32768, не изменяет операнд, но устанавливает в 1 флаг OF. NEG модифицирует ф лаги AF, CF, OF, PF, SF и ZF. Флаг CF всегда устанавливается в 1, исключая тот случай, когда операнд равен 0 (тогда и CF=0). CMP приемник,источ ник СРАВНЕНИЕ БАЙТОВ ИЛИ СЛОВ Инструкция CMP вычит ает содержимое источника из содержимого приемника, но результат не возв ращает. Операнды, которые могут быть байтами или словами, не изменяются, н о модифицируются флаги AF, CF, OF, PF, SF и ZF, что может анализироваться последующими инструкциями условного перехода. Состояния этих флагов отражают отнош ение приемника к источнику. Например, если после CMP следует инструкция JG, пе реход произойдет, если содержимое приемник а больш е содержимого источника. AAS ASCII-НАСТРОЙКА Д ЛЯ ВЫЧИТАНИЯ Эта инструкция пр еобразует находящийся в регистре AL результат предшествующей операции в ычитания 2-х корректных десятичных распакованных чисел в корректное дес ятичное распакованное число, остающееся также в AL. Старший полубайт реги стра AL обнуляется. AAS модифицирует флаги AF и CF; состояния флагов OF, P F и ZF после AAS не определены. DAS ДЕСЯТИЧНАЯ НА СТРОЙКА ДЛЯ ВЫЧИТАНИЯ Эта инструкция пр еобразует находящийся в регистре AL результат предшествующей операции в ычитания 2-х корректных десятичных упакованных чисел в пару корректных д есятичных упакованных цифр, остающихся также в AL. DAS модифицирует флаги AF, CF, PF, SF и ZF; со стояние флага OF не определено. 2. 5. Умножение. MUL источник УМНО ЖЕНИЕ БАЙТОВ ИЛИ СЛОВ БЕЗ ЗНАКА Инструкция MUL выпол няет беззнаковое умножение содержимых источника и аккумулятора. Если и сточник является байтом, в качестве аккумулятора используется регистр AL, а результат двойной длины помещается в регистры AH и AL. Если источник явля ется словом, в качестве аккумулятора используется регистр AX, а результат двойной длины помещается в регистры DX и AX. Операнды рассматриваются как д воичные числа без знака (см. AAM). Если старшая половина результата (содержим ое AH для источника-байта или содержимое DX для источника-слова) не равна 0, фл аги CF и OF устанавливаются в 1, в противном случае - в 0. Когда CF и OF установлены в 1, это означает, что AH или DX содержит значимые цифры результата. Состояни я флагов AF, PF, SF и ZF после MUL не определены. IMUL источник ЦЕЛО ЧИСЛЕННОЕ УМНОЖЕНИЕ БАЙТОВ ИЛИ СЛОВ Инструкция IMUL выпо лняет умножение со знаком содержимых источника и аккумулятора. Если ист очник является байтом, в качестве аккумулятора используется регистр AL, а результат двойной длины помещается в регистры AH и AL. Если источник являет ся словом, в качестве аккумулятора используется регистр AX, а результат дв ойной длины помещается в регистры DX и AX. Если старшая половина результата ( содержимое AH для источника-байта или содержимое DX для источника-слова) не является расширением знака младшей половины, флаги CF и OF устанавливаются в 1, в противном случае - в 0. Когда CF и OF установлены в 1, это означает, что AH или DX с одержит значимые цифры результата. Состояния флагов AF, PF, SF и ZF после IMUL не определены. AAM ASCII-НАСТРОЙКА Д ЛЯ УМНОЖЕНИЯ Инструкция AAM корре ктирует результат предшествующей операции умножения 2-х корректных дес ятичных распакованных операндов. Корректное десятичное распакованное число, состоящее из 2-х цифр, извлекается из регистров AH и AL, и результат возв ращается в регистры AH и AL. Старшие полубайты перемножаемых операндов долж ны быть обнулены, что необходимо AAM для формирования правильного результ ата. AAM модифицирует флаги PF, SF и ZF; состояния флагов AF, CF и OF после AAM не определены . 2. 6. Делен ие. DIV источник ДЕЛЕНИЕ БАЙТОВ ИЛИ СЛОВ БЕЗ ЗНАКА Инструкция DIV выпол няет беззнаковое деление содержимого аккумулятора (и его расширения) на содержимое источника. Если источник является байтом, предполагается, чт о делимое расположено в регистрах AH и AL. Частное остается в регистре AL, оста ток - в регистре AH. Если источник является словом, предполагается, что дели мое расположено в регистрах DX и AX. Частное в этом случае остается в ре гистре AX, остаток - в регис тре DX. Если значение частного п ревосходит вместимость регистра-приемника (FFh для источника-байта или FFFFh для источника- слова), возникает ситуация "деление на 0" и генерируется прерыва ние с номером 0; частное и остат ок в этом случае не определены. Дробная часть частного отсекается. После DIV состояния флагов AF, CF, OF, PF, SF и ZF не определены. IDIV источник ЦЕЛО ЧИСЛЕННОЕ ДЕЛЕНИЕ БАЙТОВ ИЛИ СЛОВ Инструкция IDIV выпо лняет деление со знаком содержимого аккумулятора (и его расширения) на с одержимое источника. Если источник является байтом, предполагается, что делимое расположено в регистрах AH и AL. Частное остается в регистре AL, остат ок - в регистре AH. Для такого деления максимально допустимое положительно е частное равно 127 (7Fh), а минимально допустимое отрицательное частное равно -127 (81h). Если источник является словом, предполагается, что делимое располож ено в регистрах DX и AX. Частное в этом случае остается в регистре AX, остаток - в регистре DX. Для такого деления значение частного может находиться в пред елах от -32767 (8001h) до 32767 (7FFFh). Если частное положительно и превышает положительный максимум или отрицательно и меньше отрицательного минимума, генерируе тся прерывание с номером 0 (деление на 0); частное и остаток в этом случае не определены. Нецелочисленное частное округляется до целого числа (по нап равлению к 0). Остаток имеет тот же знак, что и делимое. После IDIV состояния фла гов AF, CF, OF, ZF, PF и SF не определены. AAD ASCII-НАСТРОЙКА Д ЛЯ ДЕЛЕНИЯ Инструкция AAD модиф ицирует числитель в регистре AL перед делением 2-х корректных десятичных р аспакованных операндов таким образом, чтобы частное от деления было так же корректным десятичным распакованным числом. Для того, чтобы последую щая инструкция DIV сформировала правильный результат, регистр AH должен сод ержать нули. Частное остается в регистре AL, остаток - в регистре AH; оба старш их полубайта обнуляются. AAD модифицирует флаги PF, SF и ZF; состояния флагов AF, C F и OF после AAD не определены. CBW ПРЕОБРАЗОВАН ИЕ БАЙТА В СЛОВО Инструкция CBW запол няет регистр AH битами, равными знаковому биту однобайтного числа в регис тре AL. CBW на состояния флагов не влияет. Эта инструкция может использоватьс я для получения делимого двойного размера (слова) из результата предшест вующей операции деления байтов. CWD ПРЕОБРАЗОВАН ИЕ СЛОВА В ДВОЙНОЕ СЛОВО Инструкция CWD запол няет регистр DX битами, равными знаковому биту двухбайтного числа в регис те AX. CWD на состояния флагов не влияет. Эта инструкция может использоваться для получения делимого двойного размера (двойного слова) из результата п редшествующей операции деления слов. 3 . ЛИТЕРАТУРА: 1. Ассемблер для IBM PC (глава 13). 2. "Ассемблер: с правочник" (издательство "Питер", 2000 год).
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Лёгкая придурковатость делает человека практически неуязвимым.
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, реферат по программированию "Арифметические операции с BCD числами", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru