Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МАВЦ.464319.001ТУ 20140414 Семенов.doc
Скачиваний:
9
Добавлен:
01.07.2025
Размер:
2.98 Mб
Скачать

Основные команды языка ассемблер

По назначению можно выделить команды (в скобках приводятся примеры мнемонических кодов операций команд ассемблера ПК типа IBM PC):

  • выполнения арифметических операций (ADD и ADC – сложения и сложения с переносом, SUB и SBB – вычитания и вычитания с заемом, MUL и IMUL – умножения без знака и со знаком, DIV и IDIV – деления без знака и со знаком, CMP – сравнения и т.д.);

  • выполнения логических операций (OR, AND, NOT, XOR, TEST и т.д.);

  • пересылки данных (MOV – переслать, XCHG – обменять, IN – ввести в микропроцессор, OUT – вывести из микропроцессора и т.д.);

  • передачи управления (ветвления программы: JMP – безусловного перехода, CALL – вызова процедуры, RET – возврата из процедуры, J* - условного прерывания и т.д.);

  • обработки строк символов (MOVS – пересылки, CVPS – сравнения, LODS – загрузки, SCAS – сканирования, REP – повторения и т.д.);

  • прерывания работы программы (INT – программное прерывания, INTO – условного прерывания при переполнении, IRET – возврата из прерывания);

  • управления микропроцессором (ST* и CL* - установки и сброса флагов, HLT – останова, WAIT – ожидания, ESC – выхода, NOP – холостого хода и т.д.).

С полным списком команд ассемблера можно познакомиться в работах [1, 3, 11].

A.Команды пересылки данных

Основные команды пересылки данных:

  • MOV dst,src – пересылка данных(move – переслать из src в dst).

Пересылает (в командах для отображения операндов используется обычное обозначение орг и семантические обозначения src (source — источник) и dst (destination — приемник)): один байт (если src и dst имеют формат байта) или одно слово (если src и dst имеют формат слова) между регистрами или между регистром и памятью, а также заносит непосредственное значение в регистр или память.

Операнды dst и src должны иметь одинаковый формат — байт или слово.

Src могут иметь тип: r (register) — регистр, m (memory) — память, i (impedance) -непосредственное значение. Dst могут быть типа r, t. Нельзя в одной команде использовать операнды: rsegm совместно с i; два операнда типа m и два операнда типа rsegm. Операнд i может быть и простым выражением:

mov AX,156*10H

mov AX,(152+101B)/15

и т.п.

Вычисление выражения выполняется только при трансляции. Флаги не меняет.

  • PUSH src - занесение слова в стек (push — протолкнуть; записать в стек из src). Помещает в вершину стека содержимое src — любого 16-битового регистра (в том числе и сегментного) или двух ячеек памяти, содержащих 16-битовое слово. Флаги не меняются.

  • POP dst — извлечение слова из стека (pop — вытолкнуть; считать из стека в dst). Снимает слово с вершины стека и помещает его в dst — любой 16-битовый ре­гистр (в том числе и сегментный) или в две ячейки памяти. Флаги не меняются.

В командах PUSH и POP dst и src могут быть только r и m.

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

Команды сложения, вычитания и сравнения — двухадресные.

  • ADD dst .src — сложение двоичных чисел (add — сложить). Прибавляет байт или слово из памяти, регистра непосредственно к содержимому регистра или при­бавляет байт или слово из регистра непосредственно к памяти (содержимое src прибавляет к содержимому dst). Операнды dst и src должны иметь одинако­вый формат (оба, или байт, или слово) и могут иметь тип данных: src — r, m, i; dst — r, m (невозможно rsegm, i и нельзя, чтобы оба типа были m или оба rsegm). Команда ADD формирует флаги AF, CF, OF, PF, SF и ZF.

  • SUB dst, src - вычитание двоичных чисел (substract — вычесть). Вычитает байт или слово, взятое из памяти, регистра или непосредственно из содержимого регистра или вычитает байт или слово, взятое из регистра или непосредственно из памяти (содержимое src вычитается из содержимого dst). Операнды dst и src должны иметь одинаковый формат (оба или байт или слово) и могут быть: src - r, m, i; dst — r, m (невозможно rsegm и нельзя, чтобы оба типа были m). Команда SUB формирует флаги AF, CF, OF, PF, SF и ZF.

  • CMP dst,src — сравнение (compare — сравнить). Сравнивает содержимое двух полей данных; фактически команда вычитает второй операнд (src) из первого (dst), но значение dst не изменяет, а лишь формирует флаги. Операнды dst и src должны иметь одинаковый формат (оба, или байт, или слово) и могут быть: src — r, m, i; dst — r, t (невозможно rsegm, i и нельзя, чтобы оба типа были m или оба rsegm). Команда СМР формирует флаги: CF, ZF при сравнении чисел без знака, CF, OF, SF, ZF при сравнении чисел со знаком; флаги AF, PF не определены.