Дополнение аккумулятора
CMA | <B1> | |
7 0 |
С помощью этой команды производится инвертирование всех разрядов аккумулятора. Команда выполняется в течение одного цикла (4 такта). Значение триггеров признаков при этом не изменяется.
Пример:
0823) CMA
Адрес/ регистр | Код до выполнения операции | Код после выполнения операции |
2F | 2F | |
A | F2 | 0D |
FL | ||
PC |
Команды перехода и вызова подпрограмм
Команды этой группы позволяют изменять последовательность выполнения команд программы. Существуют два способа изменения этой последовательности. Первый из них называется безусловным. Согласно этому способу последовательность выполнения программы подвергается изменению всякий раз, когда реализуется определенная команда. В соответствие со вторым способом последовательность выполнения команд программы определяется некоторыми условиями, т.е. изменяется только в том случае, когда значение указанного условия совпадает с заданным.
Команды перехода и вызова подпрограмм являются одной из составных частей процесса принятия решений. В результате выполнения команд арифметической и логической обработки данных вырабатываются значения признаков в регистре состояния. Команды перехода и вызова подпрограмм проверяют значения разрядов регистра состояния и определяют последующий ход выполнения программ в зависимости от результата проверки
Команды перехода, называемые также командами ветвления, позволяют организовать в программах циклы и разветвления.
Команды вызова подпрограмм дают возможность сократить объем разрабатываемых программ за счет повторного использования подпрограмм. Наличие в МП стека с указателем стека делает возможным возврат в главную программу после выполнения подпрограммы.
Команды переходов
Эти команды занимают в оперативной памяти 3 байта и выполняются за 3 машинных цикла (10 тактов). Во всех этих командах применяется прямая адресация.
При выполнении команды перехода изменяется содержимое счетчика команд PC. Содержимое второго и третьего байтов команды перехода пересылается автоматически в счетчик команд во время фазы выполнения. Тогда при очередном цикле выборки МП извлекает команду из области памяти, на которую указывает 2-й и 3-й байты команды перехода. Таким образом, происходит переход в другую точку программы. Теперь выполняются одна за другой команды новой последовательности. Это продолжается до тех пор, пока не будет опять выполнена команда перехода.
а) Переход безусловный
JMP Адрес | (PC) <B3><B2> B1 | |
B2 | Мл. байт адреса | |
B3 | Ст. байт адреса | |
7 0 |
После этой команды выполнение программы продолжается с новой исходной точки, т.е. с адреса, содержащегося в байтах В2 и ВЗ команды перехода.
б) Переходы условные
(PC) <B3><B2>, если проверяемое условие выполняется; в противном случае PC (PC )+3, т.е. выполняется следующая команда после команды условного перехода | B1 | ССС | ||
B2 | Мл. байт адреса | |||
B3 | Ст. байт адреса | |||
7 0 |
Значение разрядов ССС команда выбирается в зависимости от проверяемого условия. В МП К580 имеется возможность делать переходы в зависимости от результата проверки следующих условий:
Команда перехода | Проверяемое условие | Значение ССС |
JNZ Адрес | (Tz) = 0 | |
JZ Адрес | (Tz) = 1 | |
JNC Адрес | (Tc) = 0 | |
JC Адрес | (Tc) = 1 | |
JPO Адрес | (Tp) = 0 | |
JPE Адрес | (Tp) = 1 | |
JP Адрес | (Ts) = 0 | |
JM Адрес | (Ts) = 1 |
Примеры:
0806) JMP beep
beep:0A76
Адрес/ регистр | Код до выполнения операции | Код после выполнения операции |
C3 | C3 | |
0A | 0A | |
PC | 0A76 | |
FL |
0A58) JMP beep
beep:0B43
Адрес/регистр | Код до выполнения операции | Код после выполнения операции |
0A58 | C3 | C3 |
0A59 | ||
0A5A | 0B | 0B |
PC | 0A58 | 0B43 |
FL |
0921)JNZ L0
L0: 0A42
Адрес/регистр | Код до выполнения операции | Код после выполнения операции |
C2 | C2 | |
0A | 0A | |
PC | 0A42 | |
FL | 02 (TZ=0) |
0800) JNZ L0
L0: 09FE
Адрес/ регистр | Код до выполнения операции | Код после выполнения операции |
C2 | C2 | |
FE | FE | |
PC | ||
FL | 42 (TZ=1) |
0921) JC L0
L0: 0A42
Адрес/ регистр | Код до выполнения операции | Код после выполнения операции |
DA | DA | |
0A | 0A | |
PC | 0A42 | |
FL | 03 (TC=1) |
0921) JC L0
L0: 0A42
Адрес/регистр | Код до выполнения операции | Код после выполнения операции |
DA | DA | |
0A | 0A | |
PC | ||
FL | 02 (TC=0) |
Дата добавления: 2016-03-10; просмотров: 674;