Вы находитесь на странице: 1из 13

Республика Молдова

Министерство Образования, Культуры и Исследования


Образцово-показательный Центр в Энергетике и Электронике
Кафедра: Компьютеры
Предмет: Язык ассемблера

ОТЧЕТ
По лабораторной работе №2
На тему: “Арифметические команды и команды пересылки
данных ”

Выполнила: Уч-ся гр. С-142


Лищенко А.

Проверила: Преподаватель по специальности


Чурарь М.

Кишинев 2018
Цель работы: Использование арифметических команд и команд по
пересылке данных в программа, написанных на языке ассемблера.
Задание: Написать программу, которая вычисляет сумму двух чисел, а
результат записывается в ячейку, где хранится большее из чисел.

Выполненная программа:
Результат программы:

 Инструкция MOV в ассемблере самая простая. Синтаксис этой


команды такой: MOV ПРИЁМНИК, ИСТОЧНИК.

С помощью этой команды можно переместить значение


из ИСТОЧНИКА в ПРИЁМНИК. То есть по сути команда MOV копирует
содержимое ИСТОЧНИКА и помещает это содержимое в ПРИЁМНИК.
Никакие флаги при этом НЕ изменяются. При использовании этой команды
следует учитывать, что имеются некоторые ограничения. А именно,
инструкция MOV не может:

 Записывать данные в регистры CS и IP.


 Копировать данные из одного сегментного регистра в другой
сегментный регистр (сначала нужно скопировать данные в регистр
общего назначения).
 Копировать непосредственное значение в сегментный регистр (сначала
нужно скопировать данные в регистр общего назначения).

ИСТОЧНИКОМ может быть один из следующих:


 Область памяти (MEM)
 Регистр общего назначения (REG)
 Непосредственное значение (например, число) (IMM)
 Сегментный регистр (SREG)

ПРИЁМНИКОМ может быть один из следующих:

 Область памяти (MEM)


 Регистр общего назначения (REG)
 Сегментный регистр (SREG)

Арифметические операции - ADD, SUB, MUL, DIV. Многие опкоды


делают вычисления. Их можно узнать многие из них по их названиям: add
(addition - добавление), sub (substraction - вычитание), mul (multiply -
умножение), div (divide - деление).

Опкод add имеет следующий синтаксис:

add приемник, источник

Выполняет вычисление: приемник = приемник + источник.

Имеются также другие формы:

приемни
источник пример
к
регистр регистр add ecx, edx
регистр память add ecx, dword ptr [104h] / add ecx, [edx]
регистр значение add eax, 102
память значение add dword ptr [401231h], 80
память регистр add dword ptr [401231h], edx
Эта команда очень проста. Она добавляет значение источника к
значению приемника и помещает результат в приемник. Другие
математические команды:

sub приемник, источник (приемник = приемник - источник)

mul множимое, множитель (множимое = множимое * множитель)

div делитель (eax = eax / делитель, edx = остаток)

Поскольку регистры могут содержать только целочисленные значения


(то есть числа, не, с плавающей запятой), результат деления разбит на
частное и остаток. Теперь, в зависимости от размера источника, частное
сохраняется в eax, а остаток в edx:

размер источника деление частное в... остаток в...


BYTE (8-bits) ax / делитель AL AH
WORD (16-bits) dx:ax* / делитель AX DX
DWORD (32-bits) edx:eax* / делитель EAX EDX

* = Например: если dx = 2030h, а ax = 0040h, dx: ax = 20300040h. Dx:ax


- значение dword, где dx представляет старшее word, а ax - младшее. Edx:eax -
значение quadword (64 бита), где старшее dword в edx и младшее в eax.

Источник операции деления может быть:

1. 8-бит регистр (al, ah, cl,...)


2. 16-бит регистр (ax, dx, ...)
3. 32-бит регистр (eax, edx, ecx...)
4. 8-бит значение из памяти (byte ptr [xxxx])
5. 16-бит значение из памяти (word ptr [xxxx])
6. a 32-бит значение памяти (dword ptr [xxxx])

Источник не может быть непосредственным значением, потому что


тогда процессор не сможет определить размер исходного операнда.
Увеличение/Уменьшение - INC/DEC. Есть 2 очень простые команды,
DEC и INC. Эти команды увеличивают или уменьшают содержимое памяти
или регистра на единицу. Просто поместите:

inc регистр ; регистр = регистр + 1

dec регистр ; регистр = регистр - 1

inc dword ptr [103405] ; значение в [103405] будет увеличено на 1.

dec dword ptr [103405] ; значение в [103405] будет уменьшено на 1.

Вывод: В результате выполнения данной лабораторной работы я


ознакомилась с арифметическими командами (ADD, SUB, MUL, IMUL, DIV,
IDIV, DEC, INC) и командами пересылки данных(MOV).

Республика Молдова
Министерство Образования, Культуры и Исследования
Образцово-показательный Центр в Энергетике и Электронике
Кафедра: Компьютеры
Предмет: Язык ассемблера

ОТЧЕТ
По лабораторной работе №3
На тему: “Использование логических команд NOT, AND, OR,
XOR в языке ассемблера. ”

Выполнила: Уч-ся гр. С-142


Лищенко А.

Проверила: Преподаватель по специальности


Чурарь М.

Кишинев 2018
Цель работы: Использование логических инструкций в программах,
написанных на языке ассемблера.
Задание: Написать программу, которая будет выполнять логические
команды AND, OR, XOR над числами 20+m и 30+m (где m – номер из
журнала).

Выполненная программа:
Результат программы:

Методики условных вычислений на самом нижнем (двоичном) уровне


основаны на четырех основных операциях двоичной алгебры: И, ИЛИ,
ИСКЛЮЧАЮЩЕЕ ИЛИ и НЕ. Эти операции положены в основу работы
логических схем компьютера, а также его программного обеспечения. В
системе команд процессоров семейства x86 предусмотрены команды AND,
OR, XOR, NOT, TEST и ВT, выполняющие перечисленные выше булевы
операции между байтами, словами и двойными словами.

Логические команды процессора:

Команда Описание
AND Выполняет операцию логического И между двумя операндами
OR Выполняет операцию логического ИЛИ между двумя
операндами
XOR Выполняет операцию исключающего ИЛИ между двумя
операндами
NOT Выполняет операцию логического отрицание (НЕ)
единственного операнда
TEST Выполняет операцию логического И между двумя операндами,
устанавливает соответствующие флаги состояния процессора,
но результат операции не записывается вместо операнда
получателя данных

Команда AND выполняет операцию логического И между


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

Существуют следующие варианты команды AND:

AND reg, reg

AND reg, mem

AND reg, imm

AND mem, reg

AND mem, imm

Команда AND может работать с 8-, 16- или 32-разрядными операндами,


причем длина у обоих операндов должна быть одинаковой. При выполнении
операции поразрядного логического И значение результата будет равно 1
только в том случае, если оба бита пары равны 1.

Команда OR выполняет операцию логического ИЛИ между


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

В команде OR используются аналогичные команде AND типы


операндов:

OR reg, reg
OR reg, mem

OR reg, imm

OR mem, reg

OR mem, imm

Команда OR может работать с 8-, 16- или 32-разрядными операндами,


причем длина у обоих операндов должна быть одинаковой. При выполнении
операции поразрядного логического ИЛИ значение результата будет равно 1,
если хотя бы один из битов пары операндов равен  1.

Команда XOR выполняет операцию ИСКЛЮЧАЮЩЕГО ИЛИ между


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

В команде XOR используются аналогичные командам AND и OR типы


операндов:

XOR reg, reg

XOR reg, mem

XOR reg, imm

XOR mem, reg

XOR mem, imm

Команда XOR может работать с 8-, 16- или 32-разрядными операндами,


причем длина у обоих операндов должна быть одинаковой. При выполнении
операции поразрядного ИСКЛЮЧАЮЩЕГО ИЛИ значение результата будет
равно 1, если значения битов пары операндов различны, и 0 — если значения
битов равны. 
Команда NOT позволяет выполнить инверсию всех битов операнда, в
результате чего получается обратный код числа. В команде допускаются
следующие типы операндов:

NOT reg

NOT mem

Команда TEST выполняет операцию поразрядного логического И


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

Вывод: В результате выполнения данной лабораторной работы я


ознакомилась с логическими командами языка ассемблера (NOT, AND, OR,
XOR, TEST).