Разработка программ преобразования форматов двоичных данных

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

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 16.10.2017
Размер файла 82,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Разработка программ преобразования форматов двоичных данных

Введение

алгоритм программный двоичный кодирование

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

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

Адрес16

Константа16

Адрес16

Константа16

5000

5001

5002

5003

5004

85

00

8D

07

80

5005

5006

5007

5008

5009

22

D4

A9

FF

A0

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

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

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

1.Аналитическая часть

Двоично-десятичное кодирование

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

Таким образом, при двоично-десятичном кодировании фактически не производится перевод числа в новую систему счисления, а мы имеем дело с двоично-кодированной десятичной системой счисления.

Например, десятичное число 15(10)= 1111(2)= 0001 01012-10.

Арифметические действия над ДД-кодами.

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

1. Сложение чисел начинается с младших цифр (тетрад) и производится с учетом возникающих переносов из младших разрядов в старшие.

2. Вычитание мы заменяем сложением, причём число, которое мы вычитаем, нужно перевести в прямой, обратный и дополнительный коды.

Час я приведу примеры сложения и вычитания ДД-кодов, взятых из задания к своему курсовому проекту.

Произвести сложение А=0716 и В=2216.

А2-10 00000111

+

B2-1000100010

С2-10 00101001

Теперь вычтем, например, из А=8516 В=2216.

2216=0010 00102-10. Переведем это число в прямой, в обратный, затем в дополнительный коды. Получим число -2216=1110 11102-10=B'

Нужно сложить A и B'.

А2-10 10000101

+

B'2-10 1110 1110

С 2-10 0110 0011

Должно получиться число С16=63. Так и есть, младшая тетрада - это 3, а старшая - это 6.

Стандарты кодирования текстов

Для компьютерного представления текста необходимо каждому знаку присвоить некоторое число -- его код. Все современные таблицы кодировок происходят от возникшей еще в 60-е годы 7-разрядной таблицы ASCII (American Standard Code for Information Interchange), которая содержит 33 кода команд или управляющих символов, большая часть которых сегодня не используется, и 95 кодов для различных знаков, достаточных для работы с английскими текстами. При 7-разрядном кодировании каждому символу сопоставляется 7 бит, то есть число в диапазоне от 0 до 127. В простых текстовых (plain text) файлах допустимы только управляющие символы, отмечающие концы строк и переходы на позиции табуляции. Скажем, маркер конца строки в Linux -- это код 10, в Macintosh OS -- 13, в CP/M, DOS и Microsoft Windows -- последовательность кодов 13, 10.

Для аналогичного представления знаков русского алфавита ныне применяется таблица КОИ-7 (Код для Обмена Информацией 7-битный. У такого кодирования есть два важных преимущества: оно компактно (для доступа к латинским и другим буквам и возврата обратно к кириллице используются специальные управляющие коды) и вводит естественную транслитерацию, что позволяет работать с текстами на русском единообразно в разных компьютерных системах. Со временем такая кодовая таблица оказалась недостаточной для широкого использования из-за отсутствия в ее составе кодов символов русского алфавита (кириллицы) и псевдографики (символов, позволяющих строить примитивные графические изображения на текстовом экране). Возникли новые модификации кода КОИ-7 ,так называемые таблицы КОИ-7 Н1, КОИ-7 НПО, КОИ-7 НАП и КОИ-7 НПП, которые, в свою очередь, не полностью решили возникшие проблемы. 

Все это привело к появлению нового кодового стандарта, так называемого кода КОИ-8. При этом способе кодирования для представления символа используется 8 бит информации, что дает возможность в рамках одной кодовой таблицы использовать 256 (28) символов. Первая половина таблицы полностью совпадает с кодовой таблицей КОИ-7 НО, вторая половина таблицы, содержащая символы большой и малой кириллицы, практически повторяет кодовую таблицу КОИ-7 Н1, но значения кодов символов кириллицы увеличены на 128. Такое построение таблицы обусловлено желанием сохранить совместимость между этими двумя стандартами. В этой таблице, в отличие от предыдущей, представлена шестнадцатеричная кодировка.

ASCII-коды все еще довольно широко используются для текстов на английском, особенно в США, а также в системах e-mail. Стандартные текстовые утилиты UNIX (grep, sed, awk) вплоть до середины 90-х по умолчанию могли работать только с ASCII -- подключение 8-го бита требовало их перекомпиляции. Сегодня 7-битная кириллица встречается, пожалуй, только в системе для подготовки научных публикаций TEX, да и то неявно, а для кодирования символов алфавитов большинства языков используется 8-разрядное кодирование, при котором каждому символу сопоставляется 8 бит или 1 байт кода. Код представляет собой число в диапазоне от 0 до 255, а первые 128 символов при таком кодировании аналогичны ASCII.

Существует пять признанных во всем мире таблиц кодировки русских букв:

· ISO 8859-5 -- стандарт международной организации по стандартизации для кириллицы, в РФ используется редко. Базируется на основной кодировке ГОСТ. Псевдографика отсутствует.

· Кодовая страница (code page, CP) 866 основана на альтернативной кодировке ГОСТ. Она создана специально для ОС MS-DOS, в которой часто используются символы псевдографики. Практически вытеснена следующей таблицей.

· Кодовая страница 1251 для Microsoft Windows стала популярной благодаря огромному влиянию фирмы Microsoft на рынок компьютерных технологий. Кроме того, в ней отсутствует ненужная в графических средах поддержка символов псевдографики и гораздо полнее, чем в других кодировках, представлены такие символы, как ©, ®, №, различные виды кавычек, тире и т. п.

· На базе ГОСТ КОИ-8 сделана koi8-r (кодовая страница 878) -- применяется в мире Linux. В ней естественным образом обеспечивается связь с 7-разрядным кодированием: отбрасыванием восьмого бита из кода буквы русского алфавита koi8-r получается код той же буквы в КОИ-7. Кодировка поддерживает символы псевдографики, занимающие около половины всех кодов. В 1993 году стандартизирована в Интернете, а в начале XXI века появились ее модификации koi8-u и koi8-ub -- с дополнениями до украинского и затем, соответственно, до белорусского. В koi8-ub вместо символов псевдографики включаются знаки разнообразных кавычек и тире, №, евро, иены и т. п. Эта кодировка находится на начальной стадии внедрения, и ее перспективы пока туманны.

· Кодовая страница 10007 -- используется на компьютерах Macintosh, по своему набору знаков почти совпадает с CP1251.

2.Практическая разработка

2.1 Описание алгоритма программы

Размещено на http://www.allbest.ru/

2.2 Распределение памяти и листинг программы

Распределение памяти.

Регистры D,E - в них хранятся адреса результатов (с 6000h).

Регистры H,L - в них находятся адреса исходных данных (с 5000h).

Регистр В - счетчик на 10 шагов (в основной программе).

Аккумулятор А - регистр, который использовался для промежуточных вычислений.

Регистр В - регистр, в котором находилась старшая тетрада числа (в подпрограмме).

Регистр С - регистр, в котором находилась младшая тетрада числа (в подпрограмме). Указатель стека - адрес 7000h.

В ячейках памяти с 5000h до 5009h находятся исходные однобайтные целые числа со знаком в прямом коде. В ячейке 5FFF хранится число положительных элементов.

Листинг программы

Адрес

Данные

Код Ассемблера

Комментарии

4000

01 55 55

LXI B, 5555h

С 5555h будут храниться в НЕХ положительные элементы.

4003

21 00 00

LXI H, 0000h

Создание счетчика положительного элемента массива

4006

31 00 A0

LXI SP, A000h

Создание цикла для определения положительных членов

4009

AF

XRA A

Обнуление аккумулятора

400A

11 00 50

LXI D, 5000h

С 5000h исходный массив данных

400D

F5

PUSH PSW

 

400E

D5

PUSH D

 

400F

1A

LDAX D

 

4010

17

RAL

Циклический сдвиг влево для определения знака

4011

D4 20 40

CNC 4020

Переход по условию (CY <> 0) на 4020h

4014

D1

POP D

 

4015

F1

POP PSW

 

4016

13

INX D

 

4017

3C

INR A

Увеличение значения аккумулятора на 1

4018

FE 0A

CPI 0Ah

Сравнение значения аккумулятора с 10.

401A

DA OD 40

JC 400D

 

401D

C3 25 40

JMP 4025h

Безусловный переход на 4025h

4020

1A

LDAX D

 

4021

O2

STAX B

Сохранение положительных членов массива

4022

O3

INX B

 

4023

2C

INR L

Увеличение счетчика положительных элементов на 1

4024

C9

RET

Возврат в основную программу на 4014h

4025

7D

MOV A,L

 

4026

FE 00

CPI 00h

Сравнение значения счетчика с 0

4028

CA 31 40

JZ 4031h

Если нет положительных значений, то переход на 4031h

402B

32 FF 5F

STA 5FFFh

Запись количества положительных чисел в 5FFFh

402E

C3 3C 40

JMP 403Ch

Безусловный переход на 403Сh

4031

3E 6F

MVI A, 6Fh

 

4033

CD 58 00

CALL 58h

Вывод на экран двух нулей

4036

CD 58 00

CALL 58h

 

4039

C3 40 00

JMP 40h

Ожидание ввода команды монитора

403C

E5

PUSH H

 

403D

11 00 60

LXI D, 6000h

 

4040

01 55 55

LXI B, 5555h

 

4043

0A

LDAX B

 

4044

E6 F0

ANI F0h

Обнуление 2-й тетрады.

4046

1F

RAR

Сдвиг содержимого аккумулятора на 1 вправо

4047

1F

RAR

 

4048

1F

RAR

 

4049

1F

RAR

 

404A

CD 5F 40

CALL 405Fh

Вызов процедуры преобразования из НЕХ в КОИ-7

404D

12

STAX D

 

404E

13

INX D

 

404F

0A

LDAX B

Восстановление содержимого в аккумуляторе

4050

E6 0F

ANI 0Fh

Обнуление 1-й тетрады

4052

CD 5F 40

CALL 405Fh

Вызов процедуры преобразования из HEX в КОИ-7

4055

12

STAX D

 

4056

13

INX D

 

4057

O3

INX B

 

4058

2D

DCR L

Цикл по регистру L (количество положительных элементов)

4059

C2 43 40

JNZ 4043h

 

405C

C3 6A 40

JMP 406Ah

Безусловный переход на 406Ah

405F

FE 0A

CPI 0Ah

Сравнение тетрады с 10

4061

D2 C7 40

JNC 4067h

Если не равно 10, то переход на 4067h

4064

F6 30

ORI 30h

Логическое сложение аккумулятора с 30h

4066

C9

RET

Возврат в основную подпрограмму

4067

C6 37

ADI 37h

Сложение содержимого аккумулятора в 37h

4069

C9

RET

Возврат в подпрограмму 4067h

3 Описание использованных при проектировании средств вычислительной техники

алгоритм программный двоичный кодирование

При выполнении данного курсового проекта и составлении пояснительной записки к нему были задействованы средства компьютера с основными характеристиками: процессор Intel Celeron M processor 370 (1.5 GHz, 400 MHz FSB, 1MB L2 cache). 256MB DDR2, 40GB HDD. Вся разработка проводилась в системной оболочке Microsoft Windows XP.

Составление непосредственно программы курсового проекта проходило, как упоминалось ранее, на эмуляторе СМ-1800, разработанного Смирновым А.С. Помимо вычислительных средств, к которым мне пришлось прибегнуть (калькулятор), в работе были использованы средства Microsoft Office, а именно, Microsoft Word, в котором полностью оформлялась данная пояснительная записка.

Выводы

Проект выполнен полностью в соответствии с заданием. Я получил большие навыки работы с эмулятором, в частности с программой “Монитор”. Хочу заметить, что не все подпрограммы написаны мною, я также воспользовался и стандартными программами “Монитора”. При помощи стандартных команд ассемблера была создана программа, переводящая заданный массив однобайтных констант в массив кодов КОИ-7. Вполне возможно, что существуют более рациональные алгоритмы реализации данной задачи, использующие, может быть, более короткие команды.

Существенных замечаний к работе программы Эмулятор микро-ЭВМ СМ-1800 обнаружено не было.

Литература

1. Горбунов В.Л. и др. Микропроцессоры. -М: Высшая школа, 1986.

2. Майоров, Гавриков. Практический курс программирования микропроцессорных систем. -М: Машиностроение, 1989.

3. Гуртовцев А.Л., Гудыменко С.В. Программирование для микропроцессоров. Справочное пособие. -М: Высшая школа, 1989.

4. Шаньгин В.Ф. и др. Программирование микропроцессорных систем. М: Высшая школа, 1990.

5. Гиляров В.Н. Программирование в кодах для микроЭВМ СМ-1800. Методические указания. СПбГТИ. -СП, 2005

6. Гиляров В.Н. Стандартное программное обеспечение. Монитор Методические указания. СПбГТИ. -СП, 2005

Размещено на Allbest.ru

...

Подобные документы

  • Анализ двоичной, восьмеричной и шестнадцатеричной систем счисления и перевода десятичных чисел. Форматы хранения чисел с плавающей точкой. Программа для преобразования массива констант в формат числа с плавающей точкой на эмуляторе микро-ЭВМ СМ-1800.

    курсовая работа [266,9 K], добавлен 24.12.2013

  • Исследование процесса разработки и кодирования приложения для перевода двоичных чисел в шестнадцатеричные в операционной системе Linux. Изучение требований к надежности и программной документации. Определение основных состояний интерфейса программы.

    курсовая работа [2,4 M], добавлен 23.06.2012

  • Разработка алгоритма выполнения операций умножения двоичных чисел в формате расширенной точности на сумматоре обратного кода. Преобразование входной строки в десятичное число. Разработка алгоритма арифметической операции. Тестирование программы-эмулятора.

    курсовая работа [119,1 K], добавлен 24.06.2012

  • Разработка программы для изображения в графическом режиме на экране структуры модели вычислительной машины и демонстрация функционирования при выполнении программы вычисления. Описание процесса разработки, обоснование структур данных и их форматов.

    курсовая работа [170,3 K], добавлен 07.06.2019

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

    дипломная работа [2,1 M], добавлен 26.06.2012

  • Ознакомление с особенностями программной реализации алгоритмов преобразования одномерных массивов. Исследование развития вычислительной техники, которое подразумевает использование компьютерных и информационных технологий. Изучение интерфейса программы.

    курсовая работа [1,0 M], добавлен 02.06.2017

  • Работа с файлами на языке Pascal. Типы файлов: типизированные, текстовые, нетипизированные. Сущность процедуры и функции. Использование процедуры Read и Write для операций чтения и записи в типизированном файле. Листинг программы и экранные формы.

    лабораторная работа [38,4 K], добавлен 13.02.2009

  • Язык Паскаль - процедурно-ориентированный язык высокого уровня, его основные достоинства. Разработка программ для решения задач. Выбор метода обработки информации. Форма представления исходных данных. Разработка алгоритма, его описание, листинг программы.

    курсовая работа [3,6 M], добавлен 17.02.2013

  • Файл - именованная область внешней памяти ПК. Процедуры и функции языка Pascal для работы с файлами прямого и последовательного доступа. Классификация файлов по типу доступа к элементам. Обоснование выбора средств программной реализации блоков.

    лабораторная работа [10,4 K], добавлен 13.02.2009

  • Разработка системы автоматизации преобразования структурированных данных в корпоративном правовом портале. Выбор программных средств реализации проекта, его предметная область. Определение проблемы и выработка требований. Разработка проекта приложения.

    дипломная работа [4,6 M], добавлен 07.07.2013

  • Описание алгоритмического языка для программирования прикладных систем обработки данных. Проектирование базы данных для ведения банковских счетов юридических лиц. Разработка комплекса программ и средств взаимодействия с ЭВМ (меню). Листинг программы.

    курсовая работа [76,1 K], добавлен 07.12.2011

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

    курсовая работа [567,6 K], добавлен 13.10.2014

  • База данных как основа автоматизации. Разработка, описание и реализация программного обеспечения "Точность и правильность методов и результатов измерений для центральной заводской лаборатории ОАО "Акрилат". Листинг, исходные коды программы и базы данных.

    дипломная работа [1,0 M], добавлен 23.06.2012

  • Описание архитектуры внешних выводов кристалла процессора. Рассмотрение форматов данных для целых чисел со знаком и без знака. Выбор модели памяти и структуры регистровой памяти. Использование кэш прямого отображения. Арифметические и логические команды.

    курсовая работа [890,5 K], добавлен 05.06.2015

  • Диагностический анализ системы управления предприятия, его организационной и функциональной структуры. Разработка проекта подсистемы учёта средств вычислительной техники, описание технического обеспечения базы данных. Характеристика программного продукта.

    дипломная работа [7,2 M], добавлен 28.06.2011

  • Описание использованных структур данных и разработка программы, обеспечивающей сжатие данных по алгоритму LZ77 с пошаговой визуализацией. Описание процедур, функций, структуры приложения и интерфейса пользователя. Тест и анализ работы алгоритма LZ77.

    курсовая работа [537,9 K], добавлен 28.06.2011

  • Хеширование как процесс алгоритмического преобразования ключей в адреса. Понятие В-дерева и разработка процедуры, реализующей вставку в В-дерево. Блок-схема алгоритма и пример программы обработки текстовых данных, хранящихся в произвольном файле.

    курсовая работа [213,8 K], добавлен 07.02.2011

  • Разработка устройства обработки и передачи информации для суммирования двоичных чисел в дополнительном коде. Разработка алгоритма выполнения операций и структурной схемы. Составление временной диаграммы управляющих сигналов, расчет быстродействия.

    курсовая работа [32,0 K], добавлен 16.08.2012

  • Редактирование аналоговых и цифровых изображений. Описание графических форматов файла. Алгоритм отображения файла и реализации эффектов. Программа для работы с графическими форматами. Назначение и взаимодействие модулей. Перечень процедур и функций.

    курсовая работа [516,8 K], добавлен 28.05.2013

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

    курсовая работа [910,6 K], добавлен 27.10.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.