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


          

и на экране появится приглашение


------------------------------------------------------------ ------------------------------------------------------------ Рис. 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) для сегмента данных:

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