Всего на сайте:
248 тыс. 773 статей

Главная | Информатика

Программа отыскания наибольшего из трех 8-битовых целых чисел без знаков х, у и z  Просмотрен 115

Ячейка памяти Команда на машин­ном языке Команда в сим­волической форме Комментарий
LDR 0 Передача х. из памяти в аккумулятор
   
 
LDR 1 Передача у из памяти в регистр 1
   
1C 1C  
А1 SUB 1 Вычитание у из х. Триггер С устанавливается, если у > х
LDR 2 Передача х в регистр 2 как возможного наибольшего
   
1B  
000А JCZ Проверка С на наличие заема. Если нет заема, то х
000В больше у, и следующая команда пропускается
000С    
000D LDR 2 Передача у в регистр 2, замещающая х
000Е если у больше х
000F 1C 1C  
LDR 1 Передача z из памяти в регистр 1
   
1D 1D  
MOV 0 from 2 Передача наибольшего из х, у на аккумулятор из регистра 2
А1 SUB 1 Вычитание z из наибольшего среди х, у.
      С устанавливается, если z больше
MOV 0 from 2 Передача наибольшего из х, у в аккумулятор как возможного наибольшего
JCZ Проверка С на наличие заема. Если заем есть,
то z больше; в противном случае следующая команда
1A опускается
MOV 0 from 1 Передача z в аккумулятор как наибольшего
001 А FA HLT Останов программы. Наибольшее число в аккумуляторе
001В     Число х
001С     Число у
001D     Число z

Затем выполняется команда условного перехода по значению С. Переход произойдет, если С имеет нулевое значение. Если С не равно нулю, то претендент на роль наибольшего, т. е. х, заменяется на у. Это делает следующая команда, которая загружает у в регистр 2. Если С=0, то управление передается на команду, хранящуюся в ячей­ке 0010, и в этом случае в качестве большего значения остается х. При любом варианте в этой точке программы наибольшее значение из х и у находится в регистре 2, и оно будет аналогичным образом срав­ниваться сz.

Значениеz передается из памяти в регистр 1 командой LDR, нахо­дящейся в ячейке 0010. Следующая команда передает наибольшее значение из х и у в аккумулятор. Затем осуществляется сравнение путем вычитания z из содержимого аккумулятора. Если z больше, то возникает заем. Наибольшее из х и у переносится из регистра 2 в аккумулятор на случай, если z окажется меньше. Затем снова про­веряется состояние триггера С командой JCZ. Если С=0, что говорит об отсутствии заема, то делается переход на команду останова. В про­тивном случае выполняется очередная команда, загружающая в ак­кумулятор значение z, и после нее — команда останова. При всех условиях и конечном итоге на сумматоре оказывается значение наи­большего из трех чисел х, у и z.

Вообще говоря, принятие решения сводится к организации такой проверки, такого теста, по результатам которого можно было бы выб­рать ту или иную последовательность действий. Наличие команд ус­ловного перехода позволяет микропроцессору выбрать нужную аль­тернативу автоматически, без вмешательства человека. При этом зада­ча программиста — обеспечить, чтобы микропроцессор выполнял нужные действия при любом исходе теста.

Предыдущая статья:Разветвления в программах Следующая статья:Программирование циклов
page speed (0.0122 sec, direct)