- •Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение
- •«Комсомольский-на-Амуре государственный технический университет»
- •1 Основные сведения
- •Пояснения. Выполнение программы начинается с начального адреса, причем предварительно регистры сs и ip устанавливаются на этот адрес.
- •Назначение: с диска загружается файл или указанные секторы.
- •2 Задание к лабораторной работе
- •2.1 Определение даты bios компьютера.
- •3 Контрольные вопросы
Пояснения. Выполнение программы начинается с начального адреса, причем предварительно регистры сs и ip устанавливаются на этот адрес.
Если первый параметр опущен, то используются текущие значения CS и IP.
Параметры, начиная со второго, определяют точки прекращения выполнения программы. Если их нет, то программа выполняется до нормального выхода в DOS, причем вместо выхода в DOS происходит выход в DEBUG, завершающий команду G и сопровождаемый выводом на экран сообщения: “Программа завершилась нормально” и приглашением DEBUG.
Если точки прекращения указаны, то при достижении любой из них происходит выход в DEBUG (завершение команды G). При этом на экране отображается состояние программы в момент выхода: содержимое регистров и флагов, адрес и код инструкции, на которой произошел выход.
Использование команд G с точками прекращения позволяет эффективно отлаживать большие программы и программы, имеющие многократно повторяющиеся циклы.
1.2.4 Команда чтения порта I (input)
Назначение: читает содержимое порта ввода и отображает результат на экране. Необходимо помнить, что в микропроцессорах Ix86 адрес портов – шестнадцатиразрядный (двухбайтовый).
Формат: I адр_порта.
1.2.5 Команда загрузки L (load)
Назначение: с диска загружается файл или указанные секторы.
Формат: L [[адрес] [диск] [первый_сектор] [число]].
Пояснения.
[адрес] - Задание адреса области памяти, в которую требуется загрузить содержимое файла или сектора. Если параметр адрес не задан, используется текущий адрес в регистре CS.
[диск] - Задание накопителя, содержащего диск, с которого считываются определенные сектора. Данный параметр задается числом: 0 = A, 1 = B, 2 = C и т. д.
[первый_сектор] - Задание шестнадцатеричного номера первого сектора, содержимое которого требуется загрузить.
[число] - Задание шестнадцатеричного числа последовательных секторов, содержимое которых требуется загрузить.
Параметры «диск», «первый_сектор» и «число» используются только в том случае, когда необходимо загрузить содержимое определенных секторов. Чтобы загрузить в память файл, необходимо указать его имя в командной строке debug или в команде n (name).
1.2.6 Команда перемещения ячеек указанного диапазона M (memory)
Формат: M стар_адр размер нов_адр
Назначение: копирует указанное число ячеек памяти начиная со старого адреса в память по новому адресу.
1.2.7 Команда записи в порт O (output)
Назначение: записывает байт данных byteв указанный порт вывода.
Формат: O адр_порта byte.
1.2.8 Команда просмотра и установки регистров R (register)
Назначение: позволяет отображать и изменять содержимое регистров и флагов процессора.
Формат: R имя_рег.
Команда R без параметра выводит содержимое всех регистров и флагов, а также код и адрес очередной инструкции отлаживаемой программы.
Допустимыми значениями параметра «имя_рег» являются:
AX BX CX DX BP SP SI DI
DS ES SS CS IP F
Если в команде R указать параметр, то будет выведено только содержимое указанного регистра и - в следующей строке экрана - двоеточие, являющееся подсказкой на ввод нового содержимого регистра. Теперь можно ввести шестнадцатеричное число (1 - 4 цифры), которое станет значением регистра, или оставить регистр неизменным, нажав Enter.
1.2.9 Команда трассировки T (trace)
Назначение: выполняется указанное число команд отлаживаемой программы, начиная с указанного адреса.
Формат: T [=адр] [число].
Пример: выполнить 3 команды начиная с адреса 0100H.
T =100 3.
Если параметры опущены, выполняется лишь одна текущая команда.
Выполнение фрагмента или команды заканчивается выводом на экран текущего содержимого регистров и флагов процессора.
1.2.10 Команда выхода Q (quit)
Назначение: завершает программу DEBUG.
Формат: Q.
1.2.11 Команда дизассемблирования U (unassemble)
Назначение: транслирует содержимое памяти в мнемонику ассемблера и отображает на экране вместе с адресами памяти и шестнадцатирич-ными значениями байтов.
Формат: U [нач_адр] или U [нач_адр кон_адр].
Пояснения. Режим выполнения команды U определяется видом ее, параметра. Если параметр определяет начальный адрес памяти или если параметр опущен, то дизассемблируется 16 или 32 байта памяти в зависимости от ширины экрана. Если параметр определяет область памяти, дизассемблируется вся память указанной области.
Действуют следующие умолчания для параметра:
если в параметре адрес памяти указан только смещением, то предполагается сегментное значение регистра CS;
если параметр опущен, то используется адрес байта, следующего за последним байтом, использованным в предыдущей команде U;
если же такой команды не было, используется адрес со смещением 100h в сегменте, установленном при вызове DEBUG.
Умолчания позволяют последовательно дизассемблировать содержимое памяти, вводя команды U без параметра.
1.2.12 Команда записи на диск W (write)
Назначение: записывает на диск файл или указанные секторы.
Формат: W [адр [диск сектор сектор]].
Пояснения. Команда W записывает на диск не более 80h секторов. Она выдает сообщения об ошибках записи. В зависимости от параметров команда W выполняется в одном из двух режимов:
Режим 1 - запись секторов диска. Для этого режима нужно указать все четыре параметра. Последовательные секторы диска заполняются данными из указанной области памяти. Если адрес представлен только смещением, то используется сегментное значение регистра CS.
Режимом записи секторов следует пользоваться очень осторожно, ибо неверное указание секторов может разрушить всю информацию на диске.
Режим 2 - запись файла. Для этого режима указывается только первый параметр, и он не является обязательным. Спецификация файла, подлежащего записи, задается при выполнении команды N, а регистры BX и СХ должны содержать длину файла. Регистры ВХ и СХ устанавливаются командой R. Если файл с именем, заданным командой N, не существует, он будет создан.
