Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Задача для разработки алгоритма и программной реализации на эмуляторе микро-ЭВМ СМ-1800.





Пользуясь программой-монитором, занести в память ЭВМ, начиная с адреса 500016, следующий массив из 10 восьмиразрядных констант:

Адрес16 Константа16 Адрес16 Константа16
  FF 7D AC   4D FA

Будем рассматривать эти части как массив однобайтных целых положительных чисел без знака.

Составить программу, которая исходный массив чисел (с адреса 500016) преобразует в массив соответствующих двухбайтных двоично-десятичных кодов с адреса 600016 (600016 -младшие цифры числа, 600116 – старшая цифра и т.д.).

Затем формируется массив трёхбайтных кодов КОИ-7 соответствующих арабских цифр, начиная с адреса 700016 (700016- сотни 1-го числа, 700116- десятки 1-го числа, 700216 –единицы 1-го числа и т.д.).

Программу располагать в памяти с ячейки 400016.


Реферативный материал.

Двоично-десятичная система счисления.

Поскольку человеку наиболее привычны представление и арифметика в десятичной системе счисления, а для компьютера - двоичное представление и двоичная арифметика, была введена компромиссная система двоично-десятичной записи чисел. Такая система чаще всего применяется там, где существует необходимость частого использования процедуры десятичного ввода-вывода (электронные часы, калькуляторы, АОНы, и т.д.). В таких устройствах не всегда целесообразно предусматривать универсальный микрокод перевода двоичных чисел в десятичные и обратно по причине небольшого объема программной памяти.

Принцип построения этой системы достаточно прост: каждая десятичная цифра преобразуется прямо в свой десятичный эквивалент из 4 бит, например:

369110=0011 0110 1001 0001DEC:

Десятичное число        
Двоично-десятичное число        

Преобразуем двоично-десятичное число 1000 0000 0111 0010 в его десятичный эквивалент.
Каждая группа из 4 бит преобразуется в её десятичный эквивалент.
Получим 1000 0000 0111 0010DEC = 807210:

Двоично-десятичное число        
Десятичное число        

 

Микропроцессоры используют чистые двоичные числа, однако понимают и команды преобразования в двоично-десятичную запись. Полученные двоично-десятичные числа легко представимы в десятичной записи, более понятной людям.

Преобразование двоичных чисел в двоично-десятичные.

Арифметико-логическое устройство AVR-микроконтроллеров (как и других микропроцессоров) выполняет элементарные арифметические и логические операции над числами, представленными в двоичном коде. В двоичном коде считываются результаты преобразования АЦП, в двоичном коде (в формате целых чисел или чисел с плавающей точкой) удобно выполнять обработку результатов измерения. Однако, когда окончательный результат отображается на индикаторе, он должен быть преобразован в десятичный формат, удобный для восприятия человеком.

В данном разделе рассматриваются программы преобразования двоичных чисел в двоично-десятичные.

Форматы представления десятичных чисел

В настоящее время распространены два формата представления десятичных чисел в микропроцессорах - упакованный двоично-десятичный код (BCD-Binary-Coded Decimal) и неупакованный десятичный код.

Упакованный BCD-код - это такое представление десятичного числа, когда каждая десятичная цифра представляется 4-х битным двоичным позиционным кодом 8-4-2-1. При этом байт содержит две десятичные цифры. Младшая десятичная цифра занимает правую тетраду (биты 3: 0), старшая - левую тетраду (биты 7: 4). Многоразрядные BCD-числа занимают несколько смежных байт. Если число является знаковым, то для представления знака в BCD-формате отводится старшая тетрада старшего байта. Для кодирования знака можно использовать шесть двоичных кодовых комбинаций, которые не используются для представления десятичных цифр. Это коды 1010-1111 (A-F в шестнадцатеричном представлении). Обычно для кодирования знака плюс применяют код 1100 (С), а для знака минус - 1101 (D). На рисунке показано BCD-представление десятичного числа "-12345":


Двоично-десятичное представление числа "-12345"

Неупакованный десятичный код является подмножеством международной таблицы кодирования символов ASCII (Таблица). Видно, что для хранения неупакованных десятичных чисел требуется в два раза больше памяти, так как каждая цифра представляется 8-битным кодом.

ASCII-коды десятичных цифр

Десятичная цифра ASCII-код Десятичная цифра ASCII-код
  $30   $35
  $31   $36
  $32   $37
  $33   $38
  $34   $39

Операции двоично-десятичной арифметики

Операции двоично-десятичной арифметики выполняются в два этапа:

- двоично-десятичные числа обрабатываются как двоичные коды;

- выполняется коррекция результата с целью получения двоично-десятичного числа. Обработка двоично-десятичных чисел в компьютере выполняется побайтно. При этом надо учитывать следующие флаги F - перенос между байтами, AF - вспомогательный перенос (между двоично-десятичными цифрами в байте).

Сложение

Как было отмечено выше операция выполняется в два этапа: сложение и коррекция. После сложения в тетрадах может оказаться недопустимая комбинация или из тетрады может возникнуть перенос. Алгоритм коррекции состоит из двух шагов:

1) Если AF = 1 или младшая тетрада меньше 9, но больше 15, то к ней прибавляется код 6. Возникающий перенос прибавляется к старшей тетраде;

2) Если CF = 1 или старшая тетрада содержит недопустимую комбинацию, то к результирующему байту прибавляется код 60h.

Слева приведен пример сложения двух чисел представленных в двоично-десятичном формате:


Вычитание

Данная операция также выполняется в два этапа: вычитание и коррекция, обусловленная возможностью заема при вычитании или получения недопустимых значений результата.Эта коррекция также состоит из двух частей:

1) Если AF = 1 или младшая тетрада содержит недопустимую комбинацию, то из нее вычитается код 6b (прибавляется код 10b). Флаги AF и CF устанавливаются в соостветствии с правилами установки флагов при вычитании;

2) Если CF = 1 или старшая тетрада содержит недопустимую комбинацию, то из нее также вычитается код 6b (прибавляется код 10b).

Слева представлен пример вычитания двух двоично-десятичных чисел. Как показано, получить результат операции можно двумя способами. В первом случае, к текущему результату прибавляется код 66h, и результата такого сложения переводится в обратный код. Во втором случае начала имеет место перевод в обратный код текущего результата, а затем прибавление к нему кода AAh.

 








ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры...

ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между...

Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все...

Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.