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

3.Порядок выполнения работы

3.1.Выполнить арифметические действия с 16-ричными и двоичными числами, соответствующие следующим операциям с 10-чными числами: (3-1), (2-1), (1-1), (0-1), (-1-1), (-2-1) менять знак числа и др.

С 16-ричными числами FFFF+5,FFF+5 и др. Произвести аналогичные операции вычитания и умножения с двоичными и 16-ричными числами.

Произвести преобразование заданных преподавателем чисел:

  • из десятичного исчисления в двоичное и обратно,

  • из двоичного в 16-ричное и обратно,

  • из 16-ричного в десятичное и обратно.

Результаты расчета проверить на калькуляторе. Использовать калькулятор Windows 95 (инженерный вид), а также команду H отладчика Debug.

3.2.Выполнить арифметические действия, используя ячейки памяти и регистры AX, BX, CX, DX, AH, BH, CH, DH, AL, BL, CL, DL. Для их выполнения использовать псевдокоды: MOV, INC, DEC, ADD, SUB, MUL, DIV и программу - отладчик Debug.

Испытать действие команд ассемблера: PUSH, POP, CMP. Описание команд см. в приложении.

3.3.Составить программу с использованием псевдокодов для проверки указанных команд. Ввести ее в память начиная с ячейки №100H. Реализовать ее в шаговом режиме и проверить правильность ее выполнения, наблюдая за содержимым используемых регистров и ячеек памяти.

3.4.Сохранить разработанную программу в виде файла в папке RAF на диске D.

3.5.Ввести в память компьютера начиная с ячейки №120H "If you figure it out you are" 63 6C 65 76 65 72. Используя команду D посмотреть - что получится.

3.6.Составить отчет с приложением распечатки экрана при работе с Debug.

Лабораторная работа n2 написание и отладка управляющих программ с использованием псевдокодов

1.ЦЕЛЬ РАБОТЫ: Дальнейшее углубление знаний микропроцессора Intel 8088. Изучить назначение и взаимодействие регистров, ячеек памяти, а также псевдокодов. Научиться разрабатывать и отлаживать простейшие управляющие программы с использованием псевдокодов. Для этого разрабатывается и реализуется управляющая программа линейной интерполяции для станка с ЧПУ.

2.ТЕОРЕТИЧЕСКАЯ ЧАСТЬ.

АЛГОРИТМ ИНТЕРПОЛЯЦИИ.

Рассмотрим алгоритм, обеспечивающий управление движением режущего инструмента в станке с контурным устройством числового программного управления.

В станках с ЧПУ указанного типа имеется возможность перемещения инструмента одновременно и согласованно по двум или более координатам, что позволяет обрабатывать сложные криволинейные поверхности. Такими устройствами ЧПУ оснащают, например, токарные и фрезерные станки.

Станки с ЧПУ реализуют управляющую программу, описывающую требуемую траекторию и режимы обработки. Траектория движения инструмента состоит из участков, разделенных, так называемыми опорными точками. Между опорными точками траектория может быть представлена или отрезком прямой линии или дугой окружности.

В управляющей программе указываются координаты начальной и конечной точек линии, скорость движения вдоль линии, если требуется -координаты центра окружности, образующей дугу и др. Здесь нет информации о том, как управлять движением по каждой координате чтобы получить требуемую линию. Вычислительная процедура, обеспечивающая указанный переход, называется интерполяцией.

Интерполяция, обеспечивающая движение вдоль отрезка прямой, называется линейной. Интерполяция, обеспечивающая движение вдоль дуги окружности, называется круговой.

Интерполяция выполняется с целыми числами, каждая единица которых соответствует наименьшему перемещению рабочего органа станка или что то же самое- дискретности перемещения. Это позволяет задавать перемещения целым числом дискрет.

Существует множество методов интерполяции. Далее рассмотрим интерполяцию, использующую метод оценочной функции.

Сущность метода в том, что по результатам шага вдоль какой либо управляемой координаты вычисляется вспомогательная (оценочная) функция F, знак которой определяет направление следующего шага. Перемещение, возникающее в результате этого шага, приближает отрабатываемую траекторию к идеальной кривой.

Алгоритм линейной и круговой интерполяции изучается в других дисциплинах или объясняется преподавателем. В математической форме алгоритм линейной интерполяции имеет вид:

Если F>=0 то F:=F-yk; xi:=xi+1;

Если F<0 то F:=F+xk: yi:=yi+1;

Для построения прямой линии циклически реализовать указанные формулы. При соблюдении условия xi=xk прервать цикл.

Координаты начальной точки рекомендуются Xi=0; Yi=0.

Координаты конечной точки - Xk=100; Yk=100 дискрет.

При реализации данного алгоритма на компьютере следует прочертить на экране линию в соответствии с траекторией движения режущего инструмента на металлорежущем станке. При этом следует иметь в виду, что:

  • Одна станочная дискрета может соответствовать одному пикселю на экране, если преподавателем не задано другое соотношение.

  • Координатная система компьютера расположена в левом верхнем углу экрана. Поэтому при построении траектории движения за пределами 1-ой четверти окружности требуется перенос координатной системы в центр экрана.

СТРУКТУРА ПРОГРАММЫ, написанной с использованием псевдокодов:

1.Начать программу с ячейки №100H. Всю программу, включая данные, записать в одном сегменте. Для ввода программы использовать программу Debug и ее команду A.

2.Ввести исходные данные (Xi, Yi, Xk, Yk, F). В нашем случае они могут быть записаны, непосредственно в регистры с использованием кода: MOV AX, 100 и т.д. Всего для этого требуется 5 регистров. Можно, например, использовать AX, BX, CX, DX, SI.

Координаты начальной точки рекомендуются 0x0.

Координаты конечной точки - 100x100 пикселей.

Рекомендую Xi,Yi записать соответственно в CX и DX, т.к. это далее упростит программу (см. пункт - зажигание пикселя).

3.Включить графический режим экрана, что необходимо для вывода траектории движения на экран.

Команда для включения графического режима экрана вызывается прерыванием INT 10H. Предварительно требуется записать в регистр AH число 0, в регистр AL 10H.

4.Реализовать алгоритм расчета координат Xi,Yi. Это должен быть циклический процесс. Прерывание цикла произвести при равенстве значений Xi и Xk.

В каждом цикле, после расчета координат, необходимо зажигать точку на экране в соответствии с полученными координатами. Использовать для этого подпрограмму.

Подпрограмма вызывается командой: «CALL номер_ячейки_с которой_начинается подпрограмма»

5.Основную процедуру завершить командой RET. Далее в память компьютера записывается подпрограмма.

6.Подпрограмма зажигает пиксель на экране. Для этого используется команда INT 10H. Предварительно требуется записать в регистры:

BX=0, AH=0C, Al=0A (цвет от 0 до F), CX-координата Xi, DX - координата Yi.

По указанной причине удобно производить вычисления поместив текущие координаты Xi и Yi в указанные регистры.

Поскольку в подпрограмме используются регистры AX, BX в которых хранятся исходные данные, необходимо предварительно сохранить в стековой памяти их значения. При выходе из подпрограммы содержимое этих регистров нужно восстановить. Для этого использовать команды PUSH и POP.

7.В конце подпрограммы записать команду возврата в основную процедуру: RET.

При написании программы использовать команды: MOV, ADD, SUB, INC, CMP, JMP, JGE, JNZ, PUSH, POP, RET, CALL, а также прерывание для включения графического режима экрана и для зажигания пикселя в заданной точке экрана (int 10H).

Введенную программу сохранить на жестком диске. Для этого использовать следующие команды Debug:

  • задать имя программы: N d:\raf\name.com,

  • в регистрах BX и CX задать размер файла в байтах. Для этого нужно из номера ячейки в которой записана последняя команда вычесть номер ячейки с которой начинается программа(100H) и прибавить единицу (т.к. отсчет начинается с ячейки №100, а не с №101). Это число ввести в регистр CX.

Для нашей маленькой программы содержимое регистра BX равно 0.

  • записать программу командой "W 100"(записать начиная с ячейки №100).

Отлаженную и записанную программу можно запускать на исполнение обычным образом.

Часто, вновь созданная программа не дает желаемых результатов из-за наличия в ней ошибок. В этом случае программа выполняется в шаговом режиме. На каждом шаге проверяется содержимое регистров, ячеек памяти, содержимое стековой памяти, состояние флагов и др.

Предварительно необходимо вручную просчитать несколько циклов и определить всю указанную информацию.

Для шагового выполнения программы используется команда Debug: «T» или «P». Команда «T» входит в подпрограммы, в том числе в подпрограммы прерываний «INT 10H». Команда «Р» не трассирует подпрограммы.

Не рекомендую на наших занятиях входить в подпрограммы прерываний.

Просмотреть и исправить ранее созданную программу можно командой DOS из Norton Commander: Debug.exe Name.com.

ПРИМЕРЫ

некоторых псевдокодов для микропроцессора Intel 8088:

MOV AX, [140] - записать в регистр AX содержимое ячейки №140H.

ADD AX, BX - сложить содержимое регистров AX и BX. Результат в AX.

SUB AX, BX то же, но вычесть.

INC AX - увеличить на 1 содержимое регистра AX.

CMP AX, 5 - сравнить содержимое регистра AX с 5. Выполняется как операция вычитания, но результат не записывается. Состояние флагов изменяются. Проверка их состояния производится командами условного перехода.

JGE [0105] - перейти к указанной ячейке с командой если больше или равно.

JNZ [0105] - перейти если результат не равен нулю.

JMP [105] - команда безусловного перехода.

CALL [105] - перейти к исполнению процедуры, начинающейся с ячейки №105.

RET - возврат из процедуры в вызывавшую программу.

Пример фрагмента кода программы:

-u 10A

1B07:010A B82200 MOV AX,0022

1B07:010D BB3300 MOV BX,0033

1B07:0110 3BC3 CMP AX,BX

1B07:0112 7D05 JGE 0119

1B07:0114 050100 ADD AX,0005

1B07:0117 EBF7 JMP 0110

1B07:0119 C3 RET