Обработка одномерных массивов а ассемблер
Лабораторная работа №1
Обработка одномерных массивов
Наименование темы лабораторной работы:
Обработка одномерных массивов.
Цель. Обработка одномерных массивов на языке ассемблер с использованием регистров микропроцессора целочисленной арифметики и команд перехода.
Вариант 11
Все элементы в массиве С[1..N], меньше среднего арифметического положительных чисел массива, заменить на максимальное значение массива.
Словесный алгоритм решения задачи
Создаём одномерный массив С на языке программирования паскаль. Запускаем встроенный ассемблер. В созданном массиве определяем среднее арифметическое положительных чисел и максимальное значение массива. Заменяем числа, меньше среднего арифметического на максимальное. Выводим: изначальный массив, сумму, количество положительных чисел, среднее арифметическое, измененный массив.
Блок – схема
Листинг программы:
uses crt;
const n=10;
type mas=array[1..n] of integer;
var
C:mas;
i, sr, max, k,sum:integer;
begin
clrscr;
randomize;
sum:=0;
For i:=1 to n do begin
C[i]:=random(50)-25;
write(C[i]:4);
end;
asm
lea si, C
mov k,0
mov ax,0
mov cx, n
@1:mov bx,[si]
cmp bx,0
jl @2
add ax, bx
inc k
@2:add si,2
loop @1
mov sum, ax
mov dx,0
div k
mov sr, ax
lea si, C
mov bx,[si]
mov cx, n
@3:cmp bx,[si]
jge @4
mov bx,[si]
@4:add si,2
loop @3
mov max, bx
lea si, C
mov cx, n
@5:mov dx,[si]
cmp dx, ax
jge @6
mov [si],bx
@6:add si,2
loop @5
end;
writeln;
write(‘sum=’,sum);
writeln;
write(‘kol=’,k);
writeln;
write(‘sr=’,sr);
writeln;
write(‘max=’,max);
writeln;
For i:=1 to n do write (C[i]:4);
readkey;
end.
Вывод:
В ходе выполнения данной лабораторной работы были изучены регистры микропроцессора, команды целочисленной арифметики и некоторые из команд перехода. Также научились работать с циклами.