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



       

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


Если бы квадратных скобок не было, то команда

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

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

Значение 0148, которое было занесено из регистра AX в сег мент данных по смещению 04 и 05, имеет обратное представле ние 4801. Заметьте что эти шест. значения представлены в правой части экрана их символами в коде ASCII. Например, шест.23 генерируeтся в символ #, а шест.25 - в символ %. Три байта с шест. значениями 2A высвечиваются в виде трех звездочек (***). Левая часть дампа показывает действительные машинные коды, которые находятся в памяти. Правая часть дампа только помогает проще локализовать символьные (сроч ные) данные. Для просмотра содержимого сегмента кодов введите D DS:100 так, как показано на рис. 2.3. В заключении введите Q для завершения работы с программой.

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

Для доступа к машинной команде процессор определяет ее адрес из содержимого регистра CS плюс смещение в регистре IP. Например, предположим, что регистр CS содержит шест. 04AF (действительный адрес 04AF0), а регистр IP содержит шест. 0023:

CS: 04AF0 IP: 0023 Адрес команды: 04B13

Если, например, по адресу 04B13 находится команда:




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