5. Порядок выполнения работы:
5.1. Изучите приложение к работе;
5.2. Ответьте на вопросы допуска;
5.3. Выполните задания по пунктам 4.1 – 4.2.
6. Содержание:
6.1. Цель и наименование работы;
6.2. Выполненное задание по пунктам 4.1 – 4.2.
7. Контрольные вопросы:
7.1. Приведите пример работы команды OR.
7.2. Приведите пример работы команды AND?
7.3. Перечислите основные команды условных переходов.
7.4. Какая команда условного перехода сработает в фрагменте программы? Если в 400 ячейке памяти лежит число 10h.
CS:0100 MOV BX, 400
CS:0103 MOV AX, [BX]
CS:0105 MOV CX, [BX + 02]
CS:0108 CMP AX, CX
CS:010A JG 0110
CS:010C JL 0115
CS:010E JZ 011A
7.5 Определите значение регистра СХ после выполнения фрагмента программы
MOV AL, 9
MOV BL, 3
DIV BL
CMP AL, BL
JE b1
MOV CX, 12
JMP a1
b1: MOV CX, 10
a1: HLT.
8. Приложение:
8.1. Основные команды языка Assembler
MOV – пересылка данных
Действие: пересылает один байт или одно слово между регистрами или регистром и памятью, а также передает непосредственное значение в регистр или в память.
Команда MOV не может передавать данные между двумя адресами памяти (для этой цели служит команда MOVS).
Пример :
MOV CX, 3
MOV BX, 2
MOV AX, BX
Xchg – перестановка
Действие: пересылает два байта или два слова между регистрами или регистром и памятью.
Пример 1:
MOV CX, 3
MOV BX, 2
XCHG CX, BX
Пример 2:
MOV AX, 7
MOV BX, 400
XCHG AX, [BX]
Команды работы со стеком
PUSH – занесение слова в стек
Действие: сохраняет значение слова в стеке для последующего использования. Регистр SP указывает на вершину стека (в процессе выполнения его содержимое уменьшается на 2).
Допустимые операнды: РОН, сегментный регистр, слово в памяти.
POP – извлечение слова из стека
Действие: передает слово, помещенное ранее в стек, в указанный операнд. Флаги не меняются. Содержимое регистра SP в процессе выполнения увеличивается на 2.
Допустимые операнды: РОН, сегментный регистр, слово из памяти.
Арифметические команды
ADD – сложение двоичных чисел
Действие: прибавляет один байт или одно слово к содержимому регистра или к содержимому ячейки памяти.
Пример 1:
MOV CX, 3
ADD CX, 5
Пример 2:
MOV BX, 400
MOV CX, 23
ADD [BX], CX
Пример 3:
MOV BX, 400
ADD byte ptr [BX], 23
SUB – вычитание двоичных чисел
Действие: вычитает один байт или одно слово из содержимого регистра или из содержимого ячейки памяти.
Пример 1:
MOV AX, 4
MOV BX, 3
SUB AX, BX
Пример 2:
MOV AX, 4
MOV BX, 3
SUB BX, AX
Пример 3:
MOV SI, 4
MOV BX, 400
SUB word ptr [BX+SI+124], 23
MUL – беззнаковое умножение двоичных чисел
Действие: умножает беззнаковое множимое (8 или 16 бит) на беззнаковый множитель (8 или 16 бит). Левый единичный бит рассматривается как бит данных, но не как знак минус для отрицательных чисел.
Для 8-битного умножения множимое должно находится в AL, а множитель в регистре или в памяти, например, MUL CL. Произведение получается в регистре AX.
Для 16-битного умножения множимое должно находится в AX, а множитель в регистре или в памяти, например, MUL BX.
Произведение получается в регистровой паре DX:AX.
