Скачать презентацию Тема 2 Занятие Представление команд микропроцессора ix 86 Скачать презентацию Тема 2 Занятие Представление команд микропроцессора ix 86

14_Прдст_ком_ассм_09.ppt

  • Количество слайдов: 20

Тема 2. Занятие Представление команд микропроцессора ix 86 на языке ассемблера при различных способах Тема 2. Занятие Представление команд микропроцессора ix 86 на языке ассемблера при различных способах адресации

Учебные вопросы: 1. Команды пересылок, обмена и работы со стеком 2. Арифметические команды и Учебные вопросы: 1. Команды пересылок, обмена и работы со стеком 2. Арифметические команды и команды передачи управления 3. Команды управления циклами и вызова подпрограмм

1. Команды пересылок, обмена и работы со стеком 1. Команды пересылок, обмена и работы со стеком

Использование регистров для косвенной адресации [BX]; [SI]; [DI]; [BP]; Разрешено: [BX+SI]; [BX+DI]; [BP+SI]; [BP+DI]; Использование регистров для косвенной адресации [BX]; [SI]; [DI]; [BP]; Разрешено: [BX+SI]; [BX+DI]; [BP+SI]; [BP+DI]; Запрещено: [AX]; [BX+BP]; [CX]; [SI+DI]; [DX]; [SP];

Команды пересылки MOV – пересылка данных Действие: пересылает один байт или одно слово между Команды пересылки MOV – пересылка данных Действие: пересылает один байт или одно слово между регистрами или регистром и памятью, а также передает непосредственное значение в регистр или в память. Команда MOV не может передавать данные между двумя адресами памяти (для этой цели служит команда MOVS) Пример : MOV CX, 3 MOV BX, 2 MOV AX, BX

Команды обмена XCHG – перестановка Действие: пересылает два байта или два слова между регистрами Команды обмена XCHG – перестановка Действие: пересылает два байта или два слова между регистрами или регистром и памятью. Пример 1: MOV CX, 3 MOV BX, 2 XCHG CX, BX Пример 2: MOV AX, 7 MOV BX, 400 XCHG AX, [BX]

Команды работы со стеком PUSH – занесение слова в стек Действие: сохраняет значение слова Команды работы со стеком PUSH – занесение слова в стек Действие: сохраняет значение слова в стеке для последующего использования. Регистр SP указывает на вершину стека (в процессе выполнения его содержимое уменьшается на 2). Допустимые операнды: РОН, сегментный регистр, слово в памяти POP – извлечение слова из стека Действие: передает слово, помещенное ранее в стек, в указанный операнд. Флаги не меняются. Содержимое регистра SP в процессе выполнения увеличивается на 2. Допустимые операнды: РОН, сегментный регистр, слово из памяти

2. Арифметические команды и команды передачи управления 2. Арифметические команды и команды передачи управления

Арифметические команды ADD – сложение двоичных чисел Действие: прибавляет один байт или одно слово Арифметические команды ADD – сложение двоичных чисел Действие: прибавляет один байт или одно слово к содержимому регистра или к содержимому ячейки памяти. Пример 1: MOV CX, 3 ADD CX, 5 Пример 2: MOV BX, 400 MOV CX, 23 ADD [BX], CX Пример 3: MOV BX, 400 ADD [BX], 23 Error !!! MOV BX, 400 ADD byte ptr [BX], 23

Арифметические команды SUB – вычитание двоичных чисел Действие: вычитает один байт или одно слово Арифметические команды SUB – вычитание двоичных чисел Действие: вычитает один байт или одно слово из содержимого регистра или из содержимого ячейки памяти. Пример 1: MOV AX, 4 MOV BX, 3 SUB AX, BX Пример 2: MOV AX, 4 MOV BX, 3 SUB BX, AX Пример 3: MOV SI, 4 MOV BX, 400 SUB word ptr [BX+SI+124], 23

Арифметические команды MUL – беззнаковое умножение двоичных чисел Действие: умножает беззнаковое множимое (8 или Арифметические команды MUL – беззнаковое умножение двоичных чисел Действие: умножает беззнаковое множимое (8 или 16 бит) на беззнаковый множитель (8 или 16 бит). Левый единичный бит рассматривается как бит данных, но не как знак минус для отрицательных чисел. Для 8 -битного умножения множимое должно находится в AL, а множитель в регистре или в памяти, например, MUL CL. Произведение получается в регистре AX. Для 16 -битного умножения множимое должно находится в AX, а множитель в регистре или в памяти, например, MUL BX. Произведение получается в регистровой паре DX: AX

Арифметические команды IMUL – целое умножение знаковых величин Действие: выполняет умножение на знаковый множитель Арифметические команды IMUL – целое умножение знаковых величин Действие: выполняет умножение на знаковый множитель (8 или 16 бит). Левый единичный бит рассматривается как знак минус для отрицательных чисел. Для 8 -битного умножения множимое должно находится в AL, а множитель - в регистре или в памяти, например, IMUL BL. Произведение получается в регистре AX. Для 16 -битного умножения множимое должно находится в AX, а множитель - в регистре или в памяти, например, IMUL BX. Произведение получается в регистровой паре DX: AX

Арифметические команды DIV – беззнаковое деление двоичных чисел Действие: выполняет деление беззнакового делимого (8 Арифметические команды DIV – беззнаковое деление двоичных чисел Действие: выполняет деление беззнакового делимого (8 или 16 бит) на беззнаковый делитель (8 или 16 бит). Левый единичный бит рассматривается как бит данных, но не как знак минус для отрицательных чисел. Для 8 -битного деления делимое должно находится в регистре AX, а делитель - в регистре или в памяти, например, DIV BH. Частное от деления получается в регистре AL, а остаток – в AH. Для 16 -битного деления делимое должно находится в регистровой паре DX: AX, а 16 -битный делитель - в регистре или в памяти, например, DIV BX. Частное от деления получается в регистре AX, а остаток – в DX.

Арифметические команды IDIV – целое деление знаковых величин Действие: выполняет деление знакового делимого (8 Арифметические команды IDIV – целое деление знаковых величин Действие: выполняет деление знакового делимого (8 или 16 бит) на знаковый делитель (8 или 16 бит). Левый единичный бит рассматривается как знак минус для отрицательных чисел. Для 8 -битного деления делимое должно находится в регистре AX, а делитель - в регистре или в памяти, например, IDIV DL. Частное от деления получается в регистре AL, а остаток – в AH. Для 16 -битного деления делимое должно находится в регистровой паре DX: AX, а 16 -битный делитель - в регистре или в памяти, например, IDIV BX. Частное от деления получается в регистре AX, а остаток – в DX.

Арифметические команды CMP – сравнение Действие: сравнивает содержимое двух полей данных. Фактически вычитает второй Арифметические команды CMP – сравнение Действие: сравнивает содержимое двух полей данных. Фактически вычитает второй операнд из первого, но содержимое полей не изменяет. Операнды должны иметь одинаковую длину: байт или слово. В программе команда CMP обычно предшествует командам условных переходов. Пример : MOV AX, 4 MOV BX, 3 CMP AX, BX JNZ m 1 MOV CX, 7 …………. . …………… m 1: ADD SI, 2 MUL SI

Команды передачи управления JMP – безусловный переход Действие: выполняет переход по указанному в команде Команды передачи управления JMP – безусловный переход Действие: выполняет переход по указанному в команде адресу. (Адрес перехода заносится в регистр IP). Jсс – условные переходы (по условию СС) (в программе применяются после команды CMP) JE/JZ – переход по «равно» или по «нулю» JG/JNLE – переход по «больше (greater)» или по «не меньше (less) и не равно» JL/JNGE – переход по «меньше» или по «не больше и не равно» JA/JNBE – переход по «выше (above) » или по «не ниже (below) и не равно» JB/JNAE – переход по «ниже» или по «не выше и не равно»

3. Команды управления циклами и вызова подпрограмм 3. Команды управления циклами и вызова подпрограмм

Управление циклами LOOP – зациклить Действие: управляет выполнением группы команд определенное число раз. До Управление циклами LOOP – зациклить Действие: управляет выполнением группы команд определенное число раз. До начала выполнения в регистр CX должно быть загружено число выполняемых циклов. Команда LOOP размещается в конце цикла, после каждого ее выполнения значение в СX уменьшается на 1. При CX=0 – выход из цикла Пример 1: MOV CX, 3 m 1: SUB AX, 2 LOOP m 1 Пример 2: m 2: MOV CX, 4 ADD AX, 1 LOOP m 2 Пример 3: MOV CX, 5 MOV AX, 1 m 3: MUL CX LOOP m 3

Вызов подпрограмм CALL – вызов подпрограммы Действие: выполняет короткий или длинный вызов подпрограммы. Для Вызов подпрограмм CALL – вызов подпрограммы Действие: выполняет короткий или длинный вызов подпрограммы. Для возврата из подпрограммы в конце ее должна стоять команда RET. Пример: 0100: MOV BX, 400 0103: MOV CX, [BX] 0105: CALL 200 0107: ADD AX, 5 …………………………. . 0200: MOV AX, 1 0203: MUL CX 0205: LOOP 203 0207: RET

ЗАДАНИЯ НА САМОСТОЯТЕЛЬНЫЕ ЗАНЯТИЯ Задание на СР-13 (1 ч): 1. Закрепить (изучить) материал занятия, ЗАДАНИЯ НА САМОСТОЯТЕЛЬНЫЕ ЗАНЯТИЯ Задание на СР-13 (1 ч): 1. Закрепить (изучить) материал занятия, знать структуру и форматы команд МП ВМ 86 по [6], с. 70… 75. 2. Уметь пользоваться таблицами кодировки команд. 3. Анализ алгоритмов выполнения команд MUL, DIV, LOOP, CALL [6] с. 143… 150