Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчёт по лабораторной работе №6 Ковалёва Владис...docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
504.07 Кб
Скачать

Отчёт

По лабораторной работе №6 – «Ветвления и циклы в ассемблере»

1.1 Пми Ковалёв Владислав

1)Дана последовательность из 12 целых натуральных чисел. Определить количество членов последовательности являющихся нечетными числами.

include\masm32\include\masm32rt.inc

.data

Mas dd 1,-2,56,-3,67,0,12,-5,-94,75,-45,97

.code

start:

mov esi,0

mov ebx,12

Vivod:

print str$(Mas[esi])

print chr$(' ')

add esi,4

sub ebx,1

cmp ebx,0

jnz Vivod

mov esi,0

mov ecx,0

begin:

mov eax,Mas[esi]

mov Bl,2

Idiv Bl

cmp Ah,0

je chetno

add ecx,1

chetno:

add esi,4

mov eax,esi

cmp eax,48

jnz begin

fn MessageBox,0,str$(ecx),"Количество нечётных элементов:",MB_OK

Invoke ExitProcess,0

end start

2) Дана последовательность из 12 целых натуральных чисел. Определить количество членов последовательности являющихся четными числами.

include\masm32\include\masm32rt.inc

.data

Mas dd 1,-2,56,-3,67,0,12,-5,-94,75,-45,97

.code

start:

mov esi,0

mov ebx,12

Vivod:

print str$(Mas[esi])

print chr$(' ')

add esi,4

sub ebx,1

cmp ebx,0

jnz Vivod

mov esi,0

mov ecx,0

begin:

mov eax,Mas[esi]

mov Bl,2

idiv Bl

cmp Ah,0

jnz nechetno

add ecx,1

nechetno:

add esi,4

mov eax,esi

cmp eax,48

jnz begin

fn MessageBox,0,str$(ecx),"Количество чётных элементов:",MB_OK

invoke ExitProcess,0

e nd start

3) Дана последовательность из 12 целых натуральных чисел. Определить количество членов последовательности кратных 3.

include\masm32\include\masm32rt.inc

.data

Mas dd 1,-2,56,-3,67,0,12,-5,-94,75,-45,97

.code

start:

mov esi,0

mov ebx,12

Vivod:

print str$(Mas[esi])

print chr$(' ')

add esi,4

sub ebx,1

cmp ebx,0

jnz Vivod

mov esi,0

mov ecx,0

begin:

mov eax,Mas[esi]

mov Bl,3

idiv Bl

cmp Ah,0

jnz nekratno

add ecx,1

nekratno:

add esi,4

mov eax,esi

cmp eax,48

jnz begin

fn MessageBox,0,str$(ecx),"Количество элементов, кратных 3:",MB_OK

invoke ExitProcess,0

e nd start

4) Дана последовательность из 12 целых натуральных чисел. Определить количество членов последовательности некратных 5.

include\masm32\include\masm32rt.inc

.data

Mas dd 1,-2,56,-3,67,0,12,-5,-94,75,-45,97

.code

start:

mov esi,0

mov ebx,12

Vivod:

print str$(Mas[esi])

print chr$(' ')

add esi,4

sub ebx,1

cmp ebx,0

jnz Vivod

mov esi,0

mov ecx,0

begin:

mov eax,Mas[esi]

mov Bl,5

idiv Bl

cmp Ah,0

je kratno

add ecx,1

kratno:

add esi,4

mov eax,esi

cmp eax,48

jnz begin

fn MessageBox,0,str$(ecx),"Количество элементов, некратных 5:",MB_OK

invoke ExitProcess,0

e nd start

5) Дана последовательность из 12 целых натуральных чисел. Определить количество членов последовательности являющихся удвоенными нечетными числами.

include\masm32\include\masm32rt.inc

.data

Mas dd 1,-2,56,-3,67,0,12,-5,-94,75,-45,97

.code

start:

mov esi,0

mov ebx,12

Vivod:

print str$(Mas[esi])

print chr$(' ')

add esi,4

sub ebx,1

cmp ebx,0

jnz Vivod

mov esi,0

mov ecx,0

begin:

mov eax,Mas[esi]

mov Bl,2

idiv Bl

cmp Ah,0

jnz nechetno

mov eax,Mas[esi]

mov Bl,4

idiv Bl

cmp Ah,0

je nechetno

add ecx,1

nechetno:

add esi,4

mov eax,esi

cmp eax,48

jnz begin

fn MessageBox,0,str$(ecx),"Количество удвоенных нечётных чисел:",MB_OK

invoke ExitProcess,0

end start

6) Дана последовательность из 12 целых натуральных чисел. Определить количество членов последовательности некратных 7.

include\masm32\include\masm32rt.inc

.data

Mas dd 1,-2,56,-3,67,0,12,-5,-94,75,-45,97

.code

start:

mov esi,0

mov ebx,12

Vivod:

print str$(Mas[esi])

print chr$(' ')

add esi,4

sub ebx,1

cmp ebx,0

jnz Vivod

mov esi,0

mov ecx,0

begin:

mov eax,Mas[esi]

mov Bl,7

idiv Bl

cmp Ah,0

je kratno

add ecx,1

kratno:

add esi,4

mov eax,esi

cmp eax,48

jnz begin

fn MessageBox,0,str$(ecx),"Количество элементов, некратных 7:",MB_OK

invoke ExitProcess,0

e nd start

7) Дана последовательность из 12 целых натуральных чисел. Все отрицательные члены последовательности обнулить, а положительные увеличить на 5.

include\masm32\include\masm32rt.inc

.data

Mas dd 1,-2,56,-3,67,0,12,-5,-94,75,-45,97

.code

start:

mov esi,0

mov ebx,12

Vivod:

print str$(Mas[esi])

print chr$(' ')

add esi,4

sub ebx,1

cmp ebx,0

jnz Vivod

print chr$(' ',10,13)

mov esi,0

begin:

mov eax,Mas[esi]

cmp eax,0

jg bolshce

jl menshce

je vse

bolshce:

add eax,5

jmp vse

menshce:

mov eax,0

vse:

mov Mas[esi],eax

add esi,4

mov eax,esi

cmp eax,48

jnz begin

mov esi,0

mov ebx,12

Vivod2:

print str$(Mas[esi])

print chr$(' ')

add esi,4

sub ebx,1

cmp ebx,0

jnz Vivod2

fn MessageBox,0,"Исходный и полученный массивы:","Программа 7",MB_OK

invoke ExitProcess,0

end start

8) Дана последовательность из 12 целых натуральных чисел. Все члены последовательности большие 10 заменить на 5.

include\masm32\include\masm32rt.inc

.data

Mas dd 1,-2,56,-3,67,0,12,-5,-94,75,-45,97

.code

start:

mov esi,0

mov ebx,12

Vivod:

print str$(Mas[esi])

print chr$(' ')

add esi,4

sub ebx,1

cmp ebx,0

jnz Vivod

print chr$(' ',10,13)

mov esi,0

begin:

mov eax,Mas[esi]

cmp eax,10

jle menshce

mov eax,5

menshce:

mov Mas[esi],eax

add esi,4

mov eax,esi

cmp eax,48

jnz begin

mov esi,0

mov ebx,12