Разработка программ преобразования форматов двоичных данных и сортировок в машинных кодах микро-ЭВМ СМ-1800 с помощью эмулятора на ПК
Анализ двоичной, восьмеричной и шестнадцатеричной систем счисления и перевода десятичных чисел. Форматы хранения чисел с плавающей точкой. Программа для преобразования массива констант в формат числа с плавающей точкой на эмуляторе микро-ЭВМ СМ-1800.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 24.12.2013 |
Размер файла | 266,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Оглавление
- Введение
- 1. Аналитическая часть
- 1.1 Представление целых чисел в формате с фиксированной запятой
- 2. Практическая разработка
- 2.1 Блок-схема алгоритма с поясняющим текстом
- 2.2 Распределение памяти и листинг программы с комментарием
- 3. Описание средств вычислительной техники
- Вывод
- Список литературы
Введение
В аналитической части данного курсового проекта необходимо провести аналитический обзор двоичной, восьмеричной и шестнадцатеричной систем счисления и правил перевода десятичных чисел в них и обратно, а также рассмотреть форматы хранения чисел с плавающей точкой. Для примера требуется взять числа из второй части курсового проекта. Знание этих тем необходимо для выполнения практической части, т.к. в Эмулятор микро-ЭВМ используется шестнадцатеричная система счисления, а задание требует сформировать число с плавающей точкой
В практической части необходимо составить программу преобразовывающую массив констант в формат числа с плавающей точкой на Эмуляторе микро-ЭВМ СМ-1800. Программа должна корректно работать для любого массива заданных констант
1. Аналитическая часть
1.1 Представление целых чисел в формате с фиксированной запятой
Множество целых чисел, представимых в памяти ЭВМ, ограничено. Диапазон значений зависит от размера ячеек памяти, используемых для их хранения.
Так в n-разрядной ячейке может храниться 2n различных значений целых чисел. Так в 8-разрядной ячейке может храниться 28=256 различных значений, в 16-разрядной - 216=65536 различных значений.
Целые числа могут представляться в компьютере без знака и со знаком.
Целые числа без знака. Обычно занимают в памяти компьютера один или два байта. Максимальное значение целого числа без знака (положительного числа) достигается в случае, когда во всех ячейках хранятся единицы.
Для n-разрядного представления оно будет равно . Для 8-разрядной ячейки максимальное значение целого положительного числа достигается в случае, когда во всех ячейках хранятся единицы и равно . Минимальное число соответствует восьми нулям, хранящимся в восьми битах ячейки памяти, и равно нулю. Следовательно, в 8-разрядной ячейке диапазон изменения целых чисел без знака: от 0 до 255. В 16-разрядной ячейке - от 0 до 65535 (всего 65536 значений).
Так, число 111000012 будет храниться в 8-разрядной ячейке памяти следующим образом:
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
В 16-разрядном представлении число 200610=111110101102 будет храниться следующим образом:
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
Итак, чтобы получить внутреннее представление целого числа без знака А, хранящегося в n-разрядном машинном слове, необходимо:
1) перевести число А в двоичную систему счисления;
2) полученный результат дополнить слева незначащими нулями до n разрядов.
Целые числа со знаком: прямой, обратный и дополнительный коды. Целые числа со знаком обычно занимают в памяти компьютера один, два или четыре байта. Для хранения целых чисел со знаком старший (левый) разряд в машинном слове отводится под знак числа (если число положительное, то в знаковый разряд записывается ноль, если число отрицательное - единица). Ровно половина из всех 2n чисел будут отрицательными; учитывая необходимость нулевого значения, положительных будет на единицу меньше.
Максимальное положительное число (с учетом выделения одного разряда на знак) для целых чисел со знаком в n-разрядном представлении равно . Минимальное отрицательное число (с учетом выделения одного разряда на знак) для целых чисел со знаком в n-разрядном представлении равно - .
Диапазоны значений целых чисел со знаком:
в 8-разрядной ячейке: от - 128 до 127;
в 16-разрядной ячейке: от - 32 768 до 32 767;
в 32-разрядной ячейке: от - 2 147 483 648 до 2 147 483 647.
Для представления отрицательного числа используется дополнительный код. Дополнительный код положительного числа совпадает с его прямым кодом.
Прямой код целого положительного числа может быть получен следующим образом: число переводится в двоичную систему счисления, а затем его двоичную запись слева дополняют необходимым количеством нулей в соответствии с разрядностью машинного слова. Например, прямой код числа 3710=1001012 в 16-разрядной ячейке будет иметь вид 0000000000100101.
Для записи внутреннего представления целого число со знаком (-А) необходимо:
1) модуль числа записать в прямом коде в n двоичных разрядах;
2) получить обратный код числа, для этого значения всех бит инвертировать - все единицы заменить на нули и все нули заменить на единицы);
3) к полученному обратному коду прибавить единицу. Получим дополнительный код целого числа со знаком.
Например, внутреннее представление целого отрицательного числа - 1607 в 16-разрядной ячейке запишется следующим образом: 1111 1001 1011 1001. Так как:
1) а) Ѕ-1607Ѕ=160710=110010001112
б) прямой код в 16-разрядной ячейке:
0000 0110 0100 0111
2) обратный код:
1111 1001 1011 1000
3) дополнительный код (результат прибавления 1):
1111 1001 1011 1001 - это внутренне двоичное представление числа (-1607).
эмулятор массив плавающая точка
2. Практическая разработка
2.1 Блок-схема алгоритма с поясняющим текстом
2.2 Распределение памяти и листинг программы с комментарием
SP-двухбайтный регистр стека
H,L - пара регистров, занятых массивом исходных чисел
D,E - пара регистров, занятых результирующего массива.
В, С - пара регистров, используемых для хранения временных данных
С - регистр, используемый как счетчик
адрес |
данные |
Код ассемблера |
Комментарии |
|
4000 |
31 00 80 |
LXI SP, 8000h |
Создание стека программы по адресу 8000h |
|
4003 |
21 05 50 |
LXI H, 5001h |
Помещение в пару H,L адреса исходного массива |
|
4006 |
11 01 70 |
LXI D, 7001h |
Помещение в пару D,E адреса массива результатов |
|
4009 |
01 00 60 |
LXI B, 6000h |
Помещение в пару В, С ячейку памяти 6000h |
|
400C |
AF |
XRA A |
Обнуление аккумулятора |
|
400D |
02 |
STAX B |
Запись содержимого в ячейку памяти 6000h |
|
400E |
0E 0A |
MVI C,0Ah |
Создание счетчика на 10 шагов |
|
4010 |
C5 |
M1: PUSH B |
Засылка содержимого регистров В, С в стек |
|
4011 |
7E |
MOV A,M |
Копирование содержимого регистров в аккумулятор |
|
4012 |
17 |
RAL |
Циклический сдвиг содержимого аккумулятора влево на один разряд |
|
4013 |
DA 50 40 |
JC OTR |
Если число отрицательное (CY=1), то прыгнуть на метку OTR |
|
4016 |
7E |
MOV A,M |
Копирование содержимого ячейки памяти в аккумулятор |
|
4017 |
12 |
STAX D |
Запись в массив результатов старшего байта числа |
|
4018 |
2B |
DCX H |
Переход к младшему байту числа в исходном массиве |
|
4019 |
1B |
DCX D |
Переход к младшему байту числа в массиве результатов |
|
401A |
7E |
MOV A,M |
Копирование содержимого ячейки памяти в аккумулятор |
|
401B |
12 |
STAX D |
Запись в массив результатов младшего байта числа |
|
401C |
23 |
INX H |
С адреса 401С по 4021 - продвижение адресов на следующую пару чисел в исходном массиве и в массиве результатов |
|
401D |
13 |
INX D |
||
401E |
23 |
M2: INX H |
||
401F |
13 |
INX D |
||
4020 |
23 |
INX H |
||
4021 |
13 |
INX D |
||
4022 |
C1 |
POP B |
Извлечение содержимого В, С из стека |
|
4023 |
0D |
DCR C |
Уменьшение счетчика на 1 |
|
4024 |
C2 10 40 |
JNZ M1 |
Возврат на М1 до исчерпания счетчика |
|
4027 |
CD 80 40 |
CALL PODS |
Вызов подпрограммы PODS |
|
402A |
CD 49 00 |
CALL 49h |
Перевод курсора на новую строку |
|
402D |
CD 90 40 |
CALL VISX |
Вызов программы VISX |
|
4030 |
CD 49 00 |
CALL 49 h |
Перевод курсора на новую строку |
|
4033 |
CD B0 40 |
CALL VREZ |
Вызов подпрограммы VREZ |
|
4036 |
C3 40 00 |
JMP 40h |
Выход в программу Монитор |
Подпрограмма обработки отрицательных чисел
4080 |
0A |
PODS: LDAX B |
Загрузка в аккумулятор содержимого ячейки 6000h |
|
4081 |
01 20 41 |
LXI B,4120h |
Помещение в пару регистров В, С адреса 4120h |
|
4084 |
CD 4C 00 |
CALL 4Ch |
Вывод строки текста, начиная с адреса, записанного в В, С до нулевого байта |
|
4087 |
CD 61 00 |
CALL 61h |
Вывод двух шестнадцатеричных цифр и аккумулятора |
|
408A |
C9 |
RET |
Безусловный возврат к команде, с адресом 402А |
Подпрограмма вывода на экран исходного массива
4090 |
11 14 00 |
VISX: LXI D, 0014h |
Создание счетчика на 20 шагов |
|
4093 |
21 00 50 |
LXI H, 5000h |
Помещение в пару H,L адреса исходного массива |
|
4096 |
01 20 42 |
LXI B,4220h |
Помещение в пару регистров В, С адреса 4220h |
|
4099 |
CD 4C 00 |
CALL 4Ch |
Вывод строки текста, начиная с адреса, записанного в В, С до нулевого байта |
|
409С |
01 20 43 |
LXI B,4320h |
Помещение в пару регистров В, С адреса 4320h |
|
409F |
7E |
MOV A,M |
Копирование содержимого ячейки памяти в аккумулятор |
|
40A0 |
CD 61 00 |
CALL 61h |
Вывод двух шестнадцатеричных цифр и аккумулятора |
|
40A3 |
23 |
INX H |
Продвижение адреса на следующую пару чисел |
|
40A4 |
CD 4C 00 |
CALL 4Ch |
Вывод строки текста, начиная с адреса, записанного в В, С до нулевого байта |
|
40A7 |
1D |
DCR E |
Уменьшение счетчика на 1 |
|
40A8 |
C2 9F 40 |
JNZ 409F |
Возврат в 409F до исчерпания счетчика |
|
40AB |
C9 |
RET |
Безусловный возврат к команде, адресом 4030 |
Подпрограмма вывода на экран массива результатов
40B0 |
11 14 00 |
VREZ: LXI D,0014h |
Создание счетчика на 20 шагов |
|
40B3 |
21 00 70 |
LXI H, 7000h |
Помещение в пару H,L адреса массива результатов |
|
40B6 |
01 20 44 |
LXI B, 4420h |
Помещение в пару регистров В, С адреса 4420h |
|
40B9 |
CD 4C 00 |
CALL 4Ch |
Вывод строки текста, начиная с адреса, записанного в В, С до нулевого байта |
|
40BC |
01 20 43 |
LXI B, 4320h |
Помещение в пару регистров В, С адреса 4320h |
|
40BF |
7E |
MOV A,M |
Копирование содержимого ячейки памяти в аккумулятор |
|
40C0 |
CD 61 00 |
CALL 61h |
Вывод двух шестнадцатеричных цифр и аккумулятора |
|
40C3 |
23 |
INX H |
Продвижение адреса на следующую пару чисел |
|
40C4 |
CD 4C 00 |
CALL 4Ch |
Вывод строки текста, начиная с адреса, записанного в В, С до нулевого байта |
|
40C7 |
1D |
DCR E |
Уменьшение счетчика на 1 |
|
40C8 |
C2 BF 40 |
JNZ 40BF |
Возврат в 40BF до исчерпания счетчика |
|
40CB |
C9 |
RET |
Безусловный возврат к команде, с адресом 4036 |
Результаты тестирования программы
При запуске программы, на экране Монитора выводятся следующие данные:
3. Описание средств вычислительной техники
Программный продукт "Эмулятор СМ-1800" позволяет полностью эмулировать работу микроЭВМ СМ-1800 на персональном компьютере. Сразу после запуска на экране появляются четыре основных окна: видеотерминал алфавитно-цифровой (ВТА 2000-30), пульт контроля и управления (ПКУ), клавиатура и главное меню. При необходимости можно не отображать ненужные окна.
Центральный процессор и шины СМ-1800 работают на частоте 2 МГц.
ЦП имеет 8 внутренних 8-битных регистров, понимает около 250 различных команд, может адресовать 65536 байт оперативной памяти и 256 портов ввода-вывода, имеет 8-уровневую систему приоритетных прерываний.
К внешней шине подключены устройства: дисковод (8 дюймов, ёмкость дискеты 160 Кб:), печатающее устройство (на бесконечной бумаге), и другие.
Вся информация выводится на видеотерминал ВТА в текстовом виде (чёрно-зелёный шрифт, 127 знаков, размер экрана 80х24 символа).
Терминал "общается" с системой через интерфейс И41 (7-битный).
Основной орган управления - стандартная клавиатура СМ-1800 - имеет несколько режимов работы, поддерживает 2 кодировки (JCUKEN/ЙЦУКЕН).
Еще один орган управления - это выносной пульт ПКУ с элементами коммутации и индикации. Он позволяет выполнять ЛЮБЫЕ операции с памятью, портами ввода-вывода, позволяет управлять работой центрального процессора (останавливать, трассировать шины адреса и данных, выполнять машинные инструкции с остановами между циклами ЦП, и т.д.).
Все остальные модули скрыты внутри системного блока СМ-1800 и доступны программно, а именно:
Модуль программируемого таймера (минимальный фиксируемый интервал - 1 МГц) Модуль системного контроля, Модуль оперативной памяти 64Кб (МОЗ), Модуль теневой оперативной памяти 3Кб + системное ПЗУ 2Кб, Порты ввода 00h, 01h, и другие, Порты вывода 00h, 01h, 03h, и другие, Система обработки приоритетных прерываний, В ПЗУ СМ-1800 зашита операционная система СПО МОНИТОР 1.3 (MONID 1.3).
Именно она получает управление после запуска СМ-1800.
При разработке программы был использован персональный компьютер со следующими техническими характеристиками:
Тип процессора:
Intel® Core™ I3CPU M370 @ 2.4GHZ
Скорость процессора:
2,02 ГГЦ
Объем оперативной памяти:
8 ГБ
Видеокарта:
NVidia GeForce GT 415M
Память видеокарты:
1 ГБ
Стандартное программное обеспечение:
Операционная система:
Windows 2.6.2.9200 (Windows 8.1)
Microsoft Office 2013
Практическая разработка данного курсового проекта выполнялась на эмуляторе микро-ЭВМ СМ-1800 v3.02.
Вывод
Данный курсовой проект выполнен полностью в соответствии с заданием. Проект состоит из двух основных частей: аналитической и практической. Обе части были подробно рассмотрены. Все поставленные задачи были полностью разобраны и реализованы. Была составлена программа формирования массива модулей чисел исходного массива (с адреса 5000h), формирующая массив результатов с адреса 7000h. Так же было подсчитано количество отрицательных чисел в исходном массиве, результат которого записан в ячейки 4000h.
Список литературы
1. Гиляров В.Н. Организация ЭВМ и систем. Курсовое проектирование: методические указания к выполнению курсового проектирования / В.Н. Гиляров-СПб.: СПбГИ (ТУ), 2010. - 76 с.
2. Гиляров В.Н. Организация ЭВМ и систем: учебное пособие / В.Н. Гиляров-СПб.: СПбГИ (ТУ), 2010. - 80 с.
3. Информационно-поисковые системы Интернет: Yandex, Rambler.
4. Лекции по дисциплине "Организация ЭВМ и систем".
5. МикроЭВМ СМ-1800 и ее эмулятор на ПК: Методические указания. - СПб.: СПбГТИ (ТУ), 2006. - 21с.
Размещено на Allbest.ru
Подобные документы
Основные форматы данных и их представление. Запись чисел в формат с плавающей точкой. Вычитание чисел в формате с плавающей точкой. Регистры операндов и результата, размером формата числа с плавающей точкой, двойной точности. Поля смещённого порядка.
курсовая работа [78,9 K], добавлен 09.09.2014Двоичная, восьмеричная и шестнадцатеричная системы счисления и перевод из одной в другую. Форматы хранения чисел с плавающей точкой. Позиционная система счисления. Подпрограмма вывода служебных слов и полученных данных. Альтернативные варианты решения.
курсовая работа [920,9 K], добавлен 13.07.2014Общая характеристика и преимущество использования двоично-десятичных чисел с плавающей точкой. Разработка цифрового автомата. Функциональное назначение выводов корпуса МК51, арифметико-логического устройства, портов. Примеры деления данных чисел.
курсовая работа [719,3 K], добавлен 12.09.2015Символы, целые, числа с плавающей точкой в языке Си. Машинное представление значений типа char, double, float, беззнаковых чисел. Представление целых чисел в позиционных системах счисления с произвольным основанием. Алгоритм перевода b-ичной записи.
презентация [296,3 K], добавлен 05.01.2014Общее представление о записи данных. Виды регистров и типов данных с плавающей точкой. Модель выполнения программы SIMD. Формат данных в памяти регистра с плавающей точкой. Состояние и управление потоковым разрешением. Поле управления округлением.
реферат [1,1 M], добавлен 06.01.2011Операции, осуществляемые при реализации алгоритмов цифровой обработки сигналов. Применение процессора ADSP-2106x для операций с фиксированной и плавающей точкой. Исключения при выполнении операций с плавающей точкой, режимы и границы округления.
реферат [35,2 K], добавлен 13.11.2009Программирование микро ЭВМ на МП БИС КР580ИК80. Арифметические команды. Представление чисел в различных системах счисления и отображение их на дисплее. Сложение массива однобайтных чисел. Вычитание одинаковых чисел. Сложение двух десятичных чисел.
лабораторная работа [263,8 K], добавлен 03.03.2009Порождение целых чисел в позиционных системах счисления. Почему мы пользуемся десятичной системой, а компьютеры - двоичной (восьмеричной и шестнадцатеричной)? Перевод чисел из одной системы в другую. Математические действия в различных системах счисления.
конспект произведения [971,1 K], добавлен 31.05.2009Характеристика методов представления заданных чисел в двоичной, шестнадцатеричной, восьмеричной системе счисления. Представление указанного числа в четырехбайтовом IEEE формате. Разработка алгоритма обработки одномерных и двумерных числовых массивов.
контрольная работа [138,9 K], добавлен 05.06.2010Разработка устройства, реализующего набор команд из числа операций с плавающей точкой семейства процессора i486. Структура сопроцессора FPU. Принцип выполнения операций, разработка блок-схемы, построение структурной схемы основных блоков процессора.
курсовая работа [734,9 K], добавлен 27.10.2010