Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Команда Назначение




 

1) В82301 Переслать значение 0123H в AX

2) 052500 Прибавить значение 0025H к AX

3) 8BD8 Переслать содержимое AX в BX

4) 03D8 Прибавить содержимое AX к BX

5) 8BCB Переслать содержимое BX в CX

6) 2BC8 Переслать содержимое AX в CX

7) 2BC0 Вычесть содержимое AX из AX (очистка AX)

8) 90 Нет операции

9) CB Возврат в DOS

 

Первая и вторая команды трехбайтовые, следующие 5 команд двухбайтовые, последние 2 команды однобайтовые. Машинные команды должны находиться в памяти друг за другом. Выполнение программы начинается с первой команды, и далее последовательно выполняются все остальные. Ввод программы осуществляется по нескольку байт за один раз.

2.3. Ввести первые 6 байт программы. Для этого необходимо ввести команду E(ввод) в следующем виде:

 

E CS:100 B8 23 01 05 25 00

 

CS означает что ввод команд должен производиться в сегмент памяти начало которого указано в регистре сегмента команд CS. 100 означает что ввод команд должен производиться начиная с ячейки памяти удаленной через 100 ячеек относительно начальной ячейки сегмента команд(смещение). Далее указываются байты двух первых команд последовательно друг за другом. Данная команда запишет коды в 6 ячеек памяти, следовательно для следующей записи необходимо задавать смещение 106.

2.4. Ввести следующие 6 байт программы. Для этого необходимо ввести команду E в следующем виде:

 

E CS:106 8B D8 03 D8 8B CB

 

Эта команда отладчика вводит 3 следующие команды программы на машинном языке. Эта команда отладчика загружает еще 6 ячеек памяти, следовательно смещение для следующего ввода должно быть увеличено на 6, т.е. число 10C в шестнадцатиричной системе счисления.

2.5. Ввести оставшиеся команды программы. Для этого необходимо ввести команду отладчика E в следующей форме:

 

E CS:10C 2B C8 2B C0 90 CB

 

После ввода этой команды отладчика вся программа составленная на языке машинных кодов оказывается записанной в сегмент команд памяти ЭВМ со смещением на 100 ячеек.

2.6. Выполнить просмотр регистров микропроцессора. Для этого ввести команду отладчика R (просмотр регистров) в следующей форме:

 

R

 

На экране появятся 3 информационные строки. В первой и второй строках указывается обозначение регистров микропроцессора и содержимое этих регистров. Например: AX=0000 означает что в регистре AX записано число 0000 в шестнадцатиричной системе счисления. В конце второй строки указывается состояние регистра флагов FLAGS. Символьные обозначения для регистра флагов следующие:

NV - нет переполнения старшего бита в АЛУ (арифметическо-логическое устройство)

UP - правое направление пересылки данных в АЛУ

DI - внешние прерывания микропроцессора запрещены

PL - в АЛУ положительное число (знак плюс)

NZ - в АЛУ число отличное от нуля (не ноль)

NA - нет переноса из 3 бита в АЛУ (используется для специальных арифметических операций)

PO - четность младших 8 бит в АЛУ (контроль на четность)

NC - нет переноса из старшего бита в АЛУ (используется при арифметических операциях, сдвигах или циклических сдвигах)

 

В третьей строке указывается начальный адрес сегмента памяти (содержимое регистра CS) и смещение начального адреса введенной программы относительно начала сегмента. Далее указывается машинный код первой команды введенной программы. Затем указывается обозначение этой команды на языке Ассемблер. Например: MOV AX,0123. Данные в машинном коде задаются обратным шестнадцатирич-

ным числом 2301, а в команде Ассемблера указываются прямым шестнадцатиричным числом 0123.

2.7. Выполнить первую команду введенной программы. Для этого необходимо ввести команду отладчика T (трассировка, т.е. пошаговое выполнение команд) в следующей форме:

 

T

 

При этом выводится новая информация о состоянии регистров. В регистр AX записывается число 0123, изменяется величина смещения, которая также указывается в указателе команд (IP), выводится машинный код следующей команды и ее обозначение на языке Ассемблер.

3.8. Выполнить следующую команду введенной программы. Для этого необходимо ввести команду отладчика T в следующей форме:

 

T

 

Объяснить изменения отраженные на дисплее после выполнения команды отладчика.

2.9. Выполнить следующую команду введенной программы. Объяснить изменения произошедшие в регистрах микропроцессора.

2.10. Выполнить в пошаговом режиме с помощью команды отладчика T все команды введенной программы кроме последней команды RETF, ее машинный код CB. Объяснить изменение информации в регистрах микропроцессора.

2.11. Выполнить просмотр введенной программы. Для этого необходимо использовать команду отладчика D, указав сегмент для просмотра и смещение. Так как нужно просмотреть область памяти где записаны коды команд то необходимо использовать в качестве указателя сегмента регистр CS и ввести команду в следующей форме:

 

D CS:100

 

При этом выводится дамп памяти в котором в первой его строке, начиная с первой ячейки указываются коды в шестнадцатиричной системе счисления последовательно для всех команд введенной программы. Одна строка дампа памяти в состав которой входит 16 байт информации называется параграфом.

2.12. Для того чтобы повторить выполнение всех команд необходимо сбросить содержимое регистра IP и повторить трассировку снова. Введите команду отладчика:

 

R IP

 

На экране дисплея появится текущее состояние регистра IP. Введите исходное значение регистра IP для рассматриваемой программы:100. Далее с помощью команды отладчика T повторите трассировку до конца программы. Последней командой программы, которую вы должны выполнить, должна быть команда RETF. Дальнейшее выполнение команды отладчика T приведет к непредсказуемому поведению компьютера, т.к. далее в сегменте записаны неизвестные пользователю коды. Будьте внимательны!

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

 

Q

 

3. Пример машинных кодов: определение данных.

3.1. Рассмотрим пример в котором значения 0123 и 0025 определены в сегменте данных. Доступ к сегменту данных осуществляется посредством регистра DS и адресного смещения. Разместим значения в ячейках памяти следующим образом:

 





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 510 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Люди избавились бы от половины своих неприятностей, если бы договорились о значении слов. © Рене Декарт
==> читать все изречения...

2504 - | 2303 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.