Дан массив из десяти слов, содержащих целые числа. Требуется найти максимальное значение.
Текст программы:
model SMALL
stack 100h
dataseg
MAX dw?
MASS dw 10h,20h,30h,5h,40h,15h,20h,70h,35h,34h
codeseg
startupcode
lea BX, MASS; Загрузить адрес массива
mov CX, 10; Установить счетчик
mov AX, [BX]; Первый элемент массива в аккумулятор
BEG: cmp [BX], AX; Сравнить текущий эл. массива с макс.
jle NO; он меньше
mov AX, [BX]; он больше
NO: add BX, 2; Следующий элемент массива
loop BEG;
mov MAX, AX
QUIT: exitcode 0
end
Программа с помощью текстового редактора заносится в файл PRIMER.ASM. Затем выполняется трансляция и компоновка с помощью команд:
tasm primer /L /ZI
tlink primer /V
Запуск программы primer под отладчиком.
td primer.exe
Простейший пример использования отладчика: в окне Module или CPU установить курсор на строку с меткой QUIT и выполнить команду Go to Cursor. После останова посмотреть содержимое области данных.
Для того что бы просмотреть область данных, следует выполнить следующие действия:
· открыть окно Dump или сделать активной одноименную панель окна CPU;
· с помощью пункта GoTo локального меню окна (или панели) выполнить позиционирование по адресу DS:0. Перед позиционированием необходимо обеспечить правильное значение регистра DS, как правило, это означает выполнение первых двух строк программы по загрузке регистра DS адресом сегмента данных;
|
|
· с помощью пункта DisplayAs локального меню окна (или панели) обеспечить просмотр данных в формате слов. Первое слово сегмента данных со смещением 0 – это переменная max, далее следует десять слов – числа массива, и далее – мусор.
Можно попробовать запустить программу в пошаговом режиме (команда Trace Into), следя за тем, как изменяются значения регистров AX, BX, CX.
Рекомендуется запустить программу заново (команда Program Reset), изменить данные (окно Dump, команда Change), предсказать результат для новых данных и, выполнив программу (команда Go to Cursor) до метки QUIT, сравнить ожидаемый результат с реальным.
Выход из отладчика в DOS – Alt+X.
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Назначение программы TASM.
2. Назначение программы TLINK.
3. Что содержится в файлах *.ASM, *.OBJ, *.LST, *.MAP?
4. Назначение программы TD.
5. Какие команды и окна отладчика служат для просмотра и модификации памяти?
6. Какие команды и окна отладчика служат для просмотра регистров?
7. Какие команды отладчика служат для выполнения программы?
8. Что такое точки останова?
Лабораторная работа |
ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ËÈÍÅÉÍÛÕ ÊÎÍÑÒÐÓÊÖÈÉ |