Команда imul
Команда IMUL выполняет операцию знакового умножения.
Команда имеет 3 варианта:
Однооператорная форма. Операнд может быть байтом, словом или двойным словом в памяти или регистре общего назначения. Команда IMUL, так же как и команда MUL, неявно использует содержимое регистров EAX и EDX в качестве операндов.
Двухоператорная форма. Один из операндов-источников может находиться в любом регистре общего назначения, в то время как другой может быть в регистре общего назначения или в памяти. Произведение размещается на месте операнда в регистре общего назначения.
Трехоперандная форма. Два операнда представляют собой источники и один приемник. Один из операндов-источников является непосредственным значением, записанным в команде. Второй может находиться в памяти или в любом регистре общего назначения. Произведение может быть записано в любой регистр общего назначения. Непосредственный операнд считается знаковым. Если он является байтом, процессор перед выполнением умножения автоматически расширяет его знак до размера второго операнда.
В некоторых случаях в результате выполнения команды IMUL изменяется состояние различных флагов; в этих случаях значение флагов оказывается неопределенным, другими словами, их новое состояние не несет никакой информации.
Последовательность команд:
14EB:0100 B8EEFF MOV AX,FFEE
14EB:0100 B370 MOV BL,70
14EB:0100 F6EB IMUL BL
14EB:0107 B8EEFF MOV AX,FFEE
14EB:010A F7EB IMUL BX
Алгоритм работы команды зависит от используемой формы команды. Форма команды с одним операндом требует явного указания местоположения только одного сомножителя, который может быть расположен в ячейке памяти или регистре. Местоположение второго сомножителя фиксировано и зависит от размера первого сомножителя:
если операнд, указанный в команде, — байт, то второй сомножитель располагается в al;
если операнд, указанный в команде, — слово, то второй сомножитель располагается в ax;
если операнд, указанный в команде, — двойное слово, то второй сомножитель располагается в eax.
Результат умножения для команды с одним операндом также помещается в строго определенное место, определяемое размером сомножителей:
при умножении байтов результат помещается в ax;
при умножении слов результат помещается в пару dx:ax;
при умножении двойных слов результат помещается в пару edx:eax.
Исключительные ситуации реального режима:
Такие же, как для команды ADD.
Исключительные ситуации защищенного режима:
Такие же, как для команды ADD.
- Министерство образования и науки украины
- 2 Анализ структуры микропроцессора прототипа и алгоритмов выполнения заданного подмножества команд
- 3 Постановка задач проекта
- 4 Разработка алу микропроцессора
- 5 Разработка гипотетического микропроцессора
- Команда inc (Инкремент на 1) Команда inc прибавляет 1 к операнду - приемнику, но в отличие от add не влияет на флаг cf.
- Команда imul
- Команда mov
- 6 Разработка структуры центральной части микро эвм на базе микропроцессора
- Р исунок 6.1 – Структурная схема эвм
- 7 Разработка программы эмуляции работы микро эвм
- Приложение а
- Приложение б техническое задание на программу-эмулятор
- Приложение в руководство пользователя
- Приложение г