Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Без знаков






Ячейка памяти Команда на машин­ном языке Команда в сим­волической форме Комментарий
    LRI 1 Установка в регистрах Н и L адреса
      первого числа
    LRI 2  
       
    LRI 3 Установка начального значения
  счетчика цикла равным 10
    LRI 4 Установка частной суммы равной 0
       
    LRI 5 Загрузка константы 1 для
      уменьшения счетчика
000А   MOV 0 from 4 Прибавление очередного числа
000В 8F ADD F  
000С   MOV 0 to 4  
000D F5 IHL Увеличение Н и L
000Е   MOV 0 from 3 Уменьшение счетчика
000F А5 SUB 5  
    MOV 0 to 3  
  7D JAN Проверка конца цикла
       
  0A  
  FA HLT  
    ЧИСЛО1 Суммируемые числа
    ЧИСЛО2 *  
. . .   . . .  
001Е   ЧИСЛ010  

 

Суммируется содержимое после­довательных ячеек. Первые пять команд составляют инициализирую­щую часть. Общие регистры Н и L используются в качестве 16-бито­вого указателя, содержащего адрес очередного прибавляемого числа.

Первые две команды заносят в Н и L адрес первого числа. Затем в регистр 3 помещается начальное значение, равное 10. Регистр 3 бу­дет выполнять функции счетчика количества суммируемых чисел, ко­торые программе еще предстоит обработать. Сумма накапливается в общем регистре 4. Четвертая команда в программе устанавливает в нем нулевое начальное значение. Наконец, в общий регистр 5 загру­жается константа 1, которая будет вычитаться из счетчика в процессе суммирования чисел.

Следующие три команды составляют рабочую часть цикла. Сначала текущая частная сумма передается в аккумулятор из регистра 4. Далее следует команда сложения ADD F, содержащая специальный указатель F, который на самом деле соответствует ячейке главной памяти с адресом в паре регистров Н и L. Содержимое этой ячейки прибавляется к частной сумме в аккумуляторе. После этого результат передается в общий регистр 4.

Остальные команды программы служат для тестирования конца цикла и модификации. Сначала команда IHL модифицирует регистры Н и L, так, чтобы они содержали адрес данных, которые должны обрабатываться при следующей итерации. Затем содержимое счетчика цикла передается в аккумулятор, уменьшается на 1 и снова возвра­щается в регистр 3. Поскольку значение счетчика осталось также в аккумуляторе, его можно использовать для проверки, нужно ли про­должать итерации или вычисления завершены. Счетчик показывает число еще не прибавленных чисел. Следовательно, когда вычисления завершаются, в аккумуляторе будет 0. Это условие тестируется командой «условный переход при ненулевом аккумуляторе». Если в аккумуляторе 0, тогда переход не происходит, и программа выходит на команду останова, в противном случае выполняется следующая итерация.

Обратите внимание, в описанной программе по команде ADD F вполне можно получить сумму, превышающую емкость аккумулятора, т. е. частная сумма может занять 9 разрядов. Это и есть переполне­ние, о котором мы уже упоминали. Ясно, что если переполнение может возникнуть, то оно должно детектироваться (в рассматриваемом случае при переполнении после выполнения команды ADD F ока­жется установленным в 1 триггер переноса), и нужно иметь возмож­ность работать с суммами, занимающими более 1 байта. Обычно в подобных задачах применяется процедура сложения «с двойной», «тройной» или большей «точностью».






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.