Распространение процессоров выявило необходимость изучения языка Ассемблер для написания программ для персональных ЭВМ из-за двух причин. Во-первых, программы, написанные на языке Ассемблер, требуют значительно меньшего объема памяти и ресурсов компьютера. Во-вторых, знание языка Ассемблер и машинного кода дает понимание архитектуры машины. А знание архитектуры машины и принципов ее работы дает возможность усовершенствовать написанные программы и повысить их быстродействие за счет применения некоторых специальных методов программирования.
1 Введение……………………………………………………………………..4
2 Постановка задачи……………………………………………………….….6
3 Метод решения задачи……………………………………………………. 8
4 Разработка состава исходных, промежуточных и
выходных данных………………………………………………………………9
5 Разработка алгоритма решения задачи…………………………………..10
6 Описание программы…………………………………………………. 11
7 Отладка программы……………………………………………………….12
8 Описание языка программирования……………………………………..13
Лекция 12. С++20 и обозримое будущее
9 Руководство системного программиста…………………………………16
10 Руководство оператора…………………………………………………. 21
11 Заключение………………………………………………………………..22
12 Список литературы……………………………………………………….23
Приложение А
Схема данных………………………………………………………………..26
Приложение Б
Схема программы……………………………………………………………27
Приложение В
Текст программы…………………………………………………………….29
Приложение С
Пример выполнения………………………………………………………. 36
Работа состоит из 3 файла
Распространение процессоров выявило необходимость изучения языка Ассемблер для написания программ для персональных ЭВМ из-за двух причин. Во-первых, программы, написанные на языке Ассемблер, требуют значительно меньшего объема памяти и ресурсов компьютера. Во-вторых, знание языка Ассемблер и машинного кода дает понимание архитектуры машины. А знание архитектуры машины и принципов ее работы дает возможность усовершенствовать написанные программы и повысить их быстродействие за счет применения некоторых специальных методов программирования.
Программы на языке ассемблера также переводятся в машинный код с помощью программы- транслятора, называемой ассемблером. Вопреки этому сходству с другими языками, ассемблер не является языком ни высокого, ни низкого уровня — он занимает некоторое промежуточное положение. Основное отличие между языком ассемблера и языками высокого уровня состоит в том, что операторы C или Pascal обычно переводятся в целые наборы машинных кодов, а команды ассемблера непосредственно преобразуются в соответствующий машинный код. Существуют свои достоинства у каждого языка, однако только на языке ассемблера можно писать программы, напрямую используя множество команд процессора.
Почему нельзя разрабатывать программы непосредственно в машинных кодах, если язык ассемблера и машинный код однозначно соответствуют один другому? Ответ прост: машинный код слишком громоздкий. Хотя первые программы для компьютеров действительно писались в машинном коде, сегодня по веским причинам это практически не делается.
ВЫВОД МАССИВА | ПЕРЕБОР МАССИВА | МАССИВЫ И ЦИКЛЫ | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | # 26
Например, многие машинные коды зависят от относительного положения в памяти. Кроме того, в чисто машинном коде не используются именованные и нет возможности указать программе фиксированные адреса, по которым содержатся различные значения и подпрограммы. Это означает, что если вы измените одну команду 10000-байтовой программе на машинном коде, то, возможно, вам придётся модифицировать кроме этого ещё 9000 других кодов!
2 Постановка задачи
Разработать программу на языке Assembler, которая вычисляет значения функции в пределах от x=1..n при изменении x с шагом H.
Код для выполнения арифметических операций двоичный.
Формат исполняемого модуля: com
Программа оформляется в виде законченного программного модуля который должен выполнять следующее функции:
- Вывод сообщения о начале работы программы (назначение программы, разработчик)
- Вывод приглашения для ввода исходных данных.
- Ввод исходных данных с клавиатуры.
- Предусмотреть обработку ошибок.
- Выполнение заданной функции.
- Вывод результатов на экран или в файл.
Процесс создания программы включает в себя следующие этапы:
1) Постановка задачи.
2) Методы решения задачи.
3) Разработка структур данных.
4) Разработка алгоритмов решения.
5) Разработка программы.
6) Отладка программы.
7) Оформление технической документации к программе
3 Метод решения задачи
На курсовом проектировании необходимо создать программу на языке Assembler ,выполняющую следующие операции: ввод данных с клавиатуры, вычисление заданной функции и вывод результата.
Для реализации поставленной задачи необходимо составить алгоритм программы, учитывающий как специфику программы, так и специфику языка программирования.
Программу необходимо написать по процедурному принципу, для уменьшения ее размера, а также для удобства и быстроты изменения самой программы.
Для описания данных создадим сегмент данных, в котором укажем имена переменных и их типы.
Необходимо предусмотреть следующие процедуры, реализующие следующие операции: Вывод (сообщений и результатов), Ввод (с клавиатуры), Обработка ошибок, Вычисление функции, процедура работы с экраном.
4 Разработка состава исходных, промежуточных и выходных данных
В программе используются следующие типы данных:
Константы, содержат текст выводимого на экран сообщения
A, B, C, Y, X1, Xn, h, pause
Переменные предназначенные для записи символов набранных с клавиатуры
Память для ASCII-кодов используется программой для хранения преобразованных значений
Константа, множитель для вычисления ASCII кодов
Ak, Bk, Ck, Yk, X1k, Xnk, xni, hk, cods
Переменные для хранения переведённых значений в виде ASCII кодов
Переменные для хранения координат курсора
rez1 – rez4, rezf
Переменные для хранения промежуточных результатов вычисления
5 Разработка алгоритма решения задачи
Алгоритм решения поставленной задачи мы будем разрабатывать по процедурному принципу. Алгоритм решения задачи можно представить следующим образом:
- Вывод сведений о программе.
- Организация ввода данных.
- Обработка данных (кодирование и декодирование ASCII кодов).
- Проверка на ошибки.
- Вычисление функции.
- Обработка данных (перевод результата в форму для вывода)
- Вывод результатов на экран.
- Завершение работы программы.
Результатом выполнения данной части курсовой работы является блок-схема программы, приведенная в Приложении А и Приложении Б
6 Описание программы
Программа состоит из :
1) Главная часть – эта часть программы, которая организует пользовательский интерфейс, также она объединяет все процедуры используемые в программе.
2) (inp)Ввод – это процедура ввода всех переменных.
Заполнение происходит следующим образом:
Ввод A Ввод B Ввод C Ввод y Ввод X1 Ввод Xn Ввод Xn Введите шаг H
3) (oput) Вывод – эта процедура вывода текстовых сообщений.
4) (clear) Очистка – эта процедура очистки экрана.
5) (cursor) Установка курсора в заданное место
6) (cod) Вычисление порядкового символа производиться перевод в ASCII код
7) (decod) Обратная процедура перевода
8) (error) Обработка ошибок– процедура вывода ошибки при делении на 0
9) (zf) Процедура вывода положительного значения функции и увеличения x на h.
Значение функции Y=
Основное тело программы определено:
Текст программы приведён в приложении В.
7 Отладка программы
Отладка и тестирование проводились встроенными средствами интегрированной среды программирования с помощью Turbo Debuger (TD.EXE)
После создания программы возникла необходимость исправить синтаксические и лексические ошибки. Нахождение ошибок осуществлялось попыткой запустить программу, при этом система показывала номер строки ошибки и выводила код данной ошибки. Исправление синтаксических и лексических ошибок осуществлялось при помощи пункта меню Debug, а также с помощью литературы, приведённой в разделе пояснительной записки
Список литературы. После исправления синтаксических ошибок, средствами Отладки, производилась проверка всех путей алгоритма, посредством ввода разнообразных, тестирующих данных. После устранения всех ошибок и недочётов, программа стала отвечать требованиям задания курсового проекта. Дальнейшая отладка и тестирование программы на этом прекратилось.
8 Описание языка программирования
В задании на курсовое проектирование в качестве языка программирования указан язык Ассемблер. Язык Ассемблера – это язык программирования низкого уровня, приближенный к системе команд процессора ЭВМ.
Турбо Ассемблер фирмы Borland представляет собой многопроходный ассемблер с разрешением опережающих ссылок, скоростью ассемблирования до 48000 строк в минуту (на компьютере IBM PS/2, модель 60), совместимый с макроассемблером фирмы Microsoft MASM и дополнительной возможностью использования режима расширенного синтаксиса Ideal. Независимо от вашего опыта в программировании вы, несомненно, оцените эти особенности, а также ряд других средств, которые значительно облегчают программирование на Ассемблере. Турбо Ассемблер является мощным ассемблером, работающим с командной строкой, который воспринимает ваши исходные файлы (файлы с расширением .ASM) и создает из них объектные модули (файлы с расширением .OBJ). После этого вы можете использовать программу-компоновщик фирмы Borland TLINK.EXE, отличающуюся высокой скоростью компоновки, для компоновки полученных объектных модулей и создания выполняемых файлов (файлов с расширением .EXE).
Требования к программному и аппаратному обеспечению
Турбо Ассемблер работает на компьютерах семейства IBM PC, включая модели XT, AT и PS/2, а также на полностью совместимых с ними компьютерах. Для работы Турбо Ассемблера требуется операционная система MS-DOS (версии 2.0 или более поздняя) и не менее 256К оперативной памяти.
Турбо Ассемблер генерирует инструкции процессоров 8086, 80186, 80286, 80386 и i486, а также инструкции с плавающей точкой для арифметических сопроцессоров 8087, 80287 и 80387. (Подробнее об инструкциях процессором семейства 80х86/80х87 рассказывается в книгах фирмы Intel.)
Турбо Ассемблер поддерживает спецификацию Интерфейса защищенного режима DOS (DOS Protected Mode Interface — DPMI). Будучи разработанным комитетом ведущих компаний-производителей программного и аппаратного обеспечения (включая Borland), DPMI определяет стандартный интерфейс, полностью использующий преимущества средств защищенного режима процессоров 80286, 386 и i486.
По мере увеличения числа компьютеров на базе процессоров 386 и i486 растет и число программных продуктов, использующих возможности этих процессоров. Защищенный и виртуальный 8086 режимы данных процессоров означают изменение самого вычислительного процесса. Теперь мы можем использовать многозадачный режим и средства расширенной памяти.
Раньше организация работы прикладной программы, использующей расширенную память, в многозадачном режиме с другим программным обеспечением представляла собой проблему. Стандарт DPMI решает эту проблему. Прикладные программы, использующие расширенную память, разработанные в стандарте DPMI, будут надежно работать в многозадачных системах.
В настоящее время Турбо Ассемблер использует сервисные средства DPMI, предлагаемые Microsoft Windows. Турбо Ассемблер может работать в операционной среде, использующей средства DPMI. Если вы решите перейти на новую операционную среду, в которой эти сервисные средства доступны, то ваши затраты на программное обеспечение себя оправдают.
Примечание: Стандарт DPMI поддерживает версия Турбо Ассемблера TASMX.EXE.
Известно, что программы, выполняемые под управлением MS-DOS, могут быть одного из двух типов: COM или EXE. Основное различие этих типов заключается в том, что программы типа COM состоят из единственного сегмента памяти, в котором размещаются программные коды, данные и стек, то есть программа этого типа не может занимать объем памяти более 64 Кбайт. Программы типа ЕХЕ не ограничены по объему памяти и для хранения программных кодов, данных и стека используют разные сегменты памяти. В формате СОМ пишутся специфические программы (обработчики прерываний, резидентные программы).
Источник: www.freepapers.ru
3. Оформление результатов.
2. Машинные коды команд, соответствующих варианту задания.
3. Результаты выполнения последовательности команд в форме табл. 2.
Оформите результаты выполнения данной работы в виде отчета (в электронном виде), в соответствии с требованиями.
Задания для выполнения:
1. Изучить теоретические сведения, описывающие модель учебной эвм и ее программную реализацию.
2. Выполнить пример занесения программы и ее выполнения на модели ЭВМ.
Для этого необходимо ввести в память ЭВМ и выполнить в режиме Шаг некоторую последовательность команд (определенную вариантом задания) и зафиксировать все изменения на уровне программно-доступных объектов ЭВМ, происходящие при выполнении этих команд.
Команды в память учебной ЭВМ вводятся в виде шестиразрядных десятичных чисел (см. форматы команд на рис. 3, коды команд и способов адресации в табл. 2—4).
2.1. Запустите программу CompModel.exe.
Дана последовательность мнемокодов, которую необходимо преобразовать в машинные коды, занести в ОЗУ ЭВМ, выполнить в режиме Шаг и зафиксировать изменение состояний программно-доступных объектов ЭВМ (табл. 1).
Таблица 1. Команды и коды
2.2. Введите коды табл.1 последовательно в ячейки ОЗУ, начиная с адреса 000.
2.3. Выполняя команды в режиме Шаг, фиксируйте в табл. 2 изменения программно-доступных объектов (в данном случае это Асс, PC и ячейки ОЗУ 020 и 030).
Таблица 2. Содержимое регистров ЭВМ в результате выполнения примера программы
3. Выполнить задания:
Задание 1. Вычислить значение S:
где: M – месяц Вашего рождения;
D – день Вашего рождения;
X – номер Вашего варианта.
Результат сохранить в ячейке по адресу 070.
Задание 2. Вычислить значение A:
A = X x D (X умножить на D);
Результат сохранить в ячейке по адресу 071.
Задание 3. Вычислить значение:
Задание 4. Вычислить значение:
C = X x 2 + B x 4
Результат сохранить в ячейке по адресу 072.
4. Оформление результатов.
Включите в отчет:
1. Формулировку каждого выполненного примера и задания.
2. Машинные коды команд, соответствующих заданию или примеру.
3. Код программы на языке ассемблер.
3. Результаты выполнения последовательности команд в форме табл. 2.
Оформите результаты выполнения данной работы в виде отчета (в электронном виде), в соответствии с требованиями.
Аппаратные средства информационных технологий Практическая работа № 3. Команды управления и ветвления
Цель работы:
1. Изучение команд управления ходом вычислений для модельной ЭВМ.
2. Разработка программы реализующей ветвящийся вычислительный процесс на модели учебной ЭВМ.
Теоретические сведения:
Команды управления модельной ЭВМ
К этому классу команд относятся, которые изменяют естественный порядок выполнения команд программы. Эти команды меняют содержимое программного счетчика, обеспечивая переходы по программе. Существуют следующие виды команд управления:
— команды вызова подпрограмм (процедур);
— системные команды управления процессом обработки информации и внутренними ресурсами процессора.
1. Команды передачи управления;
Различают два вида переходов в программах:
В последнем случае передача управления происходит, если выполняется заданное в коде команды условие, иначе выполняется следующая по порядку команда.
В качестве условий обычно используются признаки результата предыдущей операции, которые хранятся в специальном регистре признаков (флажков). Чаще всего формируются и проверяются признаки:
— наличия переноса из старшего разряда;
— четности числа единиц в результате и др.
Различают три разновидности команд передачи управления:
— возвраты из подпрограмм.
Команды переходов помещают в программный счетчик содержимое своего адресного поля — адрес перехода. При этом старое значение программного счетчика теряется. В микро-ЭВМ часто для экономии длины адресного поля команд условных переходов адрес перехода формируется как сумма текущего значения программного счетчика и относительно короткого знакового смещения, размещаемого в команде. В крайнем случае, в командах условных переходов можно и вовсе обойтись без адресной части — при выполнении условия команда «перепрыгивает» через следующую команду, которой обычно является безусловный переход.
2. Команда вызова подпрограмм работает подобно команде безусловного перехода, но старое значение программного счетчика предварительно сохраняется в специальном регистре или в стеке. Команда возврата передает содержимое верхушки стека или специального регистра в программный счетчик. Команды вызова и возврата работают «в паре». Подпрограмма, вызываемая командой вызова, должна заканчиваться командой возврата, что обеспечивает по окончании работы подпрограммы передачу управления в точку вызова. Хранение адресов возврата в стеке обеспечивает возможность реализации вложенных подпрограмм.
3. Системные— команды, выполняющие управление процессом обработки информации и внутренними ресурсами процессора. К таким командам относятся:
— команды управления подсистемой прерывания;
— команда загрузки PSW – Program Status Word (слово состояния программы);
— команды установки флагов в регистре состояния процессора;
— команды установки и изменения параметров защиты памяти;
— команда останова программы;
— и некоторые другие команды, например команда диагностики работы.
В простых процессорах класс системных команд немногочисленный, а в сложных мультипрограммных системах предусматривается большое число системных команд.
Задания для выполнения:
1. Ознакомиться с теоретическими сведениями о командах управления модельной ЭВМ.
2. Запустите программу CompModel.exe.
3. Выполнить пример. В качестве примера рассмотрим программу вычисления функции:

Причем х вводится с устройства ввода IR, результат у выводится на OR. Граф-схема алгоритма решения задачи показана на рис.1.

В данном примере используются двухсловные команды с непосредственной адресацией, позволяющие оперировать отрицательными числами и числами по модулю, превышающие 999, в качестве непосредственного операнда.
Оценив размер программы примерно в 20—25 команд, отведем для области данных ячейки ОЗУ, начиная с адреса 030. Составленная программа с комментариями представлена в виде табл. 1.
Таблица 1. Пример программы
Источник: studfile.net
Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой — мы готовы помочь.


Узнай цену своей работы —>
Отчёт по лабораторной работе №1
- Формулировка задания
1. Ознакомиться с архитектурой ЭВМ (см. часть I ).
2. Записать в ОЗУ «программу», состоящую из пяти команд варианты задания выбрать из табл. 9.3. Команды разместить в последовательных ячейках памяти.
3. При необходимости установить начальное значение в устройство ввода IR .
4. Определить те программно-доступные объекты ЭВМ, которые будут изменяться при выполнении этих команд.
5. Выполнить в режиме Шаг введенную последовательность команд, фиксируя изменения значений объектов, определенных в п. 4, в таблице (см. форму табл. 9.2).
6. Если в программе образуется цикл, необходимо просмотреть не более двух повторений каждой команды, входящей в тело цикла.
- Машинные коды команд, соответствующих варианту задания.
Источник: samzan.net