- •Методические указания
- •Методические указания
- •Содержание
- •Введение
- •Теоретическая часть краткая информация о пэвм ibm pc
- •Регистры
- •Организация памяти
- •Использование сегментного регистра
- •Режимы адресации
- •Пространство ввода/вывода
- •Прерывания
- •Представление чисел в эвм
- •Лабораторная работа n1 изучение программы-отладчика, регистров и команд микропроцессора Intel-8088
- •3.Порядок выполнения работы
- •Лабораторная работа n2 написание и отладка управляющих программ с использованием псевдокодов
- •3.Порядок выполнения работы
- •Лабораторная работа n3 написание и отладка управляющих программ на языке ассемблера
- •Приложения
- •1.Справка о командах ассемблера
- •Список использованных источников
- •Методические указания
3.Порядок выполнения работы
3.1.Изучить алгоритм линейной интерполяции, использующей оценочную функцию.
3.2.Написать программу с использованием псевдокода (инструкций Ассемблера).
3.3.Ввести программу в компьютер с использованием программы - отладчика DEBUG, сохранить ее на жестком диске (D:\RAF) с использованием расширения имени файла COM, отладить и исполнить созданную программу.
3.4.Выполненную работу представить в виде отчета.
Лабораторная работа n3 написание и отладка управляющих программ на языке ассемблера
1.ЦЕЛЬ РАБОТЫ: Дальнейшее углубление знаний микропроцессора Intel 8088. Изучить назначение и взаимодействие регистров, ячеек памяти, а также псевдокодов в процессе трассировки программ, написанных с использованием языка программирования Ассемблер. Изучение работы подпрограмм, стековой памяти. Определение технических возможностей разработанных управляющих программ.
2.ТЕОРЕТИЧЕСКАЯ ЧАСТЬ.
В этой работе студент знакомится с программным обеспечением разработанным для создания и отладки программ с использованием языка Ассемблера.
Программа на языке Ассемблера вводится в ПЭВМ с использованием текстового редактора пакета Norton Commander или EDIT, транслируется в машинный код с помощью Турбоассемблера TASM и компоновщика TLINK (фирмы Borland) либо с помощью Макроассемблера МАСМ, компоновщика LINK и преобразователя EXE2BIN.COM (фирмы Microsoft). Отладка программ производится с помощью программы-отладчика DEBUG.
Отлаженная программа должна рисовать на экране дисплея траекторию движения в соответствии с заданными параметрами движения режущего инструмента на станке.
СТРУКТУРА ПРОГРАММЫ на языке Ассемблера для создания Cом-файла.
Все имена задавать на латыни. Численные значения можно задавать с использованием десятичного или шестнадцатеричного исчисления. В последнем случае после числа вставлять символ H.
Имя_сегмента SEGMENT
ASSUME CS: Имя_сегмента ;Assume - принять на себя:
;Хранить имя сегмента в регистре CS.
ORG 100H ;Origin - начало (с ячейки №100Н).
Метка: JMP Главная ;Метка: - начало данной программы.
;Определение переменных:
X DW 100 ;Define Word(Byte) - Установить Слово
;(для переменной X). Начальное значение=100.
..................... ;Еще переменные
Главная PROC ;имя_процедуры PROC.
...................... ;ассемблерные инструкции
CALL Подпрограмма
.......... ; ассемблерные инструкции
RET ;Возврат в запустившую программу.
Главная ENDP ;конец указанной процедуры
Подпрограмма PROC ;Процедура с именем "Подпрограмма"
.......... ; Тело подпрограммы
RET ;Возврат в вызвавшую процедуру
Подпрограмма ENDP
Имя_сегмента ENDS ;Конец записи в указанный сегмент.
END Метка ;Конец программы.
СОЗДАНИЕ МАШИННОГО КОДА.
1)Используя редактор NC(Shift+F4) или EDIT создать новый файл с расширением ASM. Набрать программу на языке Ассемблера.
2)Создание объектного кода с использованием турбоассемблера TASM, а затем машинного кода:
tasm.exe name.asm -получим name.obj
tlink.exe/t name.obj -получим name.com.
При использовании макроассемблера MASM работа выполняется в 3 этапа:
masm.exe name.asm; -получим name.obj
link.exe name.obj; -получим name.exe
exe2bin.exe name.exe name.com -получим name.com.
3)Запустить COM - программу.
4)Если при выполнении указанных работ будут обнаруживаться синтаксические ошибки, следует их устранять.
5)Если полученная COM - программа не дает правильный результат, следует проверить:
правильность используемого алгоритма расчета,
правильность программы.
Для проверки правильности работы и алгоритма и программы необходимо использовать тестовую задачу. Обычно это та же самая задача, но с такими исходными данными, которые позволяют относительно просто решить задачу без применения ЭВМ.
Например, для программы линейной интерполяции это может быть построение очень короткой прямой линии с координатами начальной точки (0х0), и конечной точки (5х3). Такую прямую легко рассчитать вручную и построить траекторию в тетради в клеточку (с целью проверки алгоритма).
Далее программа запускается в отладочном режиме,в нашем случае с использованием программы-отладчика Debug, и проверяются промежуточные значения переменных задачи. Это позволяет обнаружить ошибку.
Верно написанная программа name.asm транслируется и компонуется без ошибок. При этом программа в машинных кодах name.com исполняется и даёт правильные результаты.
3.ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.
3.1.Разработать программу линейной интерполяции на языке Ассемблера. Использовать для этого алгоритм, разработанный на предыдущей лабораторной работе. Произвести её преобразование в машинный код, отладку и исполнение.
3.2.Создать исполняемый файл линейной интерполяции с использованием языка Турбопаскаль.
3.3.Сравнить полученнные тремя способами программы линейной интерполяции:программа, написанная с использованием псевдокодов (см. предыдущую лабораторную работу), на языке Ассемблера и Паскаля (см. приложение). Сравнить их по структуре, по размеру. Использовать для этого программу-отладчик DEBUG.
3.4.Исполнить программу, подготовленную с помощью языка Ассемблера, в режиме трассировки и изучить работу:
используемых регистров (однобайтовых и двухбайтовых). Проверить правильность выполнения инструкций ADD и SUB, в том числе при получении отрицательных значений (см. алгоритм преобразования отрицательных двоичных чисел в положительные и обратно в теоретической части данного методического указания);
флагов ZR(NZ), PL(NG), их изменение при выполнении команд ADD, SUB, CMP;
регистров CS, IP, их изменение при выполнении команд безусловных и условных переходов JMP, JGE, JNZ, при входе в подпрограмму и выходе из нее по командам: CALL, RET;
регистров SS, SP. Найти стековую память и определить номера ячеек, в которых сохраняются или используются данные при использовании PUSH, POP, CALL, RET;
3.5.Произвести ориентировочную оценку технических возможностей разработанной программы интерполяции:
определить время выполнения созданной программы. Для этого реализовать мнокократное (например, 10000раз) циклическое выполнение программы и определить с помощью секундомера эту длительность;
определить наибольшую скорость движения режущего инструмента на станке исходя из предположения, что цена одной станочной дискреты составляет 0,005мм;
определить наибольшую величину перемещения режущего инструмента;
сделать выводы о путях совершенствования разработанной программы.
3.6.Задание на оценку каждому студенту: самостоятельно разработать и реализовать программу круговой интерполяции с использованием оценочной функции. Варианты задания (комбинируются):
по часовой и против часовой стрелки,
для одной из 4-х четвертей окружности,
вывод траектории движения в увеличенном масштабе (например, 10 пикселей соответствуют 1 станочной дискрете. Это позволит показать на экране ступенчатость движения),
для нескольких четвертей окружности,
для разных направлений обхода окружности,
нарисовать заданную траекторию движения на экране. Например, олимпийские кольца.
3.7.Составить отчет с приложением распечатки разработанных программ интерполяции и траекторий движений, а также результатами работы по всем пунктам задания.