Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания1.doc
Скачиваний:
31
Добавлен:
02.05.2014
Размер:
130.05 Кб
Скачать

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.Составить отчет с приложением распечатки разработанных программ интерполяции и траекторий движений, а также результатами работы по всем пунктам задания.