<<
>>

Организация циклов на машинном уровне

В качестве примера для реализации цикла на машинном уровне рассмотрим про- стую задачу вычисления суммы

где n — задаваемое с помощью ввода количество слагаемых.

Характерной чертой этой суммы, упрощающей написание программы, является совпадение значения слагаемого с его номером.

Для хранения количества слагаемых предлагается зарезервировать однобайтовое поле, что позволит решать такую задачу для любых n < 25510. Для хранения ре- зультата зарезервируем поле директивой dw, так как для достаточно больших n значение искомой суммы наверняка выйдет за пределы одного байта.

Воспользуемся стандартным алгоритмом накопления суммы. Для промежуточ- ного хранения накапливаемой суммы лучше использовать не поле оперативной памяти, а один из регистров, например регистр ах. Однобайтовый номер теку- щего слагаемого может быть размещен в любом восьмибитовом регистре (кроме уже занятых одновременно с ах регистров аh и аl).

Пусть это будет, например, регистр сl.

Подготовка к накоплению суммы сводится к закреплению за величиной s на- чального нулевого значения s : = 0. Это можно организовать, например, коман- дой очистки регистра sub ах/ ах. Перебор слагаемых целесообразно начать с последнего слагаемого, с номером n: i : = п. Для этого в регистр сl нужно пе- реслать из поля n номер последнего слагаемого: mоv сl, п.

Если планируется работа с любым 8-битовым регистром, необходимо постоянно помнить о регистре, который дополняет его до 16-битового. В данном случае для накопления суммы очередное слагаемое, которым является содержимое регистра сl, нужно добавлять к содержимому регистра ах, в котором накапливается сум- ма. Подходящая на первый взгляд команда сложения add ах, сl ошибочна, так как операнды имеют различную длину.

Поэтому добавлять слагаемые при- дется командой add ах, сх. Но в этом случае в накапливаемую сумму может попасть возможно ненулевой код из регистра сh. Поэтому перед началом накопле- ния суммы этот регистр необходимо очистить, например, командой sub сh, сh.

Так как к команде сложения нужно будет неоднократно возвращаться, она обя- зана иметь метку: cont add ах, сх. После добавления текущего слагаемого нужно перейти к предыдущему (так как перебор начался с последнего слагаемо- го). В рассматриваемом случае для этого достаточно уменьшить номер слагаемого на единицу, например, командой декремента dec сl.

Теперь нужно проверить, завершен перебор слагаемых или нет, и, если он не за- вершен, возвратиться к команде с меткой сопt, добавляющей очередное слагае- мое. Условием продолжения суммирования в рассматриваемой задаче, очевидно, является неравенство i > 0 — слагаемые добавляются до тех пор, пока номер очередного слагаемого больше нуля. Из имеющихся команд условной передачи управления нужно выбрать такую команду, которая обеспечивает переход по усло- вию i > 0 или, что в данном случае то же самое, [ сl ] >0. Наиболее подходящей, по-видимому, является команда jg, которая обеспечивает переход, если значе- ния флажков процессора соответствуют положительному результату в предшест- вующей команде декремента dec сl. В выбранной команде условного перехода должна быть указана метка команды, с которой начинается цикл: jg сопt.

Рис. 4.40. Фрагмент программной реализации цикла

Каждый раз при очередном выполнении тела цикла эта команда передает управ- ление на начальную команду цикла и очередное слагаемое добавляется к накап- ливаемому результату. После добавления последнего слагаемого по команде дек- ремента содержимое регистра сl станет равным нулю, и тогда команда условного перехода передаст управление следующей по порядку команде, тем самым завер- шив выполнение цикла. Объединяя вместе все эти команды, получим фрагмент программы, приведенный на рис. 4.40.

4.3.14.

<< | >>
Источник: Степанов А. Н.. Архитектура вычислительных систем и компьютерных сетей. 2007

Еще по теме Организация циклов на машинном уровне:

  1. Наложение циклов
  2. Наложение циклов
  3. 1.3.2. Функции социологии социальной сферы и уровни организации изучения социальных процессов
  4. Сознание распространяет себя от высших уровней Божественности до низшего уровня первого измерения камня и минералов. Всё Бог в разном выражении.
  5. Истинное желание—это когда желания одного уровня гармонируют с желаниями другого уровня.
  6. СИСТЕМА «ЧЕЛОВЕК - МАШИНА»: НАДЕЖНОСТЬ
  7. А.П. Пятибратов, Л.П. Гудыно, А.А. Кириченко. Вычислительные машины, сети и телекоммуникационные системы, 2009
  8. Как обзавестись новой машиной
  9. Огонь и машина физического бессмертия
  10. Статья 415. Нарушение правил вождения или эксплуатации машин
  11. Запомните: вы водитель автомобиля; вам не нужно вставать из-за руля и толкать свою машину.
  12. Чтобы ехать на машине, вам не надо бросать руль и толкать ее.
  13. Раздел 16 - Уголовного Кодекса Украины Преступления в сфере использования электронно-вычислительных машин (компьютеров), систем и компьютерных сетей и сетей электросвязи
  14. ПРОЕКТНЫЙ И ИСПОЛНИТЕЛЬНЫЙ УРОВНИ ПРОГРАММ
  15. Статья 361. Несанкционированное вмешательство в работу электронно-вычислительных машин (компьютеров), автоматизированных систем, компьютерных сетей или сетей электросвязи
  16. Сотрудники низшего уровня
  17. ТЕОРИЯ УРОВНЕЙ ОБРАБОТКИ
  18. ПОВЫШЕНИЕ УРОВНЯ ОЖИДАНИЙ