Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УММ / Тема 2 / Тема 2 Лекция 2 / Тема 2 Лекция 2.pptx
Скачиваний:
9
Добавлен:
16.03.2016
Размер:
19.25 Mб
Скачать

Мнемоническое (символическое) кодирование для записи команд:

Шестнадцатеричное (или восьмеричное) кодирование имеет очевидное преимущество перед двоичным. Однако для длинных программ и оно неудобно. Программист должен выучить наизусть шестнадцатеричные коды всех команд, использующихся в машине (в некоторых ЭВМ их более сотни). Чтобы упростить процесс написания, отладки и чтения программы, предложен мнемонический или символический код: каждая команда представляется простым двух-, трех- или четырехбуквенным мнемоническим символом. Мнемонические символы значительно легче связать с машинными операциями, так как их можно выбирать таким образом, чтобы они напоминали название команды. Большинство

мнемонических кодов - это сокращения английских названий команд:

SUB - SUBtract (вычесть); BR Branch (перейти); BPL – Branch if Plus (перейти по положительному числу); CLA Clear Accumulators (очистить аккумулятор) – установка

аккумулятора в нуль; ADD ADD – сложить содержимое аккумулятора и указанной ячейки памяти с сохранением результата в аккумуляторе; MOV MOVe – переслать содержимое аккумулятора в указанную ячейку памяти с сохранением содержимого

аккумулятора; HLT HaLT – стоп.

Например, инвертирование аккумулятора (CoMplement Accumulator) кодируется CMA, двоичный код этой команды – 1111010000000000, а шестнадцатеричный эквивалент F400.

Для символического кодирования команд используется язык ассемблера, компилятор с этого языка называется ассемблером, который переводит программу с

языка ассемблера в машинный язык (объектную программу или объектный модуль).

Символическое кодирование удобно для программиста, но оно не может быть понято машиной. Единственным языком, понятным машине, является язык двоичных кодов. Следовательно, необходимо транслировать символическую программу в ее двоичный эквивалент. Это можно сделать вручную, но на практике делается специальной машинной программой.

Форматы команд базовой ЭВМ:

а) адресных (всего 16 команд, т. к. разрядность поля кода операции равна 4); б) безадресных (код операции 1111, всего 4096 команд, т. к. разрядность

расширения КОП равна 12); в) ввода-вывода (код операции 1110, всего 16 команд)

В зависимости от того, к каким блокам машины обращается команда или на какие блоки она ссылается, команды можно разделить на три группы:

Команды обращения к памяти предписывают машине производить действия с

содержимым ячейки памяти, адрес которой указан в адресной части команды. Безадресные команды выполняют различные действия без ссылок на ячейку памяти.

Команды ввода-вывода осуществляют обмен данными между ЭВМ и внешними устройствами. В них задаются адрес (название) устройства ввода-вывода и код той операции,

которое должно выполнить это устройство (приказ на ввод-вывод).

Если учитывать функции, выполняемые командой, можно выделить восемь типов команд: пересылок или обмена, арифметические, логические, сдвигов, переходов, обращения к подпрограмме, управления и ввода-вывода.

Способы адресации

Способы адресации : а) прямой; б) косвенный

Способы адресации

При косвенной адресации в команде размещается не сам адрес операнда (результата или перехода), а его указатель, т. е. адрес ячейки памяти, в которой сохраняется адрес операнда (результата или перехода). Такое адресование упрощает построение циклических программ, организацию работы с подпрограммами, а также создает условия для расширения адресуемого пространства (косвенное адресование 16-битовых ячеек базовой ЭВМ позволяет ей иметь память объемом до 216 = 65 536 слов).

Для указания вида адресации в командах используется бит с номером 11, в который при прямой адресации следует записывать 0, а при косвенной— 1. В мнемонических изображениях команд для указания косвенной адресации операнд помещается в скобки.

Существуют также регистровая адресация (регистр-регистр) и индексная адресация, когда адрес определяется как сумма адресной части команды и содержимого индексного регистра, что позволяет адресовать данные, не затрагивая команды, а лишь модифицируя содержимое индексного регистра.

3. Арифметические операции

Арифметические операции в базовой ЭВМ

Увеличение на единицу (INCrement) и уменьшение на единицу

(DECrement). По команде INC к содержимому аккумулятора прибавляется единица, а по команде DEC — единица вычитается. Если при этом появляется перенос из старшего разряда, то в регистр переноса (С) заносится 1, в противном случае — 0.

Изменение знака числа. Для изменения знака числа, записанного в дополнительном коде, необходимо его инвертировать, а затем прибавить единицу к младшему разряду. На ЭВМ такую операцию можно выполнись с помощью команд СМА (инверсия содержимого аккумулятора) и INC.

Вычитание (X Y). Оно может выполняться путем сложения уменьшаемого X и дополнительного кода вычитаемого Y. Однако это требует записи и исполнения нескольких команд (CLA, ADD Y, CiWA, iNC, ADD X). Для сокращения программы и времени выполнения вычитания в базовой ЭВМ предусмотрена команда вычитания SUB Y (CLA, ADD X, SUB Y), которая реализует те же действия за меньшее время.

При выполнении вычитания (так же, как и при выполнении сложения) возможно переполнение. Признаком возникновения переполнения является получение положительного результата при Х<0 и Y> 0 или отрицательного

результата при Х> 0 и Y<0.

Умножение и деление. В базовой ЭВМ нет команд для осуществления умножения и деления (АЛУ не выполняет этих операций). Поэтому программист должен организовывать получение произведения или частного программным путем.

При двоичном умножении частичное произведение сдвигается на один разряд влево для каждого последующего разряда множителя. Если множитель

Операция сложения

Программа вычисления суммы двух чисел с помощью команды ADD

Выполнение команды сложения ADD 21 (жирные линии – передача адреса, двойная – команд и данных)

Размещение целого двоичного числа в нескольких словах памяти

Используется для расширения диапазона представления таких чисел и,

следовательно, для увеличения точности расчетов. Так, размещая число в двух 16-битовых словах, можно работать с числами в диапазоне:

вместо диапазона от —32768 до +32767, в котором изменяются однословные двоичные числа со знаком.

Так как арифметико-логическое устройство базовой ЭВМ позволяет обрабатывать лишь 16-разрядные операнды, то для суммирования многословных чисел приходится выполнять определенную последовательность действий:

1) произвести сложение младших слов чисел, при этом в регистр переноса автоматически занесется 1 или 0 в зависимости от наличия или отсутствия переноса, возникающего при сложении старших разрядов суммируемых слов;

2)записать полученную сумму в младшее слово результата;

3)произвести сложение следующих по старшинству слов и содержимого

регистра переноса, в конце операции в регистр переноса заносится перенос из старшего разряда суммируемых слов (1 или 0);

4) полученную сумму записать в соответствующее слово результата; 5) повторять пп. 3 и 4 до тех нор, пока не будут просуммированы все слова

слагаемых.

Соседние файлы в папке Тема 2 Лекция 2