Ассемблер и программирование для IBM PC


       

ГЛАВА 2. Выполнение программ - часть 6


------------------------------------------------------------ ------------------------------------------------------------ Рис. 2.2. Дамп кодового сегмента.

Для завершения работы с программой DEBUG введите Q (Quit - выход). В результате произойдет возврат в DOS и на экране появится приглашение A> или C>. Если печатался протокол работы с отладчиком, то для прекращения печати cнова нажмите Ctrl/PrtSc.

ПРИМЕР МАШИННЫХ КОДОВ: ОПРЕДЕЛЕНИЕ ДАННЫХ ------------------------------------------------------------

В предыдущем примере использовались непосредственные данные, описанные непосредственно в первых двух командах (MOV и ADD). Теперь рассмотрим аналогичный пример, в котором значения 0123 и 0025 определены в двух полях сигмента данных. Данный пример позволяет понять как компьютер обеспечивает доступ к данным посредством регистра DS и адресного смещения. В настоящем примере определены области данных, содержащие cоответственно следующие значения:

Адрес в DS Шест.знач. Номера байтов

0000 2301 0 и 1

Ассемблер для IBM PC. Глава 2 36

0002 2500 2 и 3 0004 0000 4 и 5 0006 2A2A2A 6, 7 и 8

Вспомним, что шест. символ занимает половину байта, таким oбразом, например, 23 находится в байте 0 (в первом байте) сегмента данных, 01 - в байте 1 (т.е. во втором байте). Ниже показаны команды машинного языка, которые обрабатыва ют эти данные:

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

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

Обратите внимание, что здесь имеются две команды MOV с pазличными машинными кодами: A1 и A3. Фактически машинный код зависит от регистров, на которые имеется ссылка, коли чества байтов (байт или слово), направления передачи данных (из регистра или в регистр) и от ссылки на непосредственные данные или на память. Воспользуемся опять отладчиком DEBUG для ввода данной программы и анализа ее выполнения. Когда отладчик выдал свое дефисное приглашение, он готов к приему команд. Сначала введите команды E (Enter) для сегмента данных:




Содержание  Назад  Вперед