Помощь в написании студенческих работ
Антистрессовый сервис

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

Курсовая Купить готовую Узнать стоимостьмоей работы

Таким образом, для прибавления 1 к двухбайтовому числу, потребуются две команды — сначала ADI 01, а затем ACI 00. Первая из них прибавит 1 к младшему байту, а вторая — значение флага Tc к старшему байту. Для программного осуществления этого переноса необходимо после прибавления 1 к младшему байту прибавить значение флага переноса Tc к старшему. Это можно сделать с помощью команды ACI 00. При… Читать ещё >

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

Содержание

  • Ведение
  • 1. Аналитическая часть
    • 1. 1. Форматы хранения чисел со знаком (фиксированная точка)
  • 2. Практическая разработка
    • 2. 1. Блок — схема алгоритма
    • 2. 2. Кратное описание команд
    • 2. 3. Распределение памяти и листинг программы с комментарием
    • 2. 4. Результаты тестирования программы
  • 3. Описание использованных при проектировании средств вычислительной техники
  • Выводы
  • Список литературы

Условием выхода из цикла будет достижение последнего числа массива. Одновременно будет осуществляться подсчет количества отрицательных чисел.

Модуль числа 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 Распределение памяти и листинг программы с комментарием

— регистровая пара, которая содержит текущий адрес исходного массива чисел

— регистровая пара, которая содержит текущий адрес массива модулей

500 016 — начальный адрес массива исходных чисел

600 016 — ячейка с количеством найденных отрицательных чисел

700 016 — начальный адрес массива модулей Таблица 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 400 °F 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 401 °F 12 STAX D Сохраняем младший байт числа в массиве модулей 4020 03 INX B Увеличение адреса в исходном массиве 4021 13 INX D Увеличение адреса в массиве модулей 4022 C3 JMP Переход на 402 °F 4023 2 °F 4024 40 4025 2 °F 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 2 °F CMA Инвертирование 402D СЕ ACI 00 Прибавление флага переноса Тс к результату 402E 00 402 °F 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 403 °F Переход по метке 403B 3 °F 403C 40 403D 03 INX B Увеличиваем адрес для перехода к следующему элементу исходного массива 403E 03 INX B Увеличиваем адрес для перехода к следующему элементу исходного массива 403 °F 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 Результаты тестирования программы

По адресу 500 016 записан массив двухбайтных чисел со знаком в дополнительном коде:

Адрес Константа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 500 °F 8A 5010 FF 5011 FF 5012 30 5013 80

По адресу 700 016 сохранен массив модулей

Адрес Константа16 7000 0059 7002 EB3 °F 7004 DE4A 7006 EE75 7008 0100 700А D07 °F Следовательно, исходному массиву чисел соответствует:

Константа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 с.

нет

Положение точки Знаковый разряд Разряды модуля числа с весовыми коэффициентами

q i= 2 -(n-1-i)

i

да

нет

да

Проверка младшего байта на число 00

5000h —> В, С

7000h —> D, E

нет

Маскирование старшего байта числа из массива числом 80h

Загрузка адреса первого элемента исходного массива и результирующего массива

Получение прямого кода числа

Начало

Проверка старшего байта на число 80

Tz=1?

Tz=1?

Tz=1?

Замена отрицательного нуля на число 0000

да Конец массива достигнут?

Переход к следующему числу в исходном массиве

нет

да Сохранение числа в массив модулей чисел

Конец

Увеличение счетчика отрицательных чисел на 1

Показать весь текст

Список литературы

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

ИЛИ