Разработка программ преобразования форматов двоичных данных и сортировок в машинных кодах микро-ЭВМ СМ-1800 с помощью эмулятора на ПК
Арифметические действия над двоично-десятичными кодами. Стандарты кодирования текстов. Проектирование алгоритма и его реализация на эмуляторе микро-ЭВМ СМ-1800. Листинг программы и использованные, при проектировании, средства вычислительной техники.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 14.10.2017 |
Размер файла | 113,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство высшего образования Российской Федерации
Санкт-Петербургский государственный технологический институт
(технический университет)
Кафедра САПРиУ
Пояснительная записка
к курсовому проекту на тему:
«Разработка программ преобразования форматов двоичных данных и сортировок в машинных кодах микро-ЭВМ СМ-1800 с помощью эмулятора на ПК»
Выполнил: студент гр.№843 -
Мубаракшин Ильдар Ахтямович
Руководитель: Гиляров Владимир Николаевич
Санкт-Петербург
2005
Содержание
Введение
1. Аналитическая часть
1.1 Двоично-десятичное кодирование
1.2 Арифметические действия над двоично-десятичными (ДД) кодами
1.3 Стандарты кодирования текстов
2. Практическая разработка
2.1 Описание алгоритма программы
2.2 Листинг программы
3 Описание использованных при проектировании средств вычислительной техники
Вывод
Литература
Введение
Задачей данного курсового проекта ставится разработка алгоритма и его программная реализация на Эмуляторе микро-ЭВМ СМ-1800.
Необходимо, пользуясь программой-монитором, занести в память ЭВМ, начиная с адреса следующий массив из восьмиразрядных констант:
Адрес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. Аналитическая часть
1.1 Двоично-десятичное кодирование
Поскольку человеку наиболее привычна арифметика в десятичной системе счисления, а для компьютера - двоичная арифметика, была введена компромиссная система двоично-десятичной записи чисел. Такая система чаще всего применяется там, где существует необходимость частого использования процедуры десятичного ввода-вывода. (электронные часы, калькуляторы и т.д.). В таких устройствах не всегда целесообразно предусматривать универсальный микрокод перевода двоичных чисел в десятичные и обратно по причине небольшого объема программной памяти.
Принцип построения этой системы достаточно прост: каждая десятичная цифра преобразуется прямо в свой десятичный эквивалент из 4 бит, например: 250610=0010 0101 0000 0110DEC:
Десятичное число |
2 |
8 |
0 |
6 |
|
Двоично-десятичное число |
0010 |
1000 |
0000 |
0110 |
Преобразуем двоично-десятичное число 0111 0010 0001 1000 в его десятичный эквивалент.
Каждая группа из 4 бит преобразуется в её десятичный эквивалент.
Получим 0111 0010 0001 1000DEC = 721810:
Двоично-десятичное число |
0111 |
0011 |
0001 |
0101 |
|
Десятичное число |
7 |
3 |
1 |
5 |
Микропроцессоры используют чистые двоичные числа, однако понимают и команды преобразования в двоично-десятичную запись. Полученные двоично-десятичные числа легко представимы в десятичной записи, более понятной людям.
1.2 Арифметические действия над двоично-десятичными (ДД) кодами
? Команда: |
ADD B |
|
? Назначение: |
<A>+<B><A> |
|
? Описание: |
Сложение содержимого регистра B с аккумулятором |
? Команда: |
ADD M |
|
? Назначение: |
<A>+<M><A> |
|
? Описание: |
Сложение содержимого ячейки памяти с аккумулятором |
? Команда: |
ADI (B2) |
|
? Назначение: |
<A>+<B2><A> |
|
? Описание: |
Сложение непосредственных данных (B2) с аккумулятором |
? Команда: |
ADC B |
|
? Назначение: |
<A>+<B>+<CY><A> |
|
? Описание: |
Сложение содержимого регистра B с аккумулятором |
? Команда: |
ACI (B2) |
|
? Назначение: |
<A>+<B2>+<CY><A> |
|
? Описание: |
Сложение содержимого ячейки памяти с аккумулятором |
? Команда: |
DAD B |
|
? Назначение: |
<BC>+<HL><HL> |
|
? Описание: |
Сложение <B,C> с <H,L> (в качестве аккумулятора используется пара <H,L>) |
? Команда: |
DAD H |
|
? Назначение: |
<HL>*2<HL> |
|
? Описание: |
Удвоение значения в <H,L> |
? Команда: |
SUB B |
|
? Назначение: |
<A>-<B><A> |
|
? Описание: |
Вычитание из аккумулятора содержимого регистра <B> |
|
? Команда: |
SUB M |
|
? Назначение: |
<A>-<M><A> |
|
? Описание: |
Вычитание из аккумулятора содержимого ячейки памяти |
1.3 Стандарты кодирования текстов
С целью стандартизации в компьютерах используется американский национальный стандартный код для обмена информацией ASCII (American National Standard Code for Information). Наличие стандартного кода облегчает обмен данными между различными устройствами. Восьмибитовый расширенный ASCII-код обеспечивает представление 256 символов, включая символы для национальных алфавитов.
Системы кодирования текстовых данных были разработаны и в других странах. Так, например, в СССР в этой области действовала система кодирования КОИ-7 (код обмена информацией, семизначный). Однако поддержка производителей оборудования и программ вывела американский код ASCII на уровень международного стандарта, и национальным системам кодирования пришлось "отступить" во вторую, расширенную часть системы кодирования, определяющую значения кодов со 128 до 255. Отсутствие единого стандарта в этой области привело к множественности одновременно действующих кодировок. Только в России можно указать три действующих стандарта кодировки и еще два устаревших.Так, например, кодировка символов русского языка, известная как кодировка Windows-1251, была введена "извне" - компанией Microsoft, но учитывая широкое распространение операционных систем и других продуктов этой компании в России она нашла широкое распространение в России. Эта кодировка используется на большинстве локальных компьютеров, работающих на платформе Windows.
Другая распространенная кодировка носит название КОИ-8 (код обмена информацией, восьмизначный) - ее происхождение относится ко времени действий Совета Экономической Взаимопомощи государств Восточной Европы. Сегодня кодировка КОИ-8 имеет широкое распространение в компьютерных сетях на территории России и в российском секторе Интернета.
Международный стандарт, в котором предусмотрена кодировка символов русского алфавита, носит название ISO (International Standard Organization - Международный институт стандартизации). На практике данная кодировка используется редко.
На компьютерах, работающих под операционной системой MS-DOS, могут действовать еще две кодировки (кодировка ГОСТ и кодировка ГОСТ альтернативная). Первая из них считалась устаревшей даже в первые годы появления персональной вычислительной техники, но вторая используется и по сей день.
В связи с возникшими неудобствами было принято решение на консорциуме фирм создать кодовую таблицу, где будет не только сам символ, но и инструкция по его воспроизведению. Такая таблица получила название Unicode.
Сложение. Данная операция выполняется в два этапа: сложение и коррекция. После сложения в тетрадах может оказаться недопустимая комбинация или может возникнуть перенос. Алгоритм коррекции состоит из двух шагов:
1) Если AC = 1 или младшая тетрада меньше 15, но больше 9, то к ней прибавляется код 6. Возникающий перенос прибавляется к старшей тетраде;
2) Если C = 1 или старшая тетрада содержит недопустимую комбинацию, то к результирующему байту прибавляется код 60h.
Примеры сложения ДД-чисел представлены ниже:
2. Практическая разработка
2.1 Описание алгоритма программы
Как известно, цифра, закодированная при помощи кода КОИ-7, отличается от незакодированной на число 30, а буквенное обозначение шестнадцатеричного числа - на 3716. Исходя из этой информации, принцип работы данной программы заключается в том, что константы из массива, начинающегося с адреса 500016, по очереди копируются в аккумулятор и над каждой из них осуществляются следующие действия: данное двузначное число подвергается четырём сдвигам вправо с помощью команды “RAR”, в результате чего его символы “меняются местами”. Это нужно, чтобы закодировать первый символ. Затем обнуляется первый символ результата путём применения команды “ANI 0F”. С помощью команды “CPI 0A” определяется, цифра или буква стоит на второй позиции.
На следующем этапе, в зависимости от того, цифра это или буква, результат складывается с числом 30 или 37 соответственно. После этого с исходным числом проделывается вышеописанная работа за исключением сдвигов вправо. Тем самым осуществляется кодировка второго символа исходной константы.
После того, как первая константа закодирована, получившееся в результате двухбайтное число заносится из аккумулятора в массив, начинающийся с адреса 600016.
Затем все действия повторяются применительно к каждой заданной константе в цикле.
В программе используется цикл на убывание. В паре <HL> создаётся счётчик на десять шагов, так как требуется закодировать десять констант.
2.2 Листинг программы
Адрес |
Текст ассемблера |
Коды ассемблера |
Комментарии |
|
4000 |
LXI B, 500016 |
01 00 50 |
Загрузка начала исходного массива |
|
4003 |
LXI D, 600016 |
11 00 60 |
Загрузка начала массива кодов КОИ-7 |
|
4006 |
MVI H, 0Ah |
26 0A |
Создание счётчика в регистре H на 10 шагов |
|
4008 |
JP 500016 |
F2 00 50 |
Выбор положительного числа |
|
400B |
LDAX B |
0A |
Запись первого числа в аккумулятор |
|
400C |
RAR |
1F |
Сдвиг вправо |
|
400D |
RAR |
1F |
Сдвиг вправо |
|
400E |
RAR |
1F |
Сдвиг вправо |
|
400F |
RAR |
1F |
Сдвиг вправо |
|
4010 |
ANI 0Fh |
E6 0F |
Обнуление первой тетрады числа |
|
4012 |
CPI 0Ah |
FE 0A |
Сравнение результата с 0Аh |
|
4014 |
JP 401E16 |
F2 1E 40 |
Если это буква, прыжок к адресу 401E |
|
4017 |
ADI 30h |
C6 30 |
Сложение результата с константой 30h |
|
4019 |
JMP 402116 |
C3 20 40 |
Прыжок к адресу 4020 |
|
401C |
ADI 37h |
C6 37 |
Сложение результата с константой 37h |
|
401E |
STAX D |
12 |
Запись получившегося числа в массив кодов КОИ-7 |
|
401F |
INX D |
13 |
Переход к следующей ячейке массива кодов КОИ-7 |
|
4020 |
LDAX B |
0A |
Запись первого числа в аккумулятор |
|
4021 |
ANI 0Fh |
E6 0F |
Обнуление первой тетрады числа |
|
4023 |
CPI 0Ah |
FE 0A |
Сравнение результата с 0Аh |
|
4025 |
JNC 403016 |
D2 2F 89213647048 40 |
Если это буква, прыжок к адресу 402F |
|
4028 |
ADI 30h |
C6 30 |
Сложение результата с константой 30h |
|
402A |
JMP 403216 |
C3 32 40 |
Прыжок к адресу 4032 |
|
402D |
ADI 37h |
C6 37 |
Сложение результата с константой 37h |
|
402F |
STAX D |
12 |
Запись получившегося числа в массив кодов КОИ-7 |
|
4030 |
INX D |
13 |
Переход к следующей ячейке массива кодов КОИ-7 |
|
4031 |
INX B |
03 |
Переход к следующей ячейке массива исходных констант |
|
4032 |
DCR H |
25 |
Уменьшение счётчика на 01h |
|
4033 |
JP 400816 |
F2 08 40 |
Прыжок к началу цикла, если в счётчике не 00h |
|
4036 |
JMP 004016 |
C3 40 00 |
Выход в монитор |
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. Без сомнения существуют более рациональные алгоритмы реализации данной задачи, использующие, может быть, короткие команды, или более сжато осуществляющие цикл. Можно предположить, что в моей программной реализации задачи вторую часть цикла (кодирование второго символа данной константы) можно было соединить с первой (кодирование первого символа константы), поскольку единственным их различием являются сдвиги в первой части.
Литература
1. Ю. М. Казаринова «Микро - процессорный комплект К1810» Справочник Москва 1990г.
2. «Микропроцессоры: Архитектура и проектирование микро ЭВМ. Организация вычислительных процессов.» 1,2,3 том Москва «Высшая школа» 1986г.
3. Л.Н. Знаменская, С.В. Знаменский. Проблема множественности русских кодировок и новое семейство кириллических шрифтов. ( Электронная версия книги)
4. Также использовались методические пособия к лабораторным работам по дисциплине «Организация ЭВМ и систем» и конспекты лекций по тому же предмету.
5. Интернет сайт www.lib.ru
Размещено на Allbest.ru
...Подобные документы
Анализ двоичной, восьмеричной и шестнадцатеричной систем счисления и перевода десятичных чисел. Форматы хранения чисел с плавающей точкой. Программа для преобразования массива констант в формат числа с плавающей точкой на эмуляторе микро-ЭВМ СМ-1800.
курсовая работа [266,9 K], добавлен 24.12.2013Двоичная, восьмеричная и шестнадцатеричная системы счисления и перевод из одной в другую. Форматы хранения чисел с плавающей точкой. Позиционная система счисления. Подпрограмма вывода служебных слов и полученных данных. Альтернативные варианты решения.
курсовая работа [920,9 K], добавлен 13.07.2014Функциональный состав микро-ЭВМ, разработка системы команд. Описание взаимодействия всех блоков электронно-вычислительной машины при выполнении команд программы. Арифметико-логическое устройство, кэш-память процессора, функциональное моделирование.
курсовая работа [981,4 K], добавлен 27.05.2013Разработка алгоритма выполнения операций умножения двоичных чисел в формате расширенной точности на сумматоре обратного кода. Преобразование входной строки в десятичное число. Разработка алгоритма арифметической операции. Тестирование программы-эмулятора.
курсовая работа [119,1 K], добавлен 24.06.2012Применения моделирования, методов вычислительной математики, теории оптимизации и средств вычислительной техники при анализе и проектировании электрических цепей. Параметрическая оптимизация электрической цепи. Листинг программы и результаты ее работы.
курсовая работа [223,8 K], добавлен 21.02.2012Проектирование микро-ЭВМ. Программа вычисления матрицы. Кодирование программ и регистров, формат команды. Микропрограммное устройство управления. Граф-схемы выполнения операций. Прошивка ПЗУ микрокоманд, точек входа. Разработка принципиальной схемы.
курсовая работа [1,1 M], добавлен 01.03.2013Разработка блок-схемы и программы обработки одномерного массива с доступом к элементам с помощью индексов и с помощью указателей. Словесное описание алгоритма и пользовательского интерфейса, листинг программы обработки матрицы и результат её выполнения.
курсовая работа [391,1 K], добавлен 30.09.2013Порядок и основные этапы построения двоичных неравномерных эффективных кодов с помощью методики Хаффмена. Сравнительная характеристика полученных кодов. Кодирование текста построенными кодами. Разработка марковских процедур для кодирования слов.
лабораторная работа [520,7 K], добавлен 29.09.2011Методы решения задачи о ранце. Алгоритм неявного лексикографического перебора. Разработка структуры данных, реализация алгоритма с её использованием, программная реализация. Проведение тестовой проверки. Входной и выходной файл, листинг программы.
курсовая работа [408,8 K], добавлен 22.10.2012Приемы программирования в Delphi. Алгоритм поиска альфа-бета отсечения, преимущества. Описание программного средства. Разработка программы, реализующая алгоритм игры "реверси". Руководство пользователя. Листинг программы. Навыки реализации алгоритмов.
курсовая работа [357,1 K], добавлен 28.02.2011Понятие двоично-десятичного кода (ДДК), его получение и использование. Изучение арифметико-логических устройств, использующихся для обработки ДДК. Алгоритмы сложения, вычитания, умножения и деления ДДК при помощи арифметико-логических устройств.
контрольная работа [145,5 K], добавлен 05.09.2010Разработка программы, решающей базовую задачу линейного программирования симплекс-методом с помощью симплекс-таблиц. Целевая функция с определенным направлением экстремума и система ограничений для нее. Разработка алгоритма программы, ее листинг.
курсовая работа [385,6 K], добавлен 15.05.2014Язык Паскаль - процедурно-ориентированный язык высокого уровня, его основные достоинства. Разработка программ для решения задач. Выбор метода обработки информации. Форма представления исходных данных. Разработка алгоритма, его описание, листинг программы.
курсовая работа [3,6 M], добавлен 17.02.2013Особенности работы микро ЭВМ, которая сопровождается интенсивным обменом информацией между МП, ЗУ и УВВ. Характеристика функций интерфейса: дешифрация адреса устройств, синхронизация обмена информацией, согласование форматов слов, дешифрация кода команды.
контрольная работа [183,1 K], добавлен 22.08.2010Возможности программы DBDesigner. Проектирование и реализация информационно-поисковой системы с помощью CASE-средства DBDesigner в среде Intranet. Этапы проектирования базы данных, установление соединения с базой данных на сервере, синхронизация.
лабораторная работа [1,5 M], добавлен 18.08.2009Переменные типа integer, real, их функции. Общее понятие о массиве, файлы для Pascal. Информационный и информанизационный набор списка. Реализация и тестирование программы. Выбор базы данных, внесение имени, меню. Блок-схема алгоритма, листинг программы.
курсовая работа [306,0 K], добавлен 04.02.2013Разработка программы на языке Pascal. Описание переменных. Действия, которые должна выполнить программа согласно выбранного алгоритма. Детализация графической части программы. Листинг и тестирование программы. Вывод массива данных на экран монитора.
контрольная работа [360,4 K], добавлен 13.06.2012Разработка приложения для шифрования данных с помощью алгоритма DES5: процесс шифрования, расшифрования, получение ключей. Спецификация программы, процедуры и функции; описание интерфейса пользователя. Реализация задачи в среде программирования DELPHI.
курсовая работа [812,6 K], добавлен 27.03.2012Формулирование и создание программы по вычислению определенного интеграла по формуле трапеций с тремя десятичными знаками и по формуле Симпсона. Выбор Delphi как программного средства разработки программы. Создание алгоритма и листинг программы.
курсовая работа [990,9 K], добавлен 15.06.2009Первые шаги автоматизации умственного труда. Механические и электромеханические принципы вычислений. Применение компьютеров и баз данных, управляющих программ. Классификация ЭВМ по принципу действия, назначению, размерам и функциональным возможностям.
презентация [3,5 M], добавлен 19.05.2016