Professional Documents
Culture Documents
гр 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
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