Разработка программ преобразования форматов двоичных данных и сортировок в машинных кодах микро-ЭВМ СМ-1800 с помощью эмулятора на ПК
Курсовая работа, 24 Мая 2015, автор: пользователь скрыл имя
Описание работы
Данный курсовой проект состоит из двух частей: аналитической и практической. В первой необходимо подготовить теоретический материал на тему: «Двоичная, восьмеричная и шестнадцатеричная системы счисления. Правила переводов десятичных чисел в них и обратно. Форматы хранения чисел с плавающей точкой».
Содержание работы
Введение……………………………………………………………...7
1 Аналитическая часть………………………………..……………..8
1.1 Двоично-десятичное кодирование………………………....8
1.2 Арифметические действия над ДД-кодами…………….....9
1.3 Стандарты кодировки текстов……………………………..13
2 Описание программы-эмулятора…………………………………18
3. Практическая разработка………………………………………..21
3.1 Описание алгоритма…………………………………….....21
3.2 Листинг программы………………………………………..23
3.3 Блок схема………………………………………………….25
4.Описание использованных средств вычислительной техники..28
Вывод………………………………………………………………………….29
Список использованной литературы………………………………………..31
Файлы: 1 файл
Курсовик ОЭВМ.docx
— 61.66 Кб (Скачать файл)
Обоснование выбора.
Для выполнения данного курсового проекта были предложены два различных эмулятора ЭВМ СМ-1800, разработанные студентами СПбГТИ (ТУ). В ходе сравнения по ряду причин был выбран эмулятор Смирнова.
- Во-первых, данная программа совместима с ОС Windows XP. Эмулятор Смирнова работает под эту ОС ничуть не хуже, чем Windows 98. А работа эмулятора Дёмина-Пушкина нарушается:ASCII коды русских символов отображаются в виде неопознанных знаков «?».
- Во-вторых данный эмулятор более близок к реальной ЭВМ СМ-1800 по внешнему виду, имеет более удобные клавиши: (все буквенно-цифровые клавиши IBM-клавиатуры соответствуют стандартной раскладке QWERTY-ЙЦУКЕН, для клавиатуры СМ-1800 продублированы полностью) и привычную строку меню. Это придает простоту при работе с ним и позволяет прочувствовать работу с настоящей ЭВМ СМ-1800.
- В-третьих эмулятор Смирнова позволяет одновременно видеть ВТА, ПКУ и клавиатуру, а это облегчает процесс обращения к данным эмулирующим частям и экономит время , которое могло бы затрачиваться на смены вкладок.
3. Практическая разработка.
3.1 Описание алгоритма решения задачи.
Для формирования массива целых положительных однобайтных двоичных чисел без знака, соответствующий исходному массиву на первом этапе требуется определить число из кода в кодировке КОИ-7. Для этого мы будем рассматривать исходные шестнадцатиразрядные константы как совокупность двух восьмиразрядных констант, обрабатывая их по отдельности. Перед записью в результирующий массив нужно преобразовать двоично-десятичный код в двоичный код, с помощью сложения.
Распределение памяти:
L-счетчик цикла
В,С - адрес текущей исходной однобайтной константой
D,E – адрес текущей ячейки памяти результирующего массива
H,L – для хранения промежуточных результатов
Инициализация:
- 1.1 Создание стека по адресу 700016
- 1.2 Загрузка в ВС константы 500016
1.3 Загрузка в DE константы 600016
1.4 Создание счетчика
1.5 Обнуление аккумулятора
Обработка первой восьмиразрядной константы:
2.1 Загрузка
в аккумулятор старшей
2.2 Получение старшей
тетрады числа в младшей
2.3 Записать ВС в стек
2.4 Сохранение аккумулятора в В
2.5 Сохранение счетчика №2 в С
2.6 Сложить аккумулятор с В
2.7 Декремент счетчика
2.8 Если счетчик 0 не переходит к пункту 2.6
2.9 Восстановление ВС
2.10 Сохранение аккумулятора в Н
2.11
Инкремент ВС (теперь указывает
на вторую однобайтную
Обработка второй восьмиразрядной константы:
3.1
Загрузка в аккумулятор
3.2 Получение младшей тетрады числа в младшей тетраде аккумулятора
Получение результата:
4.1
Сложение аккумулятора и
4.2 Запись аккумулятора по адресу, хранящемуся в DE
Заключительная часть:
5.1 Инкремент ВС
5.2 Инкремент DE
5.3 Декремент счетчика
5.4 Если счетчик не 0 переход к этапу 2.1
5.5 Выход в монитор
3.2 Листинг программы:
|
Адрес |
16 ричный код |
Код ассемблера |
Комментарий | |
4000 |
01 14 50 |
LXI B 5014 h |
Загрузка в пару ВС непосредственные данные 5014 (следующий адрес после последнего байта массива шестнадцатиразрядных констант) | |
4003 |
11 0A 60 |
LXI D 600Ah |
Загрузка в пару DE непосредственные данные (следующий адрес после последнего байта результирующего массива двоичных чисел без знака) | |
4006 |
1B |
DCR E |
Декремент Е, т.е. Е=Е-1 (уменьшение адреса) | |
4007 |
0B |
DCX B |
Декремент ВС (уменьшение адреса) | |
4008 |
0A |
LDAX B |
Загрузить А из ячейки с адресом ВС (младший байт константы из массива шестнадцатиразрядных констант) | |
4009 |
DE 30 |
SUI 30h |
А=А-30 (для перевода к двоичным числам) | |
400B |
6F |
MOV L A |
Переслать из А в L | |
400C |
0B |
DCX B |
Декремент ВС (уменьшение адреса) | |
400D |
0A |
LDAX B |
Загрузить А из ячейки с адресом ВС (старший байт константы из массива шестнадцатиразрядных констант) | |
400E |
DE30 |
SUI 30h |
А=А-30 (для перехода к двоичным числам) | |
4010 |
67 |
MOV H A |
Переслать из А в Н | |
4011 |
C5 |
PUSH B |
Записать в стек пару регистров ВС | |
4012 |
7C |
MOV A H |
Переслать из Н в А | |
4013 |
0E 09 |
MVI C 09h |
Записать в С данные 09h (организация счетчика не основного цикла) | |
4015 |
06 00 |
MVI B 00h |
Записать в В данные 09h (организация счетчика не основного цикла) | |
4017 |
84 |
ADD H |
Сложить А с Н (по циклу выедет 10 раз) | |
4018 |
0D |
DCR C |
С-С-1 (шаг счетчика на вычитание) | |
4019 |
C2 17 40 |
JNZ 4017h |
Перейти по адресу 4017 если Z=0 | |
401C |
85 |
ADD L |
А=А+L (получили искомое двоичное число | |
401D |
C1 |
POP B |
Загрузить из стека пару регистров ВС | |
401E |
12 |
STAX D |
Записать А по адресу DE (запись результата) | |
401F |
13 |
INX D |
Инкрементировать DE | |
4020 |
7B |
MOV A E |
Переслать из Е в А(для организации цикла) | |
4021 |
3D |
DCR A |
Декрементировать А | |
4022 |
5F |
MOV E A |
Переслать из А в Е(для организации цикла) | |
4023 |
C2 06 04 |
JNZ 4006h |
Перейти по адресу 4006 если Z=0 (цикл закончится ,в А будут нули, а это будет когда все шестнадцатиразрядные константы будут переведены в двоичные числа без знака) | |
4026 |
C3 40 00 |
JMP 0040h |
Выход в монитор | |
3.3 Блок-схема
Нет
Нет ДА
Да Нет
ДА Нет
4. Описание использованных
Характеристика оборудования:
Компьютер AMD AthlonXP 2500+(16000MHz), 256 Mb RAM,
GeForce 6600 VGA card, 512 Mb видеопамяти, монитор с разрешением 1280х1024, стандартная клавиатура, мышь.
Стандартное программное обеспечение:
Microsoft Windows XP.
Средства редактирования документов:
Microsoft Office
Вывод.
Курсовой проект полностью выполнен.
Проделанная курсовая работа позволила не только разобраться с двоично-десятичным кодированием и кодами КОИ-7, но и дала отличные навыки владения эмулятором СМ-1800, а как следствие и самой микро-ЭВМ СМ.
Так же было получено много информации о процессоре КР580ИК80А и о машинных и ассемблерных командах для этого процессора. Знание машин на машинном уровне – знание, которое необходимо иметь каждому программисту. Ассемблерные программы могут быть очень эффективными. Из программистов, с равными навыками и способностями, работающий на языке ассемблера создаст программу более компактную и быстродействующую, чем такая же программа, написанная на языке высокого уровня.
Только через написание программ на этом уровне детализации можно понять, как работает машина на самом нижнем уровне. Если вы хотите узнать о компьютере все, вы должны быть знакомы с его языком ассемблера. Единственный способ добиться этого – писать программы на этом языке.
Составление программы на языке ассемблер не вызвало сложностей. Основная трудность была оттранслировать вручную операторы ассемблера.
Адрес 16 |
Константа 10 |
6000 |
26 |
6001 |
61 |
6002 |
0С |
6003 |
00 |
6004 |
2D |
6005 |
1E |
6006 |
0E |
6007 |
63 |
6008 |
07 |
6009 |
3C |
Список литературы:
1)Гиляров
В.Н. Стандартное программное
2005 г. Стр. 22.
2)Л.Н.
Знаменская, С.В. Знаменский. Проблема
множественности русских