Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Команды программы DEBUGDEBUG – это программа, работающая по принципу "команда – действие", т.е., чтобы произвести некоторую операцию отладчик должен получить соответствующую команду. В качестве сигнала о готовности принять команду, отладчик посылает на экран стандартный запрос – дефис (-). Для управления процессом отладки в DEBUG применяется набор команд, список которых можно получить, введя команду помощи (символ "Вопрос"). Окно отладчика, в котором выведен список поддерживаемых команд, приведено на рис. 2.2. Более подробное описание этих команд приведено в приложении. Рис. 2.2. Окно программы DEBUG Общими замечаниями по вводу команд отладчика является следующее: – все команды начинаются с буквы, заглавной или строчной; – большая часть команд требует введения дополнительных параметров, часть из которых является необязательными; – если два подряд расположенных параметра являются числами, то они разделяются пробелом или запятой (в противном случае параметры можно не отделять один от другого); – все числа должны вводиться в шестнадцатеричном представлении; – некоторые команды принимают в качестве параметра адрес, который может вводиться в двух формах: полный логический адрес – два шестнадцатеричных числа, записанные через двоеточие (первое число – сегментная компонента логического адреса, второе число – смещение) и короткий адрес – одно шестнадцатеричное число (смещение); – при указании полного логического адреса допускается в качестве сегментной компоненты приводить имя сегментного регистра, из которого данная компонента будет выбираться. С точки зрения изучения организации ЭВМ, набор команд, предлагаемый отладчиком, является избыточным. Минимально необходимый набор включает команды: – (A)SSEMBLE – ассемблирование; – (U)NASSEMBLE – дизассемблирование; – (E)NTER – ввод данных в память; – (D)UMP – вывод содержимого участка памяти на экран; – (R)EGISTER – просмотр и изменение содержимого регистров; – (T)RACE – пошаговое выполнение программы; – (N)AME – задание имени файла программы; – (L)OAD – загрузки файла в память; – (W)RITE – запись области памяти в файл; – (Q)UIT – выход из отладчика. Перечисленные команды представляют для нас наибольший интерес. Рассмотрим их подробнее. Команда ассемблирования Отладчик DEBUG можно использовать для введения операторов ассемблера непосредственно в память машины. Команду ASSEMBLE можно использовать при составлении коротких программ на ассемблере, а также при внесении изменений в существующие программы. Эта команда позволяет вводить мнемокод ассемблера непосредственно в память, избавляя от необходимости транслировать (ассемблировать) программу. Вводимый текст не может включать метки перехода в чистом виде. При введении команды, необходимо набрать " а " или " A " и, через пробел, необязательный параметр – адрес первой команды загружаемой программы. Если указан короткий адрес, то адрес сегмента выбирается из регистра CS. Если адрес не задан вообще, то машинный код будет помещаться в память, начиная с того места, где закончилась обработка предыдущей командой ASSEMBLE. Если после старта отладчика команда вводится в первый раз и в командной строке отсутствует начальный адрес, то размещение машинного кода производится с адреса CS:0100. После введения команды ассемблирования на экране появляется начальный адрес. Это сигнал на введение первой команды программы. Если команда введена без ошибок, на экран выдается адрес следующей команды и отладчик опять переходит в режим ожидания. В случае ошибки отладчик обозначает ее месторасположение. Если введены все команды программы, то нажимается Enter – команда ASSEMBLE заканчивает работу и возвращает управление отладчику. Пример ассемблирования небольшой программы: -a 0976:0100 0976:0100 MOV AL,2A 0976:0102 MOV DI,0200 0976:0105 MOV CX,001D 0976:0108 CLD 0976:0109 REPNZ STOSB 0976:010B MOV AL,24 0976:010D STOSB 0976:010E PUSH ES 0976:010F POP DS 0976:0110 MOV DX,0200 0976:0113 MOV AH,09 0976:0115 INT 21 0976:0117 INT 20 0976:0119 <---- Нажимается Enter - Команда дизассемблирования Команда UNASSEMBLE служит для перевода машинного кода на язык ассемблера. При введении команды необходимо набрать " u " или " U " и, через пробел, необязательные параметры – начальный адрес обрабатываемого кода, конечный адрес обрабатываемого кода или его размер. В командной строке UNASSEMBLE можно не указывать начальный адрес обрабатываемого кода. Если указан короткий адрес, то адрес сегмента выбирается из регистра CS. Если адрес не задан вообще, то машинный код обрабатывается с того места, где закончилась обработка предыдущей командой UNASSEMBLE. Если после старта отладчика команда вводится в первый раз и в командной строке отсутствует начальный адрес, то обработка машинного кода производится с адреса CS:0100. Обрабатываемый участок памяти можно определить начальным и конечным адресами. При этом, в не зависимости от формы начального адреса, конечный адрес должен быть коротким. Другой вариант задания обрабатываемого участка памяти – задание его начального адреса и размера. Чтобы отличить размер от короткого конечного адреса перед ним вводится символ " L ". Если размер участка памяти, обрабатываемой командой UNASSEMBLE, не определен, то по умолчанию длина обрабатываемого участка равна 32 байтам. Результатом выполнения команды дизассемблирования является листинг программы, сгруппированный в три колонки. В листинге слева (первая колонка) указывается полный логический адрес команды. Затем (вторая колонка) – значение составляющих команду байтов в машинном коде. В третьей колонке находится соответствующая этому коду инструкция ассемблера. Пример дизассемблирования небольшой программы, введенной в предыдущем примере: -u CS:0100 L19 0976:0100 B02A MOV AL,2A 0976:0102 BF0002 MOV DI,0200 0976:0105 B91D00 MOV CX,001D 0976:0108 FC CLD 0976:0109 F2 REPNZ 0976:010A AA STOSB 0976:010B B024 MOV AL,24 0976:010D AA STOSB 0976:010E 06 PUSH ES 0976:010F 1F POP DS 0976:0110 BA0002 MOV DX,0200 0976:0113 B409 MOV AH,09 0976:0115 CD21 INT 21 0976:0117 CD20 INT 20 -
|