Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodicheskie_ukazania.doc
Скачиваний:
15
Добавлен:
03.03.2016
Размер:
6.75 Mб
Скачать

Лабораторная работа №4 Вариантыпример отчетак содержанию

Цель: Освоить механизмы обработки двумерных массивов на языке ассемблер и принципы ввода символьной и числовой информации с клавиатуры

Тема: Обработка двумерных массивов

Этапы выполнения работы:

1. Разработка алгоритма решения задачи

2. Написание программы на языке ассемблер, реализующей алгоритм.

3. Компиляция, линкование и отладка программы с помощью отладчика td.exe.

4. Анализ принципов ввода с клавиатуры информации

Один из вариантов организации ввода с клавиатуры – использование 10-ой функции 21-ого прерывания, которая вводит строку. Перед вызовом этой функции в регистр dx необходимо положить адрес так называемого «блока ввода». Он представляет собой поле памяти с определенной последовательностью байт:

- первый байт: максимальная длина строки;

- второй байт: реальная длина строки (будет заполнено после завершения работы функции);

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

Т.о. в сегменте данных имеем:

blockinput label byte

maxlen db 7

actlen db ?

string db 7 dup (?)

Тогда вызов этой функции будет иметь вид:

mov ah,0ah

lea dx,blockinput

int 21h

После завершения работы функции в переменной actlen будет содержаться длина набранной нами строки, а в переменной string –сама строка. В примере максимальная длина строки выбрана 7 байт, т.к. в строку будет записываться число типа word (-32768÷32767) Максимальное количество позиций, требуемых для такого числа – 6. Но в строку заносится также и знак «Enter» (♪).

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

2345=5+4*10+3*100+2*1000.

Другой вариант преобразования – использование схемы Горнера. В этом случае число получается следующим образом:

2345=((2*10+3)*10+4)*10+5.

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

При выполнении лабораторной работы возможно использование процедуры inputnumber, приведенной в примере отчета. Однако, недостатком предложенного в ней алгоритма является некорректная отработка минимально допустимого числа -32768. По алгоритму преобразование выполняется только с положительными числами, а затем, если перед числом стоит знак «минус» число инвертируется. Однако при получении числа 32768 фиксируется переполнение и выводится соответствующая ошибка. Студентам предлагается для получения «отличной» оценки по данной лабораторной работе самостоятельно преобразовать алгоритм для устранения этого недостатка!

5. Добавление в программу команд и процедур для вывода на экран информации и ввода с клавиатуры исходных данных

6. Отладка программы.

7. Оформление отчета

Отчет должен содержать следующие разделы:

1.Титульный лист

  1. Задание

3. Блок-схема

4.Листинг программы

5.Результаты работы программы (скриншоты экрана)

6.Выводы

8. Защита работы.

В результате выполнения работы должны быть усвоены следующие темы:

- хранение элементов матрицы в памяти

- алгоритм обработки матрицы

- способы обращения к элементам матрицы

- алгоритм ввода с клавиатуры и проверки на корректность данных

- алгоритм преобразования строки в число.

- знать входные и выходные параметры тех функций прерываний, которые использованы в лабораторной работе.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]