Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Описание машинных команд (продолжение 2)




MUL AB - умножение.

Описание: перемножает целые восьмибитовые беззнаковые числа, хранящиеся в аккумуляторе и регистре В. Старший байт 16-битового произведения помещается в регистр В, а младший байт - в регистр А.

Пример: MUL AB

Количество байт: 1

Количество циклов: 4

Действие команды: (PC) = (PC) + 1

(A) = Low((A)*(B))

(B) = High(A)*(B)

Машинный код:

1 0 1 0 0 1 0 0

NOP - нет операции

Описание: Кроме программного счетчика не изменяет ни одного регистра, на флаги не воздействует.

Пример: NOP

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

Машинный код:

0 0 0 0 0 0 0 0

ORL <байт приемник>,<байт источник> - "логическое ИЛИ" для байтовых переменных

Описание: выполняет операцию побитового "логического ИЛИ" между указанными переменными. Результат сохраняется в приемнике. Команда не воздействует на флаги.

Для команды ORL с аккумулятором в качестве байта назначения разрешены следующие режимы адресации байта - источника:

  • регистровая;

Пример: ORL A, R3

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(A) = (A) V (Rn), n=0,1,2,3,4,5,6,7

Машинный код:

0 1 0 0 1 r r r

  • косвенно-регистровая;

Пример: ORL A, @R0

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(A) = (A) V ((Ri)), i=0,1

Машинный код:

0 1 0 0 0 1 1 i

  • прямая;

Пример: ORL A, 30h

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(A) = (A) V (direct)

Машинный код:

0 1 0 0 0 1 0 1

d d d d d d d d

  • непосредственная.

Пример: ORL A, #100

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(A) = (A) V (date 8)

Машинный код:

0 1 0 0 0 1 0 0

i i i i i i i i

Для команды ORL с произвольным адресом ячейки внутренней памяти данных в качестве байта назначения разрешены следующие режимы адресации байта - источника:

  • прямая;

Пример: ORL 30h,A

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(direct) = (A) V (direct)

Машинный код: 0 1 0 0 0 0 1 0

d d d d d d d d

  • непосредственная.

Пример: ORL direct, #100

Количество байт: 3

Количество циклов: 2

Действие команды: (PC) = (PC) + 3

(direct) = (A) V (date 8)

Машинный код:

0 1 0 0 0 0 1 1

d d d d d d d d

i i i i i i i i

Примечание: при выполнении команды ORL над содержимым внешнего порта используется значение из внутреннего регистра, а не данные, присутствующие на выводах микросхемы!

ORL C,<бит источника> - логическое ИЛИ битовых переменных.

Описание: Если бит источника равен 1, то происходит запись во флаг переноса единицы, в противном случае флаг переноса не изменяет текущего значения. На остальные флаги команда не воздействует.

  • прямая битовая адресация;

Пример: ORL С, 20h

Количество байт: 2

Количество циклов: 2

Действие команды: (PC) = (PC) + 2

(C) = (C) V (bit)

Машинный код:

0 1 1 1 0 0 1 0

b b b b b b b b

Знак '/' перед операндом в языке ассемблера указывает на то, что в качестве значения используется логическое отрицание адресуемого бита, при этом сам бит источника не изменяется.

  • прямая битовая адресация;

Пример: ORL С, /20h

Количество байт: 2

Количество циклов: 2

Действие команды: (PC) = (PC) + 2

(C) = (C) V not(bit)

Машинный код:

1 0 1 0 0 0 0 0

b b b b b b b b

РОР <direct> - чтение из стека.

Описание: Считывает содержимое ячейки внутренней памяти, на которую указывает регистр указателя стека, после этого содержимое указателя стека уменьшается на 1. Считанная величина помещается во внутреннюю память по адресу, указанному во втором байте команды.

  • прямая;

Пример: POP 30h

Количество байт: 2

Количество циклов: 2

Действие команды: (PC) = (PC) + 2

(direct) = ((SP))

(SP) = (SP) - 1

Машинный код:

1 1 0 1 0 0 0 0

d d d d d d d d

PUSH <direct> - запись в стек.

Описание: Содержимое указателя стека увеличивается на 1. Содержимое ячейки внутренней памяти по адресу, указанному во втором байте команды копируется в ячейку внутренней памяти, на которую указывает регистр указателя стека.

  • прямая;

Пример: PUSH 30h

Количество байт: 2

Количество циклов: 2

Действие команды: (PC) = (PC) + 2

((SP)) = (direct)

(SP) = (SP) + 1

Машинный код:

1 1 0 0 0 0 0 0

d d d d d d d d

RET - возврат из подпрограммы.

Описание: последовательно выгружает старший и младший байты счетчика команд из стека, уменьшая содержимое указателя стека на 2. Выполнение программы продолжается с нового, только что загруженного в счетчик команд адреса. Команда не воздействует на флаги.

Пример: RET

Количество байт: 1

Количество циклов: 2

Действие команды: (PC) = (PC) + 2

(PC15-8) = ((SP))

(SP) = (SP) - 1

(PC7-0) = ((SP))

SP) = (SP) - 1

Машинный код: 0 0 1 0 0 0 1 0=

RETI - возврат из подпрограммы обслуживания прерывания.

Описание: последовательно выгружает старший и младший байты счетчика команд из стека, уменьшая содержимое указателя стека на 2. Кроме того, команда восстанавливает состояние логики прерываний, разрешая обработку следующего прерывания того же уровня приоритета. Выполнение программы продолжается с того же адреса, что был в программном счетчике (PC) до начала обработки прерывания (следующий за командой, во время выполнения которой был обнаружен запрос на прерывание). Команда не воздействует на флаги и не восстанавливает состояние PSW, бывшее до обработки прерывания. Если к этому моменту обнаруживается новый запрос на прерывание, то до нового вызова подпрограммы обслуживания прерывания выполняется одна команда из основной программы.

Пример: RETI

Количество байт: 1

Количество циклов: 2

Действие команды: (PC) = (PC) + 2

(PC15-8) = ((SP))

(SP) = (SP) - 1

(PC7-0) = ((SP))

(SP) = (SP) - 1

Машинный код:

0 0 1 1 0 0 1 0

RL A - сдвиг содержимого аккумулятора влево.

Описание: сдвигает восемь бит аккумулятора на один бит влево, бит 7 засылается на место бита 0. Команда не воздействует на флаги.

Пример: RL A

Количество байт: 1

Количество циклов: 1

Действие команды: (An+1) = (An) n=0..6

(A0) = (A7)

Машинный код:

0 0 1 0 0 0 1 1

RLC A - сдвиг содержимого аккумулятора влево через флаг переноса.

Описание: сдвигает восемь бит аккумулятора и флаг переноса на один бит влево. Содержимое флага переноса помещается на место бита 0 аккумулятора, а содержимое бита 7 аккумулятора переписывается во флаг переноса. На остальные флаги команда не воздействует.

Пример: RLC A

Количество байт: 1

Количество циклов: 1

Действие команды: (An+1) = (An) n=0..6

(A0) = (C)

(C) = (A7)

Машинный код:

0 0 1 1 0 0 1 1

RR A - сдвиг содержимого аккумулятора вправо.

Описание: сдвигает восемь бит аккумулятора на один бит вправо, бит 0 засылается на место бита 7. Команда не воздействует на флаги.

Пример: RR A

Количество байт: 1

Количество циклов: 1

Действие команды: (An) = (An+1) n=0..6

(A7) = (A0)

Машинный код: 0 0 0 0 0 0 1 1

RRC A - сдвиг содержимого аккумулятора через флаг переноса.

Описание: сдвигает восемь бит аккумулятора и флаг переноса на один бит вправо. Содержимое флага переноса помещается на место бита 7 аккумулятора, а содержимое бита 0 аккумулятора переписывается во флаг переноса. На остальные флаги команда не воздействует.

Пример: RRC A

Количество байт: 1

Количество циклов: 1

Действие команды: (An) = (An+1) n=0..6

(A7) = (C)

(C) = (A0)

Машинный код:

0 0 0 1 0 0 1 1

SETB <bit> - установить бит.

Описание: устанавливает указанный бит в 1. Команда может воздействовать на флаг переноса или любой другой прямо адресуемый бит. На остальные флаги команда не воздействует.

Пример: SETB C

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(C) = 1

Машинный код:

1 1 0 1 0 0 1 1

Пример: SETB 27

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(bit) = 1

Машинный код:

1 1 0 1 0 0 1 0

b b b b b b b b

SJMP <rel8> - короткий переход

Описание: команда выполняет безусловный относительный короткий переход по указанному адресу. Адрес назначения вычисляется суммированием второго байта команды и программного счетчика предварительно увеличенного на два. Т.е. переход может осуществляться на метку, стоящую на 128 байт выше команды, следующей за SJMP и 127 байт ниже.

Пример: SJMP Label

Количество байт: 2

Количество циклов: 2

Действие команды: (PC) = + 2

(PC) = (PC) + rel8

Машинный код:

1 0 0 0 0 0 0 0

R e l A d r e s

SUBB A,<байт источник> - вычитание с заемом.

Описание: команда вычитает указанную переменную вместе с флагом переноса из содержимого аккумулятора, результат помещается в аккумулятор. SUBB устанавливает флаг переноса C, если требуется заем для 7 бита, и обнуляет его в противном случае. (Если флаг переноса C перед выполнением команды содержал 1, то перенос вычитается из аккумулятора, содержащего операнд источник). Флаг переноса C устанавливается, если требуется заем для 3 бита, и очищается в противном случае. Флаг переполнения OV устанавливается, если требуется заем для 7 бита, но не требуется для 6 или нужен заем для 6 бита, но не требуется для 7. Операнд источника допускает четыре режима адресации:

  • регистровая;

Пример: SUBB A, R7

Количество байт: 1

Количество циклов: 1

Действие команды: (PC)= (PC) + 1

(A) = (A) - (С) - (Rn), n=0,1,2,3,4,5,6,7

Машинный код:

1 0 0 1 1 r r r

  • косвенно- регистровая;

Пример: SUBB A, @R0

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(A) = (A) - (С) - ((Ri)), i=0,1

Машинный код: 1 0 0 1 0 1 1 i

  • прямая;

Пример: SUBB A, 30h

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(A) = (A) - (C) - (direct)

Машинный код:

1 0 0 1 0 1 0 1

d d d d d d d d

  • непосредственная.

Пример: SUBB A, #100

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(A) = (A) - (C) - (date 8)

Машинный код:

1 0 0 1 0 1 0 0

i i i i i i i i

SWAP A - обмен тетрадами внутри аккумулятора.

Описание: команда осуществляет обмен между младшей (биты 0..3) и старшей (биты 4..7) тетрадами аккумулятора. (Тетрада это четырехбитная переменная). Команду можно интерпретировать как циклический сдвиг на четыре бита. Команда не воздействует на флаги.

Пример: SWAP A

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(A3..A0) <=> (A7..A4)

Машинный код:

1 1 0 0 0 1 0 0

XCH A,<байт> - обмен содержимого аккумулятора с переменной байтом.

Описание: команда загружает аккумулятор содержимым указанной переменной, в то же самое время первоначальное содержимое аккумулятора заносится по указанному адресу. Команда не воздействует на флаги.

Допускается три режима адресации:

  • регистровая;

Пример: XCH A, R7

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(A) <=> (Rn), n=0,1,2,3,4,5,6,7

Машинный код:

1 1 0 0 1 r r r

  • прямая;

Пример: XCHA, 30h

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(A) <=> (direct)

Машинный код:

1 1 0 0 0 1 0 1

d d d d d d d d

  • косвенно-регистровая;

Пример: XCH A, @R0

Количество байт: 1

Количество циклов: 1

Действие команды: (PC)= (PC) + 1

(A) <=> ((Ri)), i=0,1

Машинный код:

1 1 0 0 0 1 1 i

XCHD A, @Ri - обмен цифры.

Описание: команда осуществляет обмен между младшей (биты 0..3) тетрадой (тетрада это четырехбитная переменная) аккумулятора, где обычно хранится двоично-десятичная цифра с тетрадой ячейки внутреннего ОЗУ. Используется косвенно регистровая адресация. Старшие тетрады (биты 4..7) обоих операндов не изменяются. Команда не воздействует на флаги.

Пример: XCHD A, @R0

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(A3..A0) <=> ((Ri3..Ri0)), i=0,1

Машинный код: 1 1 0 1 0 1 1 i

XRL <байт приемник>,<байт источник> - исключающее ИЛИ для переменных байтов.

Описание: выполняет операцию побитового "исключающее логического ИЛИ" между указанными переменными. Результат сохраняется в приемнике. Команда не воздействует на флаги.

Для команды XRL с аккумулятором в качестве байта назначения разрешены следующие режимы адресации байта - источника:

  • регистровая;

Пример: XRL A, R3

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(A) = (A) xor (Rn), n=0,1,2,3,4,5,6,7

Машинный код:

0 1 1 0 1 r r r

  • косвенно- регистровая;

Пример: XRL A, @R0

Количество байт: 1

Количество циклов: 1

Действие команды: (PC) = (PC) + 1

(A) = (A) xor ((Ri)), i=0,1

Машинный код: 0 1 1 0 0 1 1 i

  • прямая;

Пример: XRL A, 30h

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(A) = (A) xor (direct)

Машинный код:

0 1 1 0 0 1 0 1

d d d d d d d d

  • непосредственная.

Пример: XRL A, #100

Количество байт: 2

Количество циклов: 1

Действие команды: (PC)= (PC) + 2

(A) = (A) xor (date 8)

Машинный код:

0 1 1 0 0 1 0 0

i i i i i i i i

Для команды XRL с произвольным адресом ячейки внутренней памяти данных в качестве байта назначения разрешены следующие режимы адресации байта - источника:

  • прямая;

Пример: XRL 30h,A

Количество байт: 2

Количество циклов: 1

Действие команды: (PC) = (PC) + 2

(direct) = (A) xor (direct)

Машинный код:

0 1 1 0 0 0 1 0

d d d d d d d d

  • непосредственная.

Пример: XRL direct, #100

Количество байт: 3

Количество циклов: 2

Действие команды: (PC) =(PC) + 3

(direct) =(A) xor (date 8)

Машинный код:

0 1 1 0 0 0 1 1

d d d d d d d d

i i i i i i i i

Примечание: при выполнении команды XRL над содержимым внешнего порта используется значение из внутреннего регистра, а не данные, присутствующие на выводах микросхемы!




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 290; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.118 сек.