Система команд микроконтроллера МК-51

  Мнемоника Режимы адресации Время, такт Действие  
  Арифметические инструкции
  ADD,A,byte Dir,Ind,Reg,Imm   A=A+byte  
  ADDC A,byte Dir,Ind,Reg,Imm   A=A+byte+C  
  DA A Аккумулятор   Десятичня коррекция  
  DEC A Аккумулятор   A=A-1  
  DEC byte Dir,Ind,Reg   byte=byte-1  
  DIV AB Аккумулятор и B   A=[A/B],B=mod(A/B)  
  INC A Аккумулятор   A=A+1  
  INC byte Dir,Ind,Reg   byte=byte+1  
  INC DPTR DPTR   DPTR=DPTR+!  
  MUL AB Аккумулятор и B   B,A=B*A  
  SUBB A,byte Dir,Ind,Reg,Imm   A=A-byte-C  
Логические инструкции  
  ANL A,byte Dir,Ind,Reg,Imm   A=A&byte  
  ANL byte,A Dir   byte= byte&A  
  ANL byte,#data Dir   byte= byte&#data  
  CLR A Аккумулятор   A=00h  
  CPL A Аккумулятор   A=^(A)  
  ORL A,byte Dir,Ind,Reg,Imm   A=A v byte  
  ORL byte,A Dir   byte= byte v A  
  ORL byte,#data Dir   byte= byte v #data  
  RL A Аккумулятор   A=(A)ЦСЛ на 1бит  
  RLC A Аккумулятор   A=(A)ЦСЛ на 1бит через С  
  RR A Аккумулятор   A=(A)ЦСП на 1бит  
  RRC A Аккумулятор   A=(A)ЦСП на 1бит через С  
  SWAP A Аккумулятор   A(7...4) <=> A(3...0)  
  XRL A,byte Dir,Ind,Reg,Imm   A=A Å byte  
  XRL byte,A Dir   byte= byte Å A  
  XRL byte,#data Dir   byte= byte Å #data  
Инструкции передачи данных во внутренней памяти данных  
  MOV A,src Dir,Ind,Reg,Imm   A=src  
  MOV dest, A Dir,Ind,Reg   dest=A  
  MOV dest, src Dir,Ind,Reg,Imm   dest=src  
  MOV DPTR,#data Imm   DPTR=data  
  PUSH src Dir   SP=SP+1; @SP=src  
  POP dest Dir   dest=@SP; SP=SP-1  
  XCH A,byte Dir,Ind,Reg   A <=> byte  
  XCHD A,@Ri Ind   A <=> @Ri  
  Инструкции передачи данных, использующие внешнюю память данных  
  MOVX A,@Ri     A=@Ri  
  MOVX @Ri,A     @Ri=A  
  MOVX A,@DPTR     A=@DPTR  
  MOVX @DPTR,A     @DPTR=A  
  Инструкции передачи данных, использующие память программ  
  MOVC A,@A+DPTR     A=@(A+DPTR)  
  MOVC A,@A+PC     A=@(A+PC)  
  Булевы инструкции  
  ANL C,bit bit   C=C & bit  
  ANL C,/bit bit   C=C & ^bit  
  CLR C Битовый аккумулятор   C=0  
  CLR bit bit   bit=0  
  CPL C Битовый аккумулятор   C=^C  
  CPL bit bit   bit=^bit  
  JC rel     Переход, если C=1  
  JNC rel     Переход, если C=0  
  JB bit,rel bit   Переход, если bit=1  
  JNB bit,rel bit   Переход, если bit=0  
  JBC bit,rel bit   Переход, если bit=1; bit=0  
  MOV C,bit bit   C=bit  
  MOV bit,C bit   bit=C  
  ORL C,bit bit   C=C v bit  
  ORL C,/bit bit   C=C v ^bit  
  SETB C Битовый аккумулятор   C=1  
  SETB bit bit   bit=1  
  Инструкции безусловных переходов  
  CALL adr ACALL adr LCALL adr     Вызов подпрограммы переход на ± 211 байт переход на ± 216 байт  
  JMP adr AJMP adr LJMP adr SJMP adr     PC=adr переход на ± 211 байт переход на ± 216 байт переход на ± 28 байт  
  JMP @A+DPTR     PC=A+DPTR  
  NOP     Пустая команда  
  RET     Возврат из подпрограммы  
  RETI     Возврат из обработчика прерывания  
  Инструкции условных переходов  
  CJNE A,byte,rel Dir,Imm   Переход, если A¹byte  
  CJNE byte,#data,rel Ind,Reg   Переход, если byte¹#data  
  DJNZ byte,rel Dir,Reg   byte=byte-1; переход, если byte¹0  
  JZ rel Аккумулятор   Переход, если A=0  
  JNZ rel Аккумулятор   Переход, если A¹0  
                 

Примечания

1.Режимы адресации:

Dir - прямая (регистры специальных функций или память данных);

Ind - косвенная (допустима только относительно регистров R0 и R1; в символической записи команды обозначается @R0 или @R1 соответственно);

Reg – регистровая;

Imm - непосредственная (в символической записи команды начинается с #);

bit - прямоадресуемый бит (в регистрах специальных функций или битовой памяти);

битовый аккумулятор - бит переноса C в PSW;

запись " byte " в графе "Мнемоника" оэначает, что операнд в этом поле может адресоваться с помощью любого режима адресации из указанных в графе "Режимы адресации";

в командах, допускающих прямую, но не регистровую адресацию, может указываться регистр общего назначения, однако при трансляции команды в машинное представление его номер будет в этом случае представлен не 3-, а 8-раз­рядным двоичным кодом, соответствующим прямому адресу этого регистра в памяти данных; некоторые Ассемблеры, в том числе используемый в данном лабораторном практикуме, требуют для таких команд указания в явном виде номера регистра как прямого адреса ячейки памяти данных.

2. Действия:

В инструкции MUL AB производится перемножение содержимого аккумулятора и регистра B. Старшие разряды произведения помещаются в аккумулятор, а младшие - в регистр B.

В инструкции DIV AB содержимое аккумулятора делит­ся на содержимое регистра B. Частное помещается в ак­ку­мулятор, а остаток - в регистр B. Операнды рассматриваются как целые числа без знака.

& - конъюнкция.

v – дизъюнкция.

Å - “исключающее ИЛИ”.

^ - логическое “НЕ”.

ЦСЛ - циклический сдвиг влево.

ЦСП - циклический сдвиг вправо.

В операциях сдвига через С участвует 9-разрядный регистр (8-разрядный аккумулятор и бит переноса С).

<=> обмен местами операндов.

В инструкции XCHD A,@Ri осуществляется обмен только младших тетрад операндов.

В инструкциях переходов

для безусловных переходов adr показывает, что в команде кодируется абсолютный адрес памяти программ, по которому осуществляется переход;

для условных переходов rel показывает, что в команде кодируется относительный адрес памяти программ, по которому осуществляется переход при выполнении указанного условия.

Во всех командах перехода при записи программы на ассемблере адрес перехода может быть задан меткой.

Некоторые ассемблеры, в том числе используемый в дан­ном лабораторном практикуме, для инструкции вызова подпрограммы и инструкции безусловного перехода требуют от программиста явного указания длины генерируемого адреса перехода, то есть записи в программе инструкций ACALL, LCALL, AJMP, LJMP, SJMP и не воспринимают инструкции CALL, JMP. Другие ассемблеры самостоятельно ге­­не­рируют инструкции, имеющие необходимую длину поля адреса в зависимости от места расположения адреса перехода, и по­этому допускают использование инструкций CALL и JMP.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: