|
Ушел с форума
16374 / 7686 / 1080
Регистрация: 11.11.2010
Сообщений: 13,760
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 18.12.2013, 13:34 [ТС] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
ГЛАВА 17 Все строковые команды задаются в виде однобайтового кода pppp-ccc-w, где биты pppp=1010b и задают группу команд, биты ccc задают команду внутри группы (расшифровка в таблице), а бит w определяет размер операнда — байт или слово/двойное/учетверенное слово, в зависимости от установленного режима. Если размер операнда — байт, то опкод инструкции четный (w=0), если размер операнда — слово/двойное слово/учетверенное слово — опкод нечетный (w=1).СТРОКОВЫЕ КОМАНДЫ (часть 2/2) Кодировка строковых команд
000 — mov al/ax/eax,memory offset type byte/word/double word 001 — mov memory offset,al/ax/eax 100 — test al/ax/eax,imm Префиксы повторения REP/REPE/REPZ/REPNE/REPNZ Синтаксис префиксов:(Повторить цепочечную операцию = "REPEAT string operation") REP REPE /REPZ REPNE /REPNZ Семантика команды: указание условного и безусловного повторения следующей за данной командой цепочечной операции. Алгоритм работы: алгоритм работы зависит от конкретного префикса. Префиксы REP, REPE и REPZ на самом деле имеют одинаковый код операции, их действия зависят от той цепочечной команды, которую они предваряют: REP используется перед любыми цепочечными командами (MOVS, STOS, INS, OUTS). Действия REP:
Действия REPNE и REPNZ:
Если префиксы REP/REPE/REPZ и REPNE/REPNZ используется не со строковыми инструкциями они игнорируются. Поиск конца строки lpStr или определение длины строки
Машинная кодировка префиксов повторения: 0F2h — repne/repnz 0F3h — rep/repe/repz
Команды загрузки адресных пар в регистры Использование строковых команд и префиксов повторения позволяет существенно ускорить обработку строк, однако перед этими командами приходится выписывать достаточно много установочных команд (установить флаг направления CLD/STD (под Win32 при старте программы DF всегда равен нулю), записать в регистр CX/ECX/RCX число повторений и т.д.). В определенной мере сократить число таких команд позволяют две команды LDS и LES, которые загружают в регистры адресные пары (указатели) и с помощью которых можно установить пары регистров DS:SI/ESI и ES: DI/EDI на обрабатываемые строки (под Win32 содержимое регистра DS равно содержимому ES). Команды LDS/LES/LFS/LGS/LSS (Загрузка указателя с сегментным регистром DS/ES/FS/GS/SS из памяти = “Load far pointer from memory”) Синтаксис команд: LDS <операнд1>,<операнд2> LES <операнд1>,<операнд2> LFS <операнд1>,<операнд2> LGS <операнд1>,<операнд2> LSS <операнд1>,<операнд2> Семантика команды: получение полного указателя в виде сегментной составляющей и смещения. Алгоритм работы: алгоритм работы команды зависит от действующего режима адресации (use16 или use32):
Примечание: иногда требуется загрузить сегментный регистр CS (совершение скрытого jmp, переключение из real mode в protected mode и т. д.). Хотя команды LCS не существует — можно выйти из положения, поместив необходимое значение в стек, а затем вызвать команды retf или iret. Микропроцессор i8086 имел недокументированную команду pop cs (опкод 0Fh), но при очередном расширении количества команд 0Fh стали использовать как ID группы команд. Контрольные вопросы и упражнения
2
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Новые блоги и статьи
|
|||
|
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача
Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
Сигнатура
func Fetch(urls string, maxConcurrent int) Result
Пример
urls :=. . .
|
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition)
Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
|
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
|
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool
Worker Pool — паттерн конкурентной обработки задач в Go.
Суть: фиксированное количество горутин-воркеров читают задачи из общего канала
и пишут результаты в общий канал результатов. . . .
|
|
[golang] Pipeline
alhaos 08.06.2026
Pipeline
Pipeline — паттерн конкурентной обработки данных в Go.
Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
|
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь
lIs4oanZS9Y
|
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу.
До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|