"Ассемблер и программирование для 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.
Следующая команда MOV [0004],AX выполняется опять по вводу T. Эта
команда пересылает содержимое регистра 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 для завершения работы с
программой.


МАШИННАЯ АДРЕСАЦИЯ
________________________________________________________________

Для доступа к машинной команде процессор определяет ее адрес из