Откомпилированную и скомпонованную с отладочной информацией программу hello.exe загрузите в отладчик turbo debugger. Изучите команды главного меню. Перейдите в режим отображения CPU-окна и изучите локальное меню каждого подокна.
Запустить программу на выполнение в отладчике в
· режиме безусловного выполнения;
· выполнение по шагам;
· выполнение до текущего положения курсора;
· выполнение с установкой точек прерывания.
Задания для самостоятельной работы.
1. Запишите в регистр AX число 25h, в регистр BX – 17h. Проверьте значение регистра IP (командой «R»). Он должен быть равен 100. Это означает, что первой будет выполнена команда по адресу 100h. Введите команду «T»:
- T
Проанализируйте полученные значения регистров AX, IP.
2. Выполните повторно эту же команду ADD AX,BX, но уже с новыми значениями регистра AX. Для этого переустановите регистр IP в 100h, а затем командой «T» выполните инструкцию сложения. Проанализируйте полученные значения регистров.
3. С помощью команды D отладчика debug.exe просмотрите дамп памяти, начиная с адреса 0040:0013 и выясните размер доступной для работы памяти на вашем компьютере.
4. Включая, выключая переключающие клавиши с помощью просмотра дампа памяти 0000h:0417h проверьте их состояние.
5. Запишите в регистр AX 472h, BX – 89Dh. Выполните вычитание (SUB AX,BX). Проследите за регистрами (в том числе регистром флагов). Выполните второй раз вычитание.
6. Запишите в стек числа 1, 2, 3 (для каждого числа: сначала записать его в регистр AX, затем выполнить команду PUSH AX). Проследите за изменением значений регистров при выполнении команд.
7. Просуммировать содержимое регистров AL и AH (ADD AH,AL). Проанализировать результат.
8. Загрузите в регистр AX – 1234h, BX – ABCDh. Переслать DL в AH (MOV AH,DL). Проанализировать результат. Поменять местами значения в AH и AL.
9. Загрузите в регистры AX и BX произвольные числа. Введите инструкцию SUB AX,BX (вычитание). Протрассируйте, проанализируйте состояния регистра Flags при следующих соотношениях операндов:
a) AX > BX;
b) AX < BX;
c) AX = BX.
10. Загрузите в регистры AX и BX произвольные числа. Введите инструкцию CMP AX,BX (сравнение). Протрассируйте, проанализируйте состояния регистра Flags при следующих соотношениях операндов:
a) AX > BX;
b) AX < BX;
c) AX = BX.
11. Загрузите в регистры AX и BX произвольные числа. Введите инструкцию ADD AX,BX. Протрассируйте, проанализируйте состояние флагов переноса, знака, переполнения регистра Flags при следующих соотношениях операндов:
a) числа от 0 до F;
b) числа размером байт;
c) числа размером слово.
12. Введите в отладчике программу сложения двух чисел:
MOV AL, 25; поместить в AL число 25
MOV AH, 30; поместить в AH число 30
ADD AL, AH; сложить содержимое AL и AH, результат поместить в AL
После ввода программы, с помощью команды U 0100, 0106 просмотрите программу. В качестве аргумента передаются адреса первой и последней команды.
Выполните последовательно все команды программы с помощью команды трассировки. Обратите внимание на те регистры, содержимое которых меняется. С чем это связано?
Контрольные вопросы и задания.
1. Как называется процесс перевода программы записанной в мнемокоде в коды центрального процессора.
2. Как называется процесс перевода *.obj файла в *.exe файл.
3. Объясните назначение каждого из перечисленных файлов, получаемых при создании исполняемой программы на языке ассемблер. *.asm, *.lst, *.xrf, *.map, *.exe, *.com.
4. Запишите команду для ассемблирования файла exampl_1.asm с учётом формирования листинга и возможности использования отладчика Turbo Debugger.
5. Запишите команду для компоновки файла exampl_1.obj, разрешающую использование отладчика и запрещающего создание файла отображения.
6. Как определить физический объект в сегментированной модели памяти, если известны его логические компоненты: "SEGMENT - OFFSET"?
7. В чём состоит различие между ошибками и предупреждениями, создаваемыми TASM во время трансляции? Ваши действия при обнаружении ошибки.
8. По какому биту регистра флагов можно установить, что предшествующее вычитание привело к отрицательному результату.
9. Предположим в программе DEBUG была введена следующая команда:
-d ds:0
2D0D:0000 09 56 23 46 12 44 78 DF-1C 6A 3D 42 58 68 D4 88
Напишите команду для корректировки восьмого байта информации на значение А6.
10. Предположим во время отладки программы в DEBUG на экране следующая информация:
-t
AX=2D0E BX=0000 CX=003A DX=0000 SP=0100 BP=0000 SI=0000 DI=0000 DS=2CFA ES=2CFA SS=2D0F CS=2D0A IP=0003 NV UP EI PL NZ NA PO NC
2D0A:0003 8ED8 MOV DS,AX
- определите адрес памяти начала сегмента кодов;
- определите адрес памяти начала сегмента данных;
- определите исполняемый адрес выполняемой команды;
- определите содержимое регистра CL;
- определите машинный код данной команды;
- расшифруйте машинный код команды.
11. Перечислите регистры общего назначения процессора 8086. Назначение этих регистров и особенности их использования.
12. Перечислите сегментные регистры процессора 8086, особенности их использования.
13. Назовите виды оформления программ на языке Ассемблера, их отличия.
14. Назовите модели памяти применяемые при построении программ на языке Ассемблера, перечислите их основные характеристики.
15. Назовите средства ОС, позволяющие произвести инсталляцию пакета Borland Turbo Assembler.
16. Перечислите составные части исполнительного блока микропроцессора.
17. Перечислите составные части устройства сопряжения микропроцессора с системной магистралью.
18. Охарактеризуйте регистр флагов.
19. Перечислите индексные регистры 8086. Назначение этих регистров и особенности их использования.