Команда Назначение. A10000Переслать слово (два байта), начинающееся в DS по адресу 0000, в регистр AX

A10000Переслать слово (два байта), начинающееся в DS по адресу 0000, в регистр AX.

03060200 Прибавить содержимое слова (двух байт), начинающегося в DS по адресу 0002, к регистру AX.

A30400Переслать содержимое регистра AX в слово, начинающееся в DS по адресу 0004.

CB Вернуться в DOS.

Для ввода данной программы ввести команду DOS(команду операционной системы), вызывающую отладчик:

DEBUG

3.2. Сначала введите две команды E для сегмента данных:

E DS:00 23 01 25 00 00 00

Эта команда вводит 0,1,2,3,4 и 5 байты данных в сегмент указанный в регистре DS со смещением 00.

E DS:06 2A 2A 2A

Эта команда вводит 6,7 и 8 байты данных в сегмент указанный в регистре DS со смещением 06.

3.3. Введите команды программы в сегмент кодов со смещением 100. Для этого также необходимо ввести две команды E:

E CS:100 A1 00 00 03 06 02 00

Эта команда вводит первые две команды исходной программы.

E CS:107 A3 04 00 CB

Эта команда отладчика вводит последние две команды исходной программы.

3.4. Для просмотра информации в сегменте данных и в сегменте кодов введите две команды отладчика D:

D DS:000

Для просмотра сегмента данных.

D CS:100

Для просмотра сегмента кодов.

В сегменте данных байт информации 2A является кодом символа *, что видно в строке в правой части экрана для первого параграфа дампа данных.

3.5. Введите команду отладчика R для просмотра содержимого регистров и флагов и для отображения первой команды введенной программы. На языке Ассемблер первая команда обозначается MOV AX,[0000], это означает что данные берутся из ячейки с адресом 0000 относительно начала сегмента данных и пересылаются в регистр AX.

3.6. С помощью команд отладчика T выполните трассировку программы. Последняя выполняемая команда должна быть команда RETF. Будьте внимательны!

3.7. С помощью команды отладчика D выведите на дисплей дамп сегмента данных. Объясните какие изменения произошли в первом параграфе сегмента и почему.

3.8. Для завершения работы с программой и выхода из DEBUG в DOS введите команду отладчика Q.

4. Пример машинных кодов: определение размера памяти.

4.1. Базовая система ввода-вывода (BIOS) имеет подпрограмму, которая определяет размер памяти. Обращение к BIOS осуществляется по команде INT по прерыванию 12Н. В результате BIOS возвращает в регистр АХ размер памяти в килобайтах. Для этого необходимо вызвать отладчик DEBUG из DOS и ввести для команд INT 12H и RET следующие машинные коды:

E CS:100 CD 12 CB

4.2. Введите команду отладчика R для отображения содержимого регистров. При этом регистр IP должен содержать 0100 и высвечиваться команда INT 12.

4.3. 0 Введите команду отладчика T несколько раз и просмотрите выполняемые команды BIOS до тех пор пока не появится команда IRET. В этот момент регистр АХ содержит размер памяти в шестнадцатиричном формате. Теперь введите еще раз команду Т для выхода из BIOS и возврата в вашу программу. На экране появится команда RET для машинного кода СВ, который был введен вами.

4.4. Для завершения работы с программой и выхода из DEBUG в DOS введите команду отладчика Q.

Наши рекомендации