Перечислите команды сложения и вычитания двоичных чисел. Опишите синтаксис каждой команды и принцип ее работы. Приведите примеры сложения и вычитания двоичных чисел.
Команды сложения: add, adc, inc.
Команды вычитания: sub, sbb, dec.
Синтаксис:
adc приемник,источник
Сложение двух операндов с учетом переноса из младшего разряда. С помещение результата в приёмник.
add приемник,источник
Сложение двух операндов источник и приемник размерностью байт, слово или двойное слово. С помещение результата в приёмник.
inc приемник
Команда INCувеличивает приемник (регистр или переменная) на 1.
sub операнд_1,операнд_2
Целочисленное вычитание из операнда_1 операнд_2, с помещение результата в операнд_1.
sbb операнд_1,операнд_2
Целочисленное вычитание с учетом результата предыдущего вычитания командами sbb и sub (по состоянию флага переноса cf), с помещение результата в операнд_1.
dec приемник
Команда DEC уменьшает приемник (регистр или переменная) на 1.
Примеры:
add eax, ecx
adc edx, ebx
sub eax, ecx
sbb edx, ebx
inc eax
dec ebx
Перечислите способы передачи аргументов в процедуру. Опишите способ передачи аргументов через стек. Перечислите достоинства и недостатки данного способа. Приведите пример передачи аргументов в процедуру через стек.
Способы передачи аргументов в процедуру: через область памяти, через стек, через регистры, и с помощью extern и public.
Передача аргументов через стек при вызове процедур используется наиболее часто. Суть этого способа заключается в том, что вызывающая процедура самостоятельно заносит в стек передаваемые данные, после чего обращается к вызываемой процедуре.
|
|
Достоинством является простота передачи(командой PUSH).
Недостатком является то, что неправильная работа со стеком приведёт к краху программы.
Перечислите логические команды языка ассемблер. Опишите синтаксис каждой команды и принцип ее работы. Приведите примеры использования логических команд.
логические команды языка ассемблер: not, and, or, xor, not, test.
Синтаксис:
not операнд
and операнд_1, операнд_2
or операнд_1, операнд_2
xоr операнд_1, операнд_2
test операнд_1, операнд_2
not — операция логического отрицания. Команда выполняет поразрядное инвертирование (замену значения на обратное) каждого бита операнда. Результат записывается на место операнда.and — операция логического умножения. Команда выполняет поразрядно логическую операцию И(конъюнкцию)над битами операндов операнд_1 и операнд_2. Результат записывается на место операнд_1.or — операция логического сложения. Команда выполняет поразрядно логическую операцию ИЛИ(дизъюнкцию)над битами операндов операнд_1 и операнд_2. Результат записывается на место операнд_1.xоr — операция логического исключающего сложения. Команда выполняет поразрядно логическую операцию исключающего ИЛИнад битами операндов операнд_1 и операнд_2. Результат записывается на место операнд_1.test — операция проверки (способом логического умножения). Команда выполняет поразрядно логическую операцию И над битами операндов операнд_1 и операнд_2.
|
|
Пример:
xor eax,eax - обнуление регистра
and ax,mask_
or bx,mask_
xor dx,mask_
not ax
40. Перечислите команды пересылки цепочек. Опишите синтаксис каждой команды и принцип ее работы. Опишите результат использования префиксов повторения. Приведите примеры использования команд пересылки цепочек.
MOOVS - это команда копирует байт, слово или двойное слово цепочки источника в цепочку приемник размер пересылаемых элементов определяется исходя из атрибутов - идентификатора. Команда присылает только один элемент исходя из его типа и модифицирует значение регистров ESI/SI, EDI/Di.Для пересылки не одного элемента необходимо использовать префикс повторения REP. И загрузить в счетчик регистр CX/ECX число пересылаемых элементов порядок действий который необходимо выполнить для пересылки последовательности элементов из одной области памяти в другую с помощью команды MOOVS:Синтаксис команды MOOVS адрес приёмника, адрес источника. MOOVS может работать с цепочками элементов любой длины.
|
|
Опишите принцип использования процедуры в ассемблере: цель использования процедуры, синтаксис описания процедуры, размещение в тексте программы, вызов процедуры, технология отработки. Приведите пример использования процедуры.
Процедураили подпрограмма — это основная функциональная единица декомпозиции некоторой задачи. Процедура представляет собой группу команд для решения конкретной подзадачи и обладает средствами получения управления из точки вызова задачи более высокого уровня и возврата управления в эту точку.
Синтаксис:
имя_процедуры proc
тело_процедуры
имя_процедуры endp
Процедура может размещаться в любом месте программы
Команда CALL осуществляет вызов процедуры (подпрограммы). Синтаксис команды: call [модификатор] имя_процедуры
Технология обработки:
1) Происходит вызов процедуры с помощью команды CALL
2)Выполняются действия(тело процедуры)
3) Команда RET считывает адрес возврата из стека и загружает его в регистры CS и EIP/IP, тем самым возвращая управление на команду, следующую в программе за командой CALL
Пример:
.data
.code
my_proc procnear
ret
my_proc endp
start:
end start
Дата добавления: 2018-05-09; просмотров: 414; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!