"Ассемблер и программирование для IBM PC. (IBM PC assembler language and programming)" - читать интересную книгу автора (Абель Питер, Переводчик: Ю.В.Сальников)Рис.2.3. Трассировка машинных команд. Теперь введите R для просмотра содержимого регистров и флагов и для отображения первой команды. Регистры содержат те же значения, как при старте первого примера. Команда отобразится в виде: 13C6:0100 A10000 MOV AX,[0000] Так, как регистр CS содержит 13C6, то CS:100 содержит первую команду A10000. Отладчик интерпретирует эту команду как MOV и определяет ссылку к первому адресу [0000] в сегменте данных. Квадратные скобки необходимы для указания ссылки к адресу памяти, а не к непосредственным данным. Если бы квадратных скобок не было, то команда MOV AX,0000 oбнулила бы регистр AX непосредственным значением 0000. Теперь введем команду T. Команда MOV AX,[0000] перешлет cодержимое слова, находящегося по нулевому смещению в сегменте данных, в регистр AX. Содержимое 2301 преобразуется командой в 0123 и помещается в регистр AX. Следующую команду ADD можно выполнить, введя еще раз команду T. В результате содержимое слова в DS по смещению 0002 прибавится в регистр AX. Теперь регистр AX будет содержать сумму 0123 и 0025, т.е. 0148. команда пересылает содержимое регистра AX в слово по смешению 0004. Для просмотра изменений содержимого сегмента данных введите D DS:00. Первые девять байт будут следующими: значение в сегменте данных: 23 01 25 00 48 01 2A 2A 2A величина смещения: 00 01 02 03 04 05 06 07 08 Значение 0148, которое было занесено из регистра AX в сегмент данных по смещению 04 и 05, имеет обратное представление 4801. Заметьте что эти шест. значения представлены в правой части экрана их символами в коде ASCII. Например, шест.23 генерируeтся в символ #, а шест.25 - в символ %. Три байта с шест. значениями 2A высвечиваются в виде трех звездочек (***). Левая часть дампа показывает действительные машинные коды, которые находятся в памяти. Правая часть дампа только помогает проще локализовать символьные (срочные) данные. Для просмотра содержимого сегмента кодов введите D DS:100 так, как показано на рис.2.3. В заключении введите Q для завершения работы с программой. МАШИННАЯ АДРЕСАЦИЯ ________________________________________________________________ Для доступа к машинной команде процессор определяет ее адрес из |
|
|