- •ЮУрГУ
- •Кодирование программ
- •Тема 2 Архитектурные особенности организации
- •1. Назначение и структура базовой ЭВМ
- •Структура базовой ЭВМ
- •Компьютер PDP-8
- •Характеристики базовой ЭВМ:
- •Характеристики регистров
- •Характеристики регистров
- •2. Кодирование программ и система команд
- •Мнемоническое (символическое) кодирование для записи команд:
- •Форматы команд базовой ЭВМ:
- •Способы адресации
- •Способы адресации
- •3. Арифметические операции
- •Арифметические операции в базовой ЭВМ
- •Операция сложения
- •Выполнение команды сложения ADD 21 (жирные линии – передача адреса, двойная – команд
- •Размещение целого двоичного числа в нескольких словах памяти
- •Операции с несколькими словами
- •Изменение знака числа (команды CMA и INC)
- •4. Управление вычислительным процессом, сдвиги и логические операции
- •Почти все программы ЭВМ должны обладать способностью проверять исходные данные, промежуточные и окончательные
- •Разветвления в программах (команды BCS, BPL,BMI,BEQ, BR)
- •ЦиклическЦиклическиее программы программы используются в тех случаях, когда требуется
- •Циклические программы
- •Циклические программы
- •Циклические программы
- •Циклические программы
- •Циклические программы
- •Циклические программы
- •Побитовая обработка данных
- •Побитовая обработка данных (команды ROL, ROR, CMC, CLC)
- •Побитовая обработка данных (команда ROL)
- •5. Подпрограммы и параметры
- •Подпрограммы
- •Стековая память
- •Примеры использования подпрограмм
- •Примеры использования подпрограмм
- •Использование подпрограмм
- •6. Основные стадии выполнения команды
- •Цикл команды
- •Соотношение между микрооперациями и микрокомандами на примере выполнения одноадресной команды (микропрограммы) вычитания в
- •1.Выборка команды
- •1. Выборка команды
- •2. Выборка адреса
- •2. Выборка адреса
- •3. Исполнение
- •3. Исполнение
- •4. Прерывание
- •Литература:
Операции с несколькими словами
X=12345678 (BC614E)16; Y=76543210 (48FF4EA)16 ; Z=1356 22072 (054C 5638)16
Представление и программа суммирования двухсловных чисел
Изменение знака числа (команды CMA и INC)
Программа изменения знака числа
4. Управление вычислительным процессом, сдвиги и логические операции
Почти все программы ЭВМ должны обладать способностью проверять исходные данные, промежуточные и окончательные результаты вычислений, чтобы на основании результатов проверки изменять нужным образом последовательность выполнения операций. Например, следует должным образом отреагировать на ситуацию, когда при сложении положительных чисел возникает отрицательный результат.
Подобная задача решается в базовой ЭВМ при помощи команд перехода (BCS, BPL, BM1, BEQ, BR), команд ПРИРАЩЕНИЕ, и ПРОПУСК (ISZ), ОСТАНОВ (HLT). Все эти команды (кроме HLТ) являются адресными, т. е. в них указывается адрес той ячейки памяти, из которой должна быть выбрана следующая команда при выполнении того или иного условия. Если же условие не выполняется, то должна исполняться команда, расположенная вслед за данной командой управления. Как и в других адресных командах, здесь можно использовать косвенную адресацию, т. е. указывать адрес ячейки, из которой и будет выбираться нужный адрес перехода.
Разветвления в программах организуются с помощью команд перехода. Эти команды не изменяют состояния аккумулятора и регистра переноса. Они могут лишь изменить содержимое счетчика команд., поместив туда адрес, определяемый адресной частью команды.
BCS M (ПЕРЕХОД, ЕСЛИ ПЕРЕНОС). Переход к команде, расположенной в ячейке с адресом М, если содержимое регистра переноса равно 1.
BPL M (ПЕРЕХОД, ЕСЛИ ПЛЮС). Переход к команде, расположенной в ячейке с адресом М, если содержимое аккумулятора больше или равно нулю, т. е. в его старшем бите содержится 0.
ВМI М (ПЕРЕХОД, ЕСЛИ МИНУС). Переход к команде, расположенной в ячейке с адресом М, если содержимое аккумулятора меньше нуля, т. е. в его старшем разряде содержится 1.
BEQ M (ПЕРЕХОД, ЕСЛИ НУЛЬ). Переход к команде, расположенной в ячейке с адресом М, если содержимое аккумулятора равно нулю т. е. во всех его разрядах содержится
Разветвления в программах (команды BCS, BPL,BMI,BEQ, BR)
ЦиклическЦиклическиее программы программы используются в тех случаях, когда требуется
несколько раз выполнить набор одинаковых действий над некоторым изменяющимся
Получение произведения Z = 50Y. Так как в системе команд базовой ЭВМ нет команды умножения, то простейшим способом является линейная программа, выполняющая 50 раз суммирование значения Y.
Циклические программы
Упрощение программы получения произведения Z=50Y
1. Вместо подсчета и проверки количества выполненных циклов можно подсчитывать и проверять количество циклов, оставшихся до завершения работы программы, т. е. уменьшать в цикле значение М до тех пор, пока оно не станет равным нулю. Тогда отпадает необходимость в использовании ячейки 8 и команды вычитания (SUB 7) - команды с 15 по 19 заменяются последовательностью команд: ADD 7, DEC, MOV 7, BEQ 1A, BR 10. Если же в ячейку 7 поместить отрицательное значение множителя —50 = = (FFCE)16, то
команды с 15 по 19 можно заменить последовательностью команд: ADD 7, INC, MOV 7, BMI 10, HLT, т. е. освободить еще и ячейку 1 А.
2. Большего упрощения программы можно добиться при накоплении результата непосредственно в аккумуляторе, а не в ячейке 6. Тогда команды с 10 по 13 можно было бы заменить всего одной командой ADD 5. Однако в данном варианте программы аккумулятор пришлось использовать еще и для изменения числа циклов, что привело к необходимости сохранения промежуточного результата Z в памяти ЭВМ.
Следовательно, для упрощения циклических программ целесообразно иметь в составе команд базовой ЭВМ команду, позволяющую организовать счетчик циклов без затрагивания аккумулятора. Такой командой является ISZ. Команда ISZ (ПРИРАЩЕНИЕ И ПРОПУСК) служит для увеличения на 1 содержимого адресуемой ячейки памяти и перехода к одному из двух путей продолжения программы н зависимости от знака этого содержимого. Так, при каждом выполнении команды ISZ M, расположенной по адресу А, к содержимому ячейки с адресом М добавляется 1, и если результат меньше нуля, то выполняется команда, следующая за ISZ M (команда, расположенная по адресу А+1); в противном случае эта команда пропускается, т. е. выполняется команда,
Циклические программы
Вариант программы получения Z = 50Y, в котором использованы возможности сокращения памяти и времени для накопления результата (время уменьшается за счет того, что в каждом из 50 циклов выполняются лишь три команды вместо десяти).
Циклические программы
(модификация адресной части команды)
Получение в ячейке 005 суммы 32 элементов массива, размещенного в ячейках памяти с 010 по 02F. Изменение адреса осуществляется путем модификации адресной части команды (переадресации): после того как содержимое какой-либо ячейки памяти было использовано в качестве команды, последующие команды программы используют это содержимое в качестве операнда (числа) и преобразовывают его нужным образом ( наращивают на 1).
Циклические программы
(косвенная адресация и использование команды ISZ)
Переадресация команд практически не используется в современных ЭВМ. Для сближения языка команд с алгоритмическими языками были разработаны специальные средства адресации. Эти же средства позволяют создавать эффективные программы, помещаемые в постоянные запоминающие устройства, откуда можно лишь читать команды или данные, но нельзя их изменять (программы микроЭВМ, управляющих работой стиральных машин, некоторых устройств автомобиля, роботом и т. п.). Одно из таких средств — косвенная адресация.
При использовании косвенной адресации нужно выбрать в памяти ЭВМ какую-либо ячейку (например, 007), записать в нее адрес первого элемента суммируемого массива (адрес 010), заменить в предыдущем варианте программы команду 4010 на команду 4807 (ячейка 32) и команды переадресации (CLA, ADD 32, INC, MOV 32) командами вычисления текущего адреса суммируемого элемента массива (CLA, ADD 7, INC, MOV У). Скобки в команде ADD (7) и цифра 8 в ее числовом коде 4807 (единица в 11-м бите команды) информируют ЭВМ о том, что содержимое аккумулятора должно суммироваться не с содержимым ячейки 7, а с содержимым ячейки, адрес которой хранится 15 ячейке 7. Поэтому в ячейку 7 сначала помещается адрес первого элемента суммируемого массива, а затем (при каждом прохождении цикла) этот адрес увеличивается на 1.
