Разработка программ преобразования форматов двоичных данных и сортировок в машинных кодах микро-ЭВМ СМ-1800 с помощью эмулятора на ПК
Заказать уникальную курсовую работу- 25 25 страниц
- 4 + 4 источника
- Добавлена 29.05.2015
- Содержание
- Часть работы
- Список литературы
- Вопросы/Ответы
1 Аналитическая часть 6
1.1 Форматы хранения чисел со знаком (фиксированная точка) 6
2 Практическая разработка 13
2.1 Блок – схема алгоритма 13
2.2 Кратное описание команд 15
2.3 Распределение памяти и листинг программы с комментарием 18
2.4 Результаты тестирования программы 21
3. Описание использованных при проектировании средств вычислительной техники 23
Выводы 24
Список литературы 25
Условием выхода из цикла будет достижение последнего числа массива. Одновременно будет осуществляться подсчет количества отрицательных чисел.
Модуль числа x – неотрицательное число, обозначаемое |x| и определяемое следующим образом:
- если , то ;
- если , то .
Следовательно, модуль числа – это число, взятое без знака.
Считая, что модуль – число неотрицательное, то для любого отрицательного числа нужно получить его значение без знака (его прямой код). Для этого необходимо отрицательное число, представленное в обратном дополнительном коде, проинвертировать и прибавить к нему единицу. На языке ассемблера инвертирование числа можно осуществить с помощью команды CMA, а прибавление 1 с помощью команды ADI 01.
Особым случаем является вычисление модуля числа 80 – так называемого отрицательного нуля. Это связано с тем, что при инвертировании и прибавлении 1 к результату снова получается число 80. В связи с этим приходится обрабатывать это число отдельно, считая, что его модулем является число 0016. Проверить на появление отрицательного нуля можно с помощью команды сравнения CPI 80.
При работе с двухбайтовыми числами может возникнуть трудность получения модуля. При инвертировании числа и прибавлении 1 к результату может возникнуть перенос между байтами.
Для программного осуществления этого переноса необходимо после прибавления 1 к младшему байту прибавить значение флага переноса Tc к старшему. Это можно сделать с помощью команды ACI 00.
Таким образом, для прибавления 1 к двухбайтовому числу, потребуются две команды – сначала ADI 01, а затем ACI 00. Первая из них прибавит 1 к младшему байту, а вторая – значение флага Tc к старшему байту.
Рисунок 3 – Блок – схема алгоритма
2.2 Кратное описание команд
Обозначения регистров микроЭВМ СМ-1800:
R – обозначение регистра из следующего набора: A,B,C,D,E,H,L;
F – регистр флагов:
PC – программный счетчик;
SP – указатель стека;
M –ячейка оперативной памяти.
Таблица 2 – Назначение флагов
Таблица 3 – Описание команд применяемых в программе
Коды операций команд (в порядке возрастания)
Таблица 4 – Коды операций команд
Условные обозначения:
ХХХХ – адрес ячейки памяти или данные
XX – адрес порта или данные
- - - - – код операции не используется
2.3 Распределение памяти и листинг программы с комментарием
– регистровая пара, которая содержит текущий адрес исходного массива чисел
– регистровая пара, которая содержит текущий адрес массива модулей
500016 – начальный адрес массива исходных чисел
600016 – ячейка с количеством найденных отрицательных чисел
700016 – начальный адрес массива модулей
Таблица 5
Адрес Данные Ассемблерный код Комментарий 4000 01 LXI В,5000h Загрузка в В, С адреса исходного массива чисел
4001 00 4002 50 4003 11 LXI D,7000h Загрузка в D,E адреса массива модулей 4004 00 4005 70 4006 03 INX B Увеличение адреса в исходном массиве (старший байт) 4007 0A LDAX B Загружаем старший байт числа в А 4008 Е6 ANI 80 Проверка на знак 4009 80 400A 0В DCX B Увеличение адреса в исходном массиве (младший байт) 400B 0A LDAX B Загружаем младший байта числа в А 400C СА JZ 403D Если положительно, то переходим на 4037, если отрицательно – выполняем следующую команду 400D 3D 400E 40 400F FE CPI 00 Проверка на возникновение отрицательного нуля 4010 00 4011 С2 JNZ 4025 Если в младшем байте 00, то переходим к проверке старшего на число 80, если нет – получаем модуль 4012 25 4013 40 4014 03 INX B Увеличение адреса в исходном массиве (старший байт) 4015 0A LDAX B Загружаем старший байта числа в А 4016 FE CPI 80 Проверка на возникновение отрицательного нуля 4017 80 4018 0В DCX B Переходим к младшему байту числа 4019 0A LDAX B Загружаем младший байт числа в А 401A С2 JNZ 4025 Если возник отрицательный ноль, заменяем его на 0000 401B 25 401C 40 401D 3Е MVI A,00 Сохранение 00 в аккумуляторе 401E 00 401F 12 STAX D Сохраняем младший байт числа в массиве модулей 4020 03 INX B Увеличение адреса в исходном массиве 4021 13 INX D Увеличение адреса в массиве модулей 4022 C3 JMP Переход на 402F 4023 2F 4024 40 4025 2F CMA Инвертирование 4026 С6 ADI 01 Прибавление 1 к результату 4027 01 4028 12 STAX D Пересохраняем младший байт числа на новый адрес 4029 03 INX B Переходим к старшему байту числа в исходном массиве 402A 13 INX D Переходим к старшему байту числа в массиве модулей чисел 402B 0A LDAX B Загружаем младший байт числа в А 402C 2F CMA Инвертирование 402D СЕ ACI 00 Прибавление флага переноса Тс к результату 402E 00 402F 12 STAX D Пересохраняем старший байт числа на новый адрес 4030 3A LDA 6000 Загружаем счетчик отрицательных чисел с адреса 6000 4031 00 4032 60 4033 С6 ADI 01 Увеличиваем значение счетчика на 1 4034 01 4035 32 STA 6000 Сохраняем значение счетчика отрицательных чисел по адресу 6000 4036 00 4037 60 4038 03 INX B Увеличение адреса в исходном массиве 4039 13 INX D Увеличение адреса в массиве модулей 403A C3 JMP 403F Переход по метке 403B 3F 403C 40 403D 03 INX B Увеличиваем адрес для перехода к следующему элементу исходного массива 403E 03 INX B Увеличиваем адрес для перехода к следующему элементу исходного массива 403F 3Е MVI A,14 Проверяем окончание цикла, если адрес в регистрах В и С <14, то продолжаем выполнение цикла, если С = 14 – прекращаем выполнение программы 4040 14 4041 91 SUB C 4042 C2 JNZ 4006 4043 06 4044 40 4045 76 HLT Конец программы
2.4 Результаты тестирования программы
По адресу 500016 записан массив двухбайтных чисел со знаком в дополнительном коде:
Адрес Константа16 5000 00 5001 00 5002 02 5003 07 5004 00 5005 A7 5006 15 5007 C0 5008 31 5009 5A 500A 11 500B 0C 500C 22 500D B5 500E 12 500F 8A 5010 FF 5011 FF 5012 30 5013 80
По адресу 700016 сохранен массив модулей
Адрес Константа16 7000 0059 7002 EB3F 7004 DE4A 7006 EE75 7008 0100 700А D07F Следовательно, исходному массиву чисел соответствует:
Константа16 Результат16 0000 0702 A700 5900 C015 3FEB 5A31 0C11 B522 4ADE 8A12 75EE FFFF 0001 8030 7FD0
Рисунок 4 – Результат выполнения программы
3. Описание использованных при проектировании средств вычислительной техники
При разработке программы на эмуляторе микроЭВМ СМ-1800 v3.02 был применен ПК:
- Процессор: AMD E-450 APU 1.65 GHz;
- Оперативной памяти 4 Гб;
- Видеокарта: Radeon HD Graphics;
- Жесткий диск: 500 GB;
- Клавиатура, "мышь".
Стандартное программное обеспечение:
-Microsoft Windows 7;
- Microsoft Office 2003.
Выводы
Курсовая работа выполнена полностью в соответствии с Заданием. Данную программу можно упростить, если использовать систему команд, например микроконтроллеров 51 серии или использую языки высокого уровня для микроконтроллеров.
Список литературы
1. Ветров А.Н. Вычислительные машины, системы и сети – Тамбов: Изд-во Тамб. Гос. Техн. Ун-та, 2008. – 36 с.
2. Горбоненко В.Д. Арифметические основы цифровой техники – Ульяновск: УлГТУ, 2003. – 27с.
3. Хорошевский, В.Г. Архитектура вычислительных систем : учебное пособие / В.Г. Хорошевский. – 2-е изд. – М.: Изд-во МГТУ им. Н.Э.Баумана, 2008.
4. Щербаков А.Н. Прикладная теория цифровых автоматов. Часть 1 Компьютерная арифметика –Запорожье: ЗНТУ, 2004. – 59 с.
25
нет
Положение
точки
Знаковый
разряд
Разряды модуля числа с весовыми коэффициентами
q i= 2 –(n-1-i)
0
1
…
i
…
да
нет
да
Проверка младшего байта на число 00
5000h —> В,С
7000h —> D,E
нет
Маскирование старшего байта числа из массива числом 80h
Загрузка адреса первого элемента исходного массива и результирующего массива
Получение прямого кода числа
Начало
2
3
Проверка старшего байта на число 80
1
Tz=1?
Tz=1?
Tz=1?
Замена отрицательного нуля на число 0000
да
Конец массива достигнут?
Переход к следующему числу в исходном массиве
нет
да
Сохранение числа в массив модулей чисел
Конец
2
3
Увеличение счетчика отрицательных чисел на 1
1
2. Горбоненко В.Д. Арифметические основы цифровой техники – Ульяновск: УлГТУ, 2003. – 27с.
3. Хорошевский, В.Г. Архитектура вычислительных систем : учебное пособие / В.Г. Хорошевский. – 2-е изд. – М.: Изд-во МГТУ им. Н.Э.Баумана, 2008.
4. Щербаков А.Н. Прикладная теория цифровых автоматов. Часть 1 Компьютерная арифметика –Запорожье: ЗНТУ, 2004. – 59 с.
Вопрос-ответ:
Для чего нужен эмулятор на ПК при разработке программ для микро ЭВМ СМ 1800?
Эмулятор на ПК используется для разработки программ преобразования форматов двоичных данных и сортировок в машинных кодах микро ЭВМ СМ 1800. Он позволяет программистам создавать и тестировать программы на компьютере, а затем переносить их на микро ЭВМ.
Какие форматы хранения чисел со знаком используются в микро ЭВМ СМ 1800?
В микро ЭВМ СМ 1800 используется формат чисел со знаком, называемый "фиксированная точка". Этот формат позволяет хранить и обрабатывать числа с фиксированной точностью, что особенно важно при выполнении вычислительных операций.
Какие блок-схемы алгоритмов используются при разработке программ для микро ЭВМ СМ 1800?
При разработке программ для микро ЭВМ СМ 1800 используются блок-схемы алгоритмов, которые позволяют визуализировать структуру программы и последовательность выполнения операций. Такие блок-схемы помогают программистам лучше понять и отладить свой код.
Как распределяется память и как выглядит листинг программы с комментариями для микро ЭВМ СМ 1800?
При разработке программ для микро ЭВМ СМ 1800 память распределяется на различные сегменты, включая сегменты для кода, данных и стека. Листинг программы с комментариями представляет собой текстовый файл, где каждая строка кода сопровождается пояснением или описанием. Это помогает программистам лучше понять, что делает каждая часть программы.
Какие результаты получились после тестирования программы для микро ЭВМ СМ 1800?
После тестирования программы для микро ЭВМ СМ 1800 были получены результаты, которые позволили проверить правильность работы программы и ее соответствие требованиям. Результаты тестирования помогают программистам исправить ошибки и улучшить производительность программы.
Какие форматы двоичных данных можно преобразовывать с помощью программы на ЭВМ СМ 1800?
Программа на ЭВМ СМ 1800 позволяет преобразовывать форматы чисел со знаком фиксированной точки.
Какие сортировки возможно выполнять с помощью программы на ЭВМ СМ 1800?
Программа на ЭВМ СМ 1800 позволяет выполнять различные сортировки в машинных кодах.
Каковы основные этапы разработки программы преобразования форматов двоичных данных на ЭВМ СМ 1800?
Основные этапы разработки программы на ЭВМ СМ 1800 включают: разработку алгоритма (блок-схемы), описание команд, распределение памяти и написание листинга программы с комментариями.
Какие результаты получены при тестировании программы на ЭВМ СМ 1800?
Результаты тестирования программы на ЭВМ СМ 1800 показали ее корректную работу и успешное выполнение преобразования форматов двоичных данных и сортировок в машинных кодах.
Какие средства вычислительной техники использовались при проектировании программы на ЭВМ СМ 1800?
При проектировании программы на ЭВМ СМ 1800 были использованы различные средства вычислительной техники, включая ПК Ведение5 и эмулятор ЭВМ СМ 1800.
Какие форматы двоичных данных могут быть преобразованы программой?
Программа может преобразовывать форматы чисел со знаком и фиксированной точкой.
Как происходит сортировка в программе?
Сортировка в программе осуществляется на основе алгоритма, описанного в блок-схеме, путем последовательного сравнения и перемещения элементов массива.