Лабораторная работа № 1
Основные команды отладчика Debug и особенности их выполнения
1 Цель работы
Цель работы состоит в изучении основных инструкций отладчика Debug, ознакомлении со структурой микроЭВМ IBM PC и освоении особенностей выполнения этих инструкций.
2 Сведения из теории
2.1 Состав и структура IBM PC
Структурную схему персональных компьютеров типа IBM PC различных модификаций можно представить в обобщенном виде, как показано на рисунке 1.1.
Рисунок 1.1
Персональный компьютер построен по модульному принципу, т.е. в его состав могут входить различные модули-устройства в зависимости от желания и финансовых возможностей покупателя. Отдельные модули соединяются между собой при помощи системной шины. На рисунке 1.1 показан минимальный комплект, включающий центральный процессор, оперативную память, дисплей с клавиатурой, накопители на гибких и жестких дисках, принтер и другие устройства. Центральный процессор, постоянная и оперативная память подсоединяются к общей шине непосредственно, а остальные устройства - при помощи контроллеров. В современных компьютерах для повышения производительности используют несколько шин различных типов.
Конструктивно обычно процессор, оперативная память, накопители на дисках и контроллеры остальных устройств объединены в один электронный блок. При этом процессор, а также оперативная и постоянная память располагаются на так называемой системной, или материнской плате, к которой с помощью штепсельных разъемов подсоединяются остальные устройства.
2.2. Структура микропроцессора
Основу компьютера составляет микропроцессор, упрощенная структура которого показана на рисунке 1.2. [Здесь приведена структурная схема процессора Intel 80286.] Для этого компьютера данные и команды имеют в основном формат длиной 2 байта (16 бит), а оперативная память может быть емкостью до 1 Мбайт.
Рисунок 1.2
Устройство управления дешифрирует команды и вырабатывает сигналы управления различными блоками процессора, а также блоками остальных устройств. Основой блока управления служит микропрограммная память, на адресный вход которой подается код операции из регистра команд.
Арифметико-логическое устройство (АЛУ) служит для выполнения арифметических и логических операций. Помимо результата операции, который сохраняется в регистре или памяти, АЛУ определяет ряд признаков результата, или флагов, которые фиксируются на специальном регистре – регистре флагов. Они будут описаны ниже.
В качестве регистра команд используется блок очереди команд; он позволяет хранить шесть очередных байтов команды. Очередь команд заполняется автоматически, как только освобождаются 2 байта в регистрах этого блока. Этот блок позволяет разместить в нем длинную команду и совместить во времени выполнение одной команды и выборку из основной памяти (ОП) следующей команды.
Для формирования исполнительного адреса памяти [он определяется сложением начального адреса сегмента, находящегося в регистре, и смещения в команде (см. ниже)] служит сумматор адресов. Буферы адреса/состояния и адреса/данных обеспечивают связь микропроцессора с другими устройствами. Шина адреса/данных имеет разрядность 16 бит. По этой шине передаются данные или младшие 16 бит адреса. Для передачи старших четырех бит адреса используется шина адреса/состояния.
Микропроцессор содержит 14 программно-доступных регистров, т.е. регистров, имеющих адреса, к которым можно обратиться из программы:
общие регистры, или регистры общего назначения (AX, CX, DX, BX);
адресные регистры (SP, BP, SI, DI);
сегментные регистры (CS, SS, DS, ES);
регистр флагов (признаков результата);
счетчик команд (IP).
Программно-доступные регистры позволяют хранить слова длиной 16 бит. Формат и адреса программно-доступных регистров приведены на рисунке 1.3. Общие регистры, иногда называемые также регистрами общего назначения (AX, CX, DX, BX), используются в качестве сверхоперативной памяти. Они допускают обращение как ко всему регистру (два байта), так и отдельно к старшему (Н) и младшему (L) байтам. Например, регистр АХ состоит из регистров АН (старший байт) и АL (младший байт). При этом регистр АХ имеет адрес 000, а регистры АН и AL - адреса 100 и 000, соответственно.
Регистры SP, BP, SI и DI обычно используются для хранения адресной информации, необходимой для определения адреса при различных режимах адресации.
Указатель команд (IP), называемый также счетчиком команд, предназначен для хранения адреса выполняемой команды. Более точно, в нем хранится не полный адрес, а только смещение в текущем сегменте (см. ниже).
Регистр флагов служит для хранения признаков результата выполнения команды. Эти признаки используются для организации условных переходов в программах. На рисунке 1.3 показано, что в регистре флагов используются только 8 разрядов.
Рисунок 1.3
Значения флагов:
C - перенос (заем) – CY - если перенос выполняется и NC - если нет;
P - четность числа единиц в младшем байте результата (PE – четное, PO – нечетное);
A - перенос из младшей тетрады в старшую (NA – переноса нет, AC перенос произошел);
Z - флаг нуля (ZR – нулевой, NZ – ненулевой результат);
S - флаг знака (старший бит результата положительный PL или отрицательный NG);
O - переполнение (OV – переполнение произошло, NV – переполнение отсутствует);
D - флаг направления обработки цепочек (от меньших или от больших адресов);
I - флаг разрешения прерываний (EI – прерывание разрешено);
Сегментные регистры (DS, CS, ES, SS) служат для сегментной организации оперативной памяти. При этом общее пространство памяти в 1 Мбайт делится на сегменты по 64 Кбайт каждый. Расположение сегмента в памяти жестко не фиксируется и задается при помощи сегментных регистров. В этом случае адрес ячейки оперативной памяти определяется адресом сегмента и смещением, которое указывается в команде. Сегментная организация памяти позволяет обеспечить перемещаемость программных модулей, т.е. возможность их записи на любое свободное место в оперативной памяти. Назначение сегментных регистров:
CS - сегмент кода (программы), используется для задания начального адреса сегмента памяти, в котором записана программа;
DS - сегмент данных, задает начальный адрес сегмента памяти, в котором записаны данные для активной программы;
SS - сегмент стека, используется при организации стековой памяти;
ES - дополнительный сегмент, используется для временного хранения других сегментов, например, при выводе данных на терминал.
Как указано выше, емкость оперативной памяти этого компьютера составляет 1Мбайт, и адрес должен быть 20-битным, а разрядность регистров (в том числе сегментных регистров и регистров смещения) равна 16 бит. Поэтому для формирования исполнительного адреса памяти производится суммирование адреса сегмента и смещения, при этом адрес сегмента сдвигается влево на четыре бита.
Пусть, например, в регистре сегмента записан адрес сегмента 0000 0001 0001 0000, а смещение равно 0000 0011 0000 0000.
Тогда адрес памяти будет равен:
0000 0001 0001 0000
+ 0000 0011 0000 0000
---------------------------------------------
0000 0001 0100 0000 0000
или в шестнадцатеричном виде 0 1 4 0 0
Для удобства ввода информации с клавиатуры она представляется в шестнадцатеричной системе счисления.
|