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



       

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


вводит шесть байтов в ячейки, начиная с адреса CS:106 и далее в 107, 108, 109, 10A и 10B. Последняя команда Enter:

E CS:10C 2B C8 2B C0 90 CB (Return)

вводит шесть байтов, начиная с CS:10C в 10D, 10E, 10F, 110 и 111. Проверьте правильность ввода значений. Если есть ошибки, то следует повторить команды, которые были введены неправильно. Теперь осталось самое простое - выполнить эти команды. На pис. 2-1 показаны все шаги, включая команды E. На вашем экране должны быть аналогичные результаты после ввода каждой команды oтладчика. Введите команду R для просмотра содержимого регистров и флагов. В данный момент отладчик покажет содержимое регистров в шест. формате, например,

AX=0000, BX=0000, ...

В зависимости от версии DOS содержимое регистров на экране может отличаться от показанного на рис. 2.1. Содержи мое регистра IP (указатель команд) выводится в виде IP=0100, показывая что выполняемая команда находится на смещении 100 байт от начала сегмента кодов. (Вот почему использовалась команда E CS:100 для установки начала программы.) Регистр флагов на рис. 2.1 показывает следующие значения флагов:

NV UP DI PL NZ NA PO NC

------------------------------------------------------------ ------------------------------------------------------------ Рис. 2.1. Трассировка машинных команд.

Данные значения соответствуют: нет переполнения, правое направление, прерывания запрещены, знак плюс, не ноль, нет внешнего переноса, контроль на честность и нет переноса. В данный момент значение флагов не существенно. Команда R показывает также по смешению 0100 первую выпол няемую машинную команду. Регистр CS на рис. 2.1 содержит значение CS=13C6 (на разных компьютерах оно может различаться), а машинная команда выглядит следующим образом:

13C6:0100 B82301 MOV AX,0123

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

ъ CS=13C6 обозначает, что начало сегментов кода находится по смещению 13C6 или точнее 13C60. Значение 13C6:0100 обозначает 100 (шест.) байтов от начального адреса 13C6 в регистре CS. ъ B82301 - машинная команда, введенная по адресу CS:100. ъ MOV AX,0123 - ассемблерный мнемонический код, соответствующий введеной машинной команде. Это есть результат операции дисассемблирования, которую обеспе чивает отладчик для более простого понимания машинных команд. В последующих главах мы будем кодировать про граммы исключительно в командах ассемблера. Рассматри ваемая в данном слечае команда обозначает пересылку непосредственного значения в регистр AX.




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