16
полнительный сегмент, когда используются строковые инструкции. Все стро-
ковые инструкции, которые выполняют запись в память, используют в качестве
адреса памяти, в которую нужно выполнить запись, пару регистров ES:DI.
Это означает, что регистр ES особенно полезен при использовании его в каче-
стве целевого сегмента при копировании блоков, сравнении строк, просмотре
памяти и очистке блоков памяти.
Регистр SS указывает на начало сегмента стека, которые представля-
ет собой блок памяти объемом 64К, в котором находится стек. Все инструк-
ции, которые неявно используют регистр SP (включая занесение в стек, извле-
чение из стека, вызовы и возвраты управления), работают с сегментом стека,
так как только регистр SP может использоваться для адресации памяти в сег-
менте стека. Как мы обсуждали ранее, регистр BP также работает относи-
тельно сегмента стека. Это позволяет использовать регистр BP для доступа к
параметрам и переменным, которые хранятся в стеке.
Итак, чтобы на практике просмотреть все выше описанные примеры ис-
пользования регистров и средств управления оперативной памятью, наиболее
удобно воспользоваться программой-отладчиком DEBUG.
1.2.7 Программа-отладчик DEBUG
Программа-отладчик DEBUG является очень важным и необходимым
инструментом для изучения работы ЭВМ, поставляемым в составе DOS.
Программа DEBUG позволяет осуществлять три вида действий в отношении
содержимого ПЗУ и ОЗУ:
1) выборку произвольного участка памяти и отображение его содер-
жимого в двух форматах:
- шестнадцатеричный / ASCII;
- формат не связанный с деассемблированием;
2) запись программ на машинном языке или на языке ассемблера и их
выполнение;
3) исследование и отладку программ, хранящихся на диске или в памя-
ти.
Программы, представленные на языке машинных команд (например,
исполнительный модуль), чрезвычайно сложны для восприятия человеком.
Процесс деассемблирования, реализуемый программой DEBUG, значительно
облегчает процедуру интерпретации машинного языка.
Деассемблирование - это процесс трансляции или преобразования ин-
струкций машинного языка, представленных в абсолютном шестнадцате-
ричном виде в символическую нотацию языка ассемблера. Так, например,
на языке ассемблера можно записать INC AX (увеличить содержимое регист-
ра AX на единицу); ассемблер переведет эту конструкцию в команду на ма-
шинном языке с кодом 40/16. Функция деассемблера состоит в том, чтобы
привести команду машинного языка с кодом 40/16 обратно к виду INC AX. Не-
смотря на то, что деассемблер может выполнить преобразование команд ма-
шинного языка к более удобным командам языка ассемблера, целый ряд