Разработка программ преобразования форматов двоичных данных и сортировок в машинных кодах микро-ЭВМ СМ-1800 с помощью эмулятора на ПК
Модуль программируемого таймера (минимальный фиксируемый интервал — 1 МГц) Модуль системного контроля, Модуль оперативной памяти 64Кб (МОЗ), Модуль теневой оперативной памяти 3Кб + системное ПЗУ 2Кб, Порты ввода 00h, 01h, и другие, Порты вывода 00h, 01h, 03h, и другие, Система обработки приоритетных прерываний, В ПЗУ СМ-1800 зашита операционная система СПО МОНИТОР 1.3 (MONID 1.3). Программный… Читать ещё >
Разработка программ преобразования форматов двоичных данных и сортировок в машинных кодах микро-ЭВМ СМ-1800 с помощью эмулятора на ПК (реферат, курсовая, диплом, контрольная)
- Введение
- 1. Аналитическая часть
- 1.1 Представление целых чисел в формате с фиксированной запятой
- 2. Практическая разработка
- 2.1 Блок-схема алгоритма с поясняющим текстом
- 2.2 Распределение памяти и листинг программы с комментарием
- 3. Описание средств вычислительной техники
- Вывод
- Список литературы
В аналитической части данного курсового проекта необходимо провести аналитический обзор двоичной, восьмеричной и шестнадцатеричной систем счисления и правил перевода десятичных чисел в них и обратно, а также рассмотреть форматы хранения чисел с плавающей точкой. Для примера требуется взять числа из второй части курсового проекта. Знание этих тем необходимо для выполнения практической части, т.к. в Эмулятор микро-ЭВМ используется шестнадцатеричная система счисления, а задание требует сформировать число с плавающей точкой
В практической части необходимо составить программу преобразовывающую массив констант в формат числа с плавающей точкой на Эмуляторе микро-ЭВМ СМ-1800. Программа должна корректно работать для любого массива заданных констант
1. Аналитическая часть
1.1 Представление целых чисел в формате с фиксированной запятой
Множество целых чисел, представимых в памяти ЭВМ, ограничено. Диапазон значений зависит от размера ячеек памяти, используемых для их хранения.
Так в n-разрядной ячейке может храниться 2n различных значений целых чисел. Так в 8-разрядной ячейке может храниться 28=256 различных значений, в 16-разрядной — 216=65 536 различных значений.
Целые числа могут представляться в компьютере без знака и со знаком.
Целые числа без знака. Обычно занимают в памяти компьютера один или два байта. Максимальное значение целого числа без знака (положительного числа) достигается в случае, когда во всех ячейках хранятся единицы.
Для n-разрядного представления оно будет равно. Для 8-разрядной ячейки максимальное значение целого положительного числа достигается в случае, когда во всех ячейках хранятся единицы и равно. Минимальное число соответствует восьми нулям, хранящимся в восьми битах ячейки памяти, и равно нулю. Следовательно, в 8-разрядной ячейке диапазон изменения целых чисел без знака: от 0 до 255. В 16-разрядной ячейке — от 0 до 65 535 (всего 65 536 значений).
Так, число 11 100 0012 будет храниться в 8-разрядной ячейке памяти следующим образом:
В 16-разрядном представлении число 200610=11 111 010 1102 будет храниться следующим образом:
Итак, чтобы получить внутреннее представление целого числа без знака А, хранящегося в 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=100 1012 в 16-разрядной ячейке будет иметь вид 100 101.
Для записи внутреннего представления целого число со знаком (-А) необходимо:
1) модуль числа записать в прямом коде в n двоичных разрядах;
2) получить обратный код числа, для этого значения всех бит инвертировать — все единицы заменить на нули и все нули заменить на единицы);
3) к полученному обратному коду прибавить единицу. Получим дополнительный код целого числа со знаком.
Например, внутреннее представление целого отрицательного числа — 1607 в 16-разрядной ячейке запишется следующим образом: 1111 1001 1011 1001. Так как:
1) а) Ѕ-1607Ѕ=160710=11 001 000 1112
б) прямой код в 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 — пара регистров, занятых результирующего массива.
В, С — пара регистров, используемых для хранения временных данных
С — регистр, используемый как счетчик
адрес | данные | Код ассемблера | Комментарии | |
31 00 80 | LXI SP, 8000h | Создание стека программы по адресу 8000h | ||
21 05 50 | LXI H, 5001h | Помещение в пару H, L адреса исходного массива | ||
11 01 70 | LXI D, 7001h | Помещение в пару D, E адреса массива результатов | ||
01 00 60 | LXI B, 6000h | Помещение в пару В, С ячейку памяти 6000h | ||
400C | AF | XRA A | Обнуление аккумулятора | |
400D | STAX B | Запись содержимого в ячейку памяти 6000h | ||
400E | 0E 0A | MVI C, 0Ah | Создание счетчика на 10 шагов | |
C5 | M1: PUSH B | Засылка содержимого регистров В, С в стек | ||
7E | MOV A, M | Копирование содержимого регистров в аккумулятор | ||
RAL | Циклический сдвиг содержимого аккумулятора влево на один разряд | |||
DA 50 40 | JC OTR | Если число отрицательное (CY=1), то прыгнуть на метку OTR | ||
7E | MOV A, M | Копирование содержимого ячейки памяти в аккумулятор | ||
STAX D | Запись в массив результатов старшего байта числа | |||
2B | DCX H | Переход к младшему байту числа в исходном массиве | ||
1B | DCX D | Переход к младшему байту числа в массиве результатов | ||
401A | 7E | MOV A, M | Копирование содержимого ячейки памяти в аккумулятор | |
401B | STAX D | Запись в массив результатов младшего байта числа | ||
401C | INX H | С адреса 401С по 4021 — продвижение адресов на следующую пару чисел в исходном массиве и в массиве результатов | ||
401D | INX D | |||
401E | M2: INX H | |||
401F | INX D | |||
INX H | ||||
INX D | ||||
C1 | POP B | Извлечение содержимого В, С из стека | ||
0D | DCR C | Уменьшение счетчика на 1 | ||
C2 10 40 | JNZ M1 | Возврат на М1 до исчерпания счетчика | ||
CD 80 40 | CALL PODS | Вызов подпрограммы PODS | ||
402A | CD 49 00 | CALL 49h | Перевод курсора на новую строку | |
402D | CD 90 40 | CALL VISX | Вызов программы VISX | |
CD 49 00 | CALL 49 h | Перевод курсора на новую строку | ||
CD B0 40 | CALL VREZ | Вызов подпрограммы VREZ | ||
C3 40 00 | JMP 40h | Выход в программу Монитор | ||
Подпрограмма обработки отрицательных чисел
0A | PODS: LDAX B | Загрузка в аккумулятор содержимого ячейки 6000h | ||
01 20 41 | LXI B, 4120h | Помещение в пару регистров В, С адреса 4120h | ||
CD 4C 00 | CALL 4Ch | Вывод строки текста, начиная с адреса, записанного в В, С до нулевого байта | ||
CD 61 00 | CALL 61h | Вывод двух шестнадцатеричных цифр и аккумулятора | ||
408A | C9 | RET | Безусловный возврат к команде, с адресом 402А | |
Подпрограмма вывода на экран исходного массива
11 14 00 | VISX: LXI D, 0014h | Создание счетчика на 20 шагов | ||
21 00 50 | LXI H, 5000h | Помещение в пару H, L адреса исходного массива | ||
01 20 42 | LXI B, 4220h | Помещение в пару регистров В, С адреса 4220h | ||
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 | INX H | Продвижение адреса на следующую пару чисел | ||
40A4 | CD 4C 00 | CALL 4Ch | Вывод строки текста, начиная с адреса, записанного в В, С до нулевого байта | |
40A7 | 1D | DCR E | Уменьшение счетчика на 1 | |
40A8 | C2 9 °F 40 | JNZ 409F | Возврат в 409 °F до исчерпания счетчика | |
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 | 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 различных команд, может адресовать 65 536 байт оперативной памяти и 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с.