Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Система команд и способы адресации




 

Система команд микропроцес­сора КР580ИК80А представлена 244 кодами операций, которые могут быть расклассифицированы по разным признакам. Наибо­лее существенными для ознакомления с особенностями их ис­пользования являются следующие три признака: длина коман­ды, или число занимаемых байтов, функциональный признак, или выполняемые командой операции, и способ адресации. Полный перечень команд приведен в приложении 1. В таблице приведены символическая запись (мнемокод) команды, описа­ние выполняемых ею функций, длина в байтах, обозначения изменяемых флагов и число машинных тактов, занимаемых при ее выполнении. Из 256 возможных кодов (при восьми двоичных разрядах) не используются следующие 12 кодовых комбинаций (в восьмеричной записи): 010, 020, 030, 040, 050, 060, 070, 313, 331, 335, 355 и 375. Этим и объясняется коли­чество всех команд: 244. Команды в таблице разбиты на три группы по числу занимаемых байтов: все команды делятся на однобайтовые, двухбайтовые и трехбайтовые. При этом первый байт всегда отводится под код команды, а второй и третий байты содержат либо данные, либо адрес, по которому они находятся в памяти (рис. 4.6).

Восьмеричные коды всех однобайтовых, двухбайтовых и трехбайтовых команд приведены соответственно в табл. 4.1, 4.2 и 4.3. При этом в табл. 4.1 наряду с обычными указаны обобщенные коды, т. е. коды, содержащие кроме восьмерич­ных цифр кодовые переменные S, D и А. В табл. 4.1 если код команды содержит только цифры, это означает, что существует единственная команда с соответствующим кодом. Некоторые коды кроме цифр содержат буквы: S (первые И команд), D (третья команда) и А (последняя команда). Таким кодам соответствуют множества команд. При этом каждой команде из первых 11 команд, кроме третьей, соответствует группа конкретных команд, мнемокод которых вместо символа г (регистр) содержит обозначения конкретных регистров (В, С, D, Е, Н, L), либо символ памяти (М), либо символ аккуму­лятора (А). Соответствующий конкретный восьмеричный код команды вместо символа S должен содержать одну из цифр: О, 1, 2, 3, 4, 5, 6, 7 соответственно, т. е. символу В в мнемо­коде соответствует цифра 0 в восьмеричном коде, символу С в мнемокоде — цифра 1 в восьмеричном коде и т. д,..., симво­лу М в мнемокоде — цифра 6 в восьмеричном коде и, наконец, символу А в мнемокоде — цифра 7 в восьмеричном коде. Для третьей команды в табл. 4.1 точно такая же аналогия соблюда­ется для пар символов гь г2 и D, S. Последняя команда табли­цы содержит символ А в мнемокоде и в восьмеричном коде. Она соответствует группе из восьми конкретных команд, в каж­дой из которых символ А принимает одно из значений: О, 1,......,7.

Рис. 4.6. Форматы команд: однобайтовой (а), двухбайтовой (б), трехбай­товой (в)

 

Таблица 4.1
Код Команда Код Команда     Код Команда
OS4 INR r     DAD H     RM  
OS5 DCR r     DAD SP   RET  
1DS MOV r1r2   POP В     RLC  
20S ADD r     POP D     RRC  
21S ADC r     POP H     RAL  
22S SUB r     POP PSW   RAR  
23S SBB r     PUSH В     XCHG
24S ANA r     PUSH D     XTHL
25S XRA r     PUSH H     SPHL
26S ORA r     PUSH PSW   PCHL
27S CMP r     STAX В     HLT  
  INX в     STAX D     NOP  
  INX D     LDAX В     DI  
  INX H     LDAX D     El  
  INX SP   RNZ       DAA  
  OCX В     RZ       CMA  
  OCX D     RNC       STC  
  OCX H     RC       CMC  
  DCX SP   RPO     3A7 RST A
  DAD В     RPE          
  DAD D     RP          
Таблица 4.2
Код Команда Код Команда
  ADI   <B2>     OUT <B2>  
  ACI   <B2>       MVI В <B2>  
  SUI   <B2>       MVI С <B2>  
  SBI   <B2>       MVI D <B2>  
  ANI   <B2>       MVI E <B2)  
  XRI   <B2>       MVI H <B2>  
  ORI   <B2>       MVI L <B2>  
  CPI   <B2>       MVI M <B2>  
  IN   <B2>       MVI A <B2>  
Таблица 4.3  
Код Команда Код Команда  
  JNZ <В2><ВЗ>   СРО <B2><B3>  
  JZ <В2><ВЗ>   СРЕ <B2><B3>  
  JNC <В2><ВЗ>   СР <B2><B3>  
  JC <В2><ВЗ>   СМ <B2><B3>  
  JPO <В2><ВЗ>   CALL <B2><B3>  
  JPE <В2><ВЗ>   LXIB <B2><B3>  
  JP <В2><ВЗ>   LXI D <B2><B3>  
  JM <В2><ВЗ>   LXIH <B2><B3>  
  JMP <В2><ВЗ>   LXISP <B2><B3>  
  CNZ <В2><ВЗ>   STA <B2><B3>  
  CZ <В2><ВЗ>   LDA <B2><B3>  
  CNC <В2><ВЗ>   SHLD <B2><B3>  
  СС <В2><ВЗ>   LHLD <B2><B3>  
                               

 

Как видно из табл. 4.2, микропроцессор КР580ИК80А может выполнять всего 18 двухбайтовых и 26 трехбайтовых команд, приведенных в табл. 4.3.

Прежде чем переходить к обзору особенностей выполнения различных операций приведенными командами, остановимся на возможных способах адресации. Под способом или режи­мом адресации подразумевается способ определения данных, участвующих в операциях, или, иначе говоря, способ определе­ния операндов. Для составления программы важно знать осо­бенности процедур, позволяющих преобразовать информацию об адресах команд и данных в физические адреса участков памяти машины.

Для МП КР580ИК80А существуют следующие четыре воз­можных способа адресации: непосредственная, прямая, регист­ровая и косвенная.

Непосредственная адресация является наиболее экономичным способом хранения и поиска информации, поскольку необходи­мые данные содержит сама команда. Эти данные содержатся во втором и третьем байтах трехбайтовой команды или во вто­ром байте двухбайтовой команды. В случае трехбайтовой коман­ды младшие разряды 16-битового числа содержатся во втором байте команды, а старшие - в третьем (рис. 4.7, а).

Менее экономичной, но также довольно простой является прямая адресация. В этом случае во втором и третьем байтах команды содержится полный 16-разрядный адрес памяти. Млад­шим байтом адреса является <В2>, старшим — <ВЗ) (рис. 4.7,6). Таким способом можно адресоваться к любой ячейке адресного пространства памяти.

При регистровой адресации код команды содержит указание на регистр или пару регистров, в которых содержатся данные. Используемые в регистровой адресации команды являются однобайтовыми (рис. 4.7,в). Возможность указания пары ре­гистров в однобайтовой команде реализуется за счет того, что адреса регистров являются трехразрядными двоичными кодами.

Косвенная адресация отличается от регистровой лишь тем, что в регистровой паре, определяемой кодом команды, содержатся не данные, а полный 16-разрядный адрес ячейки памяти,в кото­рой имеются эти данные (рис. 4.7,г). Старший байт адреса за­писывается в первом регистре пары, а младший байт — во вто­ром. Обычно указателем адреса при косвенной адресации явля­ются пара регистров Н, т. е. регистры Н, L, но иногда использу­ются и пары В и D.

При всевозможных пересылках данных из регистров в регист­ры или из памяти в регистры или обратно различают регистры — источники данных и регистры — приемники данных. Первые обо­значаются символом S (source — источник), вторые — симво­лом D (destination — место назначения). В регистровых парах В, С; D, Е и Н, L старшими являются первые регистры пар, т. е. регистры В, D, Н соответственно. Коды регистров общего назначения, пар регистров и флагов строго фиксированы (табл. 4.4).

В табл. 4.4 обозначение условия в мнемокоде команды в зависимости от значения флагов расшифровывается следую­щим образом: NZ — результат ненулевой; Z — результат нуле­вой; NC — нет переноса; С — есть перенос; РО - нет четности; РЕ — есть четность; Р — результат положительный (плюс); М -результат отрицательный (минус).

Рис. 4.7. Способы адресации: непосредственная (а), прямая (б), регист­ровая (в) и косвенная (г)

 

Все команды по функциональному признаку могут быть разбиты на следующие пять групп: группа команд пересылки данных, арифметические команды, логические команды, коман­ды переходов и команды управления и работы со стеком. Рас­смотрим работу наиболее типичных представителей этих групп команд, многие из которых вошли в описываемую ниже про­грамму-монитор (см. § 7.4).

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...