1 / 13

Основные непривилегированные команды процессора

Микропроцессоры и микропроцессорные системы. Основные непривилегированные команды процессора. Основные непривилегированные команды. 1. Пересылка данных MOV приемник, источник - Пересылка данных

gerd
Download Presentation

Основные непривилегированные команды процессора

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Микропроцессоры и микропроцессорные системы Основные непривилегированные команды процессора

  2. Основные непривилегированные команды 1. Пересылка данных MOV приемник, источник - Пересылка данных Базовая команда пересылки данных. Копирует содержимое источника в приемник, источник не изменяется. Пример. mov ax, bx PUSH источник - Поместить данные в стек Помещает содержимое источника в стек. Источником может быть регистр, сегментный регистр, непосредственный операнд или переменная. Уменьшает ESP на размер источника (2 или 4). Команда PUSH почти всегда используется в паре с РОР (считать данные из стека). Поэтому, чтобы скопировать содержимое одного сегментного регистра в другой (что нельзя выполнить одной командой МОV), можно использовать такую последовательность команд: pushcs рорds ; теперь DS указывает на тот же сегмент, что и CS

  3. POP приемник - Считать данные из стека Помещает в приемник слово или двойное слово, находящееся в вершине стека, увеличивая ESP на 2 или 4 соответственно. POP выполняет действие обратное PUSH. Приемником может быть регистр общего назначения, сегментный регистр, кроме CS. IN приемник, источник - Считать данные из порта Копирует число из порта ввода-вывода, номер которого указан в источнике, в приемник. Приемником может быть только AL, АХ или ЕАХ. Источник - или непосредственный операнд, или DХ, причем во время использования непосредственного операнда можно указывать лишь номера портов не больше 255. OUT приемник, источник - Записать данные в порт Копирует число из источника (AL, АХ или ЕАХ) в порт ввода-вывода, номер , которого указан в приемнике. Приемник может быть либо непосредственным номером порта (не больше 255), либо регистром DX. На командах IN и OUT строится все общение процессора с устройствами ввода-вывода - клавиатурой, жесткими дисками, различными контроллерами, и используются они, в первую очередь, в драйверах устройств. Например, чтобы включить динамик PC, достаточно выполнить команды: in a1, 61h or а1, 3 out 61h, al

  4. 2. Команды двоичной арифметики ADD приемник, источник - Сложение Команда выполняет арифметическое сложение приемника и источника, помещает сумму в приемник, не изменяя содержимое источника. Приемник может быть регистром или переменной, источник - числом, регистром или переменной, но нельзя использовать переменную одновременно и для источника, и для приемника. Команда ADD никак не различает числа со знаком и без знака, но, употребляя значения флагов СF (перенос при сложении чисел без знака), ОF (перенос при сложении чисел со знаком) и SF (знак результата), разрешается применять ее и для тех, и для других. SUB приемник, источник - Вычитание Вычитает источник из приемника и помещает разность в приемник. Приемник может быть регистром или переменной, источник - числом, регистром или переменной, но нельзя использовать переменную одновременно и для источника, и для приемника. Точно так же, как и команда ADD, SUB не делает различий между числами со знаком и без знака, но флаги позволяют Использовать ее и для тех, и для других.

  5. MUL источник - Умножение чисел без знака Выполняет умножение содержимого источника (регистр или переменная) и регистра AL, АХ, ЕАХ (в зависимости от размера источника) и помещает результат в АХ, DX:AX, EDX:EAX соответственно. Если старшая половина результата (АН, DX, EDX) содержит только нули (результат целиком поместился в младшую половину), флаги CF и OF устанавливаются в 0, иначе - в 1. Значение остальных флагов (SF, ZF, АF и PF) не определено. DIV источник - Целочисленное деление без знака Выполняет целочисленное деление без знака AL, АХ или ЕАХ (в зависимости от размера источника) на источник (регистр или переменная) и помещает результат в AL, АХ или ЕАХ, а остаток - в АН, DX или EDX соответственно. Результат всегда округляется в сторону нуля, абсолютное значение остатка меньше абсолютного значения делителя. Флаги СF, OF, SF, ZF, AF и PF после этой команды не определены, а переполнение или деление на ноль вызывает исключение #DE (ошибка при делении) в защищенном режиме и прерывание 0 - в реальном.

  6. INC приемник - Инкремент Увеличивает приемник (регистр или переменная) на 1. Единственное отличие этой команды от ADDприемник,1 состоит в том, что флаг СF не затрагивается. Остальные арифметические флаги (OF, SF, ZF, AF, PF) устанавливаются в соответствии с результатом сложения. DEC приемник - Декремент Уменьшает приемник (регистр или переменная) на 1. Единственное отличие этой команды от SUB приемник,1 заключается в том, что флаг CF не затрагивается. Остальные арифметические флаги (OF, SF, ZF, АР, PF) устанавливаются в соответствии с результатом вычитания. CMP приемник, источник - Сравнение Сравнивает приемник и источник и устанавливает флаги, Действие осушествляется путем вычитания источника (число, регистр или переменная) из приёмника (регистр или переменная; приемник и источник не могут быть переменными одновременно), причем результат вычитания никуда не записывается. Единственным следствием работы этой команды оказывается изменение флагов CF, OF, SF, ZF, AF и РF. Обычно команду СМР используют вместе с командами условного перехода (Jсс)и другими, которые позволяют применить результат сравнения, не обращая внимания на детальное значение каждого флажка.

  7. 3. Логические операции AND приемник,источник - Логическое И Команда выполняет побитовое «логическое И» над приемником (регистр или переменная) и источником (число, регистр или переменная: источник и приемник не могут быть переменными одновременно) и помещает результат в приемник. Любой бит результата равен 1, только если соответствующие биты обоих операндов были равны 1, и равен 0 в остальных случаях. Наиболее часто AND применяют для выборочного обнуления отдельных битов. Например, команда аndal,00001111b 06нулит старшие четыре бита регистра AL, сохранив неизменными четыре младших. Флаги OF и CF обнуляются, SF, ZF и PF устанавливаются в соответствии с результатом, AF не определен. OR приемник,источник - Логическое ИЛИ Выполняет побитовое «логическое ИЛИ» над приемником (регистр или переменная) и источником (число, регистр или переменная; источник и приемник не могут быть переменными одновременно) и помещает результат в приемник. Любой бит результата равен 0, только если соответствующие биты обоих операндов были равны 0, и равен 1 в остальных случаях. Команду OR чаще всего используют для выборочной установки отдельных битов. Например, команда or al,00001111b приведет к тому, что младшие четыре бита регистра AL будут установлены в 1. При выполнении команды OR флаги OF и CF обнуляются, SF, ZF и PF устанавливаются в соответствии с результатом, AF не определен.

  8. ХОR приемник,источник - Логическое исключающее ИЛИ Выполняет побитовое «логическое исключающее ИЛИ» над приемником (регистр или переменная) и источником (число, регистр или переменная: источник и приемник не могут быть переменными одновременно) и помещает результат в приемник. Любой бит результата равен 1, если соответствующие биты операндов различны, и нулю - в противном случае. XОR используется для самых разных операций, например: хоr ах, ах ; Обнуление регистра АХ. или хоr ах,Ьх хоr bx,ах хоr ах, Ьх; Меняет местами содержимое АХ и. ВХ. Оба примера могут выполняться быстрее, чем команда : mov ах, 0 NОТ приемник - Инверсия Каждый бит приемника (регистр или переменная), равный нулю, устанавливаетсяв 1, и каждый бит, равный 1, сбрасывается в 0. Флаги не затрагиваются. TEST приемник, источник - Логическое сравнение Вычисляет результат действия побитового «логического И» над приемником (регистр или переменная) и источником и устанавливает флаги SF, ZF и PF в соответствии с полученным показателем, не сохраняя результата . TEST, так же как и СМР, используется в основном в сочетании с командами условного перехода (Jсс).

  9. 4. Команды передачи управления JMP операнд - Безусловный переход JMP передает управление в другую точку программы, не сохраняя какой-либо информации для возврата. Операндом может быть непосредственный адрес для перехода (В программах используют имя метки, установленной перед командой, на которую выполняется переход), а также регистр или переменная, содержащая адрес. В зависимости от типа перехода различают: переход типаshоrt (короткий переход) - если адрес перехода находится в пределах -128 ... +127 байт от командыJМР; переход типа near (ближний переход) - если адрес перехода находится в том же сегменте памяти, что и команда JМР; о переход типа far (дальний переход) - если адрес перехода находится в другом сегменте. Дальний переход может выполняться и в тот же самый сегмент при условии, что в сегментной части операнда указа но число, совпадающее с текущим значением CS; При выполнении переходов типа short и пеаг командаJMР фактически преобразовывает значение регистра EIP (или IP), изменяя тем самым смещение следующей исполняемой команды относительно начала сегмента кода.

  10. Это набор команд, выполняющих переход (типа short или nеаг), если удовлетворяется соответствующее условие, которым в каждом случае реально является состояние тех или иных флагов. Но, когда команда из набора Jсс используется сразу после СМР, условия приобретают формулировки, соответствующие отношениям между операндами СМР . Например, если операнды СМР были равны, то команда JE, выполненная сразу после СМР, осуществит переход. Операнд для всех команд из набора Jсс - 8-битное или 32-битноесмещение относительно текущей команды. Jcc метка - Условный переход Пример. cmp ax, 0 je local_1 ; переход, если ax=0 jmp far_tabel local_1: … far_table: …

  11. LOOP метка - Цикл Уменьшает регистр СХ (ECX) на 1 и выполняет переход типа short на метку (которая не может быть дальше расстояния -128 ... +127 байт от команды LOOP), если CX (ЕСХ) не равен нулю. Эта команда используется для организации циклов, в которых регистр СХ (EСХ) играет роль счетчика. Так, в следующем фрагменте команда ADD выполнится 10 раз: movсx, 0Ah loop_start: add аx, cх lоор loop_start Команда LOOP полностью эквивалентна паре команд dec cх jnzметка ; если не 0 Но LOOP короче этих двух команд на один байт и не изменяет значения флагов.

  12. LOOPEметка - Цикл, пока равно (ZF=1) LOOPZметка - Цикл, пока ноль (ZF=1) LOOPNEметка - Цикл, пока не равно (ZF=0) LOOPNZметка - Цикл, пока не ноль (ZF=0) Пример. movcx,str_length move_loop: lodsb ; чтение байта из строки stosb ;запись байта в строку cmрal,13 loopnzmove_loop CALL операнд - Вызов процедуры Сохраняет текущий адрес в стеке и передает управление по адресу, указанному в операнде. Операндом может быть непосредственное значение адреса (метка в ассемблерных программах), регистр или переменная, содержащие адрес перехода. Если в качестве адреса перехода указано только смещение, считается, что адрес расположен в том же сегменте, что и команда CALL.

  13. REТ число - Возврат из процедуры RЕТN число RЕТF число REТN считывает из стека слово (или двойное слово, в зависимости от режима адресации) и загружает его в IP (или EIP), выполняя тем самым действия, обратные ближнему вызову процедуры командой CALL. Команда RETF загружает из стека IP (EIP) и CS, возвращаясь из дальней процедуры. Если в программе указана команда RET, ассемблер заменит ее на REТN или RETF в зависимости от того, как была описана процедура, которую эта команда завершает. INT число - Вызов прерывания INT аналогично команде CALL помещает в стек содержимое регистров FLAGS, CS и IP, после чего передает управление программе, называемой обработчиком прерываний с указанным в качестве операнда номером (число от 0 до 0FFh). Например, следующий фрагмент кода завершает выполнение программы и возвращает управление DOS: movax,4C01h int21h IREТ - Возврат из обработчика прерывания IREТD

More Related