Группа арифметических команд
Команды этой группы предназначены для выполнения арифметических операций над данными, хранимыми в регистрах и ячейках памяти. Эти команды в отличие от команд предыдущей группы, как правило, оказывают влияние на значения разрядов флагового регистра, поскольку при выполнении арифметических операций меняются знаки используемых чисел, возникают сигналы переноса, появляются нулевые результаты и т. п. Рассмотрим примеры размещения в байтах некоторых команд этой группы. Команда ADD r. Эта команда выполняет сложение содержимого регистра-источника S с содержимым аккумулятора А. Результат сложения помещается в аккумулятор. Чтобы получить конкретную команду, необходимо в формате команды вместо символов S проставить код регистра-источника из табл. 4.4. Например, команда 10 000 001 производит сложение содержимого регистра С с содержимым аккумулятора А. Двоичный код этой команды 10 000 001 В; в восьмеричной системе это число представляется кодом 201Q. Это представление является восьмеричным кодом команды ADD С, выполняющей указанное выше сложение (см. список команд в приложении 1). Размещение команды ADD г в байте приведено на рис. 4.9,д. Команда SUB r. Команда выполняет вычитание содержимого регистра-источника S из содержимого аккумулятора. Результат заносится в аккумулятор (рис. 4.9,6). Например, команда 10 010 ОН В выполняет вычитание содержимого регистра Е из содержимого регистра А и помещает результат в аккумулятор. Код этой команды SUB Е — 223 Q. Таблица 4.4
Команда SUI <В2> производит вычитание содержимого второго байта (команда двухбайтовая) из содержимого аккумулятора и помещает результат в аккумулятор (рис. 4.9,в). Восьмеричный код команды — 326Q (см. приложение 1). Кроме команд, приведенных в качестве примеров, группа арифметических команд содержит команды сложения и вычитания содержимого аккумулятора с содержимым ячеек памяти, а также команды увеличения и уменьшения на единицу содержимого различных регистров.
ГРУППА ЛОГИЧЕСКИХ КОМАНД
Команды этой группы предназначены для выполнения логических, или булевых, операций над данными,.содержащимися в регистрах, ячейках памяти, а также над флагами условий. К этим операциям относятся операции: логического сложения (ИЛИ), логического умножения (И), суммирования по модулю 2, сравнения, сдвига, дополнения до 1 и до 2. Как и команды предыдущей группы, все логические команды оказывают влияние на флаги. Команда ANA г выполняет параллельно поразрядное логическое И над содержимым регистра-источника и аккумулятора. Результат операции заносится в аккумулятор (рис. 4.10,а). Например, команда 10 100 100 В выполняет операцию логического умножения поразрядно над содержимым регистра Н и А и заносит результат в аккумулятор. Двоичный код 10 100 100 В соответствует восьмеричному коду 244Q команды ANA H. Рис. 4.10. Примеры размещения некоторых логических команд в байтах
Команда ANI < В2 > является двухбайтовой и также выполняет поразрядную операцию логического И, но над содержимым второго байта команды и аккумулятора. Команда имеет восьмеричный код-3460 (рис. 4.10,6). Результат операции заносится в аккумулятор. Команда ORAr аналогична команде ANA r, но в отличие от нее выполняет операцию поразрядного логического ИЛИ. Результат операции заносится в аккумулятор (рис. 4.10,в).
ГРУППА КОМАНД ПЕРЕХОДОВ
Эта группа команд предназначена для организации правильной последовательности выполнения программы. Сюда входят команды безусловного и условного переходов, команды вызова подпрограммы и возвращения к главной программе. Все команды этой группы на флаги влияния не оказывают. Команды безусловного перехода выполняют специальные операции над содержимым счетчика команд. Команды условного перехода обеспечивают необходимое ветвление программы путем анализа состояния одного из четырех флагов: нуля, знака, четности и переноса, коды которых указаны в табл. 4.4. Команда JMP < В2> <ВЗ> — трехбайтовая команда передает управление команде по адресу, содержащемуся в третьем и втором байтах текущей команды. Это осуществляется путем записи содержимого третьего и второго байтов команды в счетчик команд (рис. 4.11,а). Как уже отмечалось в § 4.3, счетчик команд представляет собой 16-разрядный регистр, содержащий адрес, по которому можно обратиться для считывания очередного байта команды. Восьмеричный код этой команды - 303 Q. Команды CALL и RET — команды безусловного перехода. Первая из них передает управление подпрограмме, прекращая выполнение основной программы; вторая передает управление главной программе, возвращаясь к ее выполнению (рис. 4.11,£, в). Первая команда — трехбайтовая. Восемь старших разрядов адреса следующей команды пересылаются в ячейку памяти, адрес которой на единицу меньше содержимого указателя стека. Восемь младших разрядов адреса следующей команды пересылаются в ячейку памяти, адрес которой на две единицы меньше содержимого указателя стека. Содержимое указателя стека уменьшается на две единицы. Управление передается команде, адрес которой размещается в третьем и втором байтах команды CALL Рис. 4.11. Примеры размещения некоторых команд переходов в байтах
Команда RET — однобайтовая. Ее восьмеричный код — 311Q (код предыдущей команды CALL — 315Q). В процессе выполнения этой команды содержимое указателя стека получает приращение на две единицы. Содержимое ячейки памяти по адресу, хранящемуся в указателе стека, пересылается в счетчик команд на место младших восьми разрядов. Содержимое ячейки памяти по адресу, на единицу большему, чем содержимое указателя стека, пересылается в счетчик команд на место старших восьми разрядов. Таким образом, возвращение к главной программе происходит всегда путем обращения к байту команды, непосредственно следующему за байтом, используемым командой CALL
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|