Вход

Разработка программ преобразования форматов двоичных данных и сортировок в машинных кодах микро-ЭВМ СМ-1800 с помощью эмулятора на ПК

Рекомендуемая категория для самостоятельной подготовки:
Курсовая работа*
Код 187311
Дата создания 2015
Страниц 25
Источников 4
Мы сможем обработать ваш заказ (!) 26 апреля в 12:00 [мск]
Файлы будут доступны для скачивания только после обработки заказа.
1 790руб.
КУПИТЬ

Содержание

Ведение 5
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

Список литературы [ всего 4]

1. Ветров А.Н. Вычислительные машины, системы и сети – Тамбов: Изд-во Тамб. Гос. Техн. Ун-та, 2008. – 36 с.
2. Горбоненко В.Д. Арифметические основы цифровой техники – Ульяновск: УлГТУ, 2003. – 27с.
3. Хорошевский, В.Г. Архитектура вычислительных систем : учебное пособие / В.Г. Хорошевский. – 2-е изд. – М.: Изд-во МГТУ им. Н.Э.Баумана, 2008.
4. Щербаков А.Н. Прикладная теория цифровых автоматов. Часть 1 Компьютерная арифметика –Запорожье: ЗНТУ, 2004. – 59 с.
Очень похожие работы
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.0049
© Рефератбанк, 2002 - 2024