Программирование циклов и условий. Работа с массивами.

Лабораторная работа № 2.

 

В этой работе необходимо применить команду сравнения данных (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) В данном массиве цифровых символов заменить каждый символ на соответствующее двоичное число и найти количество простых чисел.