|
Задача для разработки алгоритма и программной реализации на эмуляторе микро-ЭВМ СМ-1800.Стр 1 из 2Следующая ⇒ Пользуясь программой-монитором, занести в память ЭВМ, начиная с адреса 500016, следующий массив из 10 восьмиразрядных констант:
Будем рассматривать эти части как массив однобайтных целых положительных чисел без знака. Составить программу, которая исходный массив чисел (с адреса 500016) преобразует в массив соответствующих двухбайтных двоично-десятичных кодов с адреса 600016 (600016 -младшие цифры числа, 600116 – старшая цифра и т.д.). Затем формируется массив трёхбайтных кодов КОИ-7 соответствующих арабских цифр, начиная с адреса 700016 (700016- сотни 1-го числа, 700116- десятки 1-го числа, 700216 –единицы 1-го числа и т.д.). Программу располагать в памяти с ячейки 400016. Реферативный материал. Двоично-десятичная система счисления. Поскольку человеку наиболее привычны представление и арифметика в десятичной системе счисления, а для компьютера - двоичное представление и двоичная арифметика, была введена компромиссная система двоично-десятичной записи чисел. Такая система чаще всего применяется там, где существует необходимость частого использования процедуры десятичного ввода-вывода (электронные часы, калькуляторы, АОНы, и т.д.). В таких устройствах не всегда целесообразно предусматривать универсальный микрокод перевода двоичных чисел в десятичные и обратно по причине небольшого объема программной памяти. Принцип построения этой системы достаточно прост: каждая десятичная цифра преобразуется прямо в свой десятичный эквивалент из 4 бит, например: 369110=0011 0110 1001 0001DEC:
Преобразуем двоично-десятичное число 1000 0000 0111 0010 в его десятичный эквивалент.
Микропроцессоры используют чистые двоичные числа, однако понимают и команды преобразования в двоично-десятичную запись. Полученные двоично-десятичные числа легко представимы в десятичной записи, более понятной людям. Преобразование двоичных чисел в двоично-десятичные. Арифметико-логическое устройство 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": Неупакованный десятичный код является подмножеством международной таблицы кодирования символов ASCII (Таблица). Видно, что для хранения неупакованных десятичных чисел требуется в два раза больше памяти, так как каждая цифра представляется 8-битным кодом. ASCII-коды десятичных цифр
Операции двоично-десятичной арифметики Операции двоично-десятичной арифметики выполняются в два этапа: - двоично-десятичные числа обрабатываются как двоичные коды; - выполняется коррекция результата с целью получения двоично-десятичного числа. Обработка двоично-десятичных чисел в компьютере выполняется побайтно. При этом надо учитывать следующие флаги 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 км? Что будет с Землей? - задался я вопросом... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|