90
Простежте за зміною вмісту регістрів мікропроцесора, які
задіяні до процесу виконання програми, та зміною стану регістра
прапорців умов. До процесу виконання програми задіяні три
регістри загального призначення, а саме: АХ, СХ та ВХ,
вказівник команд ІР, вказівник стека SP та прапорець нуля ZF. У
молодшій частині регістра АХ (AL) тимчасово зберігаються
елементи масиву ARRAY, тобто значення, які набуває AL, лежать
у діапазоні від 1 до 9. Регістр СХ використовується як лічильник
циклів оброки масиву і використовується командою LOOP next,
під час виконання якої автоматично декрементується. Регістр ВХ
використовується для індексації елементів масиву ARRAY.
Значення, які набувають СХ та ВХ, лежать у діапазоні від 0 до 9.
Вказівник команд ІР містить адреси команд, які виконуються
(записуються у регістр команд). Оскільки програма розташована
в адресному просторі від 0700Н:0100Н до 0700Н:0132Н (0700Н –
адреса програмного сегмента, тобто вміст регістра CS, який є
незмінним), то відповідно значення, які набуває ІР, лежить у
діапазоні від 0100Н до 0131Н. Стек використовується під час
виконання програми як проміжне зберігання елементів масиву
для обміну. Вершина стека має адресу 0FFFЕН (початкове
значення SP), а при занесенні у стек проміжного вмісту регістра
АХ регістр SP автоматично декрементується і набуває значення
0FFFCH. Оскільки код програми, дані і стек розташовані в
одному сегменті, то вміст відповідних регістрів CS, DS, ES та SS
однаковий і становить 0700Н. Прапорець нуля ZF
використовується під час виконання команд умовних переходів
JNZ n_xch, JZ n_xch, LOOP next та встановлюється або
скидається під час виконання команд TEST AL, 1 і LOOP next.
Проаналізуйте особливості розташування програмного коду в
пам’яті мікропроцесорної системи. Програма розташована в
адресному просторі від 0700Н:0100Н до 0700Н:0132Н, причому
область даних, яка відповідає масиву ARRAY, розташована в
адресному просторі від 0700Н:0102Н до 0700Н:010ВН. Визначте
кількість байтів, які займають команди програми (які саме
команди є одно-, дво-, три- та чотирибайтними командами).