- •Новые информационные технологии: Программирование мобильных и встраиваемых систем ИсСледование системы команд и адресного пространства микроконтроллера с помощью эмулятора
- •1.Цель и задачи работы
- •2.Краткие теоретические сведения
- •2.1 Архитектура и структурная организация омк
- •2.2 Организация памяти мк-51
- •2.3. Система команд мк51
- •1000Н: 76 10 mov @r0, #10h Запись байта 10h в ячейку памяти данных, адрес которой содержится в регистре r0
- •1000H: a8 50 mov r0, 50h Пересылка содержимого ячейки встроенной памяти данных 50h в регистр r0
- •1000H: 75 10 08 mov 10н, #00001000b Загрузка числа 08н в ячейку с адресом 10н
- •2.4. Кроссассемблер-эмулятор Single-Chip Machine
- •3.Порядок выполнения работы
- •4.Варианты заданий
- •5.Контрольные вопросы
- •Список рекомендуемой литературы
2.3. Система команд мк51
Система команд МК51 содержит 111 базовых команд, которые удобно разделить по функциональному признаку на пять групп: команды передачи данных, арифметических операций, логических операций, операций передачи управления и операций с битами.
Большинство команд (94) имеют формат один или два байта и выполняются за один или два машинных цикла. При тактовой частоте 12 МГц длительность машинного цикла составляет 1 мкс.
Ниже приведены 13 типов команд МК51. Первый байт команды всегда содержит код операции (КОП). Второй и третий байты содержат либо адреса операндов, либо непосредственные операнды.
D 7...D0
1. КОП (NOP, RR A, INC A.)
D7...D0
2. КОП #d (MOV R0,#FFh)
3. КОП ad (MOV R0, 21h)
4. КОП bit (CPL 1Fh)
5. КОП rel (SJMP J1)
6. A+КОП A7...A0 (AJMP J2)
D7...D0
7. КОП ad #d (M0V 21h, #Afh)
8. КОП ad rel (DJNZ 21h, J3)
9. КОП ads add (MOV 48h, 45h)
10. КОП #d rel (CJNE A, #Bfh, J4)
11. КОП bit rel (JB E2, J5)
12. КОП ad16h ad16l (LCALL START)
13. КОП #d16h #d16l (MOV DPTR, #1234h)
В таблице 1 приведена система команд микроЭВМ семейства МК51.
Таблица 1.
7-4\ 3-0 |
0000(0) |
0001(1) |
0010(2) |
0011(3) |
0100(4) |
0101(5) |
0110(6) |
0111(7) |
0000(0) |
NOP |
AJMP addr |
LJMP addr |
RR A |
INC A |
INC direct |
INC @R0 |
INC @R1 |
0001(1) |
JBC bit, adr |
ACALL addr |
LCALL addr |
RRC A |
DEC A |
DEC direct |
DEC @ R0 |
DEC @ R1 |
0010(2) |
JB bit,addr |
AJMP addr |
RET |
RL A |
ADD A,#data |
ADD A, drct |
ADD A,@R0 |
ADD A,@R1 |
0011(3) |
JNB bit,addr |
ACALL addr |
RETI |
RLC A |
ADDC A,#data |
ADDC A, drct |
ADDC A,@R0 |
ADDC A,@R1 |
0100(4) |
JC addr |
AJMP addr |
ORL drct, A |
ORL drct,#d |
ORL A, #data |
ORL A, #direct |
ORL A, @R0 |
ORL A, @R1 |
0101(5) |
JNC addr |
ACALL addr |
ANL drct,A |
ANL drct,#d |
ANL A,#data |
ANL A,#drct |
ANL A , @R0 |
ANL A , @R1 |
0110(6) |
JZ addr |
AJMP addr |
XRL drct, A |
XRL drct, #d |
XRL A, #data |
XRL A, #direct |
XRL A, @R0 |
XRL A, @R1 |
0111(7) |
JNZ addr |
ACALL addr |
ORL C, bit |
JMP@A+DPTR |
MOV A,#data |
MOV drct,#d |
MOV @R0,#d |
MOV @R1,#d |
1000(8) |
SJMP addr |
AJMP addr |
ANL C,bit |
MOVC A,@A+PC |
DIV AB |
MOV direct, direct |
MOV direct, @R0 |
MOV direct, @R1 |
1001(9) |
MOV DPTR, #data |
ACALL addr |
MOV bit, C |
MOVC A,@A+ DPTR |
SUBB A,#data |
SUBB A, drct |
SUBB A,@R0 |
SUBB A,@R1 |
1010(A) |
ORL C, / bit |
AJMP addr |
MOV C, bit |
INC DPTR |
MUL AB |
|
MOV @R0, direct |
MOV @R1, direct |
1011(B) |
ANL C, / bit |
ACALL addr |
CPL bit |
CPL C |
CJNE A, #d, addr |
CJNE A, drct, addr |
CJNE @R0, #d,addr |
CJNE @R1, #d,addr |
1100(C) |
PUSH direct |
AJMP addr |
CLR bit |
CLR C |
SWAP A |
XCH A,#drct |
XCH A,@R0 |
XCH A,@R1 |
1101(D) |
POP direct |
ACALL addr |
SETB bit |
SETB C |
DA A |
DJNZ drct,adr |
XCHD A,@R0 |
XCHD A,@R1 |
1110(E) |
MOVX @DPTR, A |
AJMP addr |
MOVX A, @R0 |
MOVX A, @R1 |
CLR A |
MOV A, direct |
MOV A, @R0 |
MOV A, @R1 |
1111(F) |
MOVX @DPTR,A |
ACALL addr |
MOVX @R0,A |
MOVX @R1,A |
CPL A |
MOV direct,A |
MOV @R0,A |
MOV @R1,A |
7-4\ 3-0 |
1000(8) |
1001(9) |
1010(A) |
1011(B) |
1100(C) |
1101(D) |
1110(E) |
1111(F) |
0000(0) |
INC R0 |
INC R1 |
INC R2 |
INC R3 |
INC R4 |
INC R5 |
INC R6 |
INC R7 |
0001(1) |
DEC R0 |
DEC R1 |
DEC R2 |
DEC R3 |
DEC R4 |
DEC R5 |
DEC R6 |
DEC R7 |
0010(2) |
ADD A, R0 |
ADD A, R1 |
ADD A, R2 |
ADD A, R3 |
ADD A, R4 |
ADD A, R5 |
ADD A, R6 |
ADD A, R7 |
0011(3) |
ADDC A, R0 |
ADDC A, R1 |
ADDC A, R2 |
ADDC A, R3 |
ADDC A, R4 |
ADDC A, R5 |
ADDC A, R6 |
ADDC A, R7 |
0100(4) |
ORL A, R0 |
ORL A, R1 |
ORL A, R2 |
ORL A, R3 |
ORL A, R4 |
ORL A, R5 |
ORL A, R6 |
ORL A, R7 |
0101(5) |
ANL A, R0 |
ANL A, R1 |
ANL A, R2 |
ANL A, R3 |
ANL A, R4 |
ANL A, R5 |
ANL A, R6 |
ANL A, R7 |
0110(6) |
XRL A, R0 |
XRL A, R1 |
XRL A, R2 |
XRL A, R3 |
XRL A, R4 |
XRL A, R5 |
XRL A, R6 |
XRL A, R7 |
0111(7) |
MOV R0, #d |
MOV R1, #d |
MOV R2, #d |
MOV R3, #d |
MOV R4, #d |
MOV R5, #d |
MOV R6, #d |
MOV R7, #d |
1000(8) |
MOV drct,R0 |
MOV drct,R1 |
MOV drct,R2 |
MOV drct,R3 |
MOV drct,R4 |
MOV drct,R5 |
MOV drct,R6 |
MOV drct,R7 |
1001(9) |
SUBB A, R0 |
SUBB A , R1 |
SUBB A , R2 |
SUBB A , R3 |
SUBB A , R4 |
SUBB A , R5 |
SUBB A , R6 |
SUBB A , R7 |
1010(A) |
MOV R0,drct |
MOV R1,drct |
MOV R2,drct |
MOV R3,drct |
MOV R4,drct |
MOV R5,drct |
MOV R6,drct |
MOV R7,drct |
1011(B) |
CJNE R0, #d, addr |
CJNE R1, #d, addr |
CJNE R2, #d, addr |
CJNE R3, #d, addr |
CJNE R4, #d, addr |
CJNE R5, #d, addr |
CJNE R6, #d, addr |
CJNE R7, #d, addr |
1100(C) |
XCH A, R0 |
XCH A, R1 |
XCH A, R2 |
XCH A, R3 |
XCH A, R4 |
XCH A, R5 |
XCH A, R6 |
XCH A, R7 |
1101(D) |
DJNZ R0,addr |
DJNZ R1,addr |
DJNZ R2,addr |
DJNZ R3,addr |
DJNZ R4,addr |
DJNZ R5,addr |
DJNZ R6,addr |
DJNZ R7,addr |
1110(E) |
MOV A, R0 |
MOV A, R1 |
MOV A, R2 |
MOV A, R3 |
MOV A, R4 |
MOV A, R5 |
MOV A, R6 |
MOV A, R7 |
1111(F) |
MOV R0, A |
MOV R1, A |
MOV R2, A |
MOV R3, A |
MOV R4, A |
MOV R5, A |
MOV R6, A |
MOV R7, A |
Для адресации бит используется прямой 8-битный адрес. Косвенная адресация бит невозможна. 4-битные операнды используются только при операциях обмена (команды SWAP и XCHD). 8-битным операндом может быть ячейка памяти программ или данных, константа, регистры специальных функций и порты ввода-вывода. Порты и SFR адресуются только прямым способом. Байты памяти могут адресоваться также и косвенным образом через адресные регистры (R0, R1, DPTR, PC). Двухбайтные операнды - это константы и прямые адреса, для представления которых используются 2 и 3 байты команд.
Набор команд MК-51 поддерживает следующие режимы адресации.
Прямая адресация (Direct Addressing).
Операнд определяется 8-битным адресом в инструкции. Эта адресация используется только для внутренней памяти данных и регистров SFR.
Косвенная адресация (Indirect Addressing).
В этом случае инструкция адресует регистр, содержащий адрес операнда. Для указания 8-битных адресов могут использоваться регистры R0 и R1 выбранного регистрового банка или указатель стека SP. Для 16-битной адресации используется только DPTR. Например: