Опишите состав и назначение команд тестирования битов мп

1) bt D,C (команда тестирования бита). регистр и ячейка памяти (битовая база). в качестве счетчика может быть использован либо регистр, либо изображение числа. Значение бита из первого операнда смещения, который находится во втором операнде, помещается во флаг СF в зависимости от размера 1-го операнда значение 2-го операнда не может превышать 31 бита.

2) bts S,C (проверка и установка бита). Устанавливает в 1 значение бита, который находится в источнике со смещением указанным во втором операнде.

3) btr S,C (проверка и сброс бита). Сбрасывает в 0 бит, находящийся в источнике со смещением находящемся во втором операнде.

4) btc S,C (проверка и инвертирование бита). Инвертирует бит из источника со смещением указанным во втором операнде.

bts, btc, btr – помещают во флаг CF значение указанного бита до его модификации.

5) bsf D,S (прямой поиск бита) команда выполняет сканирование источника начиная с младшего бита и записывает в приемник. Помещает первый бит отличный от нуля в приемник.

6) bsr D,S – сканирует источник начиная со старшего бита и номера первого бита отличного от 0 помещает в приемник.

 

Опишите состав и назначение команд операций с двоичными цеппочками мп.

Всего в системе команд микропроцессора имеется семь операций-примитивов обработки цепочек.
Каждая из них реализуется в микропроцессоре тремя командами, в свою очередь, каждая из этих команд работает с соответствующим размером элемента — байтом, словом или двойным словом.
Особенность всех цепочечных команд в том, что они, кроме обработки текущего элемента цепочки, осуществляют еще и автоматическое продвижение к следующему элементу данной цепочки. префикс повторения rep (REPeat). Этот префикс используется с командами, реализующими операции-примитивы пересылки и сохранения элементов цепочек — соответственно, movs и stos. Префикс rep заставляет данные команды выполняться, пока содержимое в ecx/cx не станет равным 0. При этом цепочечная команда, перед которой стоит префикс, автоматически уменьшает содержимое ecx/cx на единицу. Та же команда, но без префикса, этого не делает;             префиксы повторения repe или repz (REPeat while Equal or Zero). Эти префиксы являются абсолютными синонимами. Они заставляют цепочечную команду выполняться до тех пор, пока содержимое ecx/cx не равно нулю или флаг zf равен 1. Как только одно из этих условий нарушается, управление передается следующей команде программы. Благодаря возможности анализа флага zf, наиболее эффективно эти префиксы можно использовать с командами cmps и scas для поиска отличающихся элементов цепочек. префиксы повторения repne или repnz (REPeat while Not Equal or Zero). Эти префиксы также являются абсолютными синонимами. Префиксы repne/repnz заставляют цепочечную команду циклически выполняться до тех пор, пока содержимое ecx/cx не равно нулю или флаг zf равен нулю. При невыполнении одного из этих условий работа команды прекращается.
Данные префиксы также можно использовать с командами cmps и scas, но для поиска совпадающих элементов цепочек.

  • адрес_источника — пара ds:esi/si;
  • адрес_приемника — пара es:edi/di.
  • если df = 0, то значение индексных регистров esi/si и edi/di будет автоматически увеличиваться (операция инкремента) цепочечными командами, то есть обработка будет осуществляться в направлении возрастания адресов;
  • если df = 1, то значение индексных регистров esi/si и edi/di будет автоматически уменьшаться (операция декремента) цепочечными командами, то есть обработка будет идти в направлении убывания адресов.

Операция пересылки цепочек

Команды, реализующие эту операцию-примитив, производят копирование элементов из одной области памяти (цепочки) в другую. Размер элемента определяется применяемой командой.

movs адрес_приемника,адрес_источника (MOVe String) — переслать цепочку;
movsb (MOVe String Byte) — переслать цепочку байт;
movsw (MOVe String Word) — переслать цепочку слов;
movsd (MOVe String Double word) — переслать цепочку двойных слов.







Операция сравнения цепочек

Команды, реализующие эту операцию-примитив, производят сравнение элементов цепочки-источника с элементами цепочки-приемника. Здесь ситуация с набором команд и методами работы с ними аналогична операции-примитиву пересылки цепочек.
cmps адрес_приемника,адрес_источника (CoMPare String) — сравнить строки;
cmpsb (CoMPare String Byte) — сравнить строку байт;
cmpsw (CoMPare String Word) — сравнить строку слов;
cmpsd (CoMPare String Double word) — сравнить строку двойных слов.





Операция сканирования цепочек

Команды, реализующие эту операцию, производят поиск некоторого значения в области памяти. Искомое значение предварительно должно быть помещено в регистр al/ax/eax. Выбор конкретного регистра из этих трех должен быть согласован с размером элементов цепочки, в которой осуществляется поиск.

scas адрес_приемника (SCAning String) — сканировать цепочку;
scasb (SCAning String Byte) — сканировать цепочку байт;
scasw (SCAning String Word) — сканировать цепочку слов;
scasd (SCAning String Double Word) — сканировать цепочку двойных слов.




Загрузка элемента цепочки в аккумулятор

lods адрес_источника (LOaD String) — загрузить элемент из цепочки в регистр-аккумулятор al/ax/eax;
lodsb (LOaD String Byte) — загрузить байт из цепочки в регистр al;
lodsw (LOaD String Word) — загрузить слово из цепочки в регистр ax;
lodsd (LOaD String Double Word) — загрузить двойное слово из цепочки в регистр eax.




Перенос элемента из аккумулятора в цепочку

stos адрес_приемника (STOre String) — сохранить элемент из регистра-аккумулятора al/ax/eax в цепочке;
stosb (STOre String Byte) — сохранить байт из регистра al в цепочке;
stosw (STOre String Word) — сохранить слово из регистра ax в цепочке;
stosd (STOre String Double Word) - сохранить двойное слово из регистра eax в цепочке.

 





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



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