Программирование циклов и условий. Работа с массивами.
В этой работе необходимо применить команду сравнения данных (CMP), команды условных и безусловных переходов (Jmp и Jcc), команду организации циклов (Loop), использование индексных регистров SI и DI и регистра CX.
Следующий пример (в котором сохранены детали обрамления программы из лабораторной работы № 1), выполняет обработку массива, в котором все отрицательные элементы заменяются на нули, а положительные увеличиваются вдвое, одновременно вычисляется сумма новых элементов массива.
; Самая первая программа для трассировки
;
assume cs:mycode,ds:mydate,ss:mystack
mycode segment para
start: push ds
xor ax,ax
push ax
mov ax,seg mydate
mov ds,ax
xor si,si ; обнуление
mov di,si
mov sum,si
mov cx,n ; подготовка цикла
cycl: mov ax,a[2*si] ; выборка элемента массива
cmp ax,zero ; сравнение с нулём
jl ifless ; переход, если «меньше»
; а если не меньше, то:
add ax,ax ; удвоение
jmp summa ; обход ветви «меньше»
ifless: mov ax,zero
summa: mov a[2*di],ax ; запись изменённого элемента
add ax,sum ; суммирование
mov sum,ax ; и запись суммы
inc si ; увеличение индексов
inc di
loop cycl
retf
mycode ends
mydate segment para
n dw 12
a dw 4,3,8,-5,-1,-9,6,7,2,-8,1,-3
sum dw ?
zero dw 0
mydate ends
mystack segment para stack ‘stack’
dw 100 dup (?)
mystack ends
end start
Требуется ввести эту программу и покомандно выполнить её, как описано в лабораторной работе №1, после чего выполнить один из вариантов задания:
a) По данному массиву целых чисел построить массивы частных и остатков от деления на простое число (например, на 3);
b) По данному массиву целых чисел построить массивы квадратов и кубов;
c) По данным двум массивам целых чисел построить массивы сумм и разностей их элементов;
d) По данному массиву целых чисел найти их среднее арифметическое и построить массив, элементы которого равны разности исходных элементов и полученного среднего;
e) По данному массиву целых чисел найти их минимум и построить массив, элементы которого равны разности исходных элементов и полученного минимума;
f) По данному массиву целых чисел найти их максимум и построить массив, элементы которого равны разности полученного максимума и исходных элементов;
g) В данном массиве цифровых символов заменить каждый символ на соответствующее двоичное число и найти среди них минимум и максимум;
h) В данном массиве цифровых символов заменить каждый символ на соответствующее двоичное число и найти их среднее;
i) В данном массиве цифровых символов заменить каждый символ на соответствующее двоичное число и найти сумму элементов, больших 5;
j) В данном массиве цифровых символов заменить каждый символ на соответствующее двоичное число и найти число элементов, меньших их среднего арифметического;
k) В данном массиве цифровых символов заменить каждый символ на соответствующее двоичное число и найти их произведение;
l) В данном массиве цифровых символов заменить каждый символ на соответствующее двоичное число и найти количество нечётных цифр;
m) В данном массиве цифровых символов заменить каждый символ на соответствующее двоичное число и найти количество простых чисел.
Дата добавления: 2017-01-16; просмотров: 1571;