[СП] Справочник команд (Всякие мелочи)

2018-01-09СтудИзба

Описание файла

Файл "[СП] Справочник команд" внутри архива находится в папке "Всякие мелочи". Документ из архива "Всякие мелочи", который расположен в категории "". Всё это находится в предмете "системное программирование" из 4 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "системное программирование" в общих файлах.

Онлайн просмотр документа "[СП] Справочник команд"

Текст из документа "[СП] Справочник команд"

ADD Целочисленное сложение

Команда ADD осуществляет сложение первого и второго операндов. Исходное значение первого операнда (приемника) теряется, замещаясь результатом сложения. Второй операнд не изменяется. В качестве операндов можно указывать регистр (кроме сегментного) или ячейку памяти, а в качестве второго операнда еще и непосредственное значение, однако не допускается определять оба операнда одновременно как ячейки памяти. Операнды могут быть байтами или словами и представлять числа со знаком или без знака. Команда воздействует на флаги OF, SF, ZF, AF, PF и CF.

AND Логическое И

Команда AND осуществляет логическое (побитовое) умножение первого операнда на второй. Исходное значение первого операнда (приемника) теряется, замещаясь результатом умножения. В качестве операндов можно указывать регистр (кроме сегментного) или ячейку памяти, а в качестве второго операнда еще и непосредственное значение, однако не допускается определять оба операнда одновременно как ячейки памяти. Операнды могут быть байтами или словами. Команда воздействует на флаги SF, ZF и PF.

Правила побитового умножения:

Первый олеранд-бит 0 1 0 1

Второй операнд-бит 0 0 1 1

Бит результата 0 0 0 1

CALL Вызов процедуры

Команда CALL передает управление процедуре (подпрограмме), сохранив перед этим в стеке адрес возврата. Команда RET, которой обычно заканчивается процедура, забирает из стека адрес возврата и возвращает управление на команду, следующую за командой CALL. Команда CALL имеет 4 модификации:

1) вызов прямой ближний (в пределах текущего программного сегмента);

2) вызов прямой дальний (вызов процедуры, расположенной в другом

программном сегменте);

3) вызов косвенный ближний;

4) вызов косвенный дальний.

Команда CALL прямого ближнего вызова заносит в стек смещение точки возврата в текущем программном сегменте и модифицирует IP так, чтобы в нем содержалось смещение точки перехода в том же программном сегменте. Необходимое для вычисления этого смещения расстояние до точки перехода содержится в коде команды, который занимает 3 байта (код операции E8h и смещение к точке перехода).

Команда CALL прямого дальнего вызова заносит в стек два слова - сначала сегментный адрес текущего программного сегмента, а затем (выше, в слово с меньшим адресом) смещение точки возврата в текущем программном сегменте. Далее модифицируются регистры IP и CS: в IP помещается смещение точки перехода в том сегменте, куда осуществляется переход, а в CS - сегментный адрес этого сегмента. Обе эти величины берутся из кода команды, который занимает 5 байт (код операции 9Ah, относительный адрес вызываемой процедуры и се сегментный адрес).

Косвенные вызовы отличаются тем, что адрес перехода извлекается не из кода команды, а из ячеек памяти или регистров; в коде команды содержится информация о том, где находится адрес перехода. Поэтому длина кода команды зависит от используемого способа адресации.

CBW Преобразование байта в слово

Команда CBW заполняет регистр АН знаковым битом числа, находящегося в регистре AL, что дает возможность выполнять арифметические операции над исходным операндом-байтом как над словом в регистре АХ. Команда не имеет параметров и не воздействует на флаги процессора.

CLC Сброс флага переноса

Команда CLC сбрасывает флаг переноса CF в регистре флагов. Команда не имеет параметров и не воздействует на остальные флаги процессора.

CLD Сброс флага направления

Команда CLD сбрасывает флаг DF в регистре флагов, устанавливая прямое (в порядке возрастания адресов) направление выполнения операций со строками. Команда не имеет параметров и не воздействует на остальные флаги процессора.

CLI Сброс флага прерываний

Команда CLI сбрасывает флаг IF в регистре флагов, запрещая все аппаратные прерывания. Прерывания будут оставаться запрещенными до установки флага IF командой sti. На программные прерывания (команду int) флаг не действует. Команда не имеет параметров и не воздействует на остальные флаги процессора.

CMC Инвертирование флага переноса

Команда CMC изменяет значение флага CF в регистре флагов на обратное. Команда не имеет параметров и не воздействует на остальные флаги процессора.

СМР Сравнение

Команда СМР выполняет вычитание второго операнда из первого. В соответствии с результатом вычитания устанавливаются состояния флагов CF, PF, AF, ZF, SF и OF.

Сами операнды не изменяются. Таким образом, если команду сравнения записать в общем виде:

cmp операнд_1, операнд_2

то ее действие можно условно изобразить следующим образом:

операнд_1 - операнд_2 -> флаг процессора

В качестве операндов можно указывать регастр (кроме сегментного) или ячейку памяти, а в качестве второго операнда еще и непосредственное значение, однако не допускается определять оба операнда одновременно как ячейки памяти. Операнды могут быть байтами или словами и представлять числа со знаком или без знака. Обычно вслед за командой СМР

стоит одна из команд условных переходов, анализирующих состояние флагов процессора

(je - переход, если равно; jne - переход, если не равно, и т. д.).

CMPS Сравнение строк

CMPSB Сравнение строк по байтам

CMPSW Сравнение строк по словам

Команды предназначены для операций над строками (строкой называется последовательность байтов или слов с любым содержимым). Они сравнивают по одному элементу каждой строки, осуществляя вычитание второго операнда из первого и устанавливая в соответствии с результатом вычитания флаги CF, PF, AF, ZF, SF и OF. Первый операнд адресуется через DS:SI, второй - через ES:DI. Операцию сравнения можно условно изобразить следующим образом:

(DS:SI) - (ES:DI) —> флаги процессора

После каждой операции сравнения регистры SI и DI получают положительное

(если флаг DF=0) или отрицательное (если флаг DF=l) приращение. Величина

приращения составляет 1 или 2 в зависимости от размера сравниваемых элементов.

Вариант команды CMPS имеет формат

cmps строка_1, строка_2

(что не избавляет от необходимости инициализировать регистры DS:SI и ES:DI адресами строк строка_1 и строка_2 соответственно). В этом формате возможна замена сегмента первой строки:

cmps ES:строка_1, строка_2

Рассматриваемые команды могут предваряться префиксами повторения REPE/REPZ (повторять, пока элементы равны, т. с. до первого неравенства) и REPNE/REPNZ (повторять, пока элементы не равны, т. е. до первого равенства). В любом случае выполняется не более СХ операций над последовательными элементами.

После выполнения рассматриваемых команд регистры SI и DI указывают на ячейки памяти, находящиеся за теми (если DF=0) или перед теми (если DF=l) элементами строк, на которых закончились операции сравнения.

CWD Преобразование слова в двойное слово

Команда CWD заполняет регистр DX знаковым битом содержимого регистра АХ, преобразуя тем самым 16-разрядное число со знаком в 32-разрядное. Команду удобно использовать для преобразования 2-байтового делимого в 4-байтовое (двойное слово) при делении на 16-разрядный операнд. Команда не имеет параметров и не воздействует на флаги процессора.

DEC Декремент (уменьшение на 1)

Команда DEC вычитает 1 из операнда, в качестве которого можно указывать регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Операнд интерпретируется как число без знака. Команда воздействует на флаги OF, SF, ZF, AF и PF.

DIV Деление целых беззнаковых чисел

Команда DIV выполняет деление целого числа без знака, находящегося в регистрах АХ (в случае деления на байт) или DX:AX (в случае деления на слово), на операнд источник (целое число без знака). Размер делимого в два раза больше размеров делителя и остатка.

Для 1-байтовых операций делимое помещается в регистр АХ; после выполнения операции частное записывается в регистр AL, а остаток - в регистр АН.

Для 2-байтовых операций делимое помещается в регистры DX:AX (в DX - старшая часть, в АХ - младшая); после выполнения операции частное записывается в регистр АХ, а остаток - в регистр DX.

В качестве операнда-делителя можно указывать регистр данных или ячейку памяти; не допускается деление на непосредственное значение. Если делитель равен нулю или если частное не помещается в назначенный регистр, возбуждается прерывание через вектор 0. Команда не воздействует на флаги процессора.

INC Инкремент (увеличение на 1)

Команда INC прибавляет 1 к операнду, в качестве которого можно указывать регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Операнд интерпретируется как число без знака. Команда воздействует на флаги OF, SF, ZF, AF и PF.

INT Программное прерывание

Команда INT инициирует в процессоре процедуру прерывания, в результате которой правление передается на программу обработки прерывания с номером n, который указан в качестве операнда команды INT. В стек прерываемого процесса (текущей программы) заносится содержимое регистра флагов, сегментного регистра CS и указателя команд IP, после чего в регистры IP и CS передается содержимое двух слов из вектора прерывания типа п (расположенных по адресам 0:n*4 и 0:n*4+2). Команда INT сбрасывает флаг IF.

LEA Загрузка исполнительного адреса

Команда LEA загружает в регистр, указанный в команде в качестве первого операнда, относительный адрес второго операнда. В качестве первого операнда следует указывать регистр общего назначения, в качестве второго - ячейку памяти. Команда lea reg,mem

по своему результату эквивалентна команде:

mov reg,offset mem

Команда не воздействует на флаги процессора.

LOOP Циклическое выполнение, пока содержимое СХ не равно нулю

Команда LOOP выполняет декремент содержимого регистра СХ и, если оно не равно нулю, осуществляет переход на указанную метку вперед или назад в том же сегменте команд в диапазоне -128...+127 байт. Содержимое регистра СХ рассматривается как целое число без знака, поэтому максимальное число повторений группы, включенных в цикл команд, составляет 65 536 (если перед входом в цикл СХ=0). Команда не воздействует на флаги процессора.

MOV Пересылка данных

Команда MOV замещает первый операнд (приемник) вторым (источником). При этом исходное значение первого операнда теряется. В зависимости от описания операндов пересылается слово или байт. Если операнды описаны по-разному или режим адресации не позволяет однозначно определить размер операнда, для уточнения размера передаваемых данных в команду следует включить один из атрибутных операторов byte ptr или word ptr. Команда не воздействует на флаги процессора. В зависимости от использованных режимов адресации команда MOV осуществляет пересылки следующих видов:

• из регистра общего назначения в регистр общего назначения;

• из ячейки памяти в регистр общего назначения;

• из регистра общего назначения в ячейку памяти;

• непосредственный операнд в регистр общего назначения;

• непосредственный операнд в ячейку памяти;

• из регистра общего назначения в сегментные регистры;

• из сегментного регистра в регистр общего назначения;

• из сегментного регистра в ячейку памяти.

Запрещены пересылки из ячейки памяти в ячейку памяти (для этого предусмотрена команда MOVS), а также загрузка сегментного регистра непосредственным значением. Нельзя также непосредственно переслать содержимое одного сегментного регистра в другой.

MOVS Пересылка данных из строки в строку

MOVSB Пересылка байта данных из строки в строку

MOVSW Пересылка слова данных из строки в строку

Команды предназначены для операций над строками (строкой называется последовательность байтов или слов памяти с любым содержимым). Они пересылают по одному элементу строки, который может быть байтом или словом. Первый операнд (приемник) адресуется через ES:DI, второй (источник) - через DS:SI. Операцию пересылки можно условно изобразить следующим образом:

(DS:SI) -» (ES:DI)

После каждой операции пересылки регистры SI и DI получают положительное (если флаг DF=0) или отрицательное (если флаг DF=l) приращение. Величина приращения составляет 1 или 2 в зависимости от размера пересылаемых элементов. Вариант команды MOVS имеет формат:

movs строка_1, строка_2

(что не избавляет от необходимости инициализировать регистры ES:DI и DS:SI адресами

строк cmpoKajt и cmpom_2; операнды лишь позволяют ассемблеру определить по описанию полей данных cmpom_l и строка_2 размерность пересылаемых данных - байт или слово). В этом формате возможна замена сегмента второй строки:

movs строка_1, ES: строка_2

Рассматриваемые команды могут предваряться префиксом повторения REP (повторять СХ раз). После выполнения рассматриваемых команд регистры SI и D1 указывают на ячейки памяти, находящиеся за теми (если DF=0) или перед теми (если DF=1) элементами строк, на которых закончились операции пересылки. Команды не воздействует на флаги процессора.

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

Команда MUL выполняет умножение целого беззнакового числа, находящегося в регистре AL (в случае умножения на байт) или АХ (в случае умножения на слово), на операнд-источник (целое число без знака). Размер произведения в два раза больше размера сомножителей.

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5160
Авторов
на СтудИзбе
439
Средний доход
с одного платного файла
Обучение Подробнее