Арифметические и логические команды
Команда: ADD REGISTER (сложение с регистром) Символическая форма: ADD R Описание: (Асе) + (R) ® Асc Перенос ®С Содержимое общего регистра R прибавляется к содержимому аккумулятора. Результат сложения становится новым содержимым аккумулятора, а перенос из старшего разряда становится новым содержимым триггера переноса С. Все числа считаются целыми без знаков. Команда: ADD REGISTER WITH CARRY (сложение с регистром и переносом) Символическая форма: ADC R Описание: (Acc) + (R)+(C) ® Асc Перенос ®С Содержимое общего регистра R и триггер переноса С прибавляются к содержимому аккумулятора. Результат сложения становится новым содержимым аккумулятора, а перенос из старшего разряда становится новым содержимым триггера переноса С. Все числа считаются целыми без знаков. Команда: SUBTRACT REGISTER (вычитание регистра) Символическая форма: SUB R Описание: (Асе) — (R) ® Асc Заем ®С Содержимое общего регистра R вычитается из содержимого аккумулятора. Результат вычитания становится новым содержимым аккумулятора, а заем в старший разряд становится новым содержимым триггера переноса. Все числа считаются целыми без знака. Команда: SUBTRACT REGISTER WITH CARRY (вычитание регистра и переноса) Символическая форма: SBC R Описание: (АСС) — (R) — (С) ®Асc Заем ® С Содержимое общего регистра R и триггера переноса С вычитаются из содержимого аккумулятора. Результат вычитания становится новым содержимым аккумулятора, а заем в старший разряд становится новым содержимым триггера переноса. Все числа считаются целыми без знака.
Команда: LOGICAL AND (логическое И) Символическая форма: AND R Описание: (Асc) L (R) ® Асc Над содержимым общего регистра R и аккумулятора поразрядно выполняется операция логического И. Результат становится новым содержимым аккумулятора. Состояние триггера переноса не меняется.
Команда: LOGICAL OR (логическое ИЛИ) Символическая форма: OR R Описание: (Асc) V (R) —> Асc Над содержимым общего регистра R и аккумулятора поразрядно выполняется операция логического ИЛИ. Результат становится новым содержимым аккумулятора. Состояние триггера переноса не меняется. Команда: LOGICAL EXCLUSIVE-OR (логическое ИСКЛЮЧАЮЩЕЕ ИЛИ) Символическая форма: XOR R Описание: (Асc) Å (R) ® Асc Над содержимым общего регистра R и аккумулятора поразрядно выполняется операция логического ИСКЛЮЧАЮЩЕГО ИЛИ. Результат становится новым содержимым аккумулятора. Состояние триггера переноса не меняется. Команда: COMPLEMENT ACCUMULATOR (обращение аккумулятора) Символическая форма: СМА
Описание: (Асc) ® Асc Нули в аккумуляторе заменяются на единицы, а единицы—на нули (т. е. осуществляется обращение кода в аккумуляторе). Команда: COMPLEMENT CARRY (обращение переноса) Символическая форма: CMC Описание: (С) ® С Команда: RESET CARRY (сброс переноса) Символическая форма: RSC Списание: 0 ® С Триггер переноса С сбрасывается. Команда: ROTATE ACCUMULATOR AND CARRY LEFT (циклический сдвиг аккумулятора и переноса влево) Символическая форма: RTL Описание: (С) ® Асс0 (Асеi) ® Ассi+1 i = 0, 1, …, 6 (Асе7) ® С Содержимое аккумулятора и триггера переноса С как одно целое сдвигаются циклически влево. Содержимое разряда Асс7 попадает на триггер С, а содержимое триггера С—в разряд Асс0. Команды ввода/вывода Команда:.INPUT (ввод) Символическая форма: INP Описание: Устройство ввода [<В2>] ® Асc Байт данных передается в аккумулятор от устройства ввода, номер которого задан вторым байтом команды INP. Команда: OUTPUT (вывод) Символическая форма: OUT Описание: (Асc) ® устройство вывода [<В2>] Содержимое аккумулятора передается на устройство вывода, номер которого задан вторым байтом команды OUT.
Специальные команды Команда:INCREMENT REGISTER PAIR Н AND L (увеличение на 1 содержимого пары регистров Н и L) Символическая форма: IHL Описание: (Н) (L) + 1 ® HL 16-разрядное двоичное число, содержащееся в регистрах Н и L, увеличивается на 1 по модулю 216. Команда: DECREMENT REGISTER PAIR Н AND L (уменьшение на 1 содержимого пары, регистров Н. и L) Символическая: форма: DHL Описание: (Н) (L) — 1 ® HL 16-разрядное двоичное число, содержащееся в регистрах Н и L, уменьшается на 1 по модулю 216. Команда: PUSH DATA ONTO STACK (поместить данные в стек) Символическая форма: PUSH Описание: (Stacki) ® Stack i + 2 t = l, 2,..., 6210 0000000 (С) (Асc) ® Stack2 (Н) (L) ® Stack1 Стек опускается дважды. В результате во втором регистре стека оказывается значение аккумулятора с переносом, а в первом (вершине стека) содержимое пары регистров Н и L. Команда: POP DATA FROM STACK (извлечь данные из стека) Символическая форма: POP Описание: (Stack1) ® HL (Stack L2) ® Acc (Stack H02) ® C (Stacki) ® Stacki-2 i = 3, 4,..., 6410 (Stackj) ® Stackyj j = 63, 64 Содержимое вершины стека передается на пару регистров Н и L. Содержимое младшей половины второго регистра стека передается в аккумулятор, а младший бит старшей половины этого же регистра передается на триггер переноса С. Стек поднимается дважды, причем состояние двух нижних регистров остается без изменений. Команда: ENABLE INTERRUPT (разрешить прерывания) Символическая форма: EIT Описание: 1 ® флажок прерываний На триггере, называемом флажком прерываний, устанавливается 1 после выполнения команды, следующей за данной командой Команда: DISABLE INTERRUPT (запретить прерывания) Символическая форма: DIT Описание: 0 ® флажок прерываний Триггер, называемый флажком прерываний, сбрасывается. Команда: NO OPERATION (пустая команда) Символическая форма: NOP Описание: При выполнении этой команды никаких действий не выполняется. Команда: HALT (останов) Символическая форма: HLT Описание: Выполнение команд прекращается до прихода импульса на линию „пуск".
Рис. 4.5 Информационные потоки в фазе выборки - дешифрации командного цикла Первый этап выполнения любой команды — это чтение команды из памяти. Чтение каждого байта команды занимает один машинный цикл. На рис. 4.5 показаны основные информационные потоки в фазе выборки-дешифрации командного цикла. 16-битовый адрес первого байта команды передается в память по шине адреса с программного счетчика. Устройство управления формирует сигнал «чтение», благодаря которому содержимое адресуемой ячейки выдается из памяти на шину данных и затем принимается в регистр команд. Этот первый байт, содержащий код операции, дешифруется дешифратором команд, при этом выясняется, сколько байтов в команде. Одновременно увеличивается программный счетчик.
Если обнаруживается, что в команде есть еще один или два байта, то затрачивается еще один или два машинных цикла на то, чтобы аналогичным образом выбрать следующий байт или байты из памяти. Однако приемником этих байтов оказывается уже не регистр команд, а либо регистр адреса данных, если команда не является командой с непосредственным адресом (этот путь показан на рис. 4.5), либо один из общих регистров, если команда является командой с непосредственным адресом. В любом случае фаза выборки-дешифрации завершается после второго синхроимпульса последнего машинного цикла.
Фаза выполнения Следующий этап после выборки — это выполнение команды. Для одних команд выполнение завершается третьим оставшимся синхроимпульсом последнего машинного цикла, для других команд требуются дополнительные машинные циклы. Количество дополнительных циклов определяется в блоке управления и синхронизации в зависимости от выполняемой команды. Рассмотрим фазу выполнения некоторых команд нашего микропроцессора. По ходу изложения следует обращаться к табл. 4.2.
Команды пересылки Первой рассмотрим команду пересылки (MOV). По этой команде информация передается либо между двумя общими регистрами, либо между ячейкой главной памяти и общим регистром. На рис. 4.6 показаны информационные потоки в фазе выполнения команды MОV при передаче между регистрами.
Рис. 4.6 Информационные потоки в фазе выполнения команды MOV r from R при условии R≠11112
В частности, если в команде задано d = l, то в соответствии с табл. 4.2 содержимое любого регистра от 016 до Е1С, указанного в поле R команды, передается в один из регистров 016, 116, 216, указанный в поле r команды. Эта передача осуществляется третьим синхроимпульсом в том же машинном цикле, в котором был выбран первый байт команды. Таким образом, в рассмотренном случае командный цикл состоит из одного машинного цикла.
При R = 111112 команда MOV выполняется иначе. В этом особом случае реализуется упомянутый в разнее механизм косвенной адресации. На рис. 4.7 представлен случай, когда по-прежнему d = 1.
Рис. 4.7 Информационные потоки в фазе выполнения команды MOV r from R, когда R=11112
Содержимое общих регистров Н и L, содержащих соответственно старшие 8 и младшие 8 разрядов адреса, подаются на адресную шину. Затем после подачи импульса «чтение» содержимое адресуемой ячейки главной памяти принимается из шины данных в общий регистр r. Ввиду того что для выполнения команды потребовался внешний обмен, командный цикл занял два машинных цикла.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|