Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
I8086.DOC
Скачиваний:
50
Добавлен:
02.05.2014
Размер:
1.36 Mб
Скачать

Замечания по программированию

Микропроцессоры 8086 и 8088 не маскируют значение счётчика сдвига. Таким образом, сдвиг может быть выполнен на произвольное число разрядов от 0 до 255. В процессорах, начиная с 80286, в качестве счётчика сдвига используются только младшие 5 разрядов регистра CL, что ограничивает максимальное количество сдвигов (не более 31).

      1. Rcr– циклический сдвиг вправо через флажок переноса

D0 /3

RCR r/m8, 1

циклический сдвиг r/m8 вправо на 1 разряд через CF

D2 /3

RCR r/m8, CL

циклический сдвиг r/m8 вправо на CL разрядов через CF

D1 /3

RCR r/m16, 1

циклический сдвиг r/m16 вправо на 1 разряд через CF

D3 /3

RCR r/m16, CL

циклический сдвиг r/m16 вправо на CL разрядов через CF

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

Сдвиг выполняется по следующей схеме:

┌───────────────────────┐

│ ┌──┐ ┌─────────┐ │

└─►│CF├────►│ операнд ├─┘

  └──┘     └─────────┘ 

Имеются две разновидности сдвига: одноразрядный и многоразрядный. В последнем случае количество разрядов, на которое производится сдвиг, должно быть предварительно занесено в регистр CL.

ФлажокCFсодержит значение последнего выдвинутого из операнда разряда.

Значение флажка OFв операции многоразрядного сдвига не определено. В операции одноразрядного сдвига он представляет собой результат операции “исключающее ИЛИ” между содержимым двух самых старших разрядов результата. Таким образом, единичное значение флажкаOFуказывает, что операнд сменил свой знак, а нулевое – что знак остался неизменным.

Флажки SF,ZF,AFиPFне изменяются.

Замечания по программированию

Микропроцессоры 8086 и 8088 не маскируют значение счётчика сдвига. Таким образом, сдвиг может быть выполнен на произвольное число разрядов от 0 до 255. В процессорах, начиная с 80286, в качестве счётчика сдвига используются только младшие 5 разрядов регистра CL, что ограничивает максимальное количество сдвигов (не более 31).

      1. Ret– возврат из процедуры

C3

RET

Ближний возврат из процедуры

CB

RET

Дальний возврат из процедуры

C2 iw

RET imm16

Ближний возврат из процедуры с очисткой стека

CA iw

RET imm16

Дальний возврат из процедуры с очисткой стека

Описание.ИнструкцияRETобеспечивает возврат из процедуры.

Адрес возврата должен храниться в вершине стека. Для операции ближнего возврата он занимает два байта, для операции дальнего возврата – четыре байта. Процессор извлекает адрес возврата и заносит его в регистры CS(только при дальнем возврате) иIP, при этом содержимое указателя стекаSPувеличивается на 2 или 4.

Разновидность инструкции RET, обеспечивающая очистку стека, дополнительно прибавляет к содержимомуSPуказанную в инструкции 16-разрядную величину, что освобождает в стеке заданное число байтов.

Флажкине изменяются.