ЛР3. Ознакомление с командами и интерфейсом макета МП-589. Выполнение тестовых задач (1065587), страница 6
Текст из файла (страница 6)
Рассмотрим трехбайтную команду условного перехода TZR2. Команда позволяет делать переход к команде, указанной во втором байте, если содержимое регистра R2=0. Если условие не соблюдается, то осуществляется переход к команде, адрес которой указан в третьем байте команды.
В микрокоманде 1 используется инструкция TZR2 ЦПЭ, по ней проверяют содержимое регистра R2 и формируют сигнал СО = CI Rn, который при R2 = 0 принимает значение С0 = 0, а при R20 — значение СО = 1. Для выполнения инструкции TZR2 в микрокоманде приняты следующие значения микроинструкций: F=(52)16; С1,2 =(11)2; K=(0)16.
Значение сигнала С0 используется в микрокоманде 1 для формирования условного перехода. Для этого микроинструкция CN = (011)2 формирует код, при котором выходной сигнал мультиплексора MS будет определяться сигналом СО, следовательно, сигнал СО определяет значение адреса АО следующей микрокоманды. Разряды А1—А8 следующей микрокоманды определяются кодом NA=(A1)16.
В зависимости от значения СО после микрокоманды 1 будет исполняться либо 2-я (при С0=0), либо 3-я микрокоманда (при С0=1).
В микрокоманде 2 применяется “холостая” инструкция NOP, по которой содержимое регистра переписывается без изменения в свой же регистр. Операция NOP выполняется при F = (6)8(C)16; К = (F)16. В регистре PC(R8) сохраняется адрес следующего за исполняемой командой кода.
В микрокоманде 3 содержимое счетчика команд увеличивается на единицу с помощью операции INR ЦПЭ, по которой содержимое Rn при С1 = 1 увеличивается на единицу: Rn+CIRn. Увеличение R8 на единицу выполняется при следующих значениях микроинструкций: F == (3)7(8)16; С1,2==(00)2; К = (F)16.
Микроинструкции NA и CN в микрокомандах 2 и 3 совпадают и определяют адрес команды GO TO; NA=(0A)16; CN= (001)2. Таким образом, в команде TZR2 используется как составная часть команда GO TO, а рассмотренные три команды подготавливают, исходя из результатов сравнения, значение кода программного счетчика PC перед входом в программу GO TO.
Рассмотрим команды, обеспечивающие обращение к стековой памяти CALL и RETURN. При выполнении команды CALL необходимо уменьшить на единицу содержимое указателя стека SP(R9) и по адресу, определяемому содержимым регистра R9, записать увеличенное на единицу содержимое PC(R8). Первая микрокоманда обеспечивает запись содержимого АС в регистр Т аналогично микрокоманде 1 команды GO TO.
В микрокоманде 2 используется инструкция DSM ЦПЭ для уменьшения содержимого R9 на единицу: Rn-l+CIRn. Переменной CI микроинструкцией С1,2=(11)2 присваивается нулевое значение. Инструкция DSM выполняется при кодах микроинструкций F=(1)8(9)16; С1,2=(11)2; К=(0)16.
Микрокоманда 3 пересылает содержимое R9 в RA, для этого используется инструкция LMI, которая выполняется при следующих микроинструкциях: F = (1)8(9)16> С1,2 == (11)2; К = (F)16.
В микрокоманде 4 содержимое PC(R8) записывается в АС по инструкции ALR, а в микрокоманде 5 содержимое АС увеличивается на единицу по инструкции INA.
Микрокоманды 6, 7 и 8 организуют временную задержку, определяемую динамикой работы ОЗУ. Микроинструкция R/W принимает значение “1”, переводя ОЗУ в режим записи. После выполнения микрокоманды 8 в ячейку памяти с адресом, расположенным в RA, запишется содержимое АС, что соответствует записи в стековую память адреса команды, по которому будет осуществлен выход из подпрограммы.
В микрокоманде 8 формируется переход к микрокоманде 2 подпрограммы GO TO, обеспечивающей передачу управления команде, указанной во втором байте команды CALL. Команда RETURN обеспечивает переход к основной программе после выполнения подпрограммы. Микрокоманда 1 записана по адресу (A9)16(l)2 и обеспечивает запись содержимого SP(R9) в регистр RA по инструкции LMI ЦПЭ, после чего микрокомандой 2 содержимое R9 увеличивается на единицу по инструкции INR. Микрокоманда 3 обеспечивает запись содержимого АС в регистр Т по инструкции SDA и передает управление микрокоманде 3 программы GO TO. При этом установленный в RA код указателя стека определяет адрес ячейки ОЗУ, где записан код очередной команды основной программы, из которой было произведено обращение к подпрограмме.
В изучаемой микроЭВМ разработка рабочих программ ведется на уровне команд. Записывают программы в ОЗУ с помощью управляющих программ, обращение к которым осуществляется с блока клавиатуры.
Система команд микроЭВМ. Система команд микроЭВМ предназначена для реализации на ее основе рабочих программ.
В систему команд входят следующие команды: арифметических и логических операций; переходов; работы с памятью; управления внешними устройствами; работы со стеком.
Команды арифметических и логических операций. Команда 0Rn очищает регистр, т. е. во все разряды регистра заносятся логические 0. Шестнадцатеричный код этой команды и всех последующих приведены в табл. 9.6.
Команда Rn+IRn выполняет арифметическое сложение содержимого регистра с единицей и занесение полученного результата в тот же регистр.
Команда RnAC пересылает содержимое регистра в АС, при этом содержимое регистра Rn не изменяется.
Команда ACRn пересылает содержимое АС в регистр Rn, при этом содержимое АС не меняется.
Команда Rn+ACRn, AC выполняет арифметическое сложение содержимого регистра Rn с содержимым АС, результат выполнения операции заносится в регистр Rn и в АС.
Команда Rn-IRn выполняет арифметическую операцию вычитания единицы из содержимого регистра Rn; результат выполнения операции заносится в регистр Rn.
Команда АСАС осуществляет логическую операцию инверсии содержимого АС; результат выполнения операции заносится в АС.
Команда FFAC заносит в АС шестнадцатеричный код FF, т. е. каждый разряд АС устанавливается в состояние “1”.
Команда ALRn трехбайтная складывает содержимое регистра Rn с содержимым АС и записывает результат в АС. После операции сложения в команде ALRn реализуется условный переход по значению СО. При С0=0 управление передается команде с адресом, записанным во втором байте команды ALRn при С0=1, адрес следующей команды определяется содержимым третьего байта команды ALRn.
Команда ALA, аналогичная ALRn, осуществляет удвоение содержимого АС, что эквивалентно сдвигу содержимого АС на один разряд влево.
Команды переходов. Команда безусловного перехода GO TOn определяет передачу управления к оператору активной программы с номером п. Команда двухбайтная; первым байтом является код команды, вторым — адрес (или номер оператора активной программы, которому необходимо передать управление):
1-й байт код команды
2-й байт адрес n
Команда условного перехода TZRN передает управление по условию: логические нули во всех разрядах регистра RN. Команда трехбайтная; первым байтом является код команды, вторым — адрес перехода, если условие выполняется, третьим — адрес перехода, если условие не выполняется:
1-й байт код команды
2-й байт адрес А1 Rn = 0
3-й байт адрес А2 Rn 0
Команда условного перехода SRA сдвигает содержимое АС вправо т. е. в сторону младших разрядов) на один разряд и осуществляет условный переход в зависимости от содержимого младшего разряда АС.
Таблица 9.6
Команда | Код | Команда | Код | Команда | Код | Команда | Код | Команда | Код |
0R0 | B7 | R0AC | A8 | R0+ACR0, AC | 77 | TZR0 | 8A | ALR0 | 2D |
0R1 | B8 | R1AC | A9 | R1+ACR1, AC | 78 | TZR1 | 8B | ALR1 | 30 |
0R2 | B9 | R2AC | AA | R2+ACR2, AC | 79 | TZR2 | 8C | ALR2 | 33 |
0R3 | BA | R3AC | AB | R3+ACR3, AC | 7A | TZR3 | 8D | ALR3 | 36 |
0R4 | BB | R4AC | AC | R4+ACR4, AC | 7B | TZR4 | 8E | ALR4 | 39 |
0R5 | BC | R5AC | AD | R5+ACR5, AC | 7C | TZR5 | 8F | ALR5 | 3F |
0R6 | BD | R6AC | AE | R6+ACR6, AC | 7D | TZR6 | 90 | ALR6 | 44 |
0R7 | BE | R7AC | AF | R7+ACR7, AC | 7E | TZR7 | 91 | ALR7 | 49 |
0AC | BF | AC+ACAC | 7F | TZA | 92 | ALA | 4C | ||
R0+1R0 | C7 | ACR0 | 5A | R0RA, ACM | 95 | ||||
R1+1R1 | C8 | ACR1 | 5B | R1RA, ACM | 96 | FORMAT: | FORMAT: | ||
R2+1R2 | C9 | ACR2 | 5C | R2RA, ACM | 97 | TZ Rn | XX | ALRn | XX |
R3+1R3 | CA | ACR3 | 5D | R3RA, ACM | 98 | A1, ifRn = 0 | A1 | A1, ifC0 = 0 | A1 |
R4+1R4 | CB | ACR4 | 5E | R4RA, ACM | 99 | A2, ifRn 0 | A2 | A2, ifC0 = 1 | A2 |
R5+1R5 | CC | ACR5 | 5F | R5RA, ACM | 9A | SRA0 | 93 | GO Ton | 0A |
R6+1R6 | CD | ACR6 | 60 | R6RA, ACM | 9B | (0AC7, AC0C0) | n | n | |
R7+1R7 | CE | ACR7 | 61 | R7RA, ACM | 9C | SRA1 | 16 | CALLn | 65 |
AC+1AC | CF | ACRA, ACM | 9D | (1AC7, AC0C0) | n | n | |||
R0-1R0 | 66 | MnAC | 9E | R0RA, MAC | E7 | ||||
R1-1R1 | 67 | n | n | R1RA, MAC | E8 | FORMAT: | RET | A7 | |
R2-1R2 | 68 | ACMn | 9F | R2RA, MAC | E9 | SRAn | XX | END | A0 |
R3-1R3 | 69 | n | n | R3RA, MAC | EA | A1, ifC0 = 0 | A1 | OUTn | A4 |
R4-1R4 | 6A | ACMn | 72 | R4RA, MAC | EB | A2, ifC0 = 1 | A2 | n | n |
R5-1R5 | 6B | FFAC | 73 | R5RA, MAC | EC | JFS | 94 | INn | 4E |
R6-1R6 | 6C | R6RA, MAC | ED | A1, ifNOSiGN | A1 | n | n | ||
R7-1R7 | 6D | R7RA, MAC | EE | A2, ifSiGNAL | A2 | ||||
AC-1AC | 6E | ACRA, MAC | EF | JFFn | 54 | MSC | 75 | ||
n | n | FRIQ | n1 | ||||||
A1, ifRDY1 = 1 | A1 | TIME | n2 | ||||||
A2, ifRDY1 = 0 | A2 | 00 | 00 |
Команда трехбайтная: первым байтом является код команды, вторым — адрес перехода, если младший разряд АС был равен “0”, третьим — адрес перехода, если младший разряд АС был равен “1”. Если используется команда SRAO, то в старший разряд АС заносится “0”, если SRA1, то “1”.