Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmirovanie_Lektsii_2015.doc
Скачиваний:
116
Добавлен:
22.03.2016
Размер:
1.19 Mб
Скачать

1.3 Загрузка исполнительного адреса (load effective address):

LEA r16,A

В качестве первого операнда может быть указан любой регистр общего назначения, а в качестве второго – любое адресное выражение.

Пример.

LEA BX,A ; BX:=адрес А

MOV BX,A ; BX:=содержимое А

В качестве второго операнда нельзя указывать константное выражение или имя регистра:

Пример.

LEA BX,88 ; ошибка

LEA BX,АХ ; ошибка

  1. Команды сложения и вычитания

Сложение: ADD op1,op2

op1:=op1+op2

Вычитание: SUB op1,op2

op1:=op1-op2

В этих командах допустимы следующие комбинации операндов:

op1 op2

r8 i8, r8, m8 сложение/вычитание байтов

m8 i8, r8

r16 i16, r16, m16 сложение/вычитание слов

m16 i16, r16

Пример.

ADD BX,АХ ; BX:=BX+AX

SUB BX,AX : BX:=BX-AX

Увеличение на 1: INC op

ADD op,1

Уменьшение на 1: DEC op

SUB op,1

В этих командах допустимы следующие типы операнда:

r8, m8, r16, m16

Выгода от команд INC и DEC в том, что они занимают меньше места в памяти и выполняются быстрее, чем соответствующие команды ADD и SUB.

  1. Команды умножения и деления

3.1 Команды умножения

Умножение целых чисел без знака: MUL op

Умножение целых чисел со знаком: IMUL op

Умножение байтов: AX:=AL*op (op: r8, m8)

Умножение слов: (DX,AX):=AX*op (op: r16, m16)

Пример.

N DB 10

MOV AL,2

MUL N ; AX=2*10=20=0014h: AH=00h, AL=14h

3.2 Команды деления

Деление целых чисел без знака: DIV op

Деление целых чисел со знаком: IDIV op

Деление слова на байт:

AH:=AX mod op, AL:=AX div op (op: r8, m8)

Деление двойного слова на слово:

DX:=(DX, AX) mod op, AX:=(DX, AX) div op (op: r16, m16)

  1. Изменение размера числа

Расширение байта до слова (convert byte to word): CBW

У этой команды местонахождение операнда и результата фиксировано: операнд всегда берется из AL, а результат всегда записывается в AX. Команда записывает в регистр AH число 00h или 0FFh в зависимости от знака числа из регистра AL.

Расширение слова до двойного слова (convert word to double): CWD

При делении также возникает необходимость расширения слова, находящегося в регистре AX, до двойного слова, занимающего два регистра – DX и AX. Команда записывает в регистр DX число 0000h или 0FFFFh в зависимости от знака числа из регистра AX.

    1. Переходы. Циклы

  1. Безусловный переход (jump):

JMP op

Прямой переход

В данном случае в качестве операнда указывается метка той команды, на которую необходимо передать управление:

JMP <метка>

Пример.

JMP L ; следующей будет выполняться команда с меткой L

L: MOV AX, 0

    1. Косвенный переход

JMP r16 или

JMP m16

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]