You are on page 1of 7

Дробинка А.Н.

гр 2-131

Лабораторная работа № 11
Тема: Использование в программах арифметических команд и логических
программ.
Цель занятия: Ознакомиться со структурой ассемблерной программы для
пакета MASM32. Научится составлять программы для ассемблера используя
арифметические команды, логические команды.

Задание 1.

1. Х= А2 +5 (В - 2С) – 2
A=3,b=6,c=2

A=8,b=2,c=5

A=2,b=2,c=8

2. Х= 4+А * (В + С) /4 + 2
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
include \masm32\include\debug.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\debug.lib
.data
.code
start:
Дробинка А.Н. гр 2-131

mov eax,2
mov ebx,4
mov ecx,2

add ebx, ecx


imul eax, ebx
mov cl,4
div cl
add eax, 4
add eax, 2

PrintDec eax
end start

A=2,b=4,c=2

A=6,b=2,c=8

A=3,b=6,c=2

3. Х= А3 –6В - 100 + С2
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
include \masm32\include\debug.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\debug.lib
Дробинка А.Н. гр 2-131

.data
.code
start:

mov eax,2
mov ebx,7
mov ecx,1
mov edx,eax

imul eax,eax
imul eax,edx
imul ebx,6
sub eax,ebx
sub eax,100
imul ecx,ecx
add eax,ecx

PrintDec eax
end start
A=2,b=7,c=2

A=7,b=4,c=11

A=8,b=3,c=8

4. Х= - А/2 + 4В /(3+С)
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
Дробинка А.Н. гр 2-131

include \masm32\include\masm32.inc
include \masm32\include\debug.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\debug.lib
.data
.code
start:

mov eax,6
mov ebx,2
mov ecx,6
mov edx,0

mov cl,2
idiv cl
neg eax
mov ebp,eax

mov edx,0

add ecx,3
imul ebx,4
mov eax,ebx
div ecx
add eax,ebp

PrintDec eax
end start

A=6,b=2,c=6

A=10,b=16,c=2

A=6,b=8,c=3
Дробинка А.Н. гр 2-131

Задание 2

4. Z = X2/(Х - 2*Y);
.386

.model flat,stdcall

option casemap:none

include \masm32\include\windows.inc

include \masm32\include\user32.inc

include \masm32\include\kernel32.inc

include \masm32\include\masm32.inc

include \masm32\include\debug.inc

includelib \masm32\lib\user32.lib

includelib \masm32\lib\kernel32.lib

includelib \masm32\lib\masm32.lib

includelib \masm32\lib\debug.lib

.data

.code

start:

mov eax,6

mov ebx,8

mov ecx,eax

mov edx,0

imul ebx,2
Дробинка А.Н. гр 2-131
sub ecx,ebx

imul eax,eax

idiv ecx

PrintDec eax

end start

X=6,Y=8

X=5Y=2

X=20,Y=7

Контрольные вопросы:
1. Каково назначение команд и директив языка ассемблера?
Все команды изменяют регистр признаков, а директивы управляют
работой компилятора.
2. Перечислите арифметические команды с целочисленными операндами
и дайте их назначение.
Перенос: mov op1, op2; Деление: idiv op; div op;
Сложение: add op1, op2; Инверсия: neg op;
Вычитание: sub op1, op2; Инкремент: inc op
Умножение: mul op; imul op; Декремент: dec op;
3. Куда помещается результат при умножении двухбайтовых операндов?
Какой операнд берется по умолчанию при умножении однобайтовых
операндов? двухбайтовых? четырехбайтовых?
В первый множитель (операнд).
Дробинка А.Н. гр 2-131

При умножении однобайтовых операндов по умолчанию берется любой 8-


битный регистр или адрес памяти.
При умножении двухбайтовых операндов по умолчанию берется любой 16-
битный регистр или адрес памяти.
При умножении двухбайтовых операндов по умолчанию берется любой 32-
битный регистр или адрес памяти.
4. Где находится делимое при целочисленном делении операндов? Куда
помещаются неполное частное и остаток при делении целочисленных
операндов?
Делимое содержится в АХ. Результат сохраняется так: частное — в AL,
остаток — в АН.

5. В чем сходство/различие выполнения следующих команд?


а) xor eax, eax б) mov eax, 0

xor – является логической командой выполняющую функцию


«исключающее ИЛИ»

mov – является арифметической командой выполняющую функцию


«переноса» или присвоение значения.

6. Будет ли результат выполнения следующих команд одинаковым?


а) mov eax, 0 б) mov eax, 0
not eax neg eax

Нет, в первом результат будет 1, во втором результат – -1.

Вывод: Ознакомился со структурой ассемблерной программы для пакета


MASM32. Научился составлять программы для ассемблера используя
арифметические команды, логические команды.

You might also like